427 lines
16 KiB
CMake
427 lines
16 KiB
CMake
# -------------------------------
|
|
# SPDX-License-Identifier: ISC
|
|
#
|
|
# Copyright © 2021 Daniel Wolf <<nephatrine@gmail.com>>
|
|
#
|
|
# Permission to use, copy, modify, and/or distribute this software for any
|
|
# purpose with or without fee is hereby granted, provided that the above
|
|
# copyright notice and this permission notice appear in all copies.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
# PERFORMANCE OF THIS SOFTWARE.
|
|
# -------------------------------
|
|
|
|
cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
|
|
project(
|
|
KyuII
|
|
VERSION 3.22.0
|
|
LANGUAGES C)
|
|
|
|
# Policies
|
|
|
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.11")
|
|
# FindOpenGL prefers GLVND by default when available.
|
|
cmake_policy(SET CMP0072 NEW)
|
|
endif()
|
|
|
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.14")
|
|
# install(CODE) and install(SCRIPT) support generator expressions.
|
|
cmake_policy(SET CMP0087 NEW)
|
|
endif()
|
|
|
|
# CMake Includes
|
|
|
|
include(CMakeDependentOption)
|
|
set(CMAKE_SHARED_MODULE_PREFIX "")
|
|
|
|
# Project Includes
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tools")
|
|
include(NXGenerateExportHeader)
|
|
include(NXGenerateVersionHeader)
|
|
include(NXGetRuntimeDependencies)
|
|
|
|
include(NXIdentifyTarget)
|
|
nx_identify_target()
|
|
|
|
# Platform-Specifics
|
|
|
|
option(KYUII_BUILD_UNIMPLEMENTED "Build Unimplemented Components" OFF)
|
|
|
|
set(KYUII_IMPLEMENTS_CD OFF)
|
|
set(KYUII_IMPLEMENTS_COMMON OFF)
|
|
set(KYUII_IMPLEMENTS_IN OFF)
|
|
set(KYUII_IMPLEMENTS_NET OFF)
|
|
set(KYUII_IMPLEMENTS_SND OFF)
|
|
set(KYUII_IMPLEMENTS_SYS OFF)
|
|
set(KYUII_IMPLEMENTS_SYS_DYN OFF)
|
|
set(KYUII_IMPLEMENTS_VID OFF)
|
|
set(KYUII_IMPLEMENTS_VID_DYN OFF)
|
|
|
|
if(NX_TARGET_PLATFORM_WINDOWS AND NX_TARGET_ARCHITECTURE_IA32)
|
|
set(KYUII_IMPLEMENTS_COMMON ON)
|
|
list(APPEND KYUII_COMMON_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/win32/q_shwin.c")
|
|
list(APPEND KYUII_COMMON_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/win32/winquake.h")
|
|
list(APPEND KYUII_COMMON_LIBS "Winmm")
|
|
|
|
set(KYUII_IMPLEMENTS_SYS ON)
|
|
set(KYUII_IMPLEMENTS_SYS_DYN ON)
|
|
list(APPEND KYUII_ENGINE_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/win32/conproc.c" "${CMAKE_CURRENT_SOURCE_DIR}/win32/sys_win.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/win32/engine.rc")
|
|
list(APPEND KYUII_ENGINE_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/win32/conproc.h")
|
|
|
|
set(KYUII_IMPLEMENTS_NET ON)
|
|
list(APPEND KYUII_NETWORK_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/win32/net_wins.c")
|
|
list(APPEND KYUII_NETWORK_LIBS "Ws2_32")
|
|
|
|
set(KYUII_IMPLEMENTS_CD ON)
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/win32/cd_win.c")
|
|
|
|
set(KYUII_IMPLEMENTS_IN ON)
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/win32/in_win.c")
|
|
|
|
set(KYUII_IMPLEMENTS_SND ON)
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/win32/snd_win.c")
|
|
|
|
set(KYUII_IMPLEMENTS_VID ON)
|
|
set(KYUII_IMPLEMENTS_VID_DYN ON)
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/win32/vid_dll.c" "${CMAKE_CURRENT_SOURCE_DIR}/win32/vid_menu.c")
|
|
elseif(NX_TARGET_PLATFORM_LINUX AND NX_TARGET_ARCHITECTURE_IA32)
|
|
set(KYUII_IMPLEMENTS_COMMON ON)
|
|
list(APPEND KYUII_COMMON_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/linux/glob.c" "${CMAKE_CURRENT_SOURCE_DIR}/linux/q_shlinux.c")
|
|
list(APPEND KYUII_COMMON_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/linux/glob.h")
|
|
|
|
set(KYUII_IMPLEMENTS_SYS ON)
|
|
set(KYUII_IMPLEMENTS_SYS_DYN ON)
|
|
list(APPEND KYUII_ENGINE_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/linux/sys_linux.c")
|
|
|
|
set(KYUII_IMPLEMENTS_NET ON)
|
|
list(APPEND KYUII_NETWORK_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/linux/net_udp.c")
|
|
|
|
set(KYUII_IMPLEMENTS_CD ON)
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/linux/cd_linux.c")
|
|
|
|
set(KYUII_IMPLEMENTS_IN ON)
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/linux/in_linux.c")
|
|
|
|
set(KYUII_IMPLEMENTS_SND ON)
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/linux/snd_linux.c")
|
|
|
|
set(KYUII_IMPLEMENTS_VID ON)
|
|
set(KYUII_IMPLEMENTS_VID_DYN ON)
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/linux/vid_menu.c" "${CMAKE_CURRENT_SOURCE_DIR}/linux/vid_so.c")
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_COMMON)
|
|
set(KYUII_IMPLEMENTS_COMMON ${KYUII_BUILD_UNIMPLEMENTED})
|
|
list(APPEND KYUII_COMMON_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/null/q_shnull.c")
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_SYS)
|
|
set(KYUII_IMPLEMENTS_SYS ${KYUII_BUILD_UNIMPLEMENTED})
|
|
list(APPEND KYUII_ENGINE_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/null/sys_null.c")
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_NET)
|
|
set(KYUII_IMPLEMENTS_NET ${KYUII_BUILD_UNIMPLEMENTED})
|
|
list(APPEND KYUII_NETWORK_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/null/net_null.c")
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_CD)
|
|
set(KYUII_IMPLEMENTS_CD ${KYUII_BUILD_UNIMPLEMENTED})
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/null/cd_null.c")
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_IN)
|
|
set(KYUII_IMPLEMENTS_IN ${KYUII_BUILD_UNIMPLEMENTED})
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/null/in_null.c")
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_SND)
|
|
set(KYUII_IMPLEMENTS_SND ${KYUII_BUILD_UNIMPLEMENTED})
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/null/snddma_null.c")
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_VID)
|
|
set(KYUII_IMPLEMENTS_VID ${KYUII_BUILD_UNIMPLEMENTED})
|
|
list(APPEND KYUII_CLIENT_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/null/vid_null.c")
|
|
endif()
|
|
|
|
# Shared Functions - Engine, Game, Refresh
|
|
|
|
nx_generate_version_header(${PROJECT_NAME} QUERY_GIT)
|
|
|
|
list(APPEND KYUII_SHARED_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/game/q_shared.c")
|
|
list(APPEND KYUII_SHARED_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/game/q_shared.h" "${CMAKE_CURRENT_BINARY_DIR}/kyuii_version.h")
|
|
|
|
add_library(Shared INTERFACE)
|
|
target_compile_definitions(Shared INTERFACE C_ONLY ${NX_TARGET_BUILD_MACRO} ${NX_TARGET_ARCHITECTURE_MACRO} ${NX_TARGET_PLATFORM_MACRO})
|
|
target_include_directories(Shared INTERFACE "${CMAKE_CURRENT_BINARY_DIR}")
|
|
if(NX_TARGET_PLATFORM_LINUX)
|
|
target_compile_definitions(Shared INTERFACE stricmp=strcasecmp)
|
|
target_link_libraries(Shared INTERFACE m)
|
|
endif()
|
|
target_sources(Shared INTERFACE ${KYUII_SHARED_SOURCE})
|
|
add_library(KyuII::Shared ALIAS Shared)
|
|
|
|
# Common Functions - Engine, Refresh
|
|
|
|
add_library(Common INTERFACE)
|
|
target_link_libraries(Common INTERFACE KyuII::Shared ${KYUII_COMMON_LIBS})
|
|
target_sources(Common INTERFACE ${KYUII_COMMON_SOURCE})
|
|
add_library(KyuII::Common ALIAS Common)
|
|
|
|
# Game API - Engine, Game
|
|
|
|
set(gameapi_VERSION 3.21)
|
|
nx_generate_version_header(gameapi)
|
|
nx_generate_export_header(gameapi STATIC_DEFINE GAME_HARD_LINKED)
|
|
|
|
list(APPEND KYUII_GAMEAPI_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/game/m_flash.c")
|
|
list(APPEND KYUII_GAMEAPI_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/game/game.h" "${CMAKE_CURRENT_BINARY_DIR}/gameapi_export.h"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/gameapi_version.h")
|
|
|
|
add_library(GameAPI INTERFACE)
|
|
target_link_libraries(GameAPI INTERFACE KyuII::Shared)
|
|
target_sources(GameAPI INTERFACE ${KYUII_GAMEAPI_SOURCE})
|
|
add_library(KyuII::GameAPI ALIAS GameAPI)
|
|
|
|
# Refresh API - Engine, Refresh
|
|
|
|
set(refapi_VERSION 3.21)
|
|
nx_generate_version_header(refapi)
|
|
nx_generate_export_header(refapi STATIC_DEFINE REF_HARD_LINKED)
|
|
|
|
list(APPEND KYUII_REFAPI_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/client/ref.h" "${CMAKE_CURRENT_BINARY_DIR}/refapi_export.h"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/refapi_version.h")
|
|
|
|
add_library(RefAPI INTERFACE)
|
|
target_link_libraries(RefAPI INTERFACE KyuII::Common)
|
|
target_sources(RefAPI INTERFACE ${KYUII_REFAPI_SOURCE})
|
|
add_library(KyuII::RefAPI ALIAS RefAPI)
|
|
|
|
# Game Libraries
|
|
|
|
cmake_dependent_option(KYUII_USE_DYNAMIC_GAME "Use Dynamic Game Modules" ON "KYUII_IMPLEMENTS_SYS_DYN" OFF)
|
|
set(KYUII_DEFAULT_GAME ON)
|
|
|
|
cmake_dependent_option(KYUII_BUILD_GAMEQ2 "Build Quake II Game Module" ON "KYUII_DEFAULT_GAME" OFF)
|
|
if(KYUII_BUILD_GAMEQ2 AND NOT KYUII_USE_DYNAMIC_GAME)
|
|
set(KYUII_DEFAULT_GAME OFF)
|
|
endif()
|
|
|
|
cmake_dependent_option(KYUII_BUILD_GAMECTF "Build CTF Game Module" ON "KYUII_DEFAULT_GAME" OFF)
|
|
if(KYUII_BUILD_GAMECTF AND NOT KYUII_USE_DYNAMIC_GAME)
|
|
set(KYUII_DEFAULT_GAME OFF)
|
|
endif()
|
|
|
|
if(KYUII_BUILD_GAMEQ2)
|
|
add_subdirectory(game)
|
|
endif()
|
|
|
|
if(KYUII_BUILD_GAMECTF)
|
|
add_subdirectory(ctf)
|
|
endif()
|
|
|
|
# Refresh Libraries
|
|
|
|
find_package(OpenGL)
|
|
|
|
cmake_dependent_option(KYUII_USE_DYNAMIC_REFRESH "Use Dynamic Refresh Modules" ON "KYUII_IMPLEMENTS_VID_DYN" OFF)
|
|
set(KYUII_DEFAULT_REFRESH ON)
|
|
|
|
cmake_dependent_option(KYUII_BUILD_REFGL "Build OpenGL Refresh Module" ${OPENGL_FOUND} "KYUII_DEFAULT_REFRESH" OFF)
|
|
if(KYUII_BUILD_REFGL AND NOT KYUII_USE_DYNAMIC_REFRESH)
|
|
set(KYUII_DEFAULT_REFRESH OFF)
|
|
endif()
|
|
|
|
cmake_dependent_option(KYUII_BUILD_REFSOFT "Build Software Refresh Module" ON "KYUII_DEFAULT_REFRESH" OFF)
|
|
if(KYUII_BUILD_REFSOFT AND NOT KYUII_USE_DYNAMIC_REFRESH)
|
|
set(KYUII_DEFAULT_REFRESH OFF)
|
|
endif()
|
|
|
|
if(KYUII_BUILD_REFGL)
|
|
add_subdirectory(ref_gl)
|
|
endif()
|
|
|
|
if(KYUII_BUILD_REFSOFT)
|
|
add_subdirectory(ref_soft)
|
|
endif()
|
|
|
|
# Common Engine
|
|
|
|
set(KYUII_DEDICATED_ONLY OFF)
|
|
set(KYUII_NETCLIENT_ONLY OFF)
|
|
set(KYUII_LOCAL_ONLY OFF)
|
|
|
|
if(NOT KYUII_IMPLEMENTS_VID_DYN AND NOT TARGET KyuII::RefHL)
|
|
set(KYUII_DEDICATED_ONLY ON)
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_SYS_DYN AND NOT TARGET KyuII::GameHL)
|
|
set(KYUII_NETCLIENT_ONLY ON)
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_NET
|
|
AND NOT KYUII_NETCLIENT_ONLY
|
|
AND NOT KYUII_DEDICATED_ONLY)
|
|
set(KYUII_LOCAL_ONLY ON)
|
|
endif()
|
|
|
|
if(NOT KYUII_IMPLEMENTS_SYS OR NOT KYUII_IMPLEMENTS_COMMON)
|
|
set(KYUII_IMPLEMENTS_SYS OFF)
|
|
set(KYUII_IMPLEMENTS_COMMON OFF)
|
|
endif()
|
|
|
|
cmake_dependent_option(KYUII_BUILD_KYUII "Build Full Engine" ON
|
|
"NOT KYUII_DEDICATED_ONLY;NOT KYUII_NETCLIENT_ONLY;KYUII_IMPLEMENTS_COMMON;KYUII_IMPLEMENTS_IN" OFF)
|
|
|
|
cmake_dependent_option(
|
|
KYUII_BUILD_KYUDEMO "Build Demo Engine" ${KYUII_LOCAL_ONLY}
|
|
"NOT KYUII_DEDICATED_ONLY;NOT KYUII_NETCLIENT_ONLY;KYUII_BUILD_GAMEQ2;KYUII_IMPLEMENTS_COMMON;KYUII_IMPLEMENTS_IN" OFF)
|
|
cmake_dependent_option(
|
|
KYUII_BUILD_KYUARENA "Build Multiplayer Engine" ON
|
|
"NOT KYUII_DEDICATED_ONLY;NOT KYUII_NETCLIENT_ONLY;KYUII_BUILD_GAMECTF;KYUII_IMPLEMENTS_COMMON;KYUII_IMPLEMENTS_IN" OFF)
|
|
|
|
cmake_dependent_option(KYUII_BUILD_KYUNODE "Build Dedicated Server" ON
|
|
"NOT KYUII_NETCLIENT_ONLY;KYUII_IMPLEMENTS_COMMON;KYUII_IMPLEMENTS_NET" OFF)
|
|
cmake_dependent_option(KYUII_BUILD_KYUNET "Build Dedicated Client" ${KYUII_NETCLIENT_ONLY}
|
|
"NOT KYUII_DEDICATED_ONLY;KYUII_IMPLEMENTS_COMMON;KYUII_IMPLEMENTS_NET;KYUII_IMPLEMENTS_IN" OFF)
|
|
|
|
list(
|
|
APPEND
|
|
KYUII_ENGINE_SOURCE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/cmd.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/cmodel.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/common.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/crc.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/cvar.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/files.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/md4.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/net_chan.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/pmove.c")
|
|
list(APPEND KYUII_ENGINE_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/qcommon/crc.h" "${CMAKE_CURRENT_SOURCE_DIR}/qcommon/qcommon.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/qcommon/qfiles.h")
|
|
list(APPEND KYUII_NETWORK_NULL "${CMAKE_CURRENT_SOURCE_DIR}/null/net_null.c")
|
|
|
|
list(
|
|
APPEND
|
|
KYUII_SERVER_SOURCE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/server/sv_ccmds.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/server/sv_ents.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/server/sv_game.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/server/sv_init.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/server/sv_main.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/server/sv_send.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/server/sv_user.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/server/sv_world.c")
|
|
list(APPEND KYUII_SERVER_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/server/server.h")
|
|
list(APPEND KYUII_SERVER_NULL "${CMAKE_CURRENT_SOURCE_DIR}/server/sv_null.c")
|
|
|
|
list(
|
|
APPEND
|
|
KYUII_CLIENT_SOURCE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_cin.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_ents.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_fx.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_input.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_inv.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_main.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_newfx.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_parse.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_pred.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_scrn.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_tent.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cl_view.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/console.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/keys.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/menu.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/qmenu.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/snd_dma.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/snd_mem.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/snd_mix.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/x86.c")
|
|
list(
|
|
APPEND
|
|
KYUII_CLIENT_HEADER
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/adivtab.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/anorms.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/asm_i386.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/block16.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/block8.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/cdaudio.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/client.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/console.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/input.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/keys.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/qmenu.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/screen.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/snd_loc.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/sound.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/client/vid.h")
|
|
list(APPEND KYUII_CLIENT_NULL "${CMAKE_CURRENT_SOURCE_DIR}/null/cd_null.c" "${CMAKE_CURRENT_SOURCE_DIR}/null/cl_null.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/null/in_null.c" "${CMAKE_CURRENT_SOURCE_DIR}/null/snddma_null.c")
|
|
|
|
if(KYUII_USE_DYNAMIC_GAME OR KYUII_USE_DYNAMIC_REFRESH)
|
|
list(APPEND KYUII_ENGINE_LIBS ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
if(KYUII_USE_DYNAMIC_GAME)
|
|
list(APPEND KYUII_SERVER_LIBS KyuII::GameAPI)
|
|
else()
|
|
list(APPEND KYUII_SERVER_LIBS KyuII::GameHL)
|
|
endif()
|
|
|
|
if(KYUII_USE_DYNAMIC_REFRESH)
|
|
list(APPEND KYUII_CLIENT_LIBS KyuII::RefAPI)
|
|
else()
|
|
list(APPEND KYUII_CLIENT_LIBS KyuII::RefHL)
|
|
endif()
|
|
|
|
if(KYUII_BUILD_KYUII)
|
|
add_executable(KyuII WIN32 ${KYUII_ENGINE_SOURCE} ${KYUII_NETWORK_SOURCE} ${KYUII_CLIENT_SOURCE} ${KYUII_SERVER_SOURCE})
|
|
target_link_libraries(KyuII PRIVATE ${KYUII_ENGINE_LIBS} ${KYUII_NETWORK_LIBS} ${KYUII_CLIENT_LIBS} ${KYUII_SERVER_LIBS})
|
|
install(TARGETS KyuII RUNTIME DESTINATION kyuii)
|
|
nx_add_runtime_executable(KyuII)
|
|
endif()
|
|
|
|
if(KYUII_BUILD_KYUDEMO)
|
|
add_executable(KyuDemo WIN32 ${KYUII_ENGINE_SOURCE} ${KYUII_NETWORK_NULL} ${KYUII_CLIENT_SOURCE} ${KYUII_SERVER_SOURCE})
|
|
target_compile_definitions(KyuDemo PRIVATE SINGLEPLAYER_ONLY)
|
|
target_link_libraries(KyuDemo PRIVATE ${KYUII_ENGINE_LIBS} ${KYUII_CLIENT_LIBS} KyuII::GameQ2_HL)
|
|
install(TARGETS KyuDemo RUNTIME DESTINATION kyuii)
|
|
nx_add_runtime_executable(KyuDemo)
|
|
endif()
|
|
|
|
if(KYUII_BUILD_KYUARENA)
|
|
add_executable(KyuArena WIN32 ${KYUII_ENGINE_SOURCE} ${KYUII_NETWORK_SOURCE} ${KYUII_CLIENT_SOURCE} ${KYUII_SERVER_SOURCE})
|
|
target_compile_definitions(KyuArena PRIVATE MULTIPLAYER_ONLY)
|
|
target_link_libraries(KyuArena PRIVATE ${KYUII_ENGINE_LIBS} ${KYUII_NETWORK_LIBS} ${KYUII_CLIENT_LIBS} KyuII::GameCTF_HL)
|
|
install(TARGETS KyuArena RUNTIME DESTINATION kyuii)
|
|
nx_add_runtime_executable(KyuArena)
|
|
endif()
|
|
|
|
if(KYUII_BUILD_KYUNODE)
|
|
add_executable(KyuNode WIN32 ${KYUII_ENGINE_SOURCE} ${KYUII_NETWORK_SOURCE} ${KYUII_CLIENT_NULL} ${KYUII_SERVER_SOURCE})
|
|
target_compile_definitions(KyuNode PRIVATE DEDICATED_ONLY)
|
|
target_link_libraries(KyuNode PRIVATE ${KYUII_ENGINE_LIBS} ${KYUII_NETWORK_LIBS} KyuII::Common ${KYUII_SERVER_LIBS})
|
|
install(TARGETS KyuNode RUNTIME DESTINATION kyuii)
|
|
nx_add_runtime_executable(KyuNode)
|
|
endif()
|
|
|
|
if(KYUII_BUILD_KYUNET)
|
|
add_executable(KyuNet WIN32 ${KYUII_ENGINE_SOURCE} ${KYUII_NETWORK_SOURCE} ${KYUII_CLIENT_SOURCE} ${KYUII_SERVER_NULL})
|
|
target_compile_definitions(KyuNet PRIVATE NETCLIENT_ONLY)
|
|
target_link_libraries(KyuNet PRIVATE ${KYUII_ENGINE_LIBS} ${KYUII_NETWORK_LIBS} ${KYUII_CLIENT_LIBS} KyuII::GameAPI)
|
|
install(TARGETS KyuNet RUNTIME DESTINATION kyuii)
|
|
nx_add_runtime_executable(KyuNet)
|
|
endif()
|
|
|
|
nx_get_runtime_dependencies()
|
|
nx_scope_project()
|