@@ -2,61 +2,53 @@ cmake_minimum_required(VERSION 3.12)
22
33set (CMAKE_C_STANDARD 99)
44set (CMAKE_C_STANDARD_REQUIRED TRUE )
5- set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
6- set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
75
8- project (BlockBreakC LANGUAGES C VERSION 1.2 )
6+ project (BlockBreakC LANGUAGES C VERSION 1.3 )
97
10- set (IMPL "GLFW3 " CACHE STRING "The implementation to build with" )
8+ set (IMPL "SDL3 " CACHE STRING "The implementation to build with" )
119set (HSSIMPL "libc" CACHE STRING "The high score saving implementation to build with" )
12- set (SIMPL "Dummy" CACHE STRING "The screenshot implementation to build with" )
1310option (BUILD_SHARED_LIBS "Build the libraries as shared libraries" OFF )
14- option (BUILD_ONLY_IMPL "Build only the implementation library" OFF )
15- option (BUILD_AS_LIBRARY "Build the game as a library" OFF )
1611option (BUILD_FOR_I586 "Build ${PROJECT_NAME} for i586 (Intel Pentium) or higher" OFF )
17- option (ENABLE_SCREENSHOT "Enables taking screenshots" OFF )
18- option (USE_BLOCKSIZELIST "Uses the block size list instead of doing the block size calculations at runtime" OFF )
1912# Windows Compiler Options
2013option (BUILD_USING_MSVCRT20 "Build ${PROJECT_NAME} using msvcrt20 (Windows Compiler Only)" OFF )
21- option (BUILD_WITH_RES "Build with the resource file (Windows Compiler Only)" ON )
2214
23- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -MD" )
24-
25- include (TestBigEndian )
26- TEST_BIG_ENDIAN (BIG_ENDIAN )
27- if (BIG_ENDIAN)
28- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBIG_ENDIAN" )
29- endif ()
30-
31- if (
32- NOT IMPL STREQUAL "DJGPP"
33- AND
34- NOT ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "mips"
35- )
36- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC" )
37- endif ()
38-
39- if (IMPL STREQUAL "DJGPP" )
40- set (CMAKE_C_COMPILER "i586-pc-msdosdjgpp-gcc" )
41- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DRENDER_WIDTH=320 -DRENDER_HEIGHT=200 -DFONT_WIDTH=8 -DFONT_HEIGHT=8 -DPLAYER_HEIGHT=7 -DPLAYER_SPEED=4 -DFILENAME83" )
42- elseif (IMPL STREQUAL "Xlib" )
43- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DFONT_HEIGHT=10" )
15+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DFONT_WIDTH=8 -DFONT_HEIGHT=8" )
16+
17+ # Impl
18+ if (IMPL STREQUAL "SDL3" )
19+ find_package (SDL3 REQUIRED )
20+ set (IMPL_FILE "sdl3.c" )
21+ elseif (IMPL STREQUAL "GLUT" )
22+ find_package (OpenGL REQUIRED )
23+ find_package (GLUT REQUIRED )
24+ include_directories (
25+ ${OPENGL_INCLUDE_DIRS}
26+ ${GLUT_INCLUDE_DIR}
27+ )
28+ set (IMPL_FILE "glut.c" )
29+ elseif (IMPL STREQUAL "SDL3GL" )
30+ find_package (SDL3 REQUIRED )
31+ find_package (OpenGL REQUIRED )
32+ include_directories (${OPENGL_INCLUDE_DIRS} )
33+ set (IMPL_FILE "sdl3GL.c" )
4434elseif (IMPL STREQUAL "citro2d" )
4535 if (NINTENDO_3DS)
46- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DRENDER_WIDTH=400 -DRENDER_HEIGHT=240 -DFONT_WIDTH=8 -DFONT_HEIGHT=8 - DPLAYER_SPEED=5" )
36+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DRENDER_WIDTH=400 -DRENDER_HEIGHT=240 -DPLAYER_SPEED=5" )
4737 else ()
48- message (FATAL_ERROR "To build the citro2d implementation you must be using the devkitPro 3DS toolchain: -DCMAKE_TOOLCHAIN_FILE=$DEVKITPRO/cmake/3DS.cmake" )
38+ message (FATAL_ERROR "To build the citro2d implementation you must be using the devkitPro 3DS/2DS toolchain: -DCMAKE_TOOLCHAIN_FILE=$DEVKITPRO/cmake/3DS.cmake" )
4939 endif ()
40+ set (IMPL_FILE "citro2d.c" )
5041else ()
51- set ( CMAKE_C_FLAGS " ${CMAKE_C_FLAGS} -DFONT_WIDTH=8 -DFONT_HEIGHT=8 " )
42+ message ( FATAL_ERROR "Invalid implementation, the possible values are \" SDL3 \" , \" GLUT \" , \" SDL3GL \" or \" citro2d \" " )
5243endif ()
5344
54- if (ENABLE_SCREENSHOT)
55- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DENABLE_SCREENSHOT" )
56- endif ()
57-
58- if (USE_BLOCKSIZELIST)
59- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_BLOCKSIZELIST" )
45+ # HSSImpl
46+ if (HSSIMPL STREQUAL "libc" )
47+ set (HSSIMPL_FILE "libc.c" )
48+ elseif (HSSIMPL STREQUAL "Dummy" )
49+ set (HSSIMPL_FILE "dummy.c" )
50+ else ()
51+ message (FATAL_ERROR "Invalid high score implementation, the possible values are \" libc\" or \" Dummy\" " )
6052endif ()
6153
6254set (CMAKE_C_FLAGS_DEBUG "-g -Wall" )
@@ -74,68 +66,66 @@ endif()
7466
7567if (WIN32 )
7668 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-subsystem,windows" )
77- if (BUILD_WITH_RES)
78- set (RESOURCE_FILES "src/res/resource.rc" )
79- endif ()
69+ set (RESOURCE_FILES "src/res/resource.rc" )
8070 if (BUILD_USING_MSVCRT20)
8171 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcrtdll=msvcrt20" )
8272 endif ()
8373elseif (NOT WIN32 AND BUILD_USING_MSVCRT20)
8474 message (FATAL_ERROR "To build using msvcrt20 you must be using a Windows C compiler" )
8575endif ()
8676
87- include_directories (
88- "src"
89- "src/impl"
90- "src/impl/highScore"
91- "src/impl/screenshot"
92- "src/shared"
93- )
94-
95- add_subdirectory (src/impl )
96- if (ENABLE_SCREENSHOT)
97- add_subdirectory (src/impl/screenshot )
98- endif ()
99-
100- file (GLOB SHARED_SOURCE_FILES "src/shared/*.c" )
77+ include_directories ("src" )
10178
102- add_library ( Shared ${SHARED_SOURCE_FILES} )
79+ file ( GLOB SOURCE_FILES "src/*.c" )
10380
104- if (ENABLE_SCREENSHOT)
105- target_link_libraries (Shared SImpl )
106- endif ()
107-
108- if (NOT BUILD_ONLY_IMPL)
109- add_subdirectory (src/impl/highScore )
110-
111- file (GLOB SOURCE_FILES "src/*.c" )
81+ add_executable (
82+ ${PROJECT_NAME}
83+ "src/impl/${IMPL_FILE} "
84+ "src/hssImpl/${HSSIMPL_FILE} "
85+ ${RESOURCE_FILES}
86+ ${SOURCE_FILES}
87+ )
88+ if (IMPL STREQUAL "SDL3" )
89+ target_link_libraries (${PROJECT_NAME} SDL3::SDL3 )
90+ elseif (IMPL STREQUAL "GLUT" )
91+ target_link_libraries (
92+ ${PROJECT_NAME}
93+ ${OPENGL_LIBRARY}
94+ )
11295
113- if (BUILD_AS_LIBRARY)
114- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBLOCKBREAKC_MAIN_NAME=blockBreakC_main" )
115- add_library (${PROJECT_NAME} SHARED ${SOURCE_FILES} )
96+ if (BUILD_USING_MSVCRT20)
97+ target_link_libraries (${PROJECT_NAME} libglut.a )
11698 else ()
117- add_executable (${PROJECT_NAME} ${RESOURCE_FILES} ${SOURCE_FILES} )
118- if (IMPL STREQUAL "DJGPP" )
119- set_target_properties (${PROJECT_NAME} PROPERTIES SUFFIX ".exe" )
120- elseif (IMPL STREQUAL "citro2d" )
121- ctr_generate_smdh (${PROJECT_NAME} .smdh
122- NAME "${PROJECT_NAME} "
123- DESCRIPTION "A simple game originally made in JavaScript + jQuery"
124- VERSION "v${PROJECT_VERSION} pre"
125- AUTHOR "StevenSYS"
126- ICON "src/res/icon.png"
127- )
128- ctr_create_3dsx (${PROJECT_NAME} SMDH ${PROJECT_NAME} .smdh )
129- endif ()
99+ target_link_libraries (${PROJECT_NAME} ${GLUT_glut_LIBRARY} )
100+ endif ()
101+
102+ if (APPLE )
103+ target_link_libraries (${PROJECT_NAME} "-framework OpenGL" )
130104 endif ()
105+ elseif (IMPL STREQUAL "SDL3GL" )
131106 target_link_libraries (
132107 ${PROJECT_NAME}
133- Impl
134- HSSImpl
135- Shared
108+ SDL3::SDL3
109+ ${OPENGL_LIBRARY}
136110 )
137- if (ENABLE_SCREENSHOT)
138- target_link_libraries (${PROJECT_NAME} SImpl )
111+
112+ if (APPLE )
113+ target_link_libraries (${PROJECT_NAME} "-framework OpenGL" )
139114 endif ()
140- set_property (TARGET ${PROJECT_NAME} PROPERTY BUILD_RPATH "." )
141- endif ()
115+ elseif (IMPL STREQUAL "citro2d" )
116+ ctr_generate_smdh (${PROJECT_NAME} .smdh
117+ NAME "${PROJECT_NAME} "
118+ DESCRIPTION "A simple game originally made in JavaScript + jQuery"
119+ VERSION "v${PROJECT_VERSION} pre"
120+ AUTHOR "StevenSYS"
121+ ICON "src/res/icon.png"
122+ )
123+ ctr_create_3dsx (${PROJECT_NAME} SMDH ${PROJECT_NAME} .smdh )
124+ target_link_libraries (
125+ ${PROJECT_NAME}
126+ citro2d
127+ citro3d
128+ ctru
129+ )
130+ endif ()
131+ set_property (TARGET ${PROJECT_NAME} PROPERTY BUILD_RPATH "." )
0 commit comments