@@ -3,119 +3,127 @@ project(oopetris)
33
44set (CMAKE_CXX_STANDARD 23)
55
6+ set (TARGET_LIST oopetris)
7+
8+ if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten" )
9+ set (CMAKE_HAVE_PTHREAD_H 1)
10+ endif ()
11+
612find_package (argparse CONFIG REQUIRED)
7- find_package (SDL2 CONFIG REQUIRED)
8- find_package (SDL2_ttf CONFIG REQUIRED)
9- find_package (SDL2_mixer CONFIG REQUIRED)
1013find_package (spdlog CONFIG REQUIRED)
1114find_package (nlohmann_json CONFIG REQUIRED)
1215find_package (magic_enum CONFIG REQUIRED)
1316find_package (tl-optional CONFIG REQUIRED)
1417find_package (tl-expected CONFIG REQUIRED)
1518
16- set (TARGET_LIST oopetris SDL2::SDL2-static )
19+ if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten" )
20+ find_package (SDL2 CONFIG REQUIRED)
21+ find_package (SDL2_ttf CONFIG REQUIRED)
22+ find_package (SDL2_mixer CONFIG REQUIRED)
23+ set (TARGET_LIST oopetris SDL2::SDL2-static )
24+ endif ()
1725
1826add_executable (oopetris
19- src/application.cpp
20- src/application.hpp
21- src/bag.cpp
22- src/bag.hpp
23- src/clock_source.cpp
24- src/clock_source.hpp
25- src/color.hpp
26- src/command_line_arguments.hpp
27- src/constants.hpp
28- src/controls.hpp
29- src/event_dispatcher.cpp
30- src/event_dispatcher.hpp
31- src/event_listener.hpp
32- src/font.cpp
33- src/font.hpp
34- src/grid.cpp
35- src/grid.hpp
36- src/input_event.hpp
37- src/input .cpp
38- src/input .hpp
39- src/key_codes.hpp
40- src/magic_enum_wrapper.hpp
41- src/main.cpp
42- src/mino_stack.cpp
43- src/mino_stack.hpp
44- src/mino.cpp
45- src/mino.hpp
46- src/music_manager.cpp
47- src/point.hpp
48- src/random.cpp
49- src/random.hpp
50- src/recording.hpp
51- src/rect.hpp
52- src/renderer.cpp
53- src/renderer.hpp
54- src/sdl_context.cpp
55- src/sdl_context.hpp
56- src/settings.hpp
57- src/static_string.hpp
58- src/tetrion_snapshot.cpp
59- src/tetrion_snapshot.hpp
60- src/tetrion.cpp
61- src/tetrion.hpp
62- src/tetris_application.cpp
63- src/tetris_application.hpp
64- src/tetromino_type.cpp
65- src/tetromino_type.hpp
66- src/tetromino.hpp
67- src/text.cpp
68- src/text.hpp
69- src/types.hpp
70- src/utils.cpp
71- src/utils.hpp
72- src/window.cpp
73- src/window.hpp
74- )
27+ src/application.cpp
28+ src/application.hpp
29+ src/bag.cpp
30+ src/bag.hpp
31+ src/clock_source.cpp
32+ src/clock_source.hpp
33+ src/color.hpp
34+ src/command_line_arguments.hpp
35+ src/constants.hpp
36+ src/controls.hpp
37+ src/event_dispatcher.cpp
38+ src/event_dispatcher.hpp
39+ src/event_listener.hpp
40+ src/font.cpp
41+ src/font.hpp
42+ src/grid.cpp
43+ src/grid.hpp
44+ src/input_event.hpp
45+ src/input .cpp
46+ src/input .hpp
47+ src/key_codes.hpp
48+ src/magic_enum_wrapper.hpp
49+ src/main.cpp
50+ src/mino_stack.cpp
51+ src/mino_stack.hpp
52+ src/mino.cpp
53+ src/mino.hpp
54+ src/music_manager.cpp
55+ src/point.hpp
56+ src/random.cpp
57+ src/random.hpp
58+ src/recording.hpp
59+ src/rect.hpp
60+ src/renderer.cpp
61+ src/renderer.hpp
62+ src/sdl_context.cpp
63+ src/sdl_context.hpp
64+ src/settings.hpp
65+ src/static_string.hpp
66+ src/tetrion_snapshot.cpp
67+ src/tetrion_snapshot.hpp
68+ src/tetrion.cpp
69+ src/tetrion.hpp
70+ src/tetris_application.cpp
71+ src/tetris_application.hpp
72+ src/tetromino_type.cpp
73+ src/tetromino_type.hpp
74+ src/tetromino.hpp
75+ src/text.cpp
76+ src/text.hpp
77+ src/types.hpp
78+ src/utils.cpp
79+ src/utils.hpp
80+ src/window.cpp
81+ src/window.hpp
82+ )
7583
76- foreach (target ${TARGET_LIST} )
84+ foreach (target ${TARGET_LIST} )
7785 # set warning levels
78- if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
86+ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
7987 message ("MSVC build" )
80- if (CMAKE_BUILD_TYPE STREQUAL "Release" )
88+
89+ if (CMAKE_BUILD_TYPE STREQUAL "Release" )
8190 target_compile_options (${target} INTERFACE /W4 /WX /permissive-)
82- else ()
91+ else ()
8392 target_compile_options (${target} INTERFACE /W4 /WX /permissive-)
84- endif ()
85- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
93+ endif ()
94+ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
8695 message ("GCC build" )
87- if (CMAKE_BUILD_TYPE STREQUAL "Release" )
96+
97+ if (CMAKE_BUILD_TYPE STREQUAL "Release" )
8898 target_compile_options (${target} INTERFACE -Wall -Wextra -Werror -pedantic -Wconversion)
89- else ()
99+ else ()
90100 target_compile_options (${target} INTERFACE -Wall -Wextra -Werror -pedantic -Wconversion)
91- endif ()
92- endif ()
101+ endif ()
102+ endif ()
93103
94104 # define DEBUG_BUILD
95105 target_compile_definitions (${target} INTERFACE "$<$<CONFIG:DEBUG>:DEBUG_BUILD>" )
96106
97107 # static runtime library
98108 set_property (TARGET ${target} PROPERTY
99- MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
100- endforeach ()
109+ MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
110+ endforeach ()
101111
102- target_link_libraries (oopetris
112+ if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten" )
113+ target_link_libraries (oopetris
103114 PRIVATE
104115 $<TARGET_NAME_IF_EXISTS:SDL2::SDL2main>
105116 $<IF:$<TARGET_EXISTS:SDL2::SDL2>,SDL2::SDL2,SDL2::SDL2-static >
106- )
117+ )
118+ target_link_libraries (oopetris PRIVATE $<IF:$<TARGET_EXISTS:SDL2_ttf::SDL2_ttf>,SDL2_ttf::SDL2_ttf,SDL2_ttf::SDL2_ttf-static >)
119+ target_link_libraries (oopetris PRIVATE $<IF:$<TARGET_EXISTS:SDL2_mixer::SDL2_mixer>,SDL2_mixer::SDL2_mixer,SDL2_mixer::SDL2_mixer-static >)
120+ endif ()
107121
108122target_link_libraries (oopetris PRIVATE argparse::argparse)
109123target_link_libraries (oopetris PRIVATE spdlog::spdlog spdlog::spdlog_header_only)
110124target_link_libraries (oopetris PRIVATE nlohmann_json::nlohmann_json)
111125target_link_libraries (oopetris PRIVATE magic_enum::magic_enum)
112- target_link_libraries (oopetris PRIVATE $<IF:$<TARGET_EXISTS:SDL2_ttf::SDL2_ttf>,SDL2_ttf::SDL2_ttf,SDL2_ttf::SDL2_ttf-static >)
113- target_link_libraries (oopetris PRIVATE $<IF:$<TARGET_EXISTS:SDL2_mixer::SDL2_mixer>,SDL2_mixer::SDL2_mixer,SDL2_mixer::SDL2_mixer-static >)
114126target_link_libraries (oopetris PRIVATE tl::optional )
115127target_link_libraries (oopetris PRIVATE tl::expected)
116128
117129target_compile_definitions (oopetris PUBLIC AUDIO_WITH_FLAC_SUPPORT AUDIO_WITH_MP3_SUPPORT AUDIO_PREFER_FLAC)
118-
119- # static runtime library
120- set_property (TARGET ${target} PROPERTY
121- MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
0 commit comments