mirror of
https://github.com/yquake2/xatrix.git
synced 2024-11-10 06:42:22 +00:00
7e03dfaac2
The old whitelist was a leftover from the early days of YQ2. It should run on most / all architectures, as long SDL supports them. As suggested by smcv in issue #138 generate the OSTYPE and ARCH defines by the build system instead of hardcoding it. Savegame compatibility is provided by bumping the savegame version. Old savegames are compared against the old OSTYPE and ARCH defined, new ones against the new defines. This compatibility code should be removed somewhere in the distant future.
136 lines
3.8 KiB
CMake
136 lines
3.8 KiB
CMake
cmake_minimum_required(VERSION 3.0)
|
|
|
|
# Enforce "Debug" as standard build type
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
|
endif(NOT CMAKE_BUILD_TYPE)
|
|
|
|
# CMake project configuration
|
|
project(yquake2-xatrix)
|
|
|
|
# Enforce compiler flags (GCC / Clang compatible, yquake2
|
|
# won't build with another compiler anyways)
|
|
# -Wall -> More warnings
|
|
# -fno-strict-aliasing -> Quake 2 is far away from strict aliasing
|
|
# -fwrapv -> Make signed integer overflows defined
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fno-strict-aliasing -fwrapv")
|
|
|
|
# Use -O2 as maximum optimization level. -O3 has it's problems with yquake2.
|
|
string(REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
|
|
|
# Operating system
|
|
add_definitions(-DOSTYPE="${CMAKE_SYSTEM_NAME}")
|
|
|
|
# Architecture string
|
|
string(REGEX REPLACE "amd64" "x86_64" ARCH ${CMAKE_SYSTEM_PROCESSOR})
|
|
string(REGEX REPLACE "i.86" "i386" ARCH ${ARCH})
|
|
string(REGEX REPLACE "^arm.*" "arm" ARCH ${ARCH})
|
|
add_definitions(-DARCH="${ARCH}")
|
|
|
|
# Linker Flags
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|
list(APPEND XatrixLinkerFlags "-lm")
|
|
else()
|
|
list(APPEND XatrixLinkerFlags "-lm -rdynamic")
|
|
endif()
|
|
|
|
set(Xatrix-Source
|
|
src/monster/berserker/berserker.c
|
|
src/monster/boss2/boss2.c
|
|
src/monster/boss3/boss3.c
|
|
src/monster/boss3/boss31.c
|
|
src/monster/boss3/boss32.c
|
|
src/monster/boss5/boss5.c
|
|
src/monster/brain/brain.c
|
|
src/monster/chick/chick.c
|
|
src/monster/fixbot/fixbot.c
|
|
src/monster/flipper/flipper.c
|
|
src/monster/float/float.c
|
|
src/monster/flyer/flyer.c
|
|
src/monster/gekk/gekk.c
|
|
src/monster/gladiator/gladb.c
|
|
src/monster/gladiator/gladiator.c
|
|
src/monster/gunner/gunner.c
|
|
src/monster/hover/hover.c
|
|
src/monster/infantry/infantry.c
|
|
src/monster/insane/insane.c
|
|
src/monster/medic/medic.c
|
|
src/monster/misc/move.c
|
|
src/monster/mutant/mutant.c
|
|
src/monster/parasite/parasite.c
|
|
src/monster/soldier/soldier.c
|
|
src/monster/supertank/supertank.c
|
|
src/monster/tank/tank.c
|
|
src/player/client.c
|
|
src/player/hud.c
|
|
src/player/trail.c
|
|
src/player/view.c
|
|
src/player/weapon.c
|
|
src/savegame/savegame.c
|
|
src/shared/flash.c
|
|
src/shared/rand.c
|
|
src/shared/shared.c
|
|
src/g_ai.c
|
|
src/g_chase.c
|
|
src/g_cmds.c
|
|
src/g_combat.c
|
|
src/g_func.c
|
|
src/g_items.c
|
|
src/g_main.c
|
|
src/g_misc.c
|
|
src/g_monster.c
|
|
src/g_phys.c
|
|
src/g_spawn.c
|
|
src/g_svcmds.c
|
|
src/g_target.c
|
|
src/g_trigger.c
|
|
src/g_turret.c
|
|
src/g_utils.c
|
|
src/g_weapon.c
|
|
)
|
|
|
|
set(Xatrix-Header
|
|
src/header/game.h
|
|
src/header/local.h
|
|
src/header/shared.h
|
|
src/monster/berserker/berserker.h
|
|
src/monster/boss2/boss2.h
|
|
src/monster/boss3/boss31.h
|
|
src/monster/boss3/boss32.h
|
|
src/monster/brain/brain.h
|
|
src/monster/chick/chick.h
|
|
src/monster/fixbot/fixbot.h
|
|
src/monster/flipper/flipper.h
|
|
src/monster/float/float.h
|
|
src/monster/flyer/flyer.h
|
|
src/monster/gekk/gekk.h
|
|
src/monster/gladiator/gladiator.h
|
|
src/monster/gunner/gunner.h
|
|
src/monster/hover/hover.h
|
|
src/monster/infantry/infantry.h
|
|
src/monster/insane/insane.h
|
|
src/monster/medic/medic.h
|
|
src/monster/misc/player.h
|
|
src/monster/mutant/mutant.h
|
|
src/monster/parasite/parasite.h
|
|
src/monster/soldier/soldier.h
|
|
src/monster/soldier/soldierh.h
|
|
src/monster/supertank/supertank.h
|
|
src/monster/tank/tank.h
|
|
src/savegame/tables/clientfields.h
|
|
src/savegame/tables/fields.h
|
|
src/savegame/tables/gamefunc_decs.h
|
|
src/savegame/tables/gamefunc_list.h
|
|
src/savegame/tables/gamemmove_decs.h
|
|
src/savegame/tables/gamemmove_list.h
|
|
src/savegame/tables/levelfields.h
|
|
)
|
|
|
|
# Build the xatrix dynamic library
|
|
add_library(game SHARED ${Xatrix-Source} ${Xatrix-Header})
|
|
set_target_properties(game PROPERTIES
|
|
PREFIX ""
|
|
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Debug
|
|
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Release
|
|
)
|
|
target_link_libraries(game ${XatrixLinkerFlags})
|