@@ -4,26 +4,46 @@ project(${PROJECT_NAME} LANGUAGES CXX)
44set (CMAKE_CXX_STANDARD 20)
55set (CMAKE_CXX_STANDARD_REQUIRED ON )
66
7- if (MSVC )
8- add_compile_options (/W4 /permissive- )
9- else ()
10- add_compile_options (-Wall -Wextra -Wpedantic )
7+ if (CMAKE_C_COMPILER MATCHES "x86_64-w64-mingw32.*" )
8+ set (IS_MINGW TRUE )
119endif ()
1210
11+
1312if (EMSCRIPTEN)
1413 message (STATUS "Targeting Emscripten/WebAssembly ${CMAKE_SOURCE_DIR } " )
1514 set (CMAKE_EXECUTABLE_SUFFIX ".html" ) # Optional: .html shell
1615 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } -sUSE_SDL=0 -O3 -sUSE_ZLIB=1 " )
16+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS } -static" )
17+ elseif (IS_MINGW)
18+ message (STATUS "Targeting MinGW/Windows" )
19+ set (SDL3_DIR "${CMAKE_SOURCE_DIR } /external/SDL3" )
20+ set (SDL3_DISABLE_INSTALL ON )
21+ set (SDL3_mixer_DISABLE_INSTALL ON )
22+ elseif (MSVC )
23+ message (STATUS "Using MSVC" )
24+ add_compile_options (/W4 /permissive- )
1725else ()
1826 message (STATUS "Targeting native GCC/Linux" )
27+ message (STATUS "Using GCC or Clang" )
28+ add_compile_options (-Wall -Wextra -Wpedantic )
1929endif ()
2030
2131add_subdirectory (src )
2232
2333# Add External
2434if (EMSCRIPTEN)
25- set (libxmp_INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR } /external/libxmp/include" )
26- set (libxmp_LIBRARY "${CMAKE_CURRENT_SOURCE_DIR } /build/ems/build_libxmp/libxmp.a" )
35+ set (SDLMIXER_MOD_XMP ON CACHE BOOL "Enable libxmp module support" )
36+ set (SDLMIXER_VENDORED ON CACHE BOOL "Use vendored libxmp" )
37+ elseif (IS_MINGW)
38+ set (SDL3_mixer_DISABLE_FIND_PACKAGE_SDL3 ON )
39+ set (SDLMIXER_MOD_XMP ON CACHE BOOL "Enable libxmp module support" )
40+ set (SDLMIXER_VENDORED ON CACHE BOOL "Use vendored libxmp" )
41+ set (SDLMIXER_MOD_XMP_SHARED OFF CACHE BOOL "Build libxmp statically" )
42+ set (SDLMIXER_BUILD_SHARED_LIBS OFF CACHE BOOL "Build SDL3_mixer statically" )
43+ set (CMAKE_FIND_PACKAGE_PREFER_CONFIG OFF )
44+ set (ZLIB_BUILD_TESTING OFF CACHE BOOL "Disable zlib test targets like infcover" )
45+ add_subdirectory (external/zlib zlib )
46+ #cmake --build build/mingw --target help
2747endif ()
2848
2949add_subdirectory (external/SDL3 SDL3 )
@@ -33,11 +53,12 @@ add_subdirectory(external/SDL3_mixer SDL3_mixer)
3353#add_executable(${PROJECT_NAME} ${SRC_EXPORTED_FILES})
3454add_executable (${PROJECT_NAME } src/main.cpp )
3555
36- enable_testing ()
37- add_subdirectory (tests )
56+ # enable_testing()
57+ # add_subdirectory(tests)
3858
3959
4060if (EMSCRIPTEN)
61+ message (STATUS "Link Target EMSCRIPTEN" )
4162 target_link_options (${PROJECT_NAME } PRIVATE
4263 #--preload-file ../data@data
4364 --preload-file ems_data@data
@@ -57,19 +78,25 @@ if(EMSCRIPTEN)
5778 -sEXPORTED_RUNTIME_METHODS=ccall,cwrap
5879 -sEXPORTED_FUNCTIONS=_main,_malloc,_free
5980 )
60- endif ()
61-
62- if (EMSCRIPTEN)
63- message (STATUS "Looking for libxmp.a in: ${CMAKE_CURRENT_SOURCE_DIR } /build/ems/build_libxmp" )
64- add_library (libxmp_static STATIC IMPORTED GLOBAL )
65- set_target_properties (libxmp_static PROPERTIES
66- IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR } /build/ems/build_libxmp/libxmp.a"
67- INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR } /external/libxmp/include"
81+ target_link_libraries (${PROJECT_NAME }
82+ PRIVATE SDL3::SDL3 SDL3_mixer::SDL3_mixer src_lib
83+ )
84+ elseif (IS_MINGW)
85+ message (STATUS "Link Target MinGW/Windows" )
86+ target_link_options (${PROJECT_NAME } PRIVATE
87+ -Wl,-t -mwindows
88+ -static-libstdc++
89+ -static-libgcc
90+ -lwinpthread
91+ -lmingw32
92+ -s
6893 )
6994 target_link_libraries (${PROJECT_NAME }
70- PRIVATE SDL3::SDL3 SDL3_mixer::SDL3_mixer libxmp_static src_lib
71- )
95+ PRIVATE SDL3::SDL3 SDL3_mixer::SDL3_mixer zlib src_lib
96+ )
97+
7298else ()
99+ message (STATUS "Link Target Linux" )
73100 #find_library(XMP_LIBRARY xmp)
74101 #find_library(OGG_LIBRARY ogg)
75102 #find_library(VORBIS_LIBRARY vorbisfile)
@@ -80,7 +107,9 @@ else()
80107endif ()
81108
82109target_include_directories (${PROJECT_NAME } PRIVATE
83- ${CMAKE_CURRENT_SOURCE_DIR } /src
84- ${CMAKE_CURRENT_SOURCE_DIR } /external/SDL3/include
85- ${CMAKE_CURRENT_SOURCE_DIR } /external/SDL3_mixer/include
110+ ${CMAKE_SOURCE_DIR } /src
111+ ${CMAKE_SOURCE_DIR } /external/SDL3/include
112+ ${CMAKE_SOURCE_DIR } /external/SDL3_mixer/include
113+ ${CMAKE_SOURCE_DIR } /external/zlib
86114)
115+
0 commit comments