mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Reworked CMakeLists
This commit is contained in:
parent
ba881b768d
commit
5b97245dd1
12 changed files with 348 additions and 225 deletions
233
CMakeLists.txt
233
CMakeLists.txt
|
@ -64,145 +64,35 @@ ENDIF()
|
|||
|
||||
# Common stuff
|
||||
|
||||
## For modules
|
||||
add_subdirectory("code/qcommon")
|
||||
add_subdirectory("code/gamespy")
|
||||
|
||||
set(SOURCES_SHARED
|
||||
"code/qcommon/class.cpp"
|
||||
"code/qcommon/con_set.cpp"
|
||||
"code/qcommon/con_timer.cpp"
|
||||
"code/qcommon/listener.cpp"
|
||||
"code/qcommon/lz77.cpp"
|
||||
"code/qcommon/mem_blockalloc.cpp"
|
||||
"code/qcommon/mem_tempalloc.cpp"
|
||||
"code/qcommon/q_math.c"
|
||||
"code/qcommon/q_shared.c"
|
||||
"code/qcommon/script.cpp"
|
||||
"code/qcommon/str.cpp"
|
||||
"code/script/scriptexception.cpp"
|
||||
"code/script/scriptvariable.cpp"
|
||||
)
|
||||
# Application
|
||||
|
||||
file(GLOB_RECURSE SOURCES_BG "code/fgame/bg_*.cpp")
|
||||
add_subdirectory("code/sys")
|
||||
|
||||
## For executable
|
||||
## Server app
|
||||
add_subdirectory("code/server")
|
||||
|
||||
### Platform-specific code
|
||||
if(WIN32)
|
||||
set(SOURCES_PLATFORM_SPECIFIC
|
||||
#WIN32
|
||||
"code/sys/con_log.c"
|
||||
"code/sys/sys_autoupdater.c"
|
||||
"code/sys/sys_main.c"
|
||||
"code/sys/new/sys_main_new.c"
|
||||
"code/sys/new/sys_win32_new.c"
|
||||
"code/sys/con_win32.c"
|
||||
"code/sys/sys_win32.c"
|
||||
"code/sys/win_resource.rc"
|
||||
# These are still used even they're prefixed 'win'
|
||||
"code/sys/win_bounds.cpp"
|
||||
"code/sys/win_localization.cpp"
|
||||
)
|
||||
|
||||
set(SOURCES_CLIENT_PLATFORM_SPECIFIC "")
|
||||
else()
|
||||
set(SOURCES_PLATFORM_SPECIFIC
|
||||
"code/sys/con_log.c"
|
||||
"code/sys/sys_autoupdater.c"
|
||||
"code/sys/sys_main.c"
|
||||
"code/sys/new/sys_main_new.c"
|
||||
"code/sys/new/sys_unix_new.c"
|
||||
"code/sys/con_tty.c"
|
||||
"code/sys/sys_unix.c"
|
||||
# These are still used even they're prefixed 'win'
|
||||
"code/sys/win_bounds.cpp"
|
||||
"code/sys/win_localization.cpp"
|
||||
)
|
||||
|
||||
set(SOURCES_CLIENT_PLATFORM_SPECIFIC "")
|
||||
endif()
|
||||
|
||||
### Common executable code
|
||||
set(SOURCES_COMMON
|
||||
"code/qcommon/alias.c"
|
||||
"code/qcommon/cm_fencemask.c"
|
||||
"code/qcommon/cm_load.c"
|
||||
"code/qcommon/cm_patch.c"
|
||||
"code/qcommon/cm_polylib.c"
|
||||
"code/qcommon/cm_terrain.c"
|
||||
"code/qcommon/cm_test.c"
|
||||
"code/qcommon/cm_trace.c"
|
||||
"code/qcommon/cm_trace_lbd.cpp"
|
||||
"code/qcommon/cmd.c"
|
||||
"code/qcommon/common.cpp"
|
||||
"code/qcommon/crc.c"
|
||||
"code/qcommon/cvar.c"
|
||||
"code/qcommon/files.cpp"
|
||||
"code/qcommon/huffman.cpp"
|
||||
"code/qcommon/md4.c"
|
||||
"code/qcommon/md5.c"
|
||||
"code/qcommon/memory.c"
|
||||
"code/qcommon/msg.cpp"
|
||||
"code/qcommon/net_chan.c"
|
||||
"code/qcommon/net_ip.c"
|
||||
"code/qcommon/q_math.c"
|
||||
"code/qcommon/q_shared.c"
|
||||
"code/qcommon/tiki_main.cpp"
|
||||
"code/qcommon/tiki_script.cpp"
|
||||
"code/qcommon/unzip.c"
|
||||
# Gamespy
|
||||
"code/gamespy/sv_gamespy.c"
|
||||
"code/gamespy/sv_gqueryreporting.c"
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE SOURCES_SKEL "code/tiki/*.cpp" "code/skeletor/*.cpp")
|
||||
|
||||
set(SOURCES_APP ${SOURCES_SHARED} ${SOURCES_COMMON} ${SOURCES_SKEL})
|
||||
|
||||
# Targets
|
||||
|
||||
## Server
|
||||
|
||||
### Server game library
|
||||
file(GLOB_RECURSE SOURCES_GAME "code/fgame/*.c" "code/fgame/*.cpp" "code/parser/*.cpp" "code/script/*.cpp")
|
||||
set(SOURCES_GAME_LIB ${SOURCES_SHARED} ${SOURCES_GAME})
|
||||
|
||||
add_library(fgame SHARED ${SOURCES_GAME_LIB})
|
||||
target_compile_definitions(fgame PRIVATE GAME_DLL WITH_SCRIPT_ENGINE ARCHIVE_SUPPORTED TARGET_GAME_TYPE=${TARGET_GAME_TYPE})
|
||||
target_include_directories(fgame PUBLIC "code/qcommon" "code/script" "code/fgame")
|
||||
target_include_directories(fgame PRIVATE "code/parser")
|
||||
target_compile_features(fgame PUBLIC cxx_nullptr)
|
||||
target_compile_features(fgame PUBLIC c_variadic_macros)
|
||||
|
||||
set_target_properties(fgame PROPERTIES PREFIX "${TARGET_PLATFORM_PREFIX}")
|
||||
set_target_properties(fgame PROPERTIES OUTPUT_NAME "game${TARGET_ARCH_SUFFIX}${TARGET_CONFIG_SUFFIX}")
|
||||
set_target_properties(fgame PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TARGET_BASE_GAME}")
|
||||
INSTALL(TARGETS fgame DESTINATION "${TARGET_BASE_GAME}")
|
||||
|
||||
include("code/gamespy/gcd.cmake")
|
||||
|
||||
### Server executable
|
||||
file(GLOB_RECURSE SOURCES_SERVER "code/server/*.c" "code/server/*.cpp")
|
||||
set(SOURCES_SERVER_APP ${SOURCES_APP} ${SOURCES_SERVER})
|
||||
|
||||
add_executable(omohaaded ${SOURCES_PLATFORM_SPECIFIC} ${SOURCES_SERVER_APP} "code/null/null_client.c" "code/null/null_input.c" "code/null/null_snddma.c")
|
||||
target_compile_definitions(omohaaded PRIVATE APP_MODULE DEDICATED TARGET_GAME_TYPE=${TARGET_GAME_TYPE})
|
||||
add_executable(omohaaded "code/null/null_client.c" "code/null/null_input.c" "code/null/null_snddma.c")
|
||||
target_compile_definitions(omohaaded PRIVATE APP_MODULE DEDICATED)
|
||||
target_compile_features(omohaaded PUBLIC cxx_nullptr)
|
||||
target_compile_features(omohaaded PUBLIC c_variadic_macros)
|
||||
target_link_libraries(omohaaded PRIVATE omohserver)
|
||||
target_link_libraries(omohaaded PRIVATE syslib)
|
||||
target_link_libraries(omohaaded PRIVATE qcommon qcommon_standalone)
|
||||
# Gamespy dependency
|
||||
add_dependencies(omohaaded gcd)
|
||||
target_link_libraries(omohaaded PRIVATE gcd)
|
||||
target_include_directories(omohaaded PUBLIC "code/qcommon" "code/script" "code/gamespy" "code/server" "code/SDL2/include")
|
||||
target_include_directories(omohaaded PUBLIC "code/qcommon" "code/script" "code/gamespy" "code/server")
|
||||
set_target_properties(omohaaded PROPERTIES OUTPUT_NAME "omohaaded${TARGET_BASE_SUFFIX}${TARGET_ARCH_SUFFIX}${TARGET_CONFIG_SUFFIX}")
|
||||
|
||||
if(WIN32)
|
||||
if (MSVC)
|
||||
target_link_options(omohaaded PRIVATE "/MANIFEST:NO")
|
||||
endif()
|
||||
target_link_libraries(omohaaded PRIVATE wsock32 ws2_32)
|
||||
target_link_libraries(omohaaded PRIVATE winmm)
|
||||
|
||||
INSTALL(FILES $<TARGET_PDB_FILE:fgame> DESTINATION "${TARGET_BASE_GAME}" OPTIONAL)
|
||||
INSTALL(FILES $<TARGET_PDB_FILE:omohaaded> DESTINATION "./" OPTIONAL)
|
||||
|
||||
if (MSVC)
|
||||
target_link_options(omohaaded PRIVATE "/MANIFEST:NO")
|
||||
INSTALL(FILES $<TARGET_PDB_FILE:omohaaded> DESTINATION "./" OPTIONAL)
|
||||
endif()
|
||||
elseif(UNIX)
|
||||
find_package(Threads)
|
||||
target_link_libraries(omohaaded PRIVATE ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
@ -213,56 +103,30 @@ endif()
|
|||
INSTALL(TARGETS omohaaded DESTINATION "./")
|
||||
|
||||
if (WITH_CLIENT)
|
||||
## Client
|
||||
## Client app
|
||||
|
||||
### Client game library
|
||||
file(GLOB_RECURSE SOURCES_CGAME "code/cgame/*.c" "code/cgame/*.cpp")
|
||||
set(SOURCES_CGAME_LIB ${SOURCES_SHARED} ${SOURCES_CGAME} ${SOURCES_BG})
|
||||
|
||||
add_library(cgame SHARED ${SOURCES_CGAME_LIB})
|
||||
target_compile_definitions(cgame PRIVATE CGAME_DLL TARGET_GAME_TYPE=${TARGET_GAME_TYPE})
|
||||
target_include_directories(cgame PUBLIC "code/qcommon" "code/cgame" "code/script")
|
||||
target_compile_features(cgame PUBLIC cxx_nullptr)
|
||||
target_compile_features(cgame PUBLIC c_variadic_macros)
|
||||
|
||||
set_target_properties(cgame PROPERTIES PREFIX "${TARGET_PLATFORM_PREFIX}")
|
||||
set_target_properties(cgame PROPERTIES OUTPUT_NAME "cgame${TARGET_ARCH_SUFFIX}${TARGET_CONFIG_SUFFIX}")
|
||||
set_target_properties(cgame PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TARGET_BASE_GAME}")
|
||||
INSTALL(TARGETS cgame DESTINATION "${TARGET_BASE_GAME}")
|
||||
|
||||
### Executable
|
||||
file(GLOB_RECURSE SOURCES_JPEG_8 "code/jpeg-8c/*.c")
|
||||
add_library(jpeg8 STATIC ${SOURCES_JPEG_8})
|
||||
target_include_directories(jpeg8 PRIVATE "code/jpeg-8c")
|
||||
|
||||
file(GLOB_RECURSE SOURCES_CLIENT "code/client/*.c" "code/client/*.cpp" "code/qcommon/puff.c")
|
||||
file(GLOB_RECURSE SOURCES_UILIB "code/uilib/*.c" "code/uilib/*.cpp")
|
||||
file(GLOB_RECURSE SOURCES_RENDERER "code/sdl/*.c" "code/renderer/*.c" "code/renderer/*.cpp")
|
||||
add_subdirectory("code/renderer")
|
||||
add_subdirectory("code/sdl")
|
||||
add_subdirectory("code/client")
|
||||
|
||||
#include("code/renderergl2/glsl/shaders.cmake")
|
||||
#file(GLOB_RECURSE SOURCES_RENDERER "code/sdl/*.c" "code/renderercommon/*.c" "code/renderergl2/*.c" "code/renderergl2/*.cpp")
|
||||
#list(FILTER SOURCES_RENDERER EXCLUDE REGEX "code/renderergl2/tr_subs.c")
|
||||
#list(FILTER SOURCES_RENDERER EXCLUDE REGEX "code/renderergl2/tr_model.c")
|
||||
|
||||
set(SOURCES_CLIENT_APP ${SOURCES_APP} ${SOURCES_SERVER} ${SOURCES_CLIENT} ${SOURCES_UILIB} ${SOURCES_LIBS} ${SOURCES_RENDERER} ${SHADER_SRCS})
|
||||
|
||||
add_executable(openmohaa ${SOURCES_PLATFORM_SPECIFIC} ${SOURCES_CLIENT_APP} ${SOURCES_CLIENT_PLATFORM_SPECIFIC})
|
||||
target_compile_definitions(openmohaa PRIVATE APP_MODULE TARGET_GAME_TYPE=${TARGET_GAME_TYPE})
|
||||
target_compile_definitions(openmohaa PRIVATE USE_CODEC_MP3)
|
||||
|
||||
add_executable(openmohaa)
|
||||
target_compile_features(openmohaa PUBLIC cxx_nullptr)
|
||||
target_compile_features(openmohaa PUBLIC c_variadic_macros)
|
||||
target_link_libraries(openmohaa PRIVATE syslib)
|
||||
target_link_libraries(openmohaa PRIVATE omohserver)
|
||||
target_link_libraries(openmohaa PRIVATE omohclient)
|
||||
target_link_libraries(openmohaa PRIVATE omohrenderer omohsdl)
|
||||
target_link_libraries(openmohaa PRIVATE qcommon qcommon_standalone)
|
||||
|
||||
### Gamespy dependency
|
||||
add_dependencies(openmohaa gcd)
|
||||
target_link_libraries(openmohaa PRIVATE gcd)
|
||||
target_include_directories(openmohaa PUBLIC "code/qcommon" "code/script" "code/gamespy" "code/server" "code/client" "code/uilib" "code/jpeg-8c")
|
||||
set_target_properties(openmohaa PROPERTIES OUTPUT_NAME "openmohaa${TARGET_BASE_SUFFIX}${TARGET_ARCH_SUFFIX}${TARGET_CONFIG_SUFFIX}")
|
||||
|
||||
### Third-parties
|
||||
add_subdirectory("code/libmad-0.15.1b")
|
||||
target_link_libraries(openmohaa PRIVATE libmad)
|
||||
target_include_directories(openmohaa PRIVATE "code/libmad-0.15.1b")
|
||||
|
||||
target_link_libraries(openmohaa PRIVATE jpeg8)
|
||||
if (USE_OPENAL)
|
||||
# Try to use OpenAL
|
||||
|
@ -275,40 +139,13 @@ if (WITH_CLIENT)
|
|||
endif()
|
||||
|
||||
if(WIN32)
|
||||
target_include_directories(openmohaa PUBLIC "code/SDL2/include-2.0.22")
|
||||
|
||||
if (MSVC)
|
||||
target_link_options(openmohaa PRIVATE "/MANIFEST:NO")
|
||||
|
||||
if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
|
||||
add_library(sdl2 SHARED IMPORTED)
|
||||
set_target_properties(sdl2 PROPERTIES
|
||||
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win64/SDL264.lib"
|
||||
)
|
||||
|
||||
add_library(sdl2main SHARED IMPORTED)
|
||||
set_target_properties(sdl2main PROPERTIES
|
||||
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win64/SDL264main.lib"
|
||||
)
|
||||
else()
|
||||
add_library(sdl2 SHARED IMPORTED)
|
||||
set_target_properties(sdl2 PROPERTIES
|
||||
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win32/SDL2.lib"
|
||||
)
|
||||
|
||||
add_library(sdl2main SHARED IMPORTED)
|
||||
set_target_properties(sdl2main PROPERTIES
|
||||
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win32/SDL2main.lib"
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(openmohaa PRIVATE sdl2 sdl2main)
|
||||
endif()
|
||||
|
||||
target_link_libraries(openmohaa PRIVATE wsock32 ws2_32)
|
||||
target_link_libraries(openmohaa PRIVATE winmm)
|
||||
|
||||
INSTALL(FILES $<TARGET_PDB_FILE:cgame> DESTINATION "${TARGET_BASE_GAME}" OPTIONAL)
|
||||
|
||||
INSTALL(FILES $<TARGET_PDB_FILE:openmohaa> DESTINATION "./" OPTIONAL)
|
||||
elseif(UNIX)
|
||||
find_package(Threads)
|
||||
|
@ -316,18 +153,6 @@ if (WITH_CLIENT)
|
|||
target_link_libraries(openmohaa PRIVATE m rt)
|
||||
target_link_libraries(openmohaa PRIVATE stdc++)
|
||||
target_link_libraries(openmohaa PRIVATE ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
find_package(SDL2 REQUIRED)
|
||||
target_include_directories(openmohaa PUBLIC ${SDL2_INCLUDE_DIRS})
|
||||
target_link_libraries(openmohaa PRIVATE ${SDL2_LIBRARIES})
|
||||
|
||||
#find_package(OpenGL REQUIRED)
|
||||
#find_package(GLUT REQUIRED)
|
||||
#find_package(X11 REQUIRED)
|
||||
#find_package(SDL2 REQUIRED)
|
||||
#target_include_directories(openmohaa PRIVATE ${OPENGL_INCLUDE_DIRS} ${GLUT_INCLUDE_DIRS})
|
||||
#target_link_libraries(openmohaa PRIVATE ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
||||
#target_link_libraries(openmohaa PRIVATE ${X11_LIBRARIES} ${X11_Xxf86vm_LIB} ${X11_Xext_LIB} Xxf86dga)
|
||||
endif()
|
||||
|
||||
INSTALL(TARGETS openmohaa DESTINATION "./")
|
||||
|
|
38
code/cgame/CMakeLists.txt
Normal file
38
code/cgame/CMakeLists.txt
Normal file
|
@ -0,0 +1,38 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(fgame)
|
||||
|
||||
# Shared source files for modules
|
||||
set(SOURCES_SHARED
|
||||
"../qcommon/class.cpp"
|
||||
"../qcommon/con_set.cpp"
|
||||
"../qcommon/con_timer.cpp"
|
||||
"../qcommon/listener.cpp"
|
||||
"../qcommon/lz77.cpp"
|
||||
"../qcommon/mem_blockalloc.cpp"
|
||||
"../qcommon/mem_tempalloc.cpp"
|
||||
"../qcommon/q_math.c"
|
||||
"../qcommon/q_shared.c"
|
||||
"../qcommon/script.cpp"
|
||||
"../qcommon/str.cpp"
|
||||
"../script/scriptexception.cpp"
|
||||
"../script/scriptvariable.cpp"
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE SOURCES_BG "../fgame/bg_*.cpp")
|
||||
file(GLOB_RECURSE SOURCES_CGAME "./*.c" "./*.cpp")
|
||||
|
||||
add_library(cgame SHARED ${SOURCES_CGAME} ${SOURCES_BG})
|
||||
target_compile_definitions(cgame PRIVATE CGAME_DLL TARGET_GAME_TYPE=${TARGET_GAME_TYPE})
|
||||
target_compile_features(cgame PUBLIC cxx_nullptr)
|
||||
target_compile_features(cgame PUBLIC c_variadic_macros)
|
||||
target_link_libraries(cgame PUBLIC qcommon)
|
||||
|
||||
set_target_properties(cgame PROPERTIES PREFIX "${TARGET_PLATFORM_PREFIX}")
|
||||
set_target_properties(cgame PROPERTIES OUTPUT_NAME "cgame${TARGET_ARCH_SUFFIX}${TARGET_CONFIG_SUFFIX}")
|
||||
set_target_properties(cgame PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TARGET_BASE_GAME}")
|
||||
|
||||
INSTALL(TARGETS cgame DESTINATION "${TARGET_BASE_GAME}")
|
||||
|
||||
if(MSVC)
|
||||
INSTALL(FILES $<TARGET_PDB_FILE:cgame> DESTINATION "${TARGET_BASE_GAME}" OPTIONAL)
|
||||
endif()
|
23
code/client/CMakeLists.txt
Normal file
23
code/client/CMakeLists.txt
Normal file
|
@ -0,0 +1,23 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(omohclient)
|
||||
|
||||
add_subdirectory("../cgame" "./cgame")
|
||||
|
||||
file(GLOB_RECURSE SOURCES_CLIENT "./*.c*")
|
||||
file(GLOB_RECURSE SOURCES_UILIB "../uilib/*.c*")
|
||||
|
||||
# Made as an interface and not static, as static only links used methods
|
||||
add_library(omohclient INTERFACE)
|
||||
target_sources(omohclient PUBLIC ${SOURCES_CLIENT} ${SOURCES_UILIB})
|
||||
target_compile_definitions(omohclient INTERFACE APP_MODULE)
|
||||
target_compile_features(omohclient INTERFACE cxx_nullptr)
|
||||
target_compile_features(omohclient INTERFACE c_variadic_macros)
|
||||
target_link_libraries(omohclient INTERFACE omohsdl)
|
||||
target_link_libraries(omohclient INTERFACE gcd)
|
||||
|
||||
# Sound stuff
|
||||
target_compile_definitions(omohclient INTERFACE USE_CODEC_MP3)
|
||||
|
||||
add_subdirectory("../libmad-0.15.1b" "./libmad")
|
||||
target_link_libraries(omohclient INTERFACE libmad)
|
||||
target_include_directories(omohclient INTERFACE "../libmad-0.15.1b")
|
35
code/fgame/CMakeLists.txt
Normal file
35
code/fgame/CMakeLists.txt
Normal file
|
@ -0,0 +1,35 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(fgame)
|
||||
|
||||
# Shared source files for modules
|
||||
set(SOURCES_SHARED
|
||||
"../qcommon/class.cpp"
|
||||
"../qcommon/con_set.cpp"
|
||||
"../qcommon/con_timer.cpp"
|
||||
"../qcommon/listener.cpp"
|
||||
"../qcommon/lz77.cpp"
|
||||
"../qcommon/mem_blockalloc.cpp"
|
||||
"../qcommon/mem_tempalloc.cpp"
|
||||
"../qcommon/q_math.c"
|
||||
"../qcommon/q_shared.c"
|
||||
"../qcommon/script.cpp"
|
||||
"../qcommon/str.cpp"
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE SOURCES_GAME "./*.c*" "../parser/*.c*" "../script/*.c*")
|
||||
|
||||
add_library(fgame SHARED ${SOURCES_GAME})
|
||||
target_compile_definitions(fgame PRIVATE GAME_DLL WITH_SCRIPT_ENGINE ARCHIVE_SUPPORTED)
|
||||
target_compile_features(fgame PUBLIC cxx_nullptr)
|
||||
target_compile_features(fgame PUBLIC c_variadic_macros)
|
||||
target_link_libraries(fgame PUBLIC qcommon)
|
||||
|
||||
set_target_properties(fgame PROPERTIES PREFIX "${TARGET_PLATFORM_PREFIX}")
|
||||
set_target_properties(fgame PROPERTIES OUTPUT_NAME "game${TARGET_ARCH_SUFFIX}${TARGET_CONFIG_SUFFIX}")
|
||||
set_target_properties(fgame PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TARGET_BASE_GAME}")
|
||||
|
||||
INSTALL(TARGETS fgame DESTINATION "${TARGET_BASE_GAME}")
|
||||
|
||||
if(MSVC)
|
||||
INSTALL(FILES $<TARGET_PDB_FILE:fgame> DESTINATION "${TARGET_BASE_GAME}" OPTIONAL)
|
||||
endif()
|
|
@ -1,64 +1,62 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
set(CURRENT_DIR "code/gamespy")
|
||||
|
||||
include_directories("${CURRENT_DIR}/common")
|
||||
include_directories("${CURRENT_DIR}/gcdkey")
|
||||
include_directories("./common")
|
||||
include_directories("./gcdkey")
|
||||
|
||||
file(GLOB SRCS_common
|
||||
"${CURRENT_DIR}/common/*.c"
|
||||
"${CURRENT_DIR}/darray.c"
|
||||
"${CURRENT_DIR}/hashtable.c"
|
||||
"${CURRENT_DIR}/md5c.c"
|
||||
"${CURRENT_DIR}/gutil.c"
|
||||
"./common/*.c"
|
||||
"./darray.c"
|
||||
"./hashtable.c"
|
||||
"./md5c.c"
|
||||
"./gutil.c"
|
||||
)
|
||||
|
||||
file(GLOB SRCS_gcdkey
|
||||
"${CURRENT_DIR}/gcdkey/*.c"
|
||||
"./gcdkey/*.c"
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE SRCS_ghttp
|
||||
"${CURRENT_DIR}/gcdkey/*.c"
|
||||
"./ghttp/*.c"
|
||||
)
|
||||
|
||||
file(GLOB SRCS_GP
|
||||
"${CURRENT_DIR}/GP/*.c"
|
||||
"./GP/*.c"
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE SRCS_gstats
|
||||
"${CURRENT_DIR}/gstats/*.c"
|
||||
"./gstats/*.c"
|
||||
)
|
||||
|
||||
file(GLOB SRCS_natneg
|
||||
"${CURRENT_DIR}/natneg/*.c"
|
||||
"./natneg/*.c"
|
||||
)
|
||||
|
||||
file(GLOB SRCS_pinger
|
||||
"${CURRENT_DIR}/pinger/*.c"
|
||||
"./pinger/*.c"
|
||||
)
|
||||
|
||||
file(GLOB SRCS_pt
|
||||
"${CURRENT_DIR}/pt/*.c"
|
||||
"./pt/*.c"
|
||||
)
|
||||
|
||||
file(GLOB SRCS_qr2
|
||||
"${CURRENT_DIR}/qr2/*.c"
|
||||
"./qr2/*.c"
|
||||
)
|
||||
|
||||
file(GLOB SRCS_sake
|
||||
"${CURRENT_DIR}/sake/*.c"
|
||||
"./sake/*.c"
|
||||
)
|
||||
|
||||
file(GLOB SRCS_sc
|
||||
"${CURRENT_DIR}/sc/*.c"
|
||||
"./sc/*.c"
|
||||
)
|
||||
|
||||
file(GLOB SRCS_serverbrowsing
|
||||
"${CURRENT_DIR}/serverbrowsing/*.c"
|
||||
"./serverbrowsing/*.c"
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE SRCS_webservices
|
||||
"${CURRENT_DIR}/webservices/*.c"
|
||||
"./webservices/*.c"
|
||||
)
|
||||
|
||||
add_library(gcd_common STATIC ${SRCS_common})
|
69
code/qcommon/CMakeLists.txt
Normal file
69
code/qcommon/CMakeLists.txt
Normal file
|
@ -0,0 +1,69 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(qcommon)
|
||||
|
||||
cmake_policy(SET CMP0076 NEW)
|
||||
|
||||
# Shared source files for modules
|
||||
set(SOURCES_SHARED
|
||||
"./class.cpp"
|
||||
"./con_set.cpp"
|
||||
"./con_timer.cpp"
|
||||
"./listener.cpp"
|
||||
"./lz77.cpp"
|
||||
"./mem_blockalloc.cpp"
|
||||
"./mem_tempalloc.cpp"
|
||||
"./q_math.c"
|
||||
"./q_shared.c"
|
||||
"./script.cpp"
|
||||
"./str.cpp"
|
||||
"../script/scriptexception.cpp"
|
||||
"../script/scriptvariable.cpp"
|
||||
)
|
||||
|
||||
add_library(qcommon INTERFACE)
|
||||
target_sources(qcommon PUBLIC ${SOURCES_SHARED})
|
||||
target_compile_definitions(qcommon INTERFACE TARGET_GAME_TYPE=${TARGET_GAME_TYPE})
|
||||
target_include_directories(qcommon INTERFACE "../qcommon" "../script")
|
||||
target_compile_features(qcommon INTERFACE cxx_nullptr)
|
||||
target_compile_features(qcommon INTERFACE c_variadic_macros)
|
||||
|
||||
# Source files for standalone executable
|
||||
set(SOURCES_COMMON
|
||||
"./alias.c"
|
||||
"./cm_fencemask.c"
|
||||
"./cm_load.c"
|
||||
"./cm_patch.c"
|
||||
"./cm_polylib.c"
|
||||
"./cm_terrain.c"
|
||||
"./cm_test.c"
|
||||
"./cm_trace.c"
|
||||
"./cm_trace_lbd.cpp"
|
||||
"./cmd.c"
|
||||
"./common.cpp"
|
||||
"./crc.c"
|
||||
"./cvar.c"
|
||||
"./files.cpp"
|
||||
"./huffman.cpp"
|
||||
"./md4.c"
|
||||
"./md5.c"
|
||||
"./memory.c"
|
||||
"./msg.cpp"
|
||||
"./net_chan.c"
|
||||
"./net_ip.c"
|
||||
"./q_math.c"
|
||||
"./q_shared.c"
|
||||
"./unzip.c"
|
||||
# Gamespy
|
||||
"../gamespy/sv_gamespy.c"
|
||||
"../gamespy/sv_gqueryreporting.c"
|
||||
)
|
||||
|
||||
add_subdirectory("../skeletor" "./skeletor")
|
||||
add_subdirectory("../tiki" "./tiki")
|
||||
|
||||
add_library(qcommon_standalone INTERFACE)
|
||||
target_sources(qcommon_standalone PUBLIC ${SOURCES_COMMON})
|
||||
target_compile_definitions(qcommon_standalone INTERFACE APP_MODULE)
|
||||
target_compile_features(qcommon_standalone INTERFACE cxx_nullptr)
|
||||
target_compile_features(qcommon_standalone INTERFACE c_variadic_macros)
|
||||
target_link_libraries(qcommon_standalone INTERFACE omohtiki omohskeletor)
|
16
code/renderer/CMakeLists.txt
Normal file
16
code/renderer/CMakeLists.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(omohrenderer)
|
||||
|
||||
file(GLOB_RECURSE SOURCES_RENDERER "./*.c" "./*.cpp")
|
||||
|
||||
file(GLOB_RECURSE SOURCES_JPEG_8 "../jpeg-8c/*.c")
|
||||
add_library(jpeg8 STATIC ${SOURCES_JPEG_8})
|
||||
target_include_directories(jpeg8 PRIVATE "../jpeg-8c")
|
||||
|
||||
add_library(omohrenderer STATIC ${SOURCES_RENDERER})
|
||||
target_include_directories(omohrenderer PUBLIC "../sdl" "../renderercommon")
|
||||
target_compile_features(omohrenderer PUBLIC cxx_nullptr)
|
||||
target_compile_features(omohrenderer PUBLIC c_variadic_macros)
|
||||
target_link_libraries(omohrenderer PRIVATE qcommon)
|
||||
target_link_libraries(omohrenderer PRIVATE omohsdl)
|
||||
target_link_libraries(omohrenderer PRIVATE jpeg8)
|
43
code/sdl/CMakeLists.txt
Normal file
43
code/sdl/CMakeLists.txt
Normal file
|
@ -0,0 +1,43 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(omohsdl)
|
||||
|
||||
file(GLOB_RECURSE SOURCES_SDL "./*.c")
|
||||
|
||||
add_library(omohsdl STATIC ${SOURCES_SDL})
|
||||
target_compile_features(omohsdl PUBLIC c_variadic_macros)
|
||||
target_link_libraries(omohsdl PRIVATE qcommon qcommon_standalone)
|
||||
|
||||
if(WIN32)
|
||||
target_include_directories(omohsdl PUBLIC "../SDL2/include-2.0.22")
|
||||
|
||||
if (MSVC)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
add_library(sdl2 SHARED IMPORTED)
|
||||
set_target_properties(sdl2 PROPERTIES
|
||||
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win64/SDL264.lib"
|
||||
)
|
||||
|
||||
add_library(sdl2main SHARED IMPORTED)
|
||||
set_target_properties(sdl2main PROPERTIES
|
||||
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win64/SDL264main.lib"
|
||||
)
|
||||
else()
|
||||
add_library(sdl2 SHARED IMPORTED)
|
||||
set_target_properties(sdl2 PROPERTIES
|
||||
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win32/SDL2.lib"
|
||||
)
|
||||
|
||||
add_library(sdl2main SHARED IMPORTED)
|
||||
set_target_properties(sdl2main PROPERTIES
|
||||
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win32/SDL2main.lib"
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(omohsdl PRIVATE sdl2 sdl2main)
|
||||
endif()
|
||||
|
||||
elseif(UNIX)
|
||||
find_package(SDL2 REQUIRED)
|
||||
target_include_directories(omohsdl PUBLIC ${SDL2_INCLUDE_DIRS})
|
||||
target_link_libraries(omohsdl PRIVATE ${SDL2_LIBRARIES})
|
||||
endif()
|
12
code/server/CMakeLists.txt
Normal file
12
code/server/CMakeLists.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(omohserver)
|
||||
|
||||
add_subdirectory("../fgame" "./fgame")
|
||||
|
||||
file(GLOB_RECURSE SOURCES_SERVER "./*.c*")
|
||||
|
||||
add_library(omohserver STATIC ${SOURCES_SERVER})
|
||||
target_compile_features(omohserver PUBLIC cxx_nullptr)
|
||||
target_compile_features(omohserver PUBLIC c_variadic_macros)
|
||||
target_link_libraries(omohserver PRIVATE qcommon qcommon_standalone)
|
||||
target_link_libraries(omohserver PRIVATE gcd)
|
9
code/skeletor/CMakeLists.txt
Normal file
9
code/skeletor/CMakeLists.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(omohskeletor)
|
||||
|
||||
file(GLOB_RECURSE SOURCES_SKEL "./*.c" "./*.cpp")
|
||||
|
||||
add_library(omohskeletor STATIC ${SOURCES_SKEL})
|
||||
target_compile_features(omohskeletor PRIVATE cxx_nullptr)
|
||||
target_compile_features(omohskeletor PRIVATE c_variadic_macros)
|
||||
target_link_libraries(omohskeletor PUBLIC qcommon)
|
41
code/sys/CMakeLists.txt
Normal file
41
code/sys/CMakeLists.txt
Normal file
|
@ -0,0 +1,41 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(platform)
|
||||
|
||||
cmake_policy(SET CMP0076 NEW)
|
||||
|
||||
### Platform-specific code
|
||||
if(WIN32)
|
||||
set(SOURCES_PLATFORM_SPECIFIC
|
||||
"./con_log.c"
|
||||
"./sys_autoupdater.c"
|
||||
"./sys_main.c"
|
||||
"./new/sys_main_new.c"
|
||||
"./new/sys_win32_new.c"
|
||||
"./con_win32.c"
|
||||
"./sys_win32.c"
|
||||
"./win_resource.rc"
|
||||
# These are still used even they're prefixed 'win'
|
||||
"./win_bounds.cpp"
|
||||
"./win_localization.cpp"
|
||||
)
|
||||
else()
|
||||
set(SOURCES_PLATFORM_SPECIFIC
|
||||
"./con_log.c"
|
||||
"./sys_autoupdater.c"
|
||||
"./sys_main.c"
|
||||
"./new/sys_main_new.c"
|
||||
"./new/sys_unix_new.c"
|
||||
"./con_tty.c"
|
||||
"./sys_unix.c"
|
||||
# These are still used even they're prefixed 'win'
|
||||
"./win_bounds.cpp"
|
||||
"./win_localization.cpp"
|
||||
)
|
||||
endif()
|
||||
|
||||
add_library(syslib INTERFACE)
|
||||
target_sources(syslib PUBLIC ${SOURCES_PLATFORM_SPECIFIC})
|
||||
target_compile_definitions(syslib INTERFACE TARGET_GAME_TYPE=${TARGET_GAME_TYPE})
|
||||
target_compile_features(syslib INTERFACE cxx_nullptr)
|
||||
target_compile_features(syslib INTERFACE c_variadic_macros)
|
||||
target_link_libraries(syslib INTERFACE qcommon)
|
14
code/tiki/CMakeLists.txt
Normal file
14
code/tiki/CMakeLists.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
project(omohtiki)
|
||||
|
||||
file(GLOB_RECURSE SOURCES_TIKI "./*.c" "./*.cpp")
|
||||
|
||||
set(COMMON_TIKI_SRCS
|
||||
"../qcommon/tiki_main.cpp"
|
||||
"../qcommon/tiki_script.cpp"
|
||||
)
|
||||
|
||||
add_library(omohtiki STATIC ${SOURCES_TIKI} ${COMMON_TIKI_SRCS})
|
||||
target_compile_features(omohtiki PRIVATE cxx_nullptr)
|
||||
target_compile_features(omohtiki PRIVATE c_variadic_macros)
|
||||
target_link_libraries(omohtiki PUBLIC qcommon)
|
Loading…
Add table
Add a link
Reference in a new issue