HULL/cmake/basegame.cmake
2025-08-03 17:36:01 +01:00

185 lines
6.7 KiB
CMake

if(NOT BUILD_GAME_LIBRARIES AND NOT BUILD_GAME_QVMS)
return()
endif()
include(utils/arch)
include(utils/qvm_tools)
include(utils/set_output_dirs)
set(CGAME_SOURCES
${SOURCE_DIR}/cgame/cg_main.c
${SOURCE_DIR}/game/bg_misc.c
${SOURCE_DIR}/game/bg_pmove.c
${SOURCE_DIR}/game/bg_slidemove.c
${SOURCE_DIR}/game/bg_lib.c
${SOURCE_DIR}/cgame/cg_consolecmds.c
${SOURCE_DIR}/cgame/cg_draw.c
${SOURCE_DIR}/cgame/cg_drawtools.c
${SOURCE_DIR}/cgame/cg_effects.c
${SOURCE_DIR}/cgame/cg_ents.c
${SOURCE_DIR}/cgame/cg_event.c
${SOURCE_DIR}/cgame/cg_info.c
${SOURCE_DIR}/cgame/cg_localents.c
${SOURCE_DIR}/cgame/cg_marks.c
${SOURCE_DIR}/cgame/cg_particles.c
${SOURCE_DIR}/cgame/cg_players.c
${SOURCE_DIR}/cgame/cg_playerstate.c
${SOURCE_DIR}/cgame/cg_predict.c
${SOURCE_DIR}/cgame/cg_scoreboard.c
${SOURCE_DIR}/cgame/cg_servercmds.c
${SOURCE_DIR}/cgame/cg_snapshot.c
${SOURCE_DIR}/cgame/cg_view.c
${SOURCE_DIR}/cgame/cg_weapons.c
)
set(CGAME_BINARY_SOURCES ${SOURCE_DIR}/cgame/cg_syscalls.c)
set(CGAME_QVM_SOURCES ${SOURCE_DIR}/cgame/cg_syscalls.asm)
set(GAME_SOURCES
${SOURCE_DIR}/game/g_main.c
${SOURCE_DIR}/game/ai_chat.c
${SOURCE_DIR}/game/ai_cmd.c
${SOURCE_DIR}/game/ai_dmnet.c
${SOURCE_DIR}/game/ai_dmq3.c
${SOURCE_DIR}/game/ai_main.c
${SOURCE_DIR}/game/ai_team.c
${SOURCE_DIR}/game/ai_vcmd.c
${SOURCE_DIR}/game/bg_misc.c
${SOURCE_DIR}/game/bg_pmove.c
${SOURCE_DIR}/game/bg_slidemove.c
${SOURCE_DIR}/game/bg_lib.c
${SOURCE_DIR}/game/g_active.c
${SOURCE_DIR}/game/g_arenas.c
${SOURCE_DIR}/game/g_bot.c
${SOURCE_DIR}/game/g_client.c
${SOURCE_DIR}/game/g_cmds.c
${SOURCE_DIR}/game/g_combat.c
${SOURCE_DIR}/game/g_items.c
${SOURCE_DIR}/game/g_mem.c
${SOURCE_DIR}/game/g_misc.c
${SOURCE_DIR}/game/g_missile.c
${SOURCE_DIR}/game/g_mover.c
${SOURCE_DIR}/game/g_session.c
${SOURCE_DIR}/game/g_spawn.c
${SOURCE_DIR}/game/g_svcmds.c
${SOURCE_DIR}/game/g_target.c
${SOURCE_DIR}/game/g_team.c
${SOURCE_DIR}/game/g_trigger.c
${SOURCE_DIR}/game/g_utils.c
${SOURCE_DIR}/game/g_weapon.c
)
set(GAME_BINARY_SOURCES ${SOURCE_DIR}/game/g_syscalls.c)
set(GAME_QVM_SOURCES ${SOURCE_DIR}/game/g_syscalls.asm)
set(UI_SOURCES
${SOURCE_DIR}/q3_ui/ui_main.c
${SOURCE_DIR}/game/bg_misc.c
${SOURCE_DIR}/game/bg_lib.c
${SOURCE_DIR}/q3_ui/ui_addbots.c
${SOURCE_DIR}/q3_ui/ui_atoms.c
${SOURCE_DIR}/q3_ui/ui_cdkey.c
${SOURCE_DIR}/q3_ui/ui_cinematics.c
${SOURCE_DIR}/q3_ui/ui_confirm.c
${SOURCE_DIR}/q3_ui/ui_connect.c
${SOURCE_DIR}/q3_ui/ui_controls2.c
${SOURCE_DIR}/q3_ui/ui_credits.c
${SOURCE_DIR}/q3_ui/ui_demo2.c
${SOURCE_DIR}/q3_ui/ui_display.c
${SOURCE_DIR}/q3_ui/ui_gameinfo.c
${SOURCE_DIR}/q3_ui/ui_ingame.c
${SOURCE_DIR}/q3_ui/ui_loadconfig.c
${SOURCE_DIR}/q3_ui/ui_menu.c
${SOURCE_DIR}/q3_ui/ui_mfield.c
${SOURCE_DIR}/q3_ui/ui_mods.c
${SOURCE_DIR}/q3_ui/ui_network.c
${SOURCE_DIR}/q3_ui/ui_options.c
${SOURCE_DIR}/q3_ui/ui_playermodel.c
${SOURCE_DIR}/q3_ui/ui_players.c
${SOURCE_DIR}/q3_ui/ui_playersettings.c
${SOURCE_DIR}/q3_ui/ui_preferences.c
${SOURCE_DIR}/q3_ui/ui_qmenu.c
${SOURCE_DIR}/q3_ui/ui_removebots.c
${SOURCE_DIR}/q3_ui/ui_saveconfig.c
${SOURCE_DIR}/q3_ui/ui_serverinfo.c
${SOURCE_DIR}/q3_ui/ui_servers2.c
${SOURCE_DIR}/q3_ui/ui_setup.c
${SOURCE_DIR}/q3_ui/ui_sound.c
${SOURCE_DIR}/q3_ui/ui_sparena.c
${SOURCE_DIR}/q3_ui/ui_specifyserver.c
${SOURCE_DIR}/q3_ui/ui_splevel.c
${SOURCE_DIR}/q3_ui/ui_sppostgame.c
${SOURCE_DIR}/q3_ui/ui_spskill.c
${SOURCE_DIR}/q3_ui/ui_startserver.c
${SOURCE_DIR}/q3_ui/ui_team.c
${SOURCE_DIR}/q3_ui/ui_teamorders.c
${SOURCE_DIR}/q3_ui/ui_video.c
)
set(UI_BINARY_SOURCES ${SOURCE_DIR}/ui/ui_syscalls.c)
set(UI_QVM_SOURCES ${SOURCE_DIR}/ui/ui_syscalls.asm)
set(GAME_MODULE_SHARED_SOURCES
${SOURCE_DIR}/qcommon/q_math.c
${SOURCE_DIR}/qcommon/q_shared.c
)
set(CGAME_SOURCES_BASEGAME ${CGAME_SOURCES} ${GAME_MODULE_SHARED_SOURCES})
set(GAME_SOURCES_BASEGAME ${GAME_SOURCES} ${GAME_MODULE_SHARED_SOURCES})
set(UI_SOURCES_BASEGAME ${UI_SOURCES} ${GAME_MODULE_SHARED_SOURCES})
if(BUILD_GAME_LIBRARIES)
if(USE_ARCHLESS_FILENAMES)
set(CGAME_MODULE_BINARY ${CGAME_MODULE})
set(GAME_MODULE_BINARY ${GAME_MODULE})
set(UI_MODULE_BINARY ${UI_MODULE})
else()
set(CGAME_MODULE_BINARY ${CGAME_MODULE}${ARCH})
set(GAME_MODULE_BINARY ${GAME_MODULE}${ARCH})
set(UI_MODULE_BINARY ${UI_MODULE}${ARCH})
endif()
set(CGAME_MODULE_BINARY_BASEGAME ${CGAME_MODULE_BINARY}_${BASEGAME})
set(GAME_MODULE_BINARY_BASEGAME ${GAME_MODULE_BINARY}_${BASEGAME})
set(UI_MODULE_BINARY_BASEGAME ${UI_MODULE_BINARY}_${BASEGAME})
add_library( ${CGAME_MODULE_BINARY_BASEGAME} SHARED ${CGAME_SOURCES_BASEGAME} ${CGAME_BINARY_SOURCES})
target_compile_definitions( ${CGAME_MODULE_BINARY_BASEGAME} PRIVATE CGAME)
set_target_properties( ${CGAME_MODULE_BINARY_BASEGAME} PROPERTIES OUTPUT_NAME ${CGAME_MODULE_BINARY})
set_output_dirs( ${CGAME_MODULE_BINARY_BASEGAME} SUBDIRECTORY ${BASEGAME})
add_library( ${GAME_MODULE_BINARY_BASEGAME} SHARED ${GAME_SOURCES_BASEGAME} ${GAME_BINARY_SOURCES})
target_compile_definitions( ${GAME_MODULE_BINARY_BASEGAME} PRIVATE QAGAME)
set_target_properties( ${GAME_MODULE_BINARY_BASEGAME} PROPERTIES OUTPUT_NAME ${GAME_MODULE_BINARY})
set_output_dirs( ${GAME_MODULE_BINARY_BASEGAME} SUBDIRECTORY ${BASEGAME})
add_library( ${UI_MODULE_BINARY_BASEGAME} SHARED ${UI_SOURCES_BASEGAME} ${UI_BINARY_SOURCES})
target_compile_definitions( ${UI_MODULE_BINARY_BASEGAME} PRIVATE UI)
set_target_properties( ${UI_MODULE_BINARY_BASEGAME} PROPERTIES OUTPUT_NAME ${UI_MODULE_BINARY})
set_output_dirs( ${UI_MODULE_BINARY_BASEGAME} SUBDIRECTORY ${BASEGAME})
endif()
if(BUILD_GAME_QVMS)
set(CGAME_MODULE_QVM_BASEGAME ${CGAME_MODULE}qvm_${BASEGAME})
set(GAME_MODULE_QVM_BASEGAME ${GAME_MODULE}qvm_${BASEGAME})
set(UI_MODULE_QVM_BASEGAME ${UI_MODULE}qvm_${BASEGAME})
add_qvm(${CGAME_MODULE_QVM_BASEGAME}
DEFINITIONS CGAME
OUTPUT_NAME ${CGAME_MODULE}
OUTPUT_DIRECTORY ${BASEGAME}/vm
SOURCES ${CGAME_SOURCES_BASEGAME} ${CGAME_QVM_SOURCES})
add_qvm(${GAME_MODULE_QVM_BASEGAME}
DEFINITIONS QAGAME
OUTPUT_NAME ${GAME_MODULE}
OUTPUT_DIRECTORY ${BASEGAME}/vm
SOURCES ${GAME_SOURCES_BASEGAME} ${GAME_QVM_SOURCES})
add_qvm(${UI_MODULE_QVM_BASEGAME}
DEFINITIONS UI
OUTPUT_NAME ${UI_MODULE}
OUTPUT_DIRECTORY ${BASEGAME}/vm
SOURCES ${UI_SOURCES_BASEGAME} ${UI_QVM_SOURCES})
endif()