-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathCMakeLists.txt
132 lines (112 loc) · 3.61 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
cmake_minimum_required(VERSION 3.10)
project(RetroEngine)
option(FORCE_CASE_INSENSITIVE "Forces case insensivity." OFF)
option(RETRO_MOD_LOADER "Enables or disables the mod loader." ON)
option(RETRO_USE_ORIGINAL_CODE "Removes any change that differs from the original code, a playable game can't be built this way." OFF)
set(RETRO_SDL_VERSION 2 CACHE STRING "Select between SDL2 and SDL1, defaults to SDL2")
if(RETRO_ORIGINAL_CODE)
set(RETRO_MOD_LOADER OFF)
endif()
set(RETRO_NAME "Nexus")
set(RETRO_OUTPUT_NAME ${RETRO_NAME} CACHE STRING "The exported name of the executable.")
set(RETRO_FILES
Nexus/Animation.cpp
Nexus/Audio.cpp
Nexus/Collision.cpp
Nexus/Debug.cpp
Nexus/Drawing.cpp
Nexus/Ini.cpp
Nexus/Input.cpp
Nexus/fcaseopen.c
Nexus/main.cpp
Nexus/Math.cpp
Nexus/ModAPI.cpp
Nexus/Object.cpp
Nexus/Palette.cpp
Nexus/Player.cpp
Nexus/Reader.cpp
Nexus/RetroEngine.cpp
Nexus/Scene.cpp
Nexus/Script.cpp
Nexus/Sprite.cpp
Nexus/String.cpp
Nexus/Text.cpp
Nexus/Userdata.cpp
Nexus/Video.cpp
)
if(NOT PLATFORM)
if(WIN32) # THIS ASSUMES VCPKG OR SOURCES !!!!!!!
set(PLATFORM "Windows" CACHE STRING "The platform to compile for.")
elseif(ANDROID)
set(PLATFORM "Android" CACHE STRING "The platform to compile for.")
else()
set(PLATFORM ${CMAKE_SYSTEM_NAME} CACHE STRING "The platform to compile for.")
endif()
endif()
include(platforms/${PLATFORM}.cmake)
set_target_properties(RetroEngine PROPERTIES OUTPUT_NAME ${RETRO_OUTPUT_NAME})
if(COMPILE_OGG)
set(OGG_DIR dependencies/${DEP_PATH}/libogg)
add_library(
libogg
STATIC
${OGG_DIR}/src/bitwise.c
${OGG_DIR}/src/framing.c
)
target_compile_options(libogg PRIVATE ${OGG_FLAGS})
target_include_directories(libogg PRIVATE ${OGG_DIR}/include)
target_include_directories(RetroEngine PRIVATE ${OGG_DIR}/include)
target_link_libraries(RetroEngine libogg)
endif()
if(COMPILE_VORBIS)
set(VORBIS_DIR dependencies/${DEP_PATH}/libvorbis)
set(OGG_DIR dependencies/${DEP_PATH}/libogg)
add_library(libvorbis STATIC
${VORBIS_DIR}/lib/analysis.c
${VORBIS_DIR}/lib/barkmel.c
${VORBIS_DIR}/lib/bitrate.c
${VORBIS_DIR}/lib/block.c
${VORBIS_DIR}/lib/codebook.c
${VORBIS_DIR}/lib/envelope.c
${VORBIS_DIR}/lib/floor0.c
${VORBIS_DIR}/lib/floor1.c
${VORBIS_DIR}/lib/info.c
${VORBIS_DIR}/lib/lookup.c
${VORBIS_DIR}/lib/lpc.c
${VORBIS_DIR}/lib/lsp.c
${VORBIS_DIR}/lib/mapping0.c
${VORBIS_DIR}/lib/mdct.c
${VORBIS_DIR}/lib/psy.c
${VORBIS_DIR}/lib/registry.c
${VORBIS_DIR}/lib/res0.c
${VORBIS_DIR}/lib/sharedbook.c
${VORBIS_DIR}/lib/smallft.c
${VORBIS_DIR}/lib/synthesis.c
${VORBIS_DIR}/lib/tone.c
${VORBIS_DIR}/lib/vorbisenc.c
${VORBIS_DIR}/lib/vorbisfile.c
${VORBIS_DIR}/lib/window.c
)
target_compile_options(libvorbis PRIVATE ${VORBIS_FLAGS})
target_include_directories(libvorbis
PRIVATE
${VORBIS_DIR}/include
${VORBIS_DIR}/lib
${OGG_DIR}/include
)
target_include_directories(RetroEngine PRIVATE ${VORBIS_DIR}/include)
target_link_libraries(RetroEngine libvorbis libogg)
endif()
target_include_directories(RetroEngine PRIVATE
Nexus/
)
if(DEFINED DEP_PATH)
target_include_directories(RetroEngine PRIVATE
dependencies/${DEP_PATH}/
)
endif()
target_compile_definitions(RetroEngine PRIVATE
RETRO_USE_MOD_LOADER=$<BOOL:${RETRO_USE_MOD_LOADER}>
FORCE_CASE_INSENSITIVE=$<BOOL:${FORCE_CASE_INSENSITIVE}>
RETRO_USE_ORIGINAL_CODE=$<BOOL:${RETRO_USE_ORIGINAL_CODE}>
)