X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=CMakeLists.txt;h=b2f0ef4b8d53522e9ecaadc52c8060d32bbaf307;hb=49fc76165d4471c3e9db737bbb86f7448d27f625;hp=eff787583c27f7b7d4f4f7ed579c0c3cce8dc9ca;hpb=e6ad8af3f3d19adacc7b45396f8bf3a1d08a3a50;p=nothing.git diff --git a/CMakeLists.txt b/CMakeLists.txt index eff78758..b2f0ef4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,30 +2,44 @@ cmake_minimum_required(VERSION 3.2) project(nothing) if(WIN32) - # Conan integration - include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) - conan_basic_setup() -endif() + if(MINGW) + add_compile_definitions(SDL_MAIN_HANDLED) # https://stackoverflow.com/a/25089610 + add_compile_definitions(__USE_MINGW_ANSI_STDIO) # https://github.com/trink/symtseries/issues/49#issuecomment-160843756 + # Support both 32 and 64 bit builds + if (${CMAKE_SIZEOF_VOID_P} MATCHES 8) + set(SDL2_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/SDL2/x86_64-w64-mingw32/include/SDL2") + set(SDL2_LIBRARIES "${CMAKE_SOURCE_DIR}/SDL2/x86_64-w64-mingw32/lib/libSDL2.a;${CMAKE_SOURCE_DIR}/SDL2/x86_64-w64-mingw32/lib/libSDL2main.a") + else() + set(SDL2_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/SDL2/i686-w64-mingw32/include/SDL2") + set(SDL2_LIBRARIES "${CMAKE_SOURCE_DIR}/SDL2/i686-w64-mingw32/lib/libSDL2.a;${CMAKE_SOURCE_DIR}/SDL2/i686-w64-mingw32/lib/libSDL2main.a") + endif() + + else() + set(SDL2_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/SDL2/include") -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) + # Support both 32 and 64 bit builds + if (${CMAKE_SIZEOF_VOID_P} MATCHES 8) + set(SDL2_LIBRARIES "${CMAKE_SOURCE_DIR}/SDL2/lib/x64/SDL2.lib;${CMAKE_SOURCE_DIR}/SDL2/lib/x64/SDL2main.lib") + else() + set(SDL2_LIBRARIES "${CMAKE_SOURCE_DIR}/SDL2/lib/x86/SDL2.lib;${CMAKE_SOURCE_DIR}/SDL2/lib/x86/SDL2main.lib") + endif() -find_package(SDL2 REQUIRED) -find_package(SDL2_mixer REQUIRED) -find_package(PkgConfig REQUIRED) + endif() + string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES) + +else() + find_package(SDL2 REQUIRED) +endif() -pkg_check_modules(LIBXML2 REQUIRED libxml-2.0) +if("${SDL2_LIBRARIES}" STREQUAL "") + message(WARNING "SDL2_LIBRARIES wasn't set, manually setting to SDL2::SDL2") + set(SDL2_LIBRARIES "SDL2::SDL2") +endif() include_directories(${CMAKE_BINARY_DIR}) include_directories(src/) -if(APPLE) - include_directories(${SDL2_INCLUDE_DIR}/..) -else() - include_directories(${SDL2_INCLUDE_DIR}) -endif() - -include_directories(${SDL2_MIXER_INCLUDE_DIR}) -include_directories(${LIBXML2_INCLUDE_DIRS}) +include_directories(${SDL2_INCLUDE_DIRS}) add_library(system STATIC src/system/line_stream.c @@ -34,12 +48,9 @@ add_library(system STATIC src/system/log.h src/system/log_script.c src/system/log_script.h - src/system/lt.c src/system/lt.h - src/system/lt/lt_adapters.c - src/system/lt/lt_adapters.h - src/system/lt/lt_slot.c - src/system/lt/lt_slot.h + src/system/lt_adapters.h + src/system/lt_adapters.c src/system/nth_alloc.c src/system/nth_alloc.h src/system/stacktrace.c @@ -50,6 +61,8 @@ add_library(system STATIC src/dynarray.c src/hashset.h src/hashset.c + src/system/file.h + src/system/file.c ) add_library(ebisp STATIC @@ -70,9 +83,9 @@ add_library(ebisp STATIC src/ebisp/tokenizer.c src/ebisp/tokenizer.h ) +target_link_libraries(ebisp system) add_executable(nothing - broadcast_lisp.h src/broadcast.c src/broadcast.h src/color.c @@ -143,47 +156,47 @@ add_executable(nothing src/ui/history.h src/ui/list_selector.h src/ui/list_selector.c - src/ui/menu_title.h - src/ui/menu_title.c + src/ui/wiggly_text.h + src/ui/wiggly_text.c + src/ui/slider.h + src/ui/slider.c src/game/level_metadata.h src/game/level_metadata.c - src/game/level/proto_rect.h - src/game/level/proto_rect.c src/game/level/level_editor.h src/game/level/level_editor.c + src/game/level/level_editor/color_picker.h + src/game/level/level_editor/color_picker.c + src/game/level/level_editor/rect_layer.h + src/game/level/level_editor/rect_layer.c + src/game/level/level_editor/layer_picker.h + src/game/level/level_editor/layer_picker.c + src/game/level/level_editor/point_layer.h + src/game/level/level_editor/point_layer.c + src/game/level/level_editor/player_layer.h + src/game/level/level_editor/player_layer.c + src/game/level/level_editor/layer.h + src/game/level/level_editor/layer.c + src/game/level/level_editor/label_layer.c + src/game/level/level_editor/label_layer.h + src/game/level/level_editor/undo_history.h + src/game/level/level_editor/undo_history.c ) - -add_executable(svg2level - devtools/svg2level/main.c) - -add_custom_command( - OUTPUT broadcast_lisp.h - COMMAND ${CMAKE_BINARY_DIR}/baker ${CMAKE_SOURCE_DIR}/src/broadcast.lisp broadcast_lisp.h broadcast_lisp_library - DEPENDS baker src/broadcast.lisp) +target_link_libraries(nothing ${SDL2_LIBRARIES} system ebisp) add_executable(repl src/ebisp/repl.c src/ebisp/repl_runtime.c ) - -add_executable(baker - src/ebisp/baker.c - ) +target_link_libraries(repl ${SDL2_LIBRARIES} system ebisp) add_executable(nothing_test test/main.c test/test.h test/tokenizer_suite.h ) +target_link_libraries(nothing_test ${SDL2_LIBRARIES} system ebisp) -target_link_libraries(nothing ${SDL2_LIBRARY} ${SDL2_MIXER_LIBRARY} m system ebisp) -target_link_libraries(nothing_test ${SDL2_LIBRARY} ${SDL2_MIXER_LIBRARY} m system ebisp) -target_link_libraries(repl ${SDL2_LIBRARY} ${SDL2_MIXER_LIBRARY} m system ebisp) -target_link_libraries(ebisp system) -target_link_libraries(baker m system ebisp) -target_link_libraries(svg2level ${LIBXML2_LIBRARIES}) - -if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "CLANG")) +if(("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \ -Wall \ @@ -210,15 +223,34 @@ if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" ST -Wswitch \ -Wmissing-field-initializers \ -fno-common \ + -fno-strict-aliasing \ -pedantic \ -std=c11 \ + -ggdb \ -O3") target_link_libraries(nothing m) +elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + set(CMAKE_C_FLAGS + "${CMAKE_C_FLAGS} \ + /Wall \ + /WX \ + /wd4127 \ + /wd4201 \ + /wd4204 \ + /wd4255 \ + /wd4389 \ + /wd4668 \ + /wd4702 \ + /wd4710 \ + /wd4777 \ + /wd4820 \ + /wd5045 \ + /D \"_CRT_SECURE_NO_WARNINGS\"") endif() -if(WIN32) +if(MINGW) + target_link_libraries(nothing hid setupapi Imm32 Version winmm) +elseif(WIN32) target_link_libraries(nothing Imm32 Version winmm) endif() -file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/sounds DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) -file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/images DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test-data DESTINATION ${CMAKE_CURRENT_BINARY_DIR})