mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-21 12:11:24 +00:00
Update documentation
cmake build as outdated/confusing and will be restored after finish all tasks.
This commit is contained in:
parent
079267996d
commit
bc260a97e2
3 changed files with 57 additions and 812 deletions
26
CHANGELOG
26
CHANGELOG
|
@ -1,3 +1,27 @@
|
|||
Quake 2 8.31RR4:
|
||||
- remove modle skin count limit,
|
||||
- use short instead byte in frame verts
|
||||
- mdl improve support of embeded texture,
|
||||
- support more then 16k gl commends in models,
|
||||
- support md5 models,
|
||||
- fix player models select if players are packed to pak file.
|
||||
|
||||
Quake 2 8.31RR3:
|
||||
- third person support,
|
||||
- update remasterd maps support in gl3/gl4 based renders,
|
||||
- uopdate cinama render code for soft render,
|
||||
- autobuild windows binaries on tag creation.
|
||||
|
||||
Quake 2 8.31RR2:
|
||||
- Merge hud/players code with ctf code,
|
||||
- Support Shambler, Guardian monsters.
|
||||
|
||||
Quake 2 8.21RR1:
|
||||
- Suport mdl/fm/dkm models,
|
||||
- Support ogv video by ffmpeg,
|
||||
- Start merge ctf, xatrix, rogue to baseq2 code
|
||||
- Support remastered maps in gl1/vk
|
||||
|
||||
Quake II 8.20 to 8.30:
|
||||
- Use the same image loading code in all renderers. (by 0lvin)
|
||||
- Use the same model loading code in all renderers. (by 0lvin)
|
||||
|
@ -273,7 +297,7 @@ Quake II 7.10 to 7.20:
|
|||
- Rename several cvars to be consistent across different renderers.
|
||||
The configuration file will be converted at the first start, when an
|
||||
old cvar name is used a message is printed.
|
||||
- Make the client unicode compatible. Yamagi Quake II can now be
|
||||
- Make the client unicode compatible. Yamagi Quake II can now be
|
||||
installed into paths with unicode characters in it. On Windows the
|
||||
user name of the current account may contain unicode characters.
|
||||
As a side effect the game can run on ReFS volumes. While '+set
|
||||
|
|
803
CMakeLists.txt
803
CMakeLists.txt
|
@ -1,803 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
|
||||
|
||||
# Print a message that using the Makefiles is recommended.
|
||||
message(NOTICE: " The CMakeLists.txt is unmaintained. Use the Makefile if possible.")
|
||||
|
||||
# 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()
|
||||
|
||||
# CMake project configuration.
|
||||
project(yquake2 C)
|
||||
|
||||
# Cmake module search path.
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/stuff/cmake/modules ${CMAKE_MODULE_PATH})
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED OFF)
|
||||
|
||||
if(YQUAKE2LIBS)
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
set(CMAKE_FIND_ROOT_PATH ${YQUAKE2LIBS})
|
||||
else()
|
||||
set(ENV{CMAKE_PREFIX_PATH} ${YQUAKE2LIBS})
|
||||
endif()
|
||||
|
||||
set(ENV{OPENALDIR} ${YQUAKE2LIBS})
|
||||
set(ENV{SDL2DIR} ${YQUAKE2LIBS})
|
||||
endif()
|
||||
|
||||
# Add extended path for FreeBSD and Homebrew on OS X.
|
||||
list(APPEND CMAKE_PREFIX_PATH /usr/local)
|
||||
|
||||
if (MSVC)
|
||||
add_compile_options(/MP) # parallel build (use all cores, or as many as configured in VS)
|
||||
|
||||
# ignore some compiler warnings
|
||||
add_compile_options(/wd4244 /wd4305) # possible loss of data/truncation (double to float etc; ignore)
|
||||
add_compile_options(/wd4018) # signed/unsigned mismatch
|
||||
add_compile_options(/wd4996) # 'function': was declared deprecated (like all that secure CRT stuff)
|
||||
# don't show me warnings for system headers, why the fuck isn't this default
|
||||
add_compile_options(/experimental:external /external:W0)
|
||||
else() # GCC/clang/mingw
|
||||
# Enforce compiler flags:
|
||||
# -Wall -> More warnings
|
||||
# -fno-strict-aliasing -> Quake 2 is far away from strict aliasing
|
||||
# -fwrapv -> Make signed integer overflows defined
|
||||
# -fvisibility=hidden -> Force defaultsymbol visibility to hidden
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fno-strict-aliasing -fwrapv -fvisibility=hidden")
|
||||
|
||||
# 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}")
|
||||
endif() # MSVC'S else-case
|
||||
|
||||
# Switch off some annoying warnings
|
||||
if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces")
|
||||
elseif (${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
|
||||
if (CMAKE_C_COMPILER_VERSION GREATER 7.99)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-format-truncation -Wno-format-overflow")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Compilation time options.
|
||||
option(CURL_SUPPORT "cURL support" ON)
|
||||
option(OPENAL_SUPPORT "OpenAL support" ON)
|
||||
option(SYSTEMWIDE_SUPPORT "Enable systemwide installation of game assets" OFF)
|
||||
|
||||
set(SYSTEMDIR "" CACHE STRING "Override the system default directory")
|
||||
|
||||
# These variables will act as our list of include folders and linker flags.
|
||||
set(yquake2IncludeDirectories)
|
||||
set(yquake2LinkerDirectories)
|
||||
set(yquake2LinkerFlags)
|
||||
set(yquake2ClientLinkerFlags)
|
||||
set(yquake2ServerLinkerFlags)
|
||||
set(yquake2OpenGLLinkerFlags)
|
||||
set(yquake2VulkanLinkerFlags)
|
||||
set(yquake2SDLLinkerFlags)
|
||||
set(yquake2ZLibLinkerFlags)
|
||||
|
||||
# Set directory locations (allowing us to move directories easily)
|
||||
set(SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/src)
|
||||
set(BACKENDS_SRC_DIR ${SOURCE_DIR}/backends)
|
||||
set(COMMON_SRC_DIR ${SOURCE_DIR}/common)
|
||||
set(GAME_SRC_DIR ${SOURCE_DIR}/game)
|
||||
set(SERVER_SRC_DIR ${SOURCE_DIR}/server)
|
||||
set(CLIENT_SRC_DIR ${SOURCE_DIR}/client)
|
||||
set(REF_SRC_DIR ${SOURCE_DIR}/client/refresh)
|
||||
|
||||
# Operating system.
|
||||
set(YQ2OSTYPE "${CMAKE_SYSTEM_NAME}" CACHE STRING "Override operation system type")
|
||||
add_definitions(-DYQ2OSTYPE="${YQ2OSTYPE}")
|
||||
|
||||
# Architecture string
|
||||
# work around CMake's useless/broken CMAKE_SYSTEM_PROCESSOR (taken from dhewm3)
|
||||
|
||||
set(cpu ${CMAKE_SYSTEM_PROCESSOR})
|
||||
|
||||
# Originally, ${CMAKE_SYSTEM_PROCESSOR} was supposed to contain the *target* CPU, according to CMake's documentation.
|
||||
# As far as I can tell this has always been broken (always returns host CPU) at least on Windows
|
||||
# (see e.g. https://cmake.org/pipermail/cmake-developers/2014-September/011405.html) and wasn't reliable on
|
||||
# other systems either, for example on Linux with 32bit userland but 64bit kernel it returned the kernel CPU type
|
||||
# (e.g. x86_64 instead of i686). Instead of fixing this, CMake eventually updated their documentation in 3.20,
|
||||
# now it's officially the same as CMAKE_HOST_SYSTEM_PROCESSOR except when cross-compiling (where it's explicitly set)
|
||||
# So we gotta figure out the actual target CPU type ourselves..
|
||||
if(NOT (CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR))
|
||||
# special case: cross-compiling, here CMAKE_SYSTEM_PROCESSOR should be correct, hopefully
|
||||
# (just leave cpu at ${CMAKE_SYSTEM_PROCESSOR})
|
||||
elseif(MSVC)
|
||||
# because all this wasn't ugly enough, it turned out that, unlike standalone CMake, Visual Studio's
|
||||
# integrated CMake doesn't set CMAKE_GENERATOR_PLATFORM, so I gave up on guessing the CPU arch here
|
||||
# and moved the CPU detection to MSVC-specific code in neo/sys/platform.h
|
||||
else() # not MSVC and not cross-compiling, assume GCC or clang (-compatible), seems to work for MinGW as well
|
||||
execute_process(COMMAND ${CMAKE_C_COMPILER} "-dumpmachine"
|
||||
RESULT_VARIABLE cc_dumpmachine_res
|
||||
OUTPUT_VARIABLE cc_dumpmachine_out)
|
||||
if(cc_dumpmachine_res EQUAL 0)
|
||||
string(STRIP ${cc_dumpmachine_out} cc_dumpmachine_out) # get rid of trailing newline
|
||||
message(DEBUG "`${CMAKE_C_COMPILER} -dumpmachine` says: \"${cc_dumpmachine_out}\"")
|
||||
# gcc -dumpmachine and clang -dumpmachine seem to print something like "x86_64-linux-gnu" (gcc)
|
||||
# or "x64_64-pc-linux-gnu" (clang) or "i686-w64-mingw32" (32bit mingw-w64) i.e. starting with the CPU,
|
||||
# then "-" and then OS or whatever - so use everything up to first "-"
|
||||
string(REGEX MATCH "^[^-]+" cpu ${cc_dumpmachine_out})
|
||||
message(DEBUG " => CPU architecture extracted from that: \"${cpu}\"")
|
||||
else()
|
||||
message(WARNING "${CMAKE_C_COMPILER} -dumpmachine failed with error (code) ${cc_dumpmachine_res}")
|
||||
message(WARNING "will use the (sometimes incorrect) CMAKE_SYSTEM_PROCESSOR (${cpu}) to determine YQ2ARCH")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(cpu STREQUAL "powerpc")
|
||||
set(cpu "ppc")
|
||||
elseif(cpu STREQUAL "aarch64")
|
||||
# "arm64" is more obvious, and some operating systems (like macOS) use it instead of "aarch64"
|
||||
set(cpu "arm64")
|
||||
elseif(cpu MATCHES "[aA][mM][dD]64" OR cpu MATCHES "[xX].*64")
|
||||
set(cpu "x86_64")
|
||||
elseif(cpu MATCHES "i.86" OR cpu MATCHES "[xX]86")
|
||||
set(cpu "i386")
|
||||
elseif(cpu MATCHES "[aA][rR][mM].*") # some kind of arm..
|
||||
# On 32bit Raspbian gcc -dumpmachine returns sth starting with "arm-",
|
||||
# while clang -dumpmachine says "arm6k-..." - try to unify that to "arm"
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8) # sizeof(void*) == 8 => must be arm64
|
||||
set(cpu "arm64")
|
||||
else() # should be 32bit arm then (probably "armv7l" "armv6k" or sth like that)
|
||||
set(cpu "arm")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
# for MSVC YQ2ARCH is set in code (in src/common/header/common.h)
|
||||
message(STATUS "Setting YQ2OSTYPE to \"${YQ2OSTYPE}\" - NOT setting YQ2ARCH, because we're targeting MSVC (VisualC++)")
|
||||
else()
|
||||
set(ARCH "${cpu}")
|
||||
add_definitions(-DYQ2ARCH="${ARCH}")
|
||||
message(STATUS "Setting YQ2OSTYPE to \"${YQ2OSTYPE}\" and YQ2ARCH to \"${ARCH}\".")
|
||||
endif()
|
||||
# make sure that ${cpu} isn't used below - if at all use ${ARCH}, but not when compiling with MSVC!
|
||||
unset(cpu)
|
||||
|
||||
# END OF workarounds for CMake's poor choices regarding CPU architecture detection
|
||||
|
||||
|
||||
# Systemwide installation of game assets.
|
||||
if(${SYSTEMWIDE_SUPPORT})
|
||||
add_definitions(-DSYSTEMWIDE)
|
||||
if(NOT ${SYSTEMDIR} STREQUAL "")
|
||||
add_definitions(-DSYSTEMDIR="${SYSTEMDIR}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# We need to pass some options to minizip / unzip.
|
||||
add_definitions(-DNOUNCRYPT)
|
||||
|
||||
if(NOT (CMAKE_SYSTEM_NAME MATCHES "Linux") AND NOT (CMAKE_SYSTEM_NAME MATCHES "Windows"))
|
||||
add_definitions(-DIOAPI_NO_64)
|
||||
endif()
|
||||
|
||||
# Required libraries to build the different components of the binaries. Find
|
||||
# them and add the include/linker directories and flags (in case the package
|
||||
# manager find it in a weird place).
|
||||
find_package(SDL2 REQUIRED)
|
||||
list(APPEND yquake2IncludeDirectories "${SDL2_INCLUDE_DIR}/..")
|
||||
list(APPEND yquake2SDLLinkerFlags ${SDL2_LIBRARY})
|
||||
|
||||
# We need an OpenGL implementation.
|
||||
set(OpenGL_GL_PREFERENCE GLVND)
|
||||
find_package(OpenGL REQUIRED)
|
||||
list(APPEND yquake2IncludeDirectories ${OPENGL_INCLUDE_DIR})
|
||||
list(APPEND yquake2OpenGLLinkerFlags ${OPENGL_LIBRARIES})
|
||||
|
||||
# backtrace lookup
|
||||
# Some systems like Linux has it within the libc some like the BSD, Haiku ...
|
||||
# into an external libexecinfo library
|
||||
include(CheckFunctionExists)
|
||||
include(CheckLibraryExists)
|
||||
check_function_exists(backtrace HAVE_EXECINFO_SYS)
|
||||
IF (NOT HAVE_EXECINFO_SYS)
|
||||
check_library_exists(execinfo backtrace "" HAVE_EXECINFO_LIB)
|
||||
if (HAVE_EXECINFO_LIB)
|
||||
list(APPEND yquake2ClientLinkerFlags execinfo)
|
||||
list(APPEND yquake2ServerLinkerFlags execinfo)
|
||||
add_definitions(-DHAVE_EXECINFO)
|
||||
endif()
|
||||
else()
|
||||
add_definitions(-DHAVE_EXECINFO)
|
||||
endif()
|
||||
|
||||
# cURL support.
|
||||
if (${CURL_SUPPORT})
|
||||
find_package(CURL REQUIRED)
|
||||
add_definitions(-DUSE_CURL)
|
||||
endif()
|
||||
|
||||
# OpenAL support.
|
||||
if(${OPENAL_SUPPORT})
|
||||
find_package(OpenAL)
|
||||
|
||||
if(${OPENAL_FOUND})
|
||||
list(APPEND yquake2IncludeDirectories "${OPENAL_INCLUDE_DIR}")
|
||||
list(APPEND yquake2ClientLinkerFlags ${OPENAL_LIBRARY})
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
add_definitions(-DUSE_OPENAL -DDEFAULT_OPENAL_DRIVER="openal32.dll")
|
||||
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
add_definitions(-DUSE_OPENAL -DDEFAULT_OPENAL_DRIVER="libopenal.dylib")
|
||||
elseif((${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") OR (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD"))
|
||||
add_definitions(-DUSE_OPENAL -DDEFAULT_OPENAL_DRIVER="libopenal.so")
|
||||
else()
|
||||
add_definitions(-DUSE_OPENAL -DDEFAULT_OPENAL_DRIVER="libopenal.so.1")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# General linker flags.
|
||||
if(NOT MSVC)
|
||||
list(APPEND yquake2LinkerFlags m)
|
||||
endif()
|
||||
list(APPEND yquake2LinkerFlags ${CMAKE_DL_LIBS})
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
if(!MSVC)
|
||||
list(APPEND yquake2LinkerFlags "-static-libgcc")
|
||||
endif()
|
||||
else()
|
||||
if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Haiku")
|
||||
list(APPEND yquake2LinkerFlags "-rdynamic")
|
||||
else()
|
||||
list(APPEND yquake2LinkerFlags "-lnetwork")
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
|
||||
list(APPEND yquake2LinkerFlags "-lsocket -lnsl")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD" AND NOT WIN32)
|
||||
list(APPEND yquake2LinkerFlags "-Wl,--no-undefined")
|
||||
endif()
|
||||
|
||||
# With all of those libraries and user defined paths
|
||||
# added, lets give them to the compiler and linker.
|
||||
include_directories(${yquake2IncludeDirectories})
|
||||
link_directories(${yquake2LinkerDirectories})
|
||||
|
||||
# these settings only work for GCC and clang
|
||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||
# If we're building with gcc for i386 let's define -ffloat-store.
|
||||
# This helps the old and crappy x87 FPU to produce correct values.
|
||||
# Would be nice if Clang had something comparable.
|
||||
if ("${ARCH}" STREQUAL "i386" AND ${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffloat-store")
|
||||
endif()
|
||||
|
||||
# Force SSE math on x86_64. All sane compilers should do this
|
||||
# anyway, just to protect us from broken Linux distros.
|
||||
if ("${ARCH}" STREQUAL "x86_64")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpmath=sse")
|
||||
endif()
|
||||
|
||||
if ("${ARCH}" STREQUAL "arm")
|
||||
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv6k")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(Backends-Generic-Source
|
||||
${BACKENDS_SRC_DIR}/generic/misc.c
|
||||
)
|
||||
|
||||
set(Backends-Unix-Source
|
||||
${BACKENDS_SRC_DIR}/unix/main.c
|
||||
${BACKENDS_SRC_DIR}/unix/network.c
|
||||
${BACKENDS_SRC_DIR}/unix/signalhandler.c
|
||||
${BACKENDS_SRC_DIR}/unix/system.c
|
||||
${BACKENDS_SRC_DIR}/unix/shared/hunk.c
|
||||
)
|
||||
|
||||
set(Backends-Windows-Source
|
||||
${BACKENDS_SRC_DIR}/windows/icon.rc
|
||||
${BACKENDS_SRC_DIR}/windows/main.c
|
||||
${BACKENDS_SRC_DIR}/windows/network.c
|
||||
${BACKENDS_SRC_DIR}/windows/system.c
|
||||
${BACKENDS_SRC_DIR}/windows/shared/hunk.c
|
||||
)
|
||||
|
||||
set(Backends-Windows-Header
|
||||
${BACKENDS_SRC_DIR}/windows/header/resource.h
|
||||
)
|
||||
|
||||
set(REF-Windows-Source
|
||||
${BACKENDS_SRC_DIR}/windows/shared/hunk.c
|
||||
)
|
||||
|
||||
set(REF-Unix-Source
|
||||
${BACKENDS_SRC_DIR}/unix/shared/hunk.c
|
||||
)
|
||||
|
||||
# Set the nessesary platform specific source
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
set(Platform-Specific-Source ${Backends-Windows-Source} ${Backends-Windows-Header})
|
||||
set(REF-Platform-Specific-Source ${REF-Windows-Source})
|
||||
else()
|
||||
set(Platform-Specific-Source ${Backends-Unix-Source})
|
||||
set(REF-Platform-Specific-Source ${REF-Unix-Source})
|
||||
endif()
|
||||
|
||||
set(Game-Source
|
||||
${COMMON_SRC_DIR}/shared/flash.c
|
||||
${COMMON_SRC_DIR}/shared/rand.c
|
||||
${COMMON_SRC_DIR}/shared/shared.c
|
||||
${GAME_SRC_DIR}/g_ai.c
|
||||
${GAME_SRC_DIR}/g_chase.c
|
||||
${GAME_SRC_DIR}/g_cmds.c
|
||||
${GAME_SRC_DIR}/g_combat.c
|
||||
${GAME_SRC_DIR}/g_func.c
|
||||
${GAME_SRC_DIR}/g_items.c
|
||||
${GAME_SRC_DIR}/g_main.c
|
||||
${GAME_SRC_DIR}/g_misc.c
|
||||
${GAME_SRC_DIR}/g_monster.c
|
||||
${GAME_SRC_DIR}/g_phys.c
|
||||
${GAME_SRC_DIR}/g_spawn.c
|
||||
${GAME_SRC_DIR}/g_svcmds.c
|
||||
${GAME_SRC_DIR}/g_target.c
|
||||
${GAME_SRC_DIR}/g_trigger.c
|
||||
${GAME_SRC_DIR}/g_turret.c
|
||||
${GAME_SRC_DIR}/g_utils.c
|
||||
${GAME_SRC_DIR}/g_weapon.c
|
||||
${GAME_SRC_DIR}/monster/berserker/berserker.c
|
||||
${GAME_SRC_DIR}/monster/boss2/boss2.c
|
||||
${GAME_SRC_DIR}/monster/boss3/boss3.c
|
||||
${GAME_SRC_DIR}/monster/boss3/boss31.c
|
||||
${GAME_SRC_DIR}/monster/boss3/boss32.c
|
||||
${GAME_SRC_DIR}/monster/brain/brain.c
|
||||
${GAME_SRC_DIR}/monster/chick/chick.c
|
||||
${GAME_SRC_DIR}/monster/flipper/flipper.c
|
||||
${GAME_SRC_DIR}/monster/float/float.c
|
||||
${GAME_SRC_DIR}/monster/flyer/flyer.c
|
||||
${GAME_SRC_DIR}/monster/gladiator/gladiator.c
|
||||
${GAME_SRC_DIR}/monster/gunner/gunner.c
|
||||
${GAME_SRC_DIR}/monster/hover/hover.c
|
||||
${GAME_SRC_DIR}/monster/infantry/infantry.c
|
||||
${GAME_SRC_DIR}/monster/insane/insane.c
|
||||
${GAME_SRC_DIR}/monster/medic/medic.c
|
||||
${GAME_SRC_DIR}/monster/misc/move.c
|
||||
${GAME_SRC_DIR}/monster/mutant/mutant.c
|
||||
${GAME_SRC_DIR}/monster/parasite/parasite.c
|
||||
${GAME_SRC_DIR}/monster/soldier/soldier.c
|
||||
${GAME_SRC_DIR}/monster/supertank/supertank.c
|
||||
${GAME_SRC_DIR}/monster/tank/tank.c
|
||||
${GAME_SRC_DIR}/player/client.c
|
||||
${GAME_SRC_DIR}/player/hud.c
|
||||
${GAME_SRC_DIR}/player/trail.c
|
||||
${GAME_SRC_DIR}/player/view.c
|
||||
${GAME_SRC_DIR}/player/weapon.c
|
||||
${GAME_SRC_DIR}/savegame/savegame.c
|
||||
)
|
||||
|
||||
set(Game-Header
|
||||
${GAME_SRC_DIR}/header/game.h
|
||||
${GAME_SRC_DIR}/header/local.h
|
||||
${GAME_SRC_DIR}/monster/berserker/berserker.h
|
||||
${GAME_SRC_DIR}/monster/boss2/boss2.h
|
||||
${GAME_SRC_DIR}/monster/boss3/boss31.h
|
||||
${GAME_SRC_DIR}/monster/boss3/boss32.h
|
||||
${GAME_SRC_DIR}/monster/brain/brain.h
|
||||
${GAME_SRC_DIR}/monster/chick/chick.h
|
||||
${GAME_SRC_DIR}/monster/flipper/flipper.h
|
||||
${GAME_SRC_DIR}/monster/float/float.h
|
||||
${GAME_SRC_DIR}/monster/flyer/flyer.h
|
||||
${GAME_SRC_DIR}/monster/gladiator/gladiator.h
|
||||
${GAME_SRC_DIR}/monster/gunner/gunner.h
|
||||
${GAME_SRC_DIR}/monster/hover/hover.h
|
||||
${GAME_SRC_DIR}/monster/infantry/infantry.h
|
||||
${GAME_SRC_DIR}/monster/insane/insane.h
|
||||
${GAME_SRC_DIR}/monster/medic/medic.h
|
||||
${GAME_SRC_DIR}/monster/misc/player.h
|
||||
${GAME_SRC_DIR}/monster/mutant/mutant.h
|
||||
${GAME_SRC_DIR}/monster/parasite/parasite.h
|
||||
${GAME_SRC_DIR}/monster/soldier/soldier.h
|
||||
${GAME_SRC_DIR}/monster/supertank/supertank.h
|
||||
${GAME_SRC_DIR}/monster/tank/tank.h
|
||||
${GAME_SRC_DIR}/savegame/tables/clientfields.h
|
||||
${GAME_SRC_DIR}/savegame/tables/fields.h
|
||||
${GAME_SRC_DIR}/savegame/tables/gamefunc_decs.h
|
||||
${GAME_SRC_DIR}/savegame/tables/gamefunc_list.h
|
||||
${GAME_SRC_DIR}/savegame/tables/gamemmove_decs.h
|
||||
${GAME_SRC_DIR}/savegame/tables/gamemmove_list.h
|
||||
${GAME_SRC_DIR}/savegame/tables/levelfields.h
|
||||
)
|
||||
|
||||
set(Client-Source
|
||||
${CLIENT_SRC_DIR}/cl_cin.c
|
||||
${CLIENT_SRC_DIR}/cl_console.c
|
||||
${CLIENT_SRC_DIR}/cl_download.c
|
||||
${CLIENT_SRC_DIR}/cl_effects.c
|
||||
${CLIENT_SRC_DIR}/cl_entities.c
|
||||
${CLIENT_SRC_DIR}/cl_input.c
|
||||
${CLIENT_SRC_DIR}/cl_inventory.c
|
||||
${CLIENT_SRC_DIR}/cl_keyboard.c
|
||||
${CLIENT_SRC_DIR}/cl_lights.c
|
||||
${CLIENT_SRC_DIR}/cl_main.c
|
||||
${CLIENT_SRC_DIR}/cl_network.c
|
||||
${CLIENT_SRC_DIR}/cl_parse.c
|
||||
${CLIENT_SRC_DIR}/cl_particles.c
|
||||
${CLIENT_SRC_DIR}/cl_prediction.c
|
||||
${CLIENT_SRC_DIR}/cl_screen.c
|
||||
${CLIENT_SRC_DIR}/cl_tempentities.c
|
||||
${CLIENT_SRC_DIR}/cl_view.c
|
||||
${CLIENT_SRC_DIR}/curl/download.c
|
||||
${CLIENT_SRC_DIR}/curl/qcurl.c
|
||||
${CLIENT_SRC_DIR}/input/sdl.c
|
||||
${CLIENT_SRC_DIR}/menu/menu.c
|
||||
${CLIENT_SRC_DIR}/menu/qmenu.c
|
||||
${CLIENT_SRC_DIR}/menu/videomenu.c
|
||||
${CLIENT_SRC_DIR}/sound/ogg.c
|
||||
${CLIENT_SRC_DIR}/sound/openal.c
|
||||
${CLIENT_SRC_DIR}/sound/qal.c
|
||||
${CLIENT_SRC_DIR}/sound/sdl.c
|
||||
${CLIENT_SRC_DIR}/sound/sound.c
|
||||
${CLIENT_SRC_DIR}/sound/wave.c
|
||||
${CLIENT_SRC_DIR}/vid/glimp_sdl.c
|
||||
${CLIENT_SRC_DIR}/vid/vid.c
|
||||
${COMMON_SRC_DIR}/argproc.c
|
||||
${COMMON_SRC_DIR}/clientserver.c
|
||||
${COMMON_SRC_DIR}/collision.c
|
||||
${COMMON_SRC_DIR}/crc.c
|
||||
${COMMON_SRC_DIR}/cmdparser.c
|
||||
${COMMON_SRC_DIR}/cvar.c
|
||||
${COMMON_SRC_DIR}/filesystem.c
|
||||
${COMMON_SRC_DIR}/glob.c
|
||||
${COMMON_SRC_DIR}/md4.c
|
||||
${COMMON_SRC_DIR}/movemsg.c
|
||||
${COMMON_SRC_DIR}/frame.c
|
||||
${COMMON_SRC_DIR}/netchan.c
|
||||
${COMMON_SRC_DIR}/pmove.c
|
||||
${COMMON_SRC_DIR}/szone.c
|
||||
${COMMON_SRC_DIR}/zone.c
|
||||
${COMMON_SRC_DIR}/shared/flash.c
|
||||
${COMMON_SRC_DIR}/shared/rand.c
|
||||
${COMMON_SRC_DIR}/shared/shared.c
|
||||
${COMMON_SRC_DIR}/shared/utils.c
|
||||
${COMMON_SRC_DIR}/unzip/ioapi.c
|
||||
${COMMON_SRC_DIR}/unzip/unzip.c
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz.c
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz_tdef.c
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz_tinfl.c
|
||||
${SERVER_SRC_DIR}/sv_cmd.c
|
||||
${SERVER_SRC_DIR}/sv_conless.c
|
||||
${SERVER_SRC_DIR}/sv_entities.c
|
||||
${SERVER_SRC_DIR}/sv_game.c
|
||||
${SERVER_SRC_DIR}/sv_init.c
|
||||
${SERVER_SRC_DIR}/sv_main.c
|
||||
${SERVER_SRC_DIR}/sv_save.c
|
||||
${SERVER_SRC_DIR}/sv_send.c
|
||||
${SERVER_SRC_DIR}/sv_user.c
|
||||
${SERVER_SRC_DIR}/sv_world.c
|
||||
)
|
||||
|
||||
set(Client-Header
|
||||
${CLIENT_SRC_DIR}/header/client.h
|
||||
${CLIENT_SRC_DIR}/header/console.h
|
||||
${CLIENT_SRC_DIR}/header/keyboard.h
|
||||
${CLIENT_SRC_DIR}/header/screen.h
|
||||
${CLIENT_SRC_DIR}/curl/header/download.h
|
||||
${CLIENT_SRC_DIR}/curl/header/qcurl.h
|
||||
${CLIENT_SRC_DIR}/input/header/input.h
|
||||
${CLIENT_SRC_DIR}/menu/header/qmenu.h
|
||||
${CLIENT_SRC_DIR}/sound/header/local.h
|
||||
${CLIENT_SRC_DIR}/sound/header/qal.h
|
||||
${CLIENT_SRC_DIR}/sound/header/sound.h
|
||||
${CLIENT_SRC_DIR}/sound/header/stb_vorbis.h
|
||||
${CLIENT_SRC_DIR}/sound/header/vorbis.h
|
||||
${CLIENT_SRC_DIR}/vid/header/ref.h
|
||||
${CLIENT_SRC_DIR}/vid/header/stb_image_write.h
|
||||
${CLIENT_SRC_DIR}/vid/header/vid.h
|
||||
${COMMON_SRC_DIR}/header/common.h
|
||||
${COMMON_SRC_DIR}/header/crc.h
|
||||
${COMMON_SRC_DIR}/header/files.h
|
||||
${COMMON_SRC_DIR}/header/glob.h
|
||||
${COMMON_SRC_DIR}/header/shared.h
|
||||
${COMMON_SRC_DIR}/header/zone.h
|
||||
${COMMON_SRC_DIR}/unzip/ioapi.h
|
||||
${COMMON_SRC_DIR}/unzip/unzip.h
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz.h
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz_tdef.h
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz_tinfl.h
|
||||
${COMMON_SRC_DIR}/unzip/miniz/minizconf.h
|
||||
${SERVER_SRC_DIR}/header/server.h
|
||||
)
|
||||
|
||||
set(Server-Source
|
||||
${COMMON_SRC_DIR}/argproc.c
|
||||
${COMMON_SRC_DIR}/clientserver.c
|
||||
${COMMON_SRC_DIR}/collision.c
|
||||
${COMMON_SRC_DIR}/crc.c
|
||||
${COMMON_SRC_DIR}/cmdparser.c
|
||||
${COMMON_SRC_DIR}/cvar.c
|
||||
${COMMON_SRC_DIR}/filesystem.c
|
||||
${COMMON_SRC_DIR}/glob.c
|
||||
${COMMON_SRC_DIR}/md4.c
|
||||
${COMMON_SRC_DIR}/frame.c
|
||||
${COMMON_SRC_DIR}/movemsg.c
|
||||
${COMMON_SRC_DIR}/netchan.c
|
||||
${COMMON_SRC_DIR}/pmove.c
|
||||
${COMMON_SRC_DIR}/szone.c
|
||||
${COMMON_SRC_DIR}/zone.c
|
||||
${COMMON_SRC_DIR}/shared/rand.c
|
||||
${COMMON_SRC_DIR}/shared/shared.c
|
||||
${COMMON_SRC_DIR}/shared/utils.c
|
||||
${COMMON_SRC_DIR}/unzip/ioapi.c
|
||||
${COMMON_SRC_DIR}/unzip/unzip.c
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz.c
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz_tdef.c
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz_tinfl.c
|
||||
${SERVER_SRC_DIR}/sv_cmd.c
|
||||
${SERVER_SRC_DIR}/sv_conless.c
|
||||
${SERVER_SRC_DIR}/sv_entities.c
|
||||
${SERVER_SRC_DIR}/sv_game.c
|
||||
${SERVER_SRC_DIR}/sv_init.c
|
||||
${SERVER_SRC_DIR}/sv_main.c
|
||||
${SERVER_SRC_DIR}/sv_save.c
|
||||
${SERVER_SRC_DIR}/sv_send.c
|
||||
${SERVER_SRC_DIR}/sv_user.c
|
||||
${SERVER_SRC_DIR}/sv_world.c
|
||||
)
|
||||
|
||||
set(Server-Header
|
||||
${COMMON_SRC_DIR}/header/common.h
|
||||
${COMMON_SRC_DIR}/header/crc.h
|
||||
${COMMON_SRC_DIR}/header/files.h
|
||||
${COMMON_SRC_DIR}/header/glob.h
|
||||
${COMMON_SRC_DIR}/header/shared.h
|
||||
${COMMON_SRC_DIR}/header/zone.h
|
||||
${COMMON_SRC_DIR}/unzip/ioapi.h
|
||||
${COMMON_SRC_DIR}/unzip/unzip.h
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz.h
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz_tdef.h
|
||||
${COMMON_SRC_DIR}/unzip/miniz/miniz_tinfl.h
|
||||
${COMMON_SRC_DIR}/unzip/miniz/minizconf.h
|
||||
${SERVER_SRC_DIR}/header/server.h
|
||||
)
|
||||
|
||||
set(GL1-Source
|
||||
${REF_SRC_DIR}/gl1/qgl.c
|
||||
${REF_SRC_DIR}/gl1/gl1_draw.c
|
||||
${REF_SRC_DIR}/gl1/gl1_image.c
|
||||
${REF_SRC_DIR}/gl1/gl1_light.c
|
||||
${REF_SRC_DIR}/gl1/gl1_lightmap.c
|
||||
${REF_SRC_DIR}/gl1/gl1_main.c
|
||||
${REF_SRC_DIR}/gl1/gl1_mesh.c
|
||||
${REF_SRC_DIR}/gl1/gl1_misc.c
|
||||
${REF_SRC_DIR}/gl1/gl1_model.c
|
||||
${REF_SRC_DIR}/gl1/gl1_scrap.c
|
||||
${REF_SRC_DIR}/gl1/gl1_surf.c
|
||||
${REF_SRC_DIR}/gl1/gl1_warp.c
|
||||
${REF_SRC_DIR}/gl1/gl1_sdl.c
|
||||
${REF_SRC_DIR}/files/models.c
|
||||
${REF_SRC_DIR}/files/pcx.c
|
||||
${REF_SRC_DIR}/files/stb.c
|
||||
${REF_SRC_DIR}/files/surf.c
|
||||
${REF_SRC_DIR}/files/wal.c
|
||||
${REF_SRC_DIR}/files/pvs.c
|
||||
${COMMON_SRC_DIR}/shared/shared.c
|
||||
${COMMON_SRC_DIR}/shared/utils.c
|
||||
${COMMON_SRC_DIR}/md4.c
|
||||
)
|
||||
|
||||
set(GL1-Header
|
||||
${REF_SRC_DIR}/ref_shared.h
|
||||
${REF_SRC_DIR}/constants/anorms.h
|
||||
${REF_SRC_DIR}/constants/anormtab.h
|
||||
${REF_SRC_DIR}/constants/warpsin.h
|
||||
${REF_SRC_DIR}/files/stb_image.h
|
||||
${REF_SRC_DIR}/files/surf.c
|
||||
${REF_SRC_DIR}/gl1/header/local.h
|
||||
${REF_SRC_DIR}/gl1/header/model.h
|
||||
${REF_SRC_DIR}/gl1/header/qgl.h
|
||||
${COMMON_SRC_DIR}/header/shared.h
|
||||
)
|
||||
|
||||
set(GL3-Source
|
||||
${REF_SRC_DIR}/gl3/gl3_draw.c
|
||||
${REF_SRC_DIR}/gl3/gl3_image.c
|
||||
${REF_SRC_DIR}/gl3/gl3_light.c
|
||||
${REF_SRC_DIR}/gl3/gl3_lightmap.c
|
||||
${REF_SRC_DIR}/gl3/gl3_main.c
|
||||
${REF_SRC_DIR}/gl3/gl3_mesh.c
|
||||
${REF_SRC_DIR}/gl3/gl3_misc.c
|
||||
${REF_SRC_DIR}/gl3/gl3_model.c
|
||||
${REF_SRC_DIR}/gl3/gl3_sdl.c
|
||||
${REF_SRC_DIR}/gl3/gl3_surf.c
|
||||
${REF_SRC_DIR}/gl3/gl3_warp.c
|
||||
${REF_SRC_DIR}/gl3/gl3_shaders.c
|
||||
${REF_SRC_DIR}/files/models.c
|
||||
${REF_SRC_DIR}/files/pcx.c
|
||||
${REF_SRC_DIR}/files/stb.c
|
||||
${REF_SRC_DIR}/files/surf.c
|
||||
${REF_SRC_DIR}/files/wal.c
|
||||
${REF_SRC_DIR}/files/pvs.c
|
||||
${COMMON_SRC_DIR}/shared/shared.c
|
||||
${COMMON_SRC_DIR}/shared/utils.c
|
||||
${COMMON_SRC_DIR}/md4.c
|
||||
)
|
||||
|
||||
set(Glad-GL3-Source ${REF_SRC_DIR}/gl3/glad/src/glad.c)
|
||||
set(Glad-GLES3-Source ${REF_SRC_DIR}/gl3/glad-gles3/src/glad.c)
|
||||
|
||||
set(GL3-Header
|
||||
${REF_SRC_DIR}/ref_shared.h
|
||||
${REF_SRC_DIR}/constants/anorms.h
|
||||
${REF_SRC_DIR}/constants/anormtab.h
|
||||
${REF_SRC_DIR}/constants/warpsin.h
|
||||
${REF_SRC_DIR}/files/stb_image.h
|
||||
${REF_SRC_DIR}/files/DG_dynarr.h
|
||||
${REF_SRC_DIR}/files/HandmadeMath.h
|
||||
${REF_SRC_DIR}/gl3/header/local.h
|
||||
${REF_SRC_DIR}/gl3/header/model.h
|
||||
${COMMON_SRC_DIR}/header/shared.h
|
||||
)
|
||||
|
||||
set(Glad-GL3-Header
|
||||
${REF_SRC_DIR}/gl3/glad/include/glad/glad.h
|
||||
${REF_SRC_DIR}/gl3/glad/include/KHR/khrplatform.h
|
||||
)
|
||||
|
||||
set(Glad-GLES3-Header
|
||||
${REF_SRC_DIR}/gl3/glad-gles3/include/glad/glad.h
|
||||
${REF_SRC_DIR}/gl3/glad-gles3/include/KHR/khrplatform.h
|
||||
)
|
||||
|
||||
set(SOFT-Source
|
||||
${REF_SRC_DIR}/soft/sw_aclip.c
|
||||
${REF_SRC_DIR}/soft/sw_alias.c
|
||||
${REF_SRC_DIR}/soft/sw_bsp.c
|
||||
${REF_SRC_DIR}/soft/sw_draw.c
|
||||
${REF_SRC_DIR}/soft/sw_edge.c
|
||||
${REF_SRC_DIR}/soft/sw_image.c
|
||||
${REF_SRC_DIR}/soft/sw_light.c
|
||||
${REF_SRC_DIR}/soft/sw_main.c
|
||||
${REF_SRC_DIR}/soft/sw_misc.c
|
||||
${REF_SRC_DIR}/soft/sw_model.c
|
||||
${REF_SRC_DIR}/soft/sw_part.c
|
||||
${REF_SRC_DIR}/soft/sw_poly.c
|
||||
${REF_SRC_DIR}/soft/sw_polyset.c
|
||||
${REF_SRC_DIR}/soft/sw_rast.c
|
||||
${REF_SRC_DIR}/soft/sw_scan.c
|
||||
${REF_SRC_DIR}/soft/sw_sprite.c
|
||||
${REF_SRC_DIR}/soft/sw_surf.c
|
||||
${REF_SRC_DIR}/files/models.c
|
||||
${REF_SRC_DIR}/files/pcx.c
|
||||
${REF_SRC_DIR}/files/stb.c
|
||||
${REF_SRC_DIR}/files/surf.c
|
||||
${REF_SRC_DIR}/files/wal.c
|
||||
${REF_SRC_DIR}/files/pvs.c
|
||||
${COMMON_SRC_DIR}/shared/shared.c
|
||||
${COMMON_SRC_DIR}/shared/utils.c
|
||||
${COMMON_SRC_DIR}/md4.c
|
||||
)
|
||||
|
||||
set(SOFT-Header
|
||||
${REF_SRC_DIR}/ref_shared.h
|
||||
${REF_SRC_DIR}/files/stb_image.h
|
||||
${REF_SRC_DIR}/files/stb_image_resize.h
|
||||
${REF_SRC_DIR}/soft/header/local.h
|
||||
${REF_SRC_DIR}/soft/header/model.h
|
||||
${COMMON_SRC_DIR}/header/shared.h
|
||||
)
|
||||
|
||||
# Main Quake 2 executable
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
add_executable(yquake2 WIN32 ${Client-Source} ${Client-Header} ${Platform-Specific-Source}
|
||||
${Backends-Generic-Source})
|
||||
set_target_properties(yquake2 PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
)
|
||||
target_link_libraries(yquake2 ${yquake2LinkerFlags} ${yquake2ClientLinkerFlags}
|
||||
${yquake2SDLLinkerFlags} ${yquake2ZLibLinkerFlags} ws2_32 winmm)
|
||||
|
||||
if(MSVC AND CMAKE_MAJOR_VERSION GREATER 3 OR ( CMAKE_MAJOR_VERSION EQUAL 3 AND CMAKE_MINOR_VERSION GREATER_EQUAL 6 ))
|
||||
# CMake >= 3.6 supports setting the default project started for debugging (instead of trying to launch ALL_BUILD ...)
|
||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT yquake2)
|
||||
set_target_properties(yquake2 PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/release)
|
||||
endif()
|
||||
|
||||
# Wrapper for the Windows binary
|
||||
set(Wrapper-Source
|
||||
src/win-wrapper/wrapper.c
|
||||
${BACKENDS_SRC_DIR}/windows/icon.rc
|
||||
)
|
||||
add_executable(quake2 WIN32 ${Wrapper-Source})
|
||||
set_target_properties(quake2 PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release)
|
||||
else()
|
||||
add_executable(quake2 ${Client-Source} ${Client-Header} ${Platform-Specific-Source}
|
||||
${Backends-Generic-Source})
|
||||
set_target_properties(quake2 PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
)
|
||||
target_link_libraries(quake2 ${yquake2LinkerFlags} ${yquake2ClientLinkerFlags}
|
||||
${yquake2SDLLinkerFlags} ${yquake2ZLibLinkerFlags})
|
||||
endif()
|
||||
|
||||
# Quake 2 Dedicated Server
|
||||
add_executable(q2ded ${Server-Source} ${Server-Header} ${Platform-Specific-Source}
|
||||
${Backends-Generic-Source})
|
||||
set_target_properties(q2ded PROPERTIES
|
||||
COMPILE_DEFINITIONS "DEDICATED_ONLY"
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
)
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
target_link_libraries(q2ded ${yquake2LinkerFlags} ${yquake2SDLLinkerFlags} ${yquake2ZLibLinkerFlags} ws2_32 winmm)
|
||||
else()
|
||||
target_link_libraries(q2ded ${yquake2LinkerFlags} ${yquake2ServerLinkerFlags} ${yquake2ZLibLinkerFlags})
|
||||
endif()
|
||||
|
||||
# Build the game dynamic library
|
||||
add_library(game MODULE ${Game-Source} ${Game-Header})
|
||||
|
||||
set_target_properties(game PROPERTIES
|
||||
PREFIX ""
|
||||
SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
|
||||
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(isMultiConfig) # multi-config, like Visual Studio solution
|
||||
set_target_properties(game PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release/$<CONFIG>/baseq2
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release/$<CONFIG>/baseq2
|
||||
)
|
||||
else() # single-config, like normal Makefiles
|
||||
set_target_properties(game PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release/baseq2
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release/baseq2
|
||||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(game ${yquake2LinkerFlags})
|
||||
|
||||
# Build the GL1 dynamic library
|
||||
add_library(ref_gl1 MODULE ${GL1-Source} ${GL1-Header} ${REF-Platform-Specific-Source})
|
||||
set_target_properties(ref_gl1 PROPERTIES
|
||||
PREFIX ""
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
target_link_libraries(ref_gl1 ${yquake2LinkerFlags} ${yquake2OpenGLLinkerFlags} ${yquake2SDLLinkerFlags})
|
||||
|
||||
# Build the GL3 dynamic library
|
||||
add_library(ref_gl3 MODULE ${GL3-Source} ${Glad-GL3-Source} ${GL3-Header} ${Glad-GL3-Header} ${REF-Platform-Specific-Source})
|
||||
set_target_properties(ref_gl3 PROPERTIES
|
||||
PREFIX ""
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
target_include_directories(ref_gl3 PRIVATE ${CMAKE_SOURCE_DIR}/src/client/refresh/gl3/glad/include)
|
||||
target_link_libraries(ref_gl3 ${yquake2LinkerFlags} ${yquake2SDLLinkerFlags})
|
||||
|
||||
# Build the GLES3 dynamic library
|
||||
add_library(ref_gles3 MODULE ${GL3-Source} ${Glad-GLES3-Source} ${GL3-Header} ${Glad-GLES3-Header} ${REF-Platform-Specific-Source})
|
||||
set_target_properties(ref_gles3 PROPERTIES
|
||||
PREFIX ""
|
||||
#COMPILE_DEFINITIONS "YQ2_GL3_GLES3=1;YQ2_GL3_GLES=1"
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
target_include_directories(ref_gles3 PRIVATE ${CMAKE_SOURCE_DIR}/src/client/refresh/gl3/glad-gles3/include)
|
||||
target_compile_definitions(ref_gles3 PRIVATE YQ2_GL3_GLES3=1 YQ2_GL3_GLES=1)
|
||||
target_link_libraries(ref_gles3 ${yquake2LinkerFlags} ${yquake2SDLLinkerFlags})
|
||||
|
||||
# Build the soft renderer dynamic library
|
||||
add_library(ref_soft MODULE ${SOFT-Source} ${SOFT-Header} ${REF-Platform-Specific-Source})
|
||||
set_target_properties(ref_soft PROPERTIES
|
||||
PREFIX ""
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/release
|
||||
SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
)
|
||||
target_link_libraries(ref_soft ${yquake2LinkerFlags} ${yquake2SDLLinkerFlags})
|
40
README.md
40
README.md
|
@ -30,22 +30,47 @@ Monsters:
|
|||
* incorrect dead animation for Arachnoid
|
||||
* broken fire effect for Guardian
|
||||
|
||||
Models support:
|
||||
|
||||
| Format | Original Game | Comments |
|
||||
| mdl | Quake 1 | could be issues with textures |
|
||||
| md2 | Quake 2 | full support |
|
||||
| md2 | Anachronox | incorrect normals, does no suport tagged surfaces |
|
||||
| fm | Heretic 2 | show all meshes, |
|
||||
| dkm | Daikatana DKM1 | unchecked with game |
|
||||
| dkm | Daikatana DKM2 | unchecked with game, incorrect normals |
|
||||
| md3 | Quake 3 | show all meshes, no tags support, unchecked, slow |
|
||||
| md5 | Doom 3/Quake 4 | requires md2 for skins, show all meshes, slow |
|
||||
|
||||
All models support only single texture for all meshes and only up to 255 frames.
|
||||
|
||||
Texture supported
|
||||
|
||||
| Format | Original Game | Comments |
|
||||
| wal | Quake 2 | 8 bit |
|
||||
| wal | Daikatana | 8 bit |
|
||||
| m8 | Heretic 2 | 8 bit |
|
||||
| m32 | Heretic 2 | 24 bit |
|
||||
| pcx | Quake2 | 24 bit |
|
||||
| tga | Quake2 | 24 bit |
|
||||
| png | retexturing | 24 bit |
|
||||
| jpg | retexturing | 24 bit |
|
||||
| bmp | Daikatana | 24 bit |
|
||||
|
||||
Goals (finished):
|
||||
* BSPX DECOUPLEDLM light map support (base1),
|
||||
* QBSP map format support (mguhub),
|
||||
* RoQ and Theora cinematic videos support.
|
||||
* FM/Heretic 2 model format support,
|
||||
* Cinematic videos support in smk, mpeg, ogv format,
|
||||
* Use ffmpeg for load any video,
|
||||
* MDL/Quake1 model format support,
|
||||
* Daikatana model/wal/map format support,
|
||||
* MD5 model support,
|
||||
* RoQ and Theora cinematic videos support.
|
||||
* Cinematic videos support in smk, mpeg, ogv format,
|
||||
* Daikatana/Heretic map partial format support,
|
||||
* Add debug progress loading code for maps.
|
||||
|
||||
|
||||
Goals (none of it finished):
|
||||
* md5 improve load speed,
|
||||
* md3 fix possible memory coruption,
|
||||
* Single player support,
|
||||
* support surface flags for Daikatana, Heretic 2, Anachronox,
|
||||
* modified ReRelease game code support with removed KEX only related code.
|
||||
|
||||
Bonus goals:
|
||||
|
@ -55,7 +80,6 @@ Bonus goals:
|
|||
* Convert map surface flag by game type,
|
||||
* Cleanup function declarations in game save code,
|
||||
* Support scalled textures for models and walls in soft render and fix
|
||||
|
||||
lighting with remastered maps.
|
||||
|
||||
Not a goal:
|
||||
|
|
Loading…
Reference in a new issue