mirror of
https://github.com/DrBeef/JKXR.git
synced 2024-11-27 14:32:09 +00:00
709 lines
23 KiB
CMake
709 lines
23 KiB
CMake
#============================================================================
|
|
# Copyright (C) 2013 - 2018, OpenJK contributors
|
|
#
|
|
# This file is part of the OpenJK source code.
|
|
#
|
|
# OpenJK is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License version 2 as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
#============================================================================
|
|
|
|
# Make sure the user is not executing this script directly
|
|
if(NOT InOpenJK)
|
|
message(FATAL_ERROR "Use the top-level cmake script!")
|
|
endif(NOT InOpenJK)
|
|
|
|
set(MPSharedDefines ${SharedDefines})
|
|
|
|
# Add Game Project
|
|
if(BuildMPGame)
|
|
add_subdirectory("${MPDir}/game")
|
|
endif(BuildMPGame)
|
|
|
|
# Add CGame Project
|
|
if(BuildMPCGame)
|
|
add_subdirectory("${MPDir}/cgame")
|
|
endif(BuildMPCGame)
|
|
|
|
# Add UI Project
|
|
if(BuildMPUI)
|
|
add_subdirectory("${MPDir}/ui")
|
|
endif(BuildMPUI)
|
|
|
|
# Add Vanilla JKA Renderer Project
|
|
if(BuildMPRdVanilla)
|
|
add_subdirectory("${MPDir}/rd-vanilla")
|
|
endif(BuildMPRdVanilla)
|
|
|
|
# Common things between Engine and Dedicated Server
|
|
if(BuildMPEngine OR BuildMPDed)
|
|
|
|
# Botlib
|
|
# the files could arguably just be put into the engine and dedicated projects without having a library for it.
|
|
set(MPBotlibDefines ${SharedDefines} "BOTLIB")
|
|
set(MPBotlibIncludeDirectories
|
|
${SharedDir}
|
|
${MPDir}
|
|
"${GSLIncludeDirectory}"
|
|
)
|
|
set(MPBotlibBotlibFiles
|
|
"${MPDir}/botlib/aasfile.h"
|
|
"${MPDir}/botlib/be_aas.h"
|
|
"${MPDir}/botlib/be_aas_bsp.h"
|
|
"${MPDir}/botlib/be_aas_cluster.h"
|
|
"${MPDir}/botlib/be_aas_debug.h"
|
|
"${MPDir}/botlib/be_aas_def.h"
|
|
"${MPDir}/botlib/be_aas_entity.h"
|
|
"${MPDir}/botlib/be_aas_file.h"
|
|
"${MPDir}/botlib/be_aas_funcs.h"
|
|
"${MPDir}/botlib/be_aas_main.h"
|
|
"${MPDir}/botlib/be_aas_move.h"
|
|
"${MPDir}/botlib/be_aas_optimize.h"
|
|
"${MPDir}/botlib/be_aas_reach.h"
|
|
"${MPDir}/botlib/be_aas_route.h"
|
|
"${MPDir}/botlib/be_aas_routealt.h"
|
|
"${MPDir}/botlib/be_aas_sample.h"
|
|
"${MPDir}/botlib/be_ai_char.h"
|
|
"${MPDir}/botlib/be_ai_chat.h"
|
|
"${MPDir}/botlib/be_ai_gen.h"
|
|
"${MPDir}/botlib/be_ai_goal.h"
|
|
"${MPDir}/botlib/be_ai_move.h"
|
|
"${MPDir}/botlib/be_ai_weap.h"
|
|
"${MPDir}/botlib/be_ai_weight.h"
|
|
"${MPDir}/botlib/be_ea.h"
|
|
"${MPDir}/botlib/be_interface.h"
|
|
"${MPDir}/botlib/botlib.h"
|
|
"${MPDir}/botlib/l_crc.h"
|
|
"${MPDir}/botlib/l_libvar.h"
|
|
"${MPDir}/botlib/l_log.h"
|
|
"${MPDir}/botlib/l_memory.h"
|
|
"${MPDir}/botlib/l_precomp.h"
|
|
"${MPDir}/botlib/l_script.h"
|
|
"${MPDir}/botlib/l_struct.h"
|
|
"${MPDir}/botlib/l_utils.h"
|
|
|
|
"${MPDir}/botlib/be_aas_bspq3.cpp"
|
|
"${MPDir}/botlib/be_aas_cluster.cpp"
|
|
"${MPDir}/botlib/be_aas_debug.cpp"
|
|
"${MPDir}/botlib/be_aas_entity.cpp"
|
|
"${MPDir}/botlib/be_aas_file.cpp"
|
|
"${MPDir}/botlib/be_aas_main.cpp"
|
|
"${MPDir}/botlib/be_aas_move.cpp"
|
|
"${MPDir}/botlib/be_aas_optimize.cpp"
|
|
"${MPDir}/botlib/be_aas_reach.cpp"
|
|
"${MPDir}/botlib/be_aas_route.cpp"
|
|
"${MPDir}/botlib/be_aas_routealt.cpp"
|
|
"${MPDir}/botlib/be_aas_sample.cpp"
|
|
"${MPDir}/botlib/be_ai_char.cpp"
|
|
"${MPDir}/botlib/be_ai_chat.cpp"
|
|
"${MPDir}/botlib/be_ai_gen.cpp"
|
|
"${MPDir}/botlib/be_ai_goal.cpp"
|
|
"${MPDir}/botlib/be_ai_move.cpp"
|
|
"${MPDir}/botlib/be_ai_weap.cpp"
|
|
"${MPDir}/botlib/be_ai_weight.cpp"
|
|
"${MPDir}/botlib/be_ea.cpp"
|
|
"${MPDir}/botlib/be_interface.cpp"
|
|
"${MPDir}/botlib/l_crc.cpp"
|
|
"${MPDir}/botlib/l_libvar.cpp"
|
|
"${MPDir}/botlib/l_log.cpp"
|
|
"${MPDir}/botlib/l_memory.cpp"
|
|
"${MPDir}/botlib/l_precomp.cpp"
|
|
"${MPDir}/botlib/l_script.cpp"
|
|
"${MPDir}/botlib/l_struct.cpp"
|
|
)
|
|
source_group("botlib" FILES ${MPBotlibBotlibFiles})
|
|
set(MPBotlibFiles ${MPBotlibFiles} ${MPBotlibBotlibFiles})
|
|
|
|
set(MPBotlibGameFiles
|
|
"${MPDir}/game/surfaceflags.h"
|
|
)
|
|
source_group("game" FILES ${MPBotlibGameFiles})
|
|
set(MPBotlibFiles ${MPBotlibFiles} ${MPBotlibGameFiles})
|
|
|
|
set(MPBotlibCommonFiles
|
|
"${MPDir}/qcommon/cm_public.h"
|
|
"${MPDir}/qcommon/disablewarnings.h"
|
|
"${MPDir}/qcommon/q_shared.h"
|
|
"${MPDir}/qcommon/qcommon.h"
|
|
"${MPDir}/qcommon/qfiles.h"
|
|
"${MPDir}/qcommon/tags.h"
|
|
|
|
${SharedCommonFiles}
|
|
)
|
|
source_group("common" FILES ${MPBotlibCommonFiles})
|
|
set(MPBotlibFiles ${MPBotlibFiles} ${MPBotlibCommonFiles})
|
|
|
|
set(MPBotlibCommonSafeFiles
|
|
"${SharedDir}/qcommon/safe/gsl.h"
|
|
"${SharedDir}/qcommon/safe/string.cpp"
|
|
"${SharedDir}/qcommon/safe/string.h"
|
|
"${SharedDir}/qcommon/safe/sscanf.h"
|
|
)
|
|
source_group("common/safe" FILES ${MPBotlibCommonSafeFiles})
|
|
set(MPBotlibFiles ${MPBotlibFiles} ${MPBotlibCommonSafeFiles})
|
|
|
|
set(MPBotlibServerFiles
|
|
"${MPDir}/server/server.h"
|
|
)
|
|
source_group("server" FILES ${MPBotlibServerFiles})
|
|
set(MPBotlibFiles ${MPBotlibFiles} ${MPBotlibServerFiles})
|
|
|
|
add_library(${MPBotLib} STATIC ${MPBotlibFiles})
|
|
|
|
# Hide symbols not explicitly marked public.
|
|
set_property(TARGET ${MPBotLib} APPEND PROPERTY COMPILE_OPTIONS ${OPENJK_VISIBILITY_FLAGS})
|
|
|
|
set_target_properties(${MPBotLib} PROPERTIES COMPILE_DEFINITIONS "${MPBotlibDefines}")
|
|
set_target_properties(${MPBotLib} PROPERTIES INCLUDE_DIRECTORIES "${MPBotlibIncludeDirectories}")
|
|
set_target_properties(${MPBotLib} PROPERTIES PROJECT_LABEL "Bot Library")
|
|
|
|
# Common files/libraries/defines of both Engine and Dedicated Server
|
|
|
|
# libraries: Botlib
|
|
set(MPEngineAndDedLibraries ${MPBotLib})
|
|
# Platform-specific libraries
|
|
if(WIN32)
|
|
set(MPEngineAndDedLibraries ${MPEngineAndDedLibraries} "winmm" "wsock32")
|
|
endif(WIN32)
|
|
|
|
# Include directories
|
|
set(MPEngineAndDedIncludeDirectories ${MPDir} ${SharedDir} ${GSLIncludeDirectory} ${CMAKE_BINARY_DIR}/shared)
|
|
|
|
# Transparently use our bundled minizip.
|
|
list(APPEND MPEngineAndDedIncludeDirectories ${MINIZIP_INCLUDE_DIRS})
|
|
list(APPEND MPEngineAndDedLibraries ${MINIZIP_LIBRARIES})
|
|
|
|
# Transparently use either bundled or system zlib.
|
|
list(APPEND MPEngineAndDedIncludeDirectories ${ZLIB_INCLUDE_DIR})
|
|
list(APPEND MPEngineAndDedLibraries ${ZLIB_LIBRARIES})
|
|
|
|
set(MPEngineAndDedCgameFiles
|
|
"${MPDir}/cgame/cg_public.h"
|
|
)
|
|
source_group("cgame" FILES ${MPEngineAndDedCgameFiles})
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedCgameFiles})
|
|
|
|
set(MPEngineAndDedClientFiles
|
|
"${MPDir}/client/client.h"
|
|
"${MPDir}/client/keys.h"
|
|
"${MPDir}/client/snd_public.h"
|
|
)
|
|
source_group("client" FILES ${MPEngineAndDedClientFiles})
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedClientFiles})
|
|
|
|
set(MPEngineAndDedGameFiles
|
|
"${MPDir}/game/anims.h"
|
|
"${MPDir}/game/bg_public.h"
|
|
"${MPDir}/game/bg_weapons.h"
|
|
"${MPDir}/botlib/botlib.h"
|
|
"${MPDir}/game/g_public.h"
|
|
"${MPDir}/game/surfaceflags.h"
|
|
)
|
|
source_group("game" FILES ${MPEngineAndDedGameFiles})
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedGameFiles})
|
|
|
|
set(MPEngineAndDedCommonFiles
|
|
"${MPDir}/qcommon/q_shared.h"
|
|
"${SharedDir}/qcommon/q_platform.h"
|
|
"${MPDir}/qcommon/cm_load.cpp"
|
|
"${MPDir}/qcommon/cm_local.h"
|
|
"${MPDir}/qcommon/cm_patch.cpp"
|
|
"${MPDir}/qcommon/cm_patch.h"
|
|
"${MPDir}/qcommon/cm_polylib.cpp"
|
|
"${MPDir}/qcommon/cm_polylib.h"
|
|
"${MPDir}/qcommon/cm_public.h"
|
|
"${MPDir}/qcommon/cm_test.cpp"
|
|
"${MPDir}/qcommon/cm_trace.cpp"
|
|
"${MPDir}/qcommon/cmd.cpp"
|
|
"${MPDir}/qcommon/common.cpp"
|
|
"${MPDir}/qcommon/cvar.cpp"
|
|
"${MPDir}/qcommon/disablewarnings.h"
|
|
"${MPDir}/qcommon/files.cpp"
|
|
"${MPDir}/qcommon/game_version.h"
|
|
"${MPDir}/qcommon/GenericParser2.cpp"
|
|
"${MPDir}/qcommon/GenericParser2.h"
|
|
"${MPDir}/qcommon/huffman.cpp"
|
|
"${MPDir}/qcommon/md4.cpp"
|
|
"${MPDir}/qcommon/md5.cpp"
|
|
"${MPDir}/qcommon/md5.h"
|
|
"${MPDir}/qcommon/MiniHeap.h"
|
|
"${MPDir}/qcommon/msg.cpp"
|
|
"${MPDir}/qcommon/matcomp.h"
|
|
"${MPDir}/qcommon/matcomp.cpp"
|
|
"${MPDir}/qcommon/net_chan.cpp"
|
|
"${MPDir}/qcommon/net_ip.cpp"
|
|
"${MPDir}/qcommon/persistence.cpp"
|
|
"${MPDir}/qcommon/q_shared.cpp"
|
|
"${MPDir}/qcommon/qcommon.h"
|
|
"${MPDir}/qcommon/qfiles.h"
|
|
"${MPDir}/qcommon/RoffSystem.cpp"
|
|
"${MPDir}/qcommon/RoffSystem.h"
|
|
"${MPDir}/qcommon/sstring.h"
|
|
"${MPDir}/qcommon/stringed_ingame.cpp"
|
|
"${MPDir}/qcommon/stringed_ingame.h"
|
|
"${MPDir}/qcommon/stringed_interface.cpp"
|
|
"${MPDir}/qcommon/stringed_interface.h"
|
|
"${MPDir}/qcommon/tags.h"
|
|
"${MPDir}/qcommon/timing.h"
|
|
"${MPDir}/qcommon/vm.cpp"
|
|
"${MPDir}/qcommon/z_memman_pc.cpp"
|
|
|
|
${SharedCommonFiles}
|
|
)
|
|
if(WIN32)
|
|
set(MPEngineAndDedCommonFiles ${MPEngineAndDedCommonFiles})
|
|
endif(WIN32)
|
|
source_group("common" FILES ${MPEngineAndDedCommonFiles})
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedCommonFiles})
|
|
|
|
set(MPEngineAndDedCommonSafeFiles
|
|
"${SharedDir}/qcommon/safe/files.cpp"
|
|
"${SharedDir}/qcommon/safe/files.h"
|
|
"${SharedDir}/qcommon/safe/gsl.h"
|
|
)
|
|
source_group("common/safe" FILES ${MPEngineAndDedCommonSafeFiles})
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedCommonSafeFiles})
|
|
|
|
set(MPEngineAndDedG2Files
|
|
"${MPDir}/ghoul2/G2.h"
|
|
"${MPDir}/ghoul2/G2_gore.h"
|
|
"${MPDir}/ghoul2/ghoul2_shared.h"
|
|
"${MPDir}/ghoul2/g2_local.h"
|
|
)
|
|
source_group("ghoul2" FILES ${MPEngineAndDedG2Files})
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedG2Files})
|
|
|
|
set(MPEngineAndDedIcarusFiles
|
|
"${MPDir}/icarus/BlockStream.cpp"
|
|
"${MPDir}/icarus/blockstream.h"
|
|
"${MPDir}/icarus/GameInterface.cpp"
|
|
"${MPDir}/icarus/GameInterface.h"
|
|
"${MPDir}/icarus/icarus.h"
|
|
"${MPDir}/icarus/Instance.cpp"
|
|
"${MPDir}/icarus/instance.h"
|
|
"${MPDir}/icarus/Interface.cpp"
|
|
"${MPDir}/icarus/interface.h"
|
|
"${MPDir}/icarus/interpreter.h"
|
|
"${MPDir}/icarus/Memory.cpp"
|
|
"${MPDir}/icarus/Q3_Interface.cpp"
|
|
"${MPDir}/icarus/Q3_Interface.h"
|
|
"${MPDir}/icarus/Q3_Registers.cpp"
|
|
"${MPDir}/icarus/Q3_Registers.h"
|
|
"${MPDir}/icarus/Sequence.cpp"
|
|
"${MPDir}/icarus/sequence.h"
|
|
"${MPDir}/icarus/Sequencer.cpp"
|
|
"${MPDir}/icarus/sequencer.h"
|
|
"${MPDir}/icarus/TaskManager.cpp"
|
|
"${MPDir}/icarus/taskmanager.h"
|
|
"${MPDir}/icarus/tokenizer.h"
|
|
)
|
|
source_group("icarus" FILES ${MPEngineAndDedIcarusFiles})
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedIcarusFiles})
|
|
|
|
set(MPEngineAndDedServerFiles
|
|
"${MPDir}/server/NPCNav/navigator.cpp"
|
|
"${MPDir}/server/NPCNav/navigator.h"
|
|
"${MPDir}/server/server.h"
|
|
"${MPDir}/server/sv_bot.cpp"
|
|
"${MPDir}/server/sv_ccmds.cpp"
|
|
"${MPDir}/server/sv_challenge.cpp"
|
|
"${MPDir}/server/sv_client.cpp"
|
|
"${MPDir}/server/sv_game.cpp"
|
|
"${MPDir}/server/sv_init.cpp"
|
|
"${MPDir}/server/sv_main.cpp"
|
|
"${MPDir}/server/sv_net_chan.cpp"
|
|
"${MPDir}/server/sv_snapshot.cpp"
|
|
"${MPDir}/server/sv_world.cpp"
|
|
"${MPDir}/server/sv_gameapi.cpp"
|
|
"${MPDir}/server/sv_gameapi.h"
|
|
)
|
|
source_group("server" FILES ${MPEngineAndDedServerFiles})
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedServerFiles})
|
|
|
|
set(MPEngineAndDedUiFiles
|
|
"${MPDir}/ui/keycodes.h"
|
|
"${MPDir}/ui/ui_public.h"
|
|
)
|
|
source_group("ui" FILES ${MPEngineAndDedUiFiles})
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedUiFiles})
|
|
|
|
set(MPEngineAndDedSysFiles
|
|
"${SharedDir}/sys/snapvector.cpp"
|
|
)
|
|
set(MPEngineAndDedFiles ${MPEngineAndDedFiles} ${MPEngineAndDedSysFiles})
|
|
source_group("sys" FILES ${MPEngineAndDedSysFiles})
|
|
endif(BuildMPEngine OR BuildMPDed)
|
|
|
|
# Engine/Executable (jamp.exe)
|
|
|
|
if(BuildMPEngine)
|
|
set(MPEngineLibraries ${MPEngineAndDedLibraries})
|
|
set(MPEngineIncludeDirectories ${MPEngineAndDedIncludeDirectories})
|
|
set(MPEngineFiles ${MPEngineAndDedFiles})
|
|
set(MPEngineDefines ${MPSharedDefines})
|
|
|
|
# Dependencies
|
|
|
|
if (NOT WIN32)
|
|
# OpenGL
|
|
find_package(OpenGL REQUIRED)
|
|
set(MPEngineIncludeDirectories ${MPEngineIncludeDirectories} ${OPENGL_INCLUDE_DIR})
|
|
set(MPEngineLibraries ${MPEngineLibraries} ${OPENGL_LIBRARIES})
|
|
endif()
|
|
|
|
# OpenAL (is optionally included for Windows)
|
|
if (MSVC AND NOT WIN64)
|
|
if(UseInternalOpenAL)
|
|
# There's a libs/OpenAL32.lib
|
|
# (mrw) TODO Is this actually required on windows? It is loaded at runtime, should not be linked?
|
|
find_library(OpenALLibrary NAMES OpenAL32 PATHS ${OpenJKLibDir})
|
|
if(NOT OpenALLibrary)
|
|
message(FATAL_ERROR "UseInternalOpenAL enabled, but lib/OpenAL32.lib not found!")
|
|
endif(NOT OpenALLibrary)
|
|
set(MPEngineLibraries ${MPEngineLibraries} ${OpenALLibrary})
|
|
else(UseInternalOpenAL)
|
|
find_package(OpenAL REQUIRED)
|
|
set(MPEngineIncludeDirectories ${MPEngineIncludeDirectories} ${OPENAL_INCLUDE_DIR})
|
|
set(MPEngineLibraries ${MPEngineLibraries} ${OPENAL_LIBRARY})
|
|
endif(UseInternalOpenAL)
|
|
endif()
|
|
|
|
if(UseInternalSDL2)
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
set(MPEngineLibraries
|
|
${MPEngineLibraries}
|
|
${OpenJKLibDir}/SDL2/lib/x86/SDL2main.lib
|
|
${OpenJKLibDir}/SDL2/lib/x86/SDL2.lib
|
|
)
|
|
else()
|
|
set(MPEngineLibraries
|
|
${MPEngineLibraries}
|
|
${OpenJKLibDir}/SDL2/lib/x64/SDL2main.lib
|
|
${OpenJKLibDir}/SDL2/lib/x64/SDL2.lib
|
|
)
|
|
endif()
|
|
|
|
set(MPEngineIncludeDirectories
|
|
${MPEngineIncludeDirectories}
|
|
${OpenJKLibDir}/SDL2/include
|
|
)
|
|
else()
|
|
find_package(SDL2 REQUIRED CONFIG)
|
|
if (TARGET SDL2::SDL2)
|
|
set(SDL2_INCLUDE_DIRS "")
|
|
set(SDL2_LIBRARIES SDL2::SDL2)
|
|
endif()
|
|
string(STRIP ${SDL2_LIBRARIES} SDL2_LIBRARIES)
|
|
set(MPEngineIncludeDirectories ${MPEngineIncludeDirectories} ${SDL2_INCLUDE_DIRS})
|
|
set(MPEngineLibraries ${MPEngineLibraries} ${SDL2_LIBRARIES})
|
|
endif()
|
|
|
|
# EAX is Windows-Only (right?)
|
|
if(MSVC)
|
|
set(MPEngineEAXFiles
|
|
"${MPDir}/client/eax/eax.h"
|
|
"${MPDir}/client/eax/EaxMan.h"
|
|
)
|
|
source_group("eax" FILES ${MPEngineEAXFiles})
|
|
set(MPEngineFiles ${MPEngineFiles} ${MPEngineEAXFiles})
|
|
endif(MSVC)
|
|
|
|
# Source Files
|
|
|
|
set(MPEngineClientFiles
|
|
"${MPDir}/client/cl_avi.cpp"
|
|
"${MPDir}/client/cl_cgame.cpp"
|
|
"${MPDir}/client/cl_cgameapi.cpp"
|
|
"${MPDir}/client/cl_cgameapi.h"
|
|
"${MPDir}/client/cl_cin.cpp"
|
|
"${MPDir}/client/cl_console.cpp"
|
|
"${MPDir}/client/cl_input.cpp"
|
|
"${MPDir}/client/cl_keys.cpp"
|
|
"${MPDir}/client/cl_lan.cpp"
|
|
"${MPDir}/client/cl_lan.h"
|
|
"${MPDir}/client/cl_main.cpp"
|
|
"${MPDir}/client/cl_net_chan.cpp"
|
|
"${MPDir}/client/cl_parse.cpp"
|
|
"${MPDir}/client/cl_scrn.cpp"
|
|
"${MPDir}/client/cl_ui.cpp"
|
|
"${MPDir}/client/cl_uiapi.cpp"
|
|
"${MPDir}/client/cl_uiapi.h"
|
|
"${MPDir}/client/FXExport.cpp"
|
|
"${MPDir}/client/FXExport.h"
|
|
"${MPDir}/client/FxPrimitives.cpp"
|
|
"${MPDir}/client/FxPrimitives.h"
|
|
"${MPDir}/client/FxScheduler.cpp"
|
|
"${MPDir}/client/FxScheduler.h"
|
|
"${MPDir}/client/FxSystem.cpp"
|
|
"${MPDir}/client/FxSystem.h"
|
|
"${MPDir}/client/FxTemplate.cpp"
|
|
"${MPDir}/client/FxUtil.cpp"
|
|
"${MPDir}/client/FxUtil.h"
|
|
"${MPDir}/client/snd_ambient.cpp"
|
|
"${MPDir}/client/snd_ambient.h"
|
|
"${MPDir}/client/snd_dma.cpp"
|
|
"${MPDir}/client/snd_local.h"
|
|
"${MPDir}/client/snd_mem.cpp"
|
|
"${MPDir}/client/snd_mix.cpp"
|
|
"${MPDir}/client/snd_mp3.cpp"
|
|
"${MPDir}/client/snd_mp3.h"
|
|
"${MPDir}/client/snd_music.cpp"
|
|
"${MPDir}/client/snd_music.h"
|
|
)
|
|
source_group("client" FILES ${MPEngineClientFiles})
|
|
set(MPEngineFiles ${MPEngineFiles} ${MPEngineClientFiles})
|
|
|
|
set(MPEngineRatlFiles
|
|
"${MPDir}/Ratl/bits_vs.h"
|
|
"${MPDir}/Ratl/ratl_common.h"
|
|
"${MPDir}/Ratl/vector_vs.h"
|
|
)
|
|
source_group("ratl" FILES ${MPEngineRatlFiles})
|
|
set(MPEngineFiles ${MPEngineFiles} ${MPEngineRatlFiles})
|
|
|
|
set(MPEngineRavlFiles
|
|
"${MPDir}/Ravl/CVec.h"
|
|
)
|
|
source_group("ravl" FILES ${MPEngineRavlFiles})
|
|
set(MPEngineFiles ${MPEngineFiles} ${MPEngineRavlFiles})
|
|
|
|
set(MPEngineMp3Files
|
|
"${MPDir}/mp3code/cdct.c"
|
|
"${MPDir}/mp3code/config.h"
|
|
"${MPDir}/mp3code/csbt.c"
|
|
"${MPDir}/mp3code/csbtb.c"
|
|
"${MPDir}/mp3code/csbtl3.c"
|
|
"${MPDir}/mp3code/cup.c"
|
|
"${MPDir}/mp3code/cupini.c"
|
|
"${MPDir}/mp3code/cupl1.c"
|
|
"${MPDir}/mp3code/cupl3.c"
|
|
"${MPDir}/mp3code/cwin.c"
|
|
"${MPDir}/mp3code/cwinb.c"
|
|
"${MPDir}/mp3code/cwinm.c"
|
|
"${MPDir}/mp3code/htable.h"
|
|
"${MPDir}/mp3code/hwin.c"
|
|
"${MPDir}/mp3code/jdw.h"
|
|
"${MPDir}/mp3code/l3.h"
|
|
"${MPDir}/mp3code/l3dq.c"
|
|
"${MPDir}/mp3code/l3init.c"
|
|
"${MPDir}/mp3code/mdct.c"
|
|
"${MPDir}/mp3code/mhead.c"
|
|
"${MPDir}/mp3code/mhead.h"
|
|
"${MPDir}/mp3code/mp3struct.h"
|
|
"${MPDir}/mp3code/msis.c"
|
|
"${MPDir}/mp3code/port.h"
|
|
"${MPDir}/mp3code/small_header.h"
|
|
"${MPDir}/mp3code/tableawd.h"
|
|
"${MPDir}/mp3code/towave.c"
|
|
"${MPDir}/mp3code/uph.c"
|
|
"${MPDir}/mp3code/upsf.c"
|
|
"${MPDir}/mp3code/wavep.c"
|
|
)
|
|
source_group("mp3code" FILES ${MPEngineMp3Files})
|
|
set(MPEngineFiles ${MPEngineFiles} ${MPEngineMp3Files})
|
|
|
|
set(MPEngineSysFiles
|
|
"${SharedDir}/sdl/sdl_window.cpp"
|
|
"${SharedDir}/sdl/sdl_icon.h"
|
|
"${SharedDir}/sdl/sdl_input.cpp"
|
|
"${SharedDir}/sdl/sdl_sound.cpp"
|
|
"${SharedDir}/sys/sys_loadlib.h"
|
|
"${SharedDir}/sys/sys_local.h"
|
|
"${SharedDir}/sys/sys_main.cpp"
|
|
"${SharedDir}/sys/sys_event.cpp"
|
|
"${SharedDir}/sys/sys_public.h"
|
|
"${SharedDir}/sys/con_local.h"
|
|
"${SharedDir}/sys/con_log.cpp"
|
|
)
|
|
|
|
if(WIN32)
|
|
set(MPEngineWin32Files
|
|
"${MPDir}/win32/icon.ico"
|
|
"${MPDir}/win32/resource.h"
|
|
"${MPDir}/win32/openjk.rc"
|
|
"${SharedDir}/sys/win_manifest.manifest"
|
|
)
|
|
|
|
set(MPEngineFiles ${MPEngineFiles} ${MPEngineWin32Files})
|
|
source_group("win32" FILES ${MPEngineWin32Files})
|
|
|
|
set(MPEngineSysFiles
|
|
${MPEngineSysFiles}
|
|
"${SharedDir}/sys/sys_win32.cpp"
|
|
"${SharedDir}/sys/con_passive.cpp"
|
|
)
|
|
else(WIN32)
|
|
set(MPEngineSysFiles
|
|
${MPEngineSysFiles}
|
|
"${SharedDir}/sys/sys_unix.cpp"
|
|
"${SharedDir}/sys/con_tty.cpp"
|
|
)
|
|
endif(WIN32)
|
|
|
|
set(MPEngineFiles ${MPEngineFiles} ${MPEngineSysFiles})
|
|
source_group("sys" FILES ${MPEngineSysFiles})
|
|
|
|
if(MakeApplicationBundles)
|
|
set(MACOSX_BUNDLE_BUNDLE_NAME ${MPEngine})
|
|
set(MACOSX_BUNDLE_DISPLAY_NAME ${MPEngine})
|
|
set(MACOSX_BUNDLE_ICON_FILE OpenJK.icns)
|
|
set_source_files_properties(${MPDir}/macosx/OpenJK.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
|
set(MPEngineFiles ${MPEngineFiles} ${MPDir}/macosx/OpenJK.icns)
|
|
set_source_files_properties(${MPDir}/macosx/English.lproj/InfoPlist.strings PROPERTIES MACOSX_PACKAGE_LOCATION Resources/English.lproj)
|
|
set(MPEngineFiles ${MPEngineFiles} ${MPDir}/macosx/English.lproj/InfoPlist.strings)
|
|
endif(MakeApplicationBundles)
|
|
|
|
if(WIN32)
|
|
add_executable(${MPEngine} WIN32 ${MPEngineFiles})
|
|
if(UseInternalSDL2)
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
set(MPEngineExtraInstallFiles
|
|
${OpenJKLibDir}/SDL2/bin/x86/SDL2.dll
|
|
)
|
|
else()
|
|
set(MPEngineExtraInstallFiles
|
|
${OpenJKLibDir}/SDL2/bin/x64/SDL2.dll
|
|
)
|
|
endif()
|
|
endif()
|
|
else(WIN32)
|
|
if(MakeApplicationBundles)
|
|
add_executable(${MPEngine} MACOSX_BUNDLE ${MPEngineFiles})
|
|
set_target_properties(${MPEngine} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${MPDir}/macosx/OpenJKInfo.plist")
|
|
else(MakeApplicationBundles)
|
|
add_executable(${MPEngine} ${MPEngineFiles})
|
|
endif(MakeApplicationBundles)
|
|
endif(WIN32)
|
|
|
|
if(MakeApplicationBundles)
|
|
install(CODE "
|
|
include(BundleUtilities)
|
|
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
|
fixup_bundle(\"${CMAKE_BINARY_DIR}/${MPEngine}.app\" \"\" \"\")
|
|
"
|
|
COMPONENT Runtime)
|
|
install(TARGETS ${MPEngine}
|
|
BUNDLE
|
|
DESTINATION ${JKAInstallDir}
|
|
COMPONENT ${JKAMPClientComponent})
|
|
else(MakeApplicationBundles)
|
|
install(TARGETS ${MPEngine}
|
|
RUNTIME
|
|
DESTINATION ${JKAInstallDir}
|
|
COMPONENT ${JKAMPClientComponent})
|
|
if(MPEngineExtraInstallFiles)
|
|
install(FILES ${MPEngineExtraInstallFiles}
|
|
DESTINATION ${JKAInstallDir}
|
|
COMPONENT ${JKAMPClientComponent})
|
|
endif()
|
|
endif(MakeApplicationBundles)
|
|
|
|
set_target_properties(${MPEngine} PROPERTIES COMPILE_DEFINITIONS "${MPEngineDefines}")
|
|
|
|
# Hide symbols not explicitly marked public.
|
|
set_property(TARGET ${MPEngine} APPEND PROPERTY COMPILE_OPTIONS ${OPENJK_VISIBILITY_FLAGS})
|
|
|
|
set_target_properties(${MPEngine} PROPERTIES INCLUDE_DIRECTORIES "${MPEngineIncludeDirectories}")
|
|
set_target_properties(${MPEngine} PROPERTIES PROJECT_LABEL "MP Client")
|
|
target_link_libraries(${MPEngine} ${MPEngineLibraries})
|
|
endif(BuildMPEngine)
|
|
|
|
# Dedicated Server (Engine) (jampded.exe)
|
|
|
|
if(BuildMPDed)
|
|
set(MPDedLibraries ${MPEngineAndDedLibraries})
|
|
set(MPDedIncludeDirectories ${MPEngineAndDedIncludeDirectories})
|
|
set(MPDedFiles ${MPEngineAndDedFiles})
|
|
set(MPDedDefines ${MPSharedDefines} "_CONSOLE" "DEDICATED")
|
|
|
|
# Dedicated renderer is compiled with the server.
|
|
set(MPDedicatedRendererFiles
|
|
"${MPDir}/ghoul2/G2_gore.cpp"
|
|
"${MPDir}/rd-common/mdx_format.h"
|
|
"${MPDir}/rd-common/tr_public.h"
|
|
"${MPDir}/rd-dedicated/tr_local.h"
|
|
"${MPDir}/rd-dedicated/G2_API.cpp"
|
|
"${MPDir}/rd-dedicated/G2_bolts.cpp"
|
|
"${MPDir}/rd-dedicated/G2_bones.cpp"
|
|
"${MPDir}/rd-dedicated/G2_misc.cpp"
|
|
"${MPDir}/rd-dedicated/G2_surfaces.cpp"
|
|
"${MPDir}/rd-dedicated/tr_backend.cpp"
|
|
"${MPDir}/rd-dedicated/tr_ghoul2.cpp"
|
|
"${MPDir}/rd-dedicated/tr_init.cpp"
|
|
"${MPDir}/rd-dedicated/tr_main.cpp"
|
|
"${MPDir}/rd-dedicated/tr_mesh.cpp"
|
|
"${MPDir}/rd-dedicated/tr_model.cpp"
|
|
"${MPDir}/rd-dedicated/tr_shader.cpp"
|
|
"${MPDir}/rd-dedicated/tr_skin.cpp")
|
|
source_group("renderer" FILES ${MPDedicatedRendererFiles})
|
|
set(MPDedFiles ${MPDedFiles} ${MPDedicatedRendererFiles})
|
|
|
|
set(MPDedNullFiles
|
|
"${MPDir}/null/null_client.cpp"
|
|
"${MPDir}/null/null_input.cpp"
|
|
"${MPDir}/null/null_renderer.cpp"
|
|
"${MPDir}/null/null_snddma.cpp"
|
|
)
|
|
source_group("null" FILES ${MPDedNullFiles})
|
|
set(MPDedFiles ${MPDedFiles} ${MPDedNullFiles})
|
|
if(WIN32)
|
|
set(MPDedWin32Files
|
|
"${MPDir}/win32/openjkded.rc"
|
|
)
|
|
source_group("win32" FILES ${MPDedWin32Files})
|
|
set(MPDedFiles ${MPDedFiles} ${MPDedWin32Files})
|
|
|
|
set(MPDedSysFiles
|
|
"${SharedDir}/sys/sys_loadlib.h"
|
|
"${SharedDir}/sys/sys_local.h"
|
|
"${SharedDir}/sys/sys_main.cpp"
|
|
"${SharedDir}/sys/sys_event.cpp"
|
|
"${SharedDir}/sys/sys_public.h"
|
|
"${SharedDir}/sys/sys_win32.cpp"
|
|
"${SharedDir}/sys/con_local.h"
|
|
"${SharedDir}/sys/con_log.cpp"
|
|
"${SharedDir}/sys/con_win32.cpp"
|
|
)
|
|
set(MPDedLibraries ${MPDedLibraries} ${CMAKE_DL_LIBS})
|
|
source_group("sys" FILES ${MPDedSysFiles})
|
|
set(MPDedFiles ${MPDedFiles} ${MPDedSysFiles})
|
|
else(WIN32)
|
|
set(MPDedSysFiles
|
|
"${SharedDir}/sys/sys_loadlib.h"
|
|
"${SharedDir}/sys/sys_local.h"
|
|
"${SharedDir}/sys/sys_main.cpp"
|
|
"${SharedDir}/sys/sys_event.cpp"
|
|
"${SharedDir}/sys/sys_public.h"
|
|
"${SharedDir}/sys/sys_unix.cpp"
|
|
"${SharedDir}/sys/con_local.h"
|
|
"${SharedDir}/sys/con_log.cpp"
|
|
"${SharedDir}/sys/con_tty.cpp"
|
|
)
|
|
set(MPDedLibraries ${MPDedLibraries} ${CMAKE_DL_LIBS})
|
|
source_group("sys" FILES ${MPDedSysFiles})
|
|
set(MPDedFiles ${MPDedFiles} ${MPDedSysFiles})
|
|
endif(WIN32)
|
|
|
|
add_executable(${MPDed} ${MPDedFiles})
|
|
install(TARGETS ${MPDed}
|
|
RUNTIME
|
|
DESTINATION ${JKAInstallDir}
|
|
COMPONENT ${JKAMPServerComponent})
|
|
|
|
set_target_properties(${MPDed} PROPERTIES COMPILE_DEFINITIONS "${MPDedDefines}")
|
|
|
|
# Hide symbols not explicitly marked public.
|
|
set_property(TARGET ${MPDed} APPEND PROPERTY COMPILE_OPTIONS ${OPENJK_VISIBILITY_FLAGS})
|
|
|
|
set_target_properties(${MPDed} PROPERTIES INCLUDE_DIRECTORIES "${MPDedIncludeDirectories}")
|
|
set_target_properties(${MPDed} PROPERTIES PROJECT_LABEL "MP Dedicated Server")
|
|
target_link_libraries(${MPDed} ${MPDedLibraries})
|
|
endif(BuildMPDed)
|