-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathCMakeLists.txt
180 lines (150 loc) · 6.78 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
cmake_minimum_required(VERSION 3.17)
project(Stardust-Celeste)
set(CMAKE_CXX_STANDARD 17)
file(GLOB_RECURSE SRC_FILES src/*.cpp)
file(GLOB_RECURSE INC_FILES include/*.hpp)
add_compile_definitions(MAKE_LIB)
set(LUA_LIBRARY_SRC ext/lua/onelua.c)
# YAML-CPP
add_compile_definitions(YAML_CPP_STATIC_DEFINE)
# Whether or not to use Vulkan / Direct X Mode
option(EXPERIMENTAL_GRAPHICS "Use Vulkan and DirectX Mode" OFF)
# Vulkan Include
if(NOT PSP AND NOT 3DS AND NOT VITA)
if(EXPERIMENTAL_GRAPHICS)
if(WIN32)
set(Vulkan_LIBRARY "C:\\VulkanSDK\\1.3.231.1\\Lib\\vulkan-1.lib")
endif()
find_package(Vulkan REQUIRED)
endif()
endif()
# SDL 2 Requirement
if(WIN32)
#find_package(SDL2 CONFIG REQUIRED)
#find_package(SDL2_mixer CONFIG REQUIRED)
elseif(NOT VITA AND NOT 3DS AND NOT PSP)
#find_package(SDL2 REQUIRED)
#find_package(PkgConfig)
#pkg_check_modules(SDL2mixer REQUIRED SDL2_mixer)
endif()
# ZLib Requirement
add_subdirectory(ext/zlib)
add_library(minizip STATIC ext/zlib/contrib/minizip/ioapi.c ext/zlib/contrib/minizip/unzip.c ext/zlib/contrib/minizip/miniunz.c)
target_link_libraries(minizip zlibstatic)
add_compile_definitions(MATHFU_COMPILE_WITHOUT_SIMD_SUPPORT)
if(PSP)
list(REMOVE_ITEM SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/glad.cpp")
add_library(Stardust-Celeste STATIC ${LUA_LIBRARY_SRC} ${SRC_FILES} ${INC_FILES})
target_link_libraries(Stardust-Celeste PUBLIC pspgum pspgu pspge psputility pspdisplay pspctrl pspnet pspnet_apctl psppower pspaudio SDL2_mixer SDL2 pspvramalloc xmp ogg vorbisfile vorbis psphprm GL GLU glut pspvfpu zlibstatic minizip)
target_include_directories(Stardust-Celeste PUBLIC ext/ ext/gu2gl ext/zlib ext/mathfu/include ext/lua ext/zlib/contrib)
elseif(VITA)
list(REMOVE_ITEM SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/glad.cpp")
include(setup_vita.cmake)
setup_vita()
file(GLOB_RECURSE YAML_FILES ext/yaml/src/*.cpp)
add_library(Stardust-Celeste STATIC ${LUA_LIBRARY_SRC} ${SRC_FILES} ${INC_FILES} ${YAML_FILES})
target_link_libraries(Stardust-Celeste PUBLIC SDL2_mixer SDL2 SceTouch_stub SceHid_stub vitaGL SceCtrl_stub vitashark mathneon SceShaccCg_stub SceShaccCgExt SceIme_stub SceAppMgr_stub SceGxm_stub SceCommonDialog_stub SceProcessmgr_stub SceDisplay_stub SceKernelDmacMgr_stub ScePower_stub taihen_stub SceAudioIn_stub SceAudio_stub SceMotion_stub vorbisfile vorbis ogg FLAC mikmod pthread mpg123 modplug zlibstatic)
elseif(3DS)
list(REMOVE_ITEM SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/glad.cpp")
add_library(Stardust-Celeste STATIC ${LUA_LIBRARY_SRC} ${SRC_FILES} ${INC_FILES} ${YAML_FILES})
target_include_directories(Stardust-Celeste PUBLIC "$ENV{DEVKITPRO}/portlibs/3ds/include" "$ENV{DEVKITPRO}/picaGL/include" ext/zlib)
target_link_directories(Stardust-Celeste PUBLIC "$ENV{DEVKITPRO}/picaGL/lib")
target_link_libraries(Stardust-Celeste SDL_mixer SDL mad png vorbisidec ogg mikmod picaGL citro3d ctru zlibstatic)
else()
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build GLFW without examples")
set(GLFW_BUILD_TESTS OFF CACHE BOOL "Build GLFW without tests")
set(GLFW_BUILD_DOCS OFF CACHE BOOL "Build GLFW without docs")
add_subdirectory(ext/glfw)
add_library(Stardust-Celeste STATIC ${LUA_LIBRARY_SRC} ${SRC_FILES} ${INC_FILES})
target_include_directories(Stardust-Celeste PUBLIC ext/glfw/include/ ext/zlib ext/zlib/contrib ext/mathfu/include)
target_link_libraries(Stardust-Celeste PUBLIC glfw zlibstatic minizip)
endif()
# No experimental graphics define
if(NOT EXPERIMENTAL_GRAPHICS)
target_compile_definitions(Stardust-Celeste PUBLIC NO_EXPERIMENTAL_GRAPHICS)
endif()
if(WIN32)
target_link_libraries(Stardust-Celeste PUBLIC ws2_32)
endif()
# SDL2 for WIN32/POSIX
#if(WIN32)
# target_link_libraries(Stardust-Celeste PUBLIC ws2_32 SDL2_mixer::SDL2_mixer ${SDL2_LIBRARIES}
# ${SDL2_mixer_LIBRARIES}
# ${catkin_LIBRARIES})
#elseif(NOT VITA AND NOT 3DS AND NOT PSP)
# target_link_libraries(Stardust-Celeste PUBLIC ${SDL2_LIBRARIES}
# ${SDL2mixer_LIBRARIES}
# ${catkin_LIBRARIES})
#endif()
# Use EASTL
option(USE_EASTL "Use EA Standard Template Library" OFF)
if(USE_EASTL)
include_directories(${EASTL_ROOT_DIR}/include)
include_directories(${EASTL_ROOT_DIR}/test/packages/EAAssert/include)
include_directories(${EASTL_ROOT_DIR}/test/packages/EABase/include/Common)
include_directories(${EASTL_ROOT_DIR}/test/packages/EAMain/include)
include_directories(${EASTL_ROOT_DIR}/test/packages/EAStdC/include)
include_directories(${EASTL_ROOT_DIR}/test/packages/EATest/include)
include_directories(${EASTL_ROOT_DIR}/test/packages/EAThread/include)
target_link_directories(Stardust-Celeste PUBLIC ${EASTL_ROOT_DIR}/build)
add_custom_target(NatVis SOURCES ${EASTL_ROOT_DIR}/doc/EASTL.natvis)
target_link_libraries(Stardust-Celeste PUBLIC EASTL)
add_compile_definitions(USE_EASTL=1)
endif()
if(PSP)
target_compile_options(Stardust-Celeste PUBLIC -fno-rtti)
endif()
# Includes
target_include_directories(Stardust-Celeste PUBLIC include/ ext/ ext/assimp/include ext/lua)
if(NOT VITA)
add_subdirectory(ext/yaml)
set_property(TARGET yaml-cpp PROPERTY POSITION_INDEPENDENT_CODE OFF)
endif()
# Assimp
#set(BUILD_SHARED_LIBS OFF)
#add_subdirectory(ext/assimp)
# SC-Entry Library Artifact
add_library(SC-Entry STATIC src/Core/Entry.cpp)
# SC-Entry Include
target_include_directories(SC-Entry PUBLIC include/ ext/mathfu/include)
if(NOT EXPERIMENTAL_GRAPHICS)
target_compile_definitions(SC-Entry PUBLIC NO_EXPERIMENTAL_GRAPHICS)
endif()
# Lua Interpreter
add_executable(SC-Interpreter interpreter/interpreter.cpp)
target_include_directories(SC-Interpreter PUBLIC ../include/)
target_link_libraries(SC-Interpreter SC-Entry Stardust-Celeste)
if(WIN32)
target_link_libraries(SC-Interpreter ws2_32 stdc++)
endif()
# Vulkan
if(EXPERIMENTAL_GRAPHICS)
if(NOT PSP AND NOT 3DS AND NOT VITA)
target_include_directories(Stardust-Celeste PUBLIC ${Vulkan_INCLUDE_DIRS})
target_include_directories(SC-Entry PUBLIC ${Vulkan_INCLUDE_DIRS})
target_link_libraries(Stardust-Celeste PUBLIC Vulkan::Vulkan)
endif()
endif()
if(3DS)
target_include_directories(SC-Entry PUBLIC "$ENV{DEVKITPRO}/picaGL/include")
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
include_directories(/usr/local/include)
target_link_libraries(Stardust-Celeste PUBLIC z)
endif()
# Define Platform Build
# TODO: Make into CMake Include
if(WIN32)
add_compile_definitions(BUILD_PLAT=0)
elseif(PSP)
add_compile_definitions(BUILD_PLAT=2)
add_compile_definitions(IOAPI_NO_64)
elseif(VITA)
add_compile_definitions(BUILD_PLAT=3)
add_compile_definitions(IOAPI_NO_64)
elseif(3DS)
add_compile_definitions(BUILD_PLAT=7)
add_compile_definitions(IOAPI_NO_64)
else()
add_compile_definitions(BUILD_PLAT=1)
endif()