mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-22 20:11:44 +00:00
c949500da8
Fix prediction issues with the ftenq protocol. Fix some console image previews. Added mod_precache cvar. set to 0 to significantly reduce memory usage in xonotic... Prevent xonotic's random file writes from forcing full worker syncs, for faster loading. QTV connections are now accepted only from localhost peers by default. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5694 fc73d0e0-1445-4013-8a0c-d673dee63da5
1197 lines
37 KiB
CMake
1197 lines
37 KiB
CMake
#Note: this file was made primarily to support msvc and its project file incompatibilities nightmare.
|
|
#Its also useful for various other IDEs like QtCreator etc.
|
|
#It uses system libraries, so it will have dependancy issues with public releases where those dependancies are distro/version-specific.
|
|
#Public builds are still built using the (overcomplicated) traditional (g)makefile.
|
|
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
|
|
cmake_policy(SET CMP0063 NEW)
|
|
|
|
PROJECT(FTEQuake)
|
|
|
|
INCLUDE_DIRECTORIES(
|
|
engine/common
|
|
engine/client
|
|
engine/qclib
|
|
engine/gl
|
|
engine/server
|
|
engine
|
|
)
|
|
|
|
EXECUTE_PROCESS(COMMAND
|
|
"svnversion"
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
OUTPUT_VARIABLE FTE_REVISON
|
|
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
IF (NOT "${FTE_REVISON}" STREQUAL "")
|
|
MESSAGE(STATUS "FTE SVN Revision ${FTE_REVISON}")
|
|
IF(FTE_REVISON MATCHES "M")
|
|
MESSAGE(STATUS "--- PRIVATE CHANGES DETECTED ---")
|
|
SET(FTE_REVISON SVNREVISION=${FTE_REVISON})
|
|
ELSE()
|
|
MESSAGE(STATUS "No local changes")
|
|
EXECUTE_PROCESS(COMMAND
|
|
svn info --show-item last-changed-date --no-newline
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
OUTPUT_VARIABLE FTE_DATE
|
|
)
|
|
|
|
SET(FTE_REVISON SVNREVISION=${FTE_REVISON} SVNDATE="${FTE_DATE}")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
#plugins need visibility hidden in order to avoid conflicts with function names that match the engine.
|
|
#this is consistent with how windows works so no great loss.
|
|
#plus it means that gcc can inline more (with LTO), including optimising args.
|
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
|
set(CMAKE_C_VISIBILITY_PRESET hidden)
|
|
|
|
IF(${CMAKE_VERSION} VERSION_LESS "3.9.0")
|
|
MESSAGE(STATUS "no LTO - old cmake.")
|
|
ELSE()
|
|
cmake_policy(SET CMP0069 NEW)
|
|
IF(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
#use LTO where possible. reportedly requires cmake 3.9 to actually work
|
|
INCLUDE(CheckIPOSupported)
|
|
check_ipo_supported(RESULT result)
|
|
IF(result)
|
|
SET(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
|
MESSAGE(STATUS "Using LTO.")
|
|
ELSE()
|
|
MESSAGE(STATUS "no LTO - not supported.")
|
|
ENDIF()
|
|
ELSE()
|
|
MESSAGE(STATUS "no LTO - debug.")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
SET(FTE_BUILD_CONFIG ${CMAKE_HOME_DIRECTORY}/engine/common/config_fteqw.h CACHE FILEPATH "Which build config file to use to control supported features.")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};CONFIG_FILE_NAME=${FTE_BUILD_CONFIG})
|
|
|
|
IF(NOT WIN32)
|
|
SET(SYS_LIBS ${SYS_LIBS} m)
|
|
ELSE()
|
|
SET(SYS_LIBS ${SYS_LIBS})
|
|
ENDIF()
|
|
|
|
FIND_PACKAGE(ZLIB)
|
|
IF(ZLIB_FOUND)
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};ZLIB_STATIC)
|
|
SET(FTE_LIBS ${FTE_LIBS} ${ZLIB_LIBRARIES})
|
|
SET(FTESV_LIBS ${FTESV_LIBS} ${ZLIB_LIBRARIES})
|
|
SET(FTEQCC_LIBS ${FTEQCC_LIBS} ${ZLIB_LIBRARIES})
|
|
ELSE()
|
|
MESSAGE(WARNING "libz library NOT available. compressed pk3 will not be available.")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_ZLIB)
|
|
ENDIF()
|
|
|
|
FIND_PACKAGE(BZip2)
|
|
IF(BZIP2_FOUND)
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};AVAIL_BZLIB;BZLIB_STATIC)
|
|
SET(FTE_LIBS ${FTE_LIBS} bz2)
|
|
SET(FTESV_LIBS ${FTESV_LIBS} bz2)
|
|
# MESSAGE(STATUS "bzip2 library found. bz2-compressed pk3s will work for the price of extra bloat! yay!")
|
|
ELSE()
|
|
MESSAGE(WARNING "bzip2 library NOT available. bz2-compressed pk3s will not be available, as if anyone cares.")
|
|
ENDIF()
|
|
|
|
SET(OpenGL_GL_PREFERENCE LEGACY)
|
|
FIND_PACKAGE(OpenGL)
|
|
IF(OpenGL_FOUND)
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};GLQUAKE)
|
|
ELSE()
|
|
MESSAGE(WARNING "opengl library NOT available. Will depend upon vulkan.")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_OPENGL)
|
|
ENDIF()
|
|
|
|
FIND_PACKAGE(JPEG)
|
|
IF(JPEG_FOUND)
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};LIBJPEG_STATIC)
|
|
SET(FTE_LIBS ${FTE_LIBS} ${JPEG_LIBRARIES})
|
|
ELSE()
|
|
MESSAGE(WARNING "libjpeg library NOT available. Who cares?")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_JPEG)
|
|
ENDIF()
|
|
|
|
FIND_PACKAGE(PNG)
|
|
IF(PNG_FOUND)
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};LIBPNG_STATIC)
|
|
SET(FTE_LIBS ${FTE_LIBS} ${PNG_LIBRARIES})
|
|
ELSE()
|
|
MESSAGE(WARNING "libpng library NOT available. Good luck with screenshots.")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_PNG)
|
|
ENDIF()
|
|
|
|
FIND_PACKAGE(Freetype)
|
|
IF(FREETYPE_FOUND)
|
|
INCLUDE_DIRECTORIES( ${FREETYPE_INCLUDE_DIRS} )
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};LIBFREETYPE_STATIC)
|
|
SET(FTE_LIBS ${FTE_LIBS} ${FREETYPE_LIBRARIES})
|
|
ELSE()
|
|
MESSAGE(WARNING "freetype library NOT available. I hope you're okay with ascii.")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_FREETYPE)
|
|
ENDIF()
|
|
|
|
FIND_PATH(VULKAN_INCLUDE_DIR vulkan/vulkan.h)
|
|
IF(VULKAN_INCLUDE_DIR)
|
|
INCLUDE_DIRECTORIES( ${VULKAN_INCLUDE_DIR} )
|
|
SET(FTE_DEFINES ${FTE_DEFINES};VKQUAKE) #no libs required, thankfully
|
|
ELSE()
|
|
MESSAGE(WARNING "Vulkan headers NOT available.")
|
|
ENDIF()
|
|
|
|
FIND_LIBRARY(VORBISFILE_LIBRARY NAMES vorbisfile)
|
|
IF(NOT VORBISFILE_LIBRARY)
|
|
MESSAGE(WARNING "libvorbisfile library NOT available. Who listens to the bgm anyway?")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_OGG)
|
|
ENDIF()
|
|
|
|
IF(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-sign")
|
|
|
|
IF(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wno-pointer-sign -Wno-unknown-pragmas -Wno-format-zero-length -Wno-strict-aliasing -Wno-error=cpp")
|
|
ELSE()
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
|
ENDIF()
|
|
endif()
|
|
IF(CMAKE_C_COMPILER_ID MATCHES "GNU")
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wstrict-prototypes") #
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wold-style-definition") #k&r c is weird and can't cope with 64bit types.
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wold-style-declaration") #
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith") #void* stuff
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wvla") #msvc doesn't support vla
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wdeclaration-after-statement") #msvc doesn't allow defs after statements, and they're so very tempting...
|
|
#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wc++-compat") #lul
|
|
#TODO SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-prototypes") #for finding missing statics.
|
|
#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function") #
|
|
|
|
#might as well do this, public builds use the regular Makefile.
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
|
|
IF(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wno-pointer-sign -Wno-unknown-pragmas -Wno-format-zero-length -Wno-strict-aliasing -Wno-error=cpp")
|
|
ELSE()
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
|
ENDIF()
|
|
ENDIF()
|
|
IF(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-strong")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu89")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_DEBUG")
|
|
ENDIF()
|
|
|
|
IF(${ANDROID})
|
|
# FIND_PACKAGE(Freetype REQUIRED)
|
|
|
|
# INCLUDE_DIRECTORIES( ${FREETYPE_INCLUDE_DIRS} )
|
|
|
|
SET(FTE_DEFINES ${FTE_DEFINES};ANDROID;VKQUAKE;MULTITHREAD)
|
|
SET(FTE_LIBS ${FTE_LIBS} android log EGL ${SYS_LIBS} ${CMAKE_DL_LIBS})
|
|
SET(FTE_ARCH_FILES
|
|
engine/client/sys_droid.c
|
|
engine/common/sys_linux_threads.c
|
|
engine/client/snd_droid.c
|
|
engine/client/cd_null.c
|
|
engine/gl/gl_viddroid.c
|
|
)
|
|
ELSEIF(${WIN32})
|
|
INCLUDE_DIRECTORIES(engine/libs engine/libs/freetype2/include)
|
|
# LINK_DIRECTORIES(engine/libs/mingw64-libs)
|
|
|
|
# engine/server/sv_sys_win.c
|
|
|
|
SET(FTE_LIBS ${FTE_LIBS} ole32 gdi32 wsock32 winmm dxguid)
|
|
SET(FTE_DEFINES ${FTE_DEFINES};D3D9QUAKE;D3D11QUAKE)
|
|
SET(FTE_ARCH_FILES
|
|
engine/client/winquake.rc
|
|
engine/common/sys_win_threads.c
|
|
engine/common/net_ssl_winsspi.c
|
|
engine/common/fs_win32.c
|
|
engine/client/cd_win.c
|
|
engine/client/in_win.c
|
|
engine/client/snd_al.c
|
|
engine/client/snd_directx.c
|
|
engine/client/snd_wasapi.c
|
|
engine/client/snd_win.c
|
|
engine/client/snd_xaudio.c
|
|
engine/client/sys_win.c
|
|
|
|
engine/gl/gl_vidnt.c
|
|
|
|
engine/d3d/d3d_backend.c
|
|
engine/d3d/d3d_image.c
|
|
engine/d3d/d3d_shader.c
|
|
engine/d3d/d3d11_backend.c
|
|
engine/d3d/d3d11_image.c
|
|
engine/d3d/d3d11_shader.c
|
|
engine/d3d/d3d8_backend.c
|
|
engine/d3d/d3d8_image.c
|
|
engine/d3d/vid_d3d.c
|
|
engine/d3d/vid_d3d11.c
|
|
engine/d3d/vid_d3d8.c
|
|
)
|
|
|
|
SET(FTESV_LIBS ${FTESV_LIBS} wsock32 winmm)
|
|
SET(FTESV_ARCH_FILES
|
|
engine/client/winquake.rc
|
|
engine/common/sys_win_threads.c
|
|
engine/common/net_ssl_winsspi.c
|
|
engine/common/fs_win32.c
|
|
engine/server/sv_sys_win.c
|
|
)
|
|
ELSEIF(${UNIX}) #linux(ish)
|
|
#openbsd will have issues with snd_linux.c
|
|
|
|
#linux-only packages
|
|
FIND_PACKAGE(GnuTLS)
|
|
IF(NOT GNUTLS_FOUND)
|
|
MESSAGE(WARNING "gnutls library NOT available. HTTPS/DTLS will not be available.")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_GNUTLS)
|
|
ENDIF()
|
|
|
|
FIND_PACKAGE(ALSA)
|
|
IF(NOT ALSA_FOUND)
|
|
MESSAGE(WARNING "asound (alsa) library NOT available.")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_ALSA)
|
|
ENDIF()
|
|
|
|
FIND_PACKAGE(X11)
|
|
IF(X11_FOUND)
|
|
IF (NOT X11_Xcursor_FOUND)
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_X11_CURSOR)
|
|
MESSAGE(WARNING "Xcursor library NOT available.")
|
|
ENDIF()
|
|
IF (NOT X11_Xrandr_FOUND)
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_X11_RANDR)
|
|
MESSAGE(WARNING "Xrandr library NOT available.")
|
|
ENDIF()
|
|
ELSE()
|
|
MESSAGE(WARNING "x11 library NOT available.")
|
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_X11)
|
|
ENDIF()
|
|
|
|
SET(FTE_DEFINES ${FTE_DEFINES};DYNAMIC_SDL;MULTITHREAD)
|
|
SET(FTE_LIBS ${FTE_LIBS} ${SYS_LIBS} ${CMAKE_DL_LIBS} pthread ${SDL2_LIBRARIES})
|
|
SET(FTE_ARCH_FILES
|
|
engine/client/sys_linux.c
|
|
engine/common/sys_linux_threads.c
|
|
engine/common/net_ssl_gnutls.c
|
|
# engine/common/net_ssl_openssl.c
|
|
|
|
engine/client/snd_al.c
|
|
engine/client/snd_alsa.c
|
|
engine/client/snd_linux.c
|
|
engine/client/snd_pulse.c
|
|
engine/client/snd_sdl.c #we use SDL audio even without sys_sdl, because of pulseaudio fucking over alsa, alsa fucking over oss3, and oss4 not being used. Either way, openal should be the default anyway.
|
|
|
|
engine/client/cd_linux.c
|
|
engine/gl/gl_vidlinuxglx.c
|
|
engine/gl/gl_videgl.c
|
|
|
|
# engine/gl/gl_vidrpi.c
|
|
# engine/gl/gl_vidwayland.c
|
|
)
|
|
|
|
#openbsd uses a libossaudio library for all the oss stuff, use that to ensure that we still get sound
|
|
FIND_LIBRARY(
|
|
OSSAUDIO_LIBRARY
|
|
NAMES ossaudio
|
|
)
|
|
IF(OSSAUDIO_LIBRARY)
|
|
SET(FTE_LIBS ${FTE_LIBS} ${OSSAUDIO_LIBRARY})
|
|
ENDIF()
|
|
|
|
#on linux, use wayland.
|
|
FIND_LIBRARY(
|
|
WAYLAND_CLIENT_LIBRARY
|
|
NAMES wayland-client libwayland-client
|
|
)
|
|
FIND_LIBRARY(
|
|
HAVE_XKBCOMMON
|
|
NAMES xkbcommon
|
|
)
|
|
IF(NOT HAVE_XKBCOMMON)
|
|
MESSAGE(WARNING "xkbcommon library not found, needed for wayland to be usable.")
|
|
UNSET(WAYLAND_CLIENT_LIBRARY)
|
|
ENDIF()
|
|
IF(WAYLAND_CLIENT_LIBRARY)
|
|
SET(FTE_DEFINES ${FTE_DEFINES};WAYLANDQUAKE;USE_EGL)
|
|
SET(FTE_ARCH_FILES ${FTE_ARCH_FILES}
|
|
engine/gl/gl_vidwayland.c
|
|
)
|
|
ELSE()
|
|
MESSAGE(WARNING "Wayland library NOT available. X11 will live forever anyway.")
|
|
IF(NOT X11_FOUND)
|
|
MESSAGE(WARNING "No renderers supported!")
|
|
SET(FTE_NO_RENDERERS 1)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
SET(FTESV_DEFINES MULTITHREAD)
|
|
SET(FTESV_ARCH_FILES
|
|
engine/server/sv_sys_unix.c
|
|
engine/common/sys_linux_threads.c
|
|
engine/common/net_ssl_gnutls.c
|
|
# engine/common/net_ssl_openssl.c
|
|
)
|
|
SET(FTESV_LIBS ${FTESV_LIBS} ${SYS_LIBS} ${CMAKE_DL_LIBS} pthread)
|
|
|
|
# SET(FTE_DEFINES ${FTE_DEFINES};HAVE_OPENSSL)
|
|
# SET(FTESV_DEFINES ${FTESV_DEFINES};HAVE_OPENSSL)
|
|
# SET(FTE_LIBS ${FTE_LIBS} ssl crypto)
|
|
# SET(FTESV_LIBS ${FTE_LIBS} ssl crypto)
|
|
ELSEIF(1) #SDL
|
|
# FIND_PACKAGE(Freetype REQUIRED)
|
|
# INCLUDE_DIRECTORIES(engine/libs engine/libs/freetype2/include)
|
|
|
|
FIND_PACKAGE(PkgConfig REQUIRED)
|
|
PKG_SEARCH_MODULE(sdl2 REQUIRED sdl2)
|
|
|
|
FIND_PACKAGE(SDL2 REQUIRED)
|
|
|
|
INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS})
|
|
|
|
#SDL2.0.7 supports vulkan, so lets use it.
|
|
SET(FTE_DEFINES ${FTE_DEFINES};FTE_SDL)
|
|
SET(FTE_LIBS ${FTE_LIBS} ${SYS_LIBS} ${CMAKE_DL_LIBS} ${SDL2_LIBRARIES})
|
|
SET(FTE_ARCH_FILES
|
|
engine/client/sys_sdl.c
|
|
engine/client/snd_al.c
|
|
engine/client/snd_sdl.c
|
|
engine/client/in_sdl.c
|
|
engine/client/cd_sdl.c
|
|
engine/gl/gl_vidsdl.c
|
|
)
|
|
|
|
SET(FTESV_DEFINES FTE_SDL)
|
|
SET(FTESV_LIBS ${FTESV_LIBS} ${SYS_LIBS} ${CMAKE_DL_LIBS} ${SDL2_LIBRARIES})
|
|
|
|
IF(WIN32)
|
|
SET(FTE_LIBS ${FTE_LIBS} wsock32 gdi32 ole32)
|
|
SET(FTE_DEFINES ${FTE_DEFINES};NO_DIRECTX)
|
|
SET(FTE_ARCH_FILES ${FTE_ARCH_FILES}
|
|
engine/client/winquake.rc
|
|
engine/common/net_ssl_winsspi.c
|
|
)
|
|
SET(FTESV_ARCH_FILES ${FTESV_ARCH_FILES}
|
|
engine/client/winquake.rc
|
|
engine/common/net_ssl_winsspi.c
|
|
engine/server/sv_sys_win.c
|
|
)
|
|
ELSE()
|
|
SET(FTE_ARCH_FILES ${FTE_ARCH_FILES}
|
|
engine/common/net_ssl_gnutls.c
|
|
)
|
|
SET(FTESV_ARCH_FILES ${FTESV_ARCH_FILES}
|
|
engine/common/net_ssl_gnutls.c
|
|
engine/common/sys_linux_threads.c
|
|
engine/server/sv_sys_unix.c
|
|
)
|
|
ENDIF()
|
|
ELSE()
|
|
# engine/common/sys_linux_threads.c
|
|
# engine/common/net_ssl_gnutls.c
|
|
# engine/server/sv_sys_unix.c
|
|
|
|
# engine/client/snd_alsa.c
|
|
# engine/client/snd_droid.c
|
|
# engine/client/snd_linux.c
|
|
# engine/client/snd_macos.c
|
|
# engine/client/snd_morphos.c
|
|
# engine/client/snd_sblaster.c
|
|
# engine/client/snd_sdl.c
|
|
# engine/client/snd_sndio.c
|
|
|
|
# engine/client/sys_dos.c
|
|
# engine/client/sys_droid.c
|
|
# engine/client/sys_linux.c
|
|
# engine/client/sys_morphos.c
|
|
# engine/client/sys_npfte.c
|
|
# engine/client/sys_plugfte.c
|
|
# engine/client/sys_sdl.c
|
|
# engine/client/sys_xdk.c
|
|
|
|
# engine/client/cd_linux.c
|
|
# engine/client/cd_null.c
|
|
# engine/client/cd_sdl.c
|
|
# engine/client/in_morphos.c
|
|
# engine/client/in_sdl.c
|
|
|
|
# engine/gl/gl_viddroid.c
|
|
# engine/gl/gl_videgl.c
|
|
# engine/gl/gl_vidlinuxglx.c
|
|
# engine/gl/gl_vidmacos.c
|
|
# engine/gl/gl_vidmorphos.c
|
|
# engine/gl/gl_vidnull.c
|
|
# engine/gl/gl_vidrpi.c
|
|
# engine/gl/gl_vidsdl.c
|
|
# engine/gl/gl_vidtinyglstubs.c
|
|
# engine/gl/gl_vidwayland.c
|
|
ENDIF()
|
|
|
|
SET(FTE_GL_FILES
|
|
#These are GL-specific, but can be left even if no gl is supported.
|
|
engine/gl/gl_backend.c
|
|
engine/gl/gl_bloom.c
|
|
engine/gl/gl_draw.c
|
|
engine/gl/gl_rmain.c
|
|
engine/gl/gl_rmisc.c
|
|
engine/gl/gl_rsurf.c
|
|
engine/gl/gl_screen.c
|
|
engine/gl/gl_vidcommon.c
|
|
engine/gl/glmod_doom.c
|
|
)
|
|
SET(FTE_VK_FILES
|
|
engine/vk/vk_backend.c
|
|
engine/vk/vk_init.c
|
|
)
|
|
SET(FTE_COMMON_FILES
|
|
#these files are common to both server-only and client+server builds.
|
|
engine/common/cmd.c
|
|
engine/common/com_mesh.c
|
|
engine/common/common.c
|
|
engine/common/crc.c
|
|
engine/common/cvar.c
|
|
engine/common/fs.c
|
|
engine/common/fs_dzip.c
|
|
engine/common/fs_pak.c
|
|
engine/common/fs_stdio.c
|
|
engine/common/fs_xz.c
|
|
engine/common/fs_zip.c
|
|
engine/common/fs_vpk.c
|
|
engine/common/gl_q2bsp.c
|
|
engine/common/huff.c
|
|
engine/common/log.c
|
|
engine/common/mathlib.c
|
|
engine/common/md4.c
|
|
engine/common/net_chan.c
|
|
engine/common/net_ice.c
|
|
engine/common/net_wins.c
|
|
engine/common/plugin.c
|
|
engine/common/pmove.c
|
|
engine/common/pmovetst.c
|
|
engine/common/pr_bgcmd.c
|
|
engine/common/q1bsp.c
|
|
engine/common/q2pmove.c
|
|
engine/common/q3common.c
|
|
engine/common/qvm.c
|
|
engine/common/sha1.c
|
|
engine/common/sha2.c
|
|
engine/common/translate.c
|
|
engine/common/zone.c
|
|
|
|
#important headers
|
|
engine/common/bothdefs.h
|
|
engine/common/config_fteqw.h
|
|
engine/common/config_minimal.h
|
|
engine/common/config_nocompat.h
|
|
engine/common/config_wastes.h
|
|
engine/common/config_freecs.h
|
|
engine/common/config_fteqw_noweb.h
|
|
|
|
#useless headers that I'll never search for
|
|
engine/client/api_menu.h
|
|
engine/client/cdaudio.h
|
|
engine/client/client.h
|
|
engine/client/cl_ignore.h
|
|
engine/client/cl_master.h
|
|
engine/client/clq3defs.h
|
|
engine/client/input.h
|
|
engine/client/keys.h
|
|
engine/client/menu.h
|
|
engine/client/merged.h
|
|
engine/client/modelgen.h
|
|
engine/client/quakedef.h
|
|
engine/client/render.h
|
|
engine/client/sbar.h
|
|
engine/client/screen.h
|
|
engine/client/sound.h
|
|
engine/client/spritegn.h
|
|
# engine/client/sys_plugfte.h
|
|
engine/client/vid.h
|
|
engine/client/view.h
|
|
engine/client/wad.h
|
|
# engine/client/winquake.h
|
|
engine/common/bothdefs.h
|
|
engine/common/bspfile.h
|
|
engine/common/cmd.h
|
|
engine/common/com_mesh.h
|
|
engine/common/common.h
|
|
engine/common/console.h
|
|
engine/common/crc.h
|
|
engine/common/cvar.h
|
|
engine/common/fs.h
|
|
engine/common/mathlib.h
|
|
engine/common/net.h
|
|
engine/common/netinc.h
|
|
engine/common/particles.h
|
|
engine/common/pmove.h
|
|
engine/common/pr_common.h
|
|
engine/common/protocol.h
|
|
engine/common/sys.h
|
|
engine/common/translate.h
|
|
engine/common/ui_public.h
|
|
engine/common/vm.h
|
|
engine/common/world.h
|
|
engine/common/zone.h
|
|
engine/gl/gl_draw.h
|
|
engine/gl/gl_model.h
|
|
engine/gl/glquake.h
|
|
engine/gl/glsupp.h
|
|
engine/gl/gl_terrain.h
|
|
engine/gl/gl_videgl.h
|
|
engine/gl/model_hl.h
|
|
engine/gl/shader.h
|
|
engine/http/iweb.h
|
|
engine/qclib/cmdlib.h
|
|
engine/qclib/execloop.h
|
|
engine/qclib/gui.h
|
|
engine/qclib/hash.h
|
|
engine/qclib/pr_comp.h
|
|
engine/qclib/progsint.h
|
|
engine/qclib/progslib.h
|
|
engine/qclib/progtype.h
|
|
engine/qclib/qcc.h
|
|
engine/qclib/qcd.h
|
|
engine/server/botlib.h
|
|
engine/server/progdefs.h
|
|
engine/server/progs.h
|
|
engine/server/q2game.h
|
|
engine/server/q3g_public.h
|
|
engine/server/server.h
|
|
#engine/server/svhl_gcapi.h
|
|
engine/server/sv_sql.h
|
|
#engine/sw/sw.h
|
|
#engine/sw/sw_spans.h
|
|
engine/vk/vkrenderer.h
|
|
engine/web/ftejslib.h
|
|
|
|
|
|
#sigh
|
|
engine/client/pr_skelobj.c
|
|
engine/client/m_download.c
|
|
engine/client/net_master.c
|
|
|
|
#these are here because of hitmodel etc
|
|
engine/gl/gl_heightmap.c
|
|
engine/gl/gl_hlmdl.c
|
|
engine/gl/gl_model.c
|
|
|
|
engine/server/net_preparse.c
|
|
engine/server/pr_cmds.c
|
|
engine/server/pr_lua.c
|
|
engine/server/pr_q1qvm.c
|
|
engine/server/savegame.c
|
|
engine/server/sv_ccmds.c
|
|
engine/server/sv_chat.c
|
|
engine/server/sv_cluster.c
|
|
engine/server/sv_demo.c
|
|
engine/server/sv_ents.c
|
|
engine/server/sv_init.c
|
|
engine/server/sv_main.c
|
|
engine/server/sv_master.c
|
|
engine/server/sv_move.c
|
|
engine/server/sv_mvd.c
|
|
engine/server/sv_nchan.c
|
|
engine/server/sv_phys.c
|
|
engine/server/sv_rankin.c
|
|
engine/server/sv_send.c
|
|
engine/server/sv_sql.c
|
|
engine/server/sv_user.c
|
|
# engine/server/svhl_game.c
|
|
# engine/server/svhl_phys.c
|
|
# engine/server/svhl_world.c
|
|
engine/server/svq2_ents.c
|
|
engine/server/svq2_game.c
|
|
engine/server/svq3_game.c
|
|
engine/server/world.c
|
|
|
|
engine/qclib/comprout.c
|
|
engine/qclib/hash.c
|
|
engine/qclib/initlib.c
|
|
engine/qclib/pr_edict.c
|
|
engine/qclib/pr_exec.c
|
|
engine/qclib/pr_multi.c
|
|
engine/qclib/qcc_cmdlib.c
|
|
engine/qclib/qcc_pr_comp.c
|
|
engine/qclib/qcc_pr_lex.c
|
|
# engine/qclib/decomp.c
|
|
# engine/qclib/packager.c
|
|
# engine/qclib/pr_x86.c
|
|
# engine/qclib/qccgui.c
|
|
# engine/qclib/qccguistuff.c
|
|
# engine/qclib/qcctui.c
|
|
engine/qclib/qccmain.c
|
|
engine/qclib/qcd_main.c
|
|
engine/qclib/qcdecomp.c
|
|
|
|
engine/http/httpclient.c
|
|
)
|
|
|
|
#these files are only in the client
|
|
SET(FTE_CLIENT_FILES
|
|
engine/client/cl_cam.c
|
|
engine/client/cl_cg.c
|
|
engine/client/cl_demo.c
|
|
engine/client/cl_ents.c
|
|
engine/client/cl_ignore.c
|
|
engine/client/cl_input.c
|
|
engine/client/cl_main.c
|
|
engine/client/cl_parse.c
|
|
engine/client/cl_pred.c
|
|
engine/client/cl_screen.c
|
|
engine/client/cl_tent.c
|
|
engine/client/cl_ui.c
|
|
# engine/client/clhl_game.c
|
|
engine/client/clq2_cin.c
|
|
engine/client/clq2_ents.c
|
|
engine/client/clq3_parse.c
|
|
engine/client/console.c
|
|
engine/client/fragstats.c
|
|
engine/client/image.c
|
|
engine/client/in_generic.c
|
|
engine/client/keys.c
|
|
engine/client/m_items.c
|
|
engine/client/m_master.c
|
|
engine/client/m_mp3.c
|
|
engine/client/m_multi.c
|
|
engine/client/m_options.c
|
|
engine/client/m_script.c
|
|
engine/client/m_native.c
|
|
engine/client/m_single.c
|
|
engine/client/menu.c
|
|
engine/client/p_classic.c
|
|
engine/client/p_null.c
|
|
engine/client/p_script.c
|
|
engine/client/pr_clcmd.c
|
|
engine/client/pr_csqc.c
|
|
engine/client/pr_menu.c
|
|
engine/client/r_2d.c
|
|
engine/client/r_d3.c
|
|
engine/client/r_part.c
|
|
engine/client/r_partset.c
|
|
engine/client/r_surf.c
|
|
engine/client/renderer.c
|
|
engine/client/renderque.c
|
|
engine/client/roq_read.c
|
|
engine/client/sbar.c
|
|
engine/client/skin.c
|
|
engine/client/snd_dma.c
|
|
engine/client/snd_mem.c
|
|
engine/client/snd_mix.c
|
|
engine/client/snd_mp3.c
|
|
engine/client/snd_ov.c
|
|
engine/client/textedit.c
|
|
engine/client/valid.c
|
|
engine/client/view.c
|
|
engine/client/wad.c
|
|
engine/client/zqtp.c
|
|
|
|
|
|
#These are generic renderer files and no longer gl-specific (for the most part)
|
|
engine/gl/gl_alias.c
|
|
engine/gl/gl_font.c
|
|
engine/gl/gl_ngraph.c
|
|
engine/gl/gl_rlight.c
|
|
engine/gl/gl_shader.c
|
|
engine/gl/gl_shadow.c
|
|
engine/gl/gl_warp.c
|
|
engine/gl/ltface.c
|
|
|
|
#these are renderer-specific
|
|
engine/client/vid_headless.c
|
|
${FTE_GL_FILES}
|
|
${FTE_VK_FILES}
|
|
)
|
|
|
|
ADD_LIBRARY(fteq3bot MODULE
|
|
engine/botlib/be_aas_bspq3.c
|
|
engine/botlib/be_aas_entity.c
|
|
engine/botlib/be_aas_move.c
|
|
engine/botlib/be_aas_routealt.c
|
|
engine/botlib/be_ai_char.c
|
|
engine/botlib/be_ai_goal.c
|
|
engine/botlib/be_ai_weight.c
|
|
engine/botlib/l_crc.c
|
|
engine/botlib/l_memory.c
|
|
engine/botlib/l_struct.c
|
|
engine/botlib/be_aas_cluster.c
|
|
engine/botlib/be_aas_file.c
|
|
engine/botlib/be_aas_optimize.c
|
|
engine/botlib/be_aas_route.c
|
|
engine/botlib/be_ai_chat.c
|
|
engine/botlib/be_ai_move.c
|
|
engine/botlib/be_ea.c
|
|
engine/botlib/l_libvar.c
|
|
engine/botlib/l_precomp.c
|
|
engine/botlib/be_aas_debug.c
|
|
engine/botlib/be_aas_main.c
|
|
engine/botlib/be_aas_reach.c
|
|
engine/botlib/be_aas_sample.c
|
|
engine/botlib/be_ai_gen.c
|
|
engine/botlib/be_ai_weap.c
|
|
engine/botlib/be_interface.c
|
|
engine/botlib/l_log.c
|
|
engine/botlib/l_script.c
|
|
engine/botlib/standalone.c
|
|
)
|
|
SET_TARGET_PROPERTIES(fteq3bot PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_DEFINES};${FTE_REVISON};BOTLIB;EXTERNALBOTLIB")
|
|
TARGET_LINK_LIBRARIES(fteq3bot ${FTE_LIBS} )
|
|
SET_TARGET_PROPERTIES(fteq3bot PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
|
|
FILE(STRINGS "${FTE_BUILD_CONFIG}" BULLET_INTERNAL REGEX "^#define[\t ]+USE_INTERNAL_BULLET")
|
|
IF(BULLET_INTERNAL)
|
|
#Built-in bullet physics plugin...
|
|
FIND_PACKAGE(Bullet REQUIRED)
|
|
SET(FTE_COMMON_FILES ${FTE_COMMON_FILES} plugins/bullet/bulletplug.cpp)
|
|
INCLUDE_DIRECTORIES( ${BULLET_INCLUDE_DIRS} )
|
|
SET(FTE_LIBS ${FTE_LIBS} ${BULLET_LIBRARIES})
|
|
SET(FTESV_LIBS ${FTESV_LIBS} ${BULLET_LIBRARIES})
|
|
ELSE()
|
|
#Bullet Physics library plugin
|
|
FIND_PACKAGE(Bullet)
|
|
IF (BULLET_FOUND)
|
|
ADD_LIBRARY(bullet MODULE
|
|
plugins/plugin.c
|
|
plugins/bullet/bulletplug.cpp
|
|
)
|
|
TARGET_INCLUDE_DIRECTORIES(bullet PUBLIC ${BULLET_INCLUDE_DIRS})
|
|
SET_TARGET_PROPERTIES(bullet PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(bullet PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(bullet PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(bullet ${SYS_LIBS} ${BULLET_LIBRARIES})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} bullet)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF(ANDROID)
|
|
#android sucks. everything is a library. so we build the engine as a shared library and completely ignore dedicated servers+tools
|
|
ADD_LIBRARY(ftedroid MODULE
|
|
${FTE_ARCH_FILES}
|
|
${FTE_COMMON_FILES}
|
|
${FTE_CLIENT_FILES}
|
|
)
|
|
SET_TARGET_PROPERTIES(ftedroid PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_DEFINES};${FTE_REVISON}")
|
|
TARGET_LINK_LIBRARIES(ftedroid ${FTE_LIBS} )
|
|
SET(INSTALLTARGS ${INSTALLTARGS} ftedroid)
|
|
ELSE()
|
|
#systems that actually have executables...
|
|
ADD_EXECUTABLE(fteqw WIN32
|
|
${FTE_ARCH_FILES}
|
|
${FTE_COMMON_FILES}
|
|
${FTE_CLIENT_FILES}
|
|
)
|
|
SET_TARGET_PROPERTIES(fteqw PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_DEFINES};${FTE_REVISON}")
|
|
TARGET_LINK_LIBRARIES(fteqw ${FTE_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} fteqw)
|
|
|
|
ADD_EXECUTABLE(fteqw-sv
|
|
${FTESV_ARCH_FILES}
|
|
${FTE_COMMON_FILES}
|
|
)
|
|
SET_TARGET_PROPERTIES(fteqw-sv PROPERTIES COMPILE_DEFINITIONS "SERVERONLY;${FTE_LIB_DEFINES};${FTESV_DEFINES};${FTE_REVISON}")
|
|
TARGET_LINK_LIBRARIES(fteqw-sv ${FTESV_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} fteqw-sv)
|
|
|
|
ADD_EXECUTABLE(iqmtool
|
|
iqm/iqm.cpp
|
|
iqm/iqm.h
|
|
)
|
|
SET_TARGET_PROPERTIES(iqmtool PROPERTIES COMPILE_DEFINITIONS "${FTE_REVISON}")
|
|
SET(INSTALLTARGS ${INSTALLTARGS} iqmtool)
|
|
|
|
ADD_EXECUTABLE(imgtool
|
|
engine/client/image.c
|
|
imgtool.c
|
|
)
|
|
SET_TARGET_PROPERTIES(imgtool PROPERTIES COMPILE_DEFINITIONS "IMGTOOL;${FTE_LIB_DEFINES};${FTE_DEFINES};${FTE_REVISON}")
|
|
TARGET_LINK_LIBRARIES(imgtool ${FTE_LIBS} )
|
|
SET(INSTALLTARGS ${INSTALLTARGS} imgtool)
|
|
|
|
ADD_EXECUTABLE(qtv
|
|
fteqtv/netchan.c
|
|
fteqtv/parse.c
|
|
fteqtv/msg.c
|
|
fteqtv/qw.c
|
|
fteqtv/source.c
|
|
fteqtv/bsp.c
|
|
fteqtv/rcon.c
|
|
fteqtv/mdfour.c
|
|
fteqtv/crc.c
|
|
fteqtv/control.c
|
|
fteqtv/forward.c
|
|
fteqtv/pmove.c
|
|
fteqtv/menu.c
|
|
fteqtv/httpsv.c
|
|
fteqtv/libqtvc/glibc_sucks.c
|
|
engine/common/sha1.c
|
|
)
|
|
SET_TARGET_PROPERTIES(qtv PROPERTIES COMPILE_DEFINITIONS "${FTE_REVISON}")
|
|
IF(WIN32)
|
|
TARGET_LINK_LIBRARIES(qtv ws2_32 winmm ${SYS_LIBS})
|
|
ELSE()
|
|
TARGET_LINK_LIBRARIES(qtv ${SYS_LIBS})
|
|
ENDIF()
|
|
SET(INSTALLTARGS ${INSTALLTARGS} qtv)
|
|
|
|
IF(NOT WIN32)
|
|
ADD_EXECUTABLE(ftemaster
|
|
${FTESV_ARCH_FILES}
|
|
engine/server/sv_master.c
|
|
engine/common/net_ice.c #for the stun responses.
|
|
engine/common/net_wins.c
|
|
engine/common/cvar.c
|
|
engine/common/cmd.c
|
|
engine/common/sha1.c #for websockets
|
|
engine/http/httpclient.c #for the pipe stuff
|
|
engine/common/log.c
|
|
engine/common/fs.c
|
|
engine/common/fs_stdio.c
|
|
engine/common/common.c
|
|
engine/common/translate.c
|
|
engine/common/zone.c
|
|
engine/qclib/hash.c
|
|
)
|
|
SET_TARGET_PROPERTIES(ftemaster PROPERTIES COMPILE_DEFINITIONS "MASTERONLY;${FTE_LIB_DEFINES};${FTESV_DEFINES};${FTE_REVISON}")
|
|
TARGET_LINK_LIBRARIES(ftemaster ${FTESV_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} ftemaster)
|
|
ENDIF()
|
|
|
|
ADD_EXECUTABLE(httpserver
|
|
engine/common/fs_stdio.c
|
|
engine/http/httpserver.c
|
|
engine/http/iwebiface.c
|
|
engine/http/ftpserver.c
|
|
)
|
|
SET_TARGET_PROPERTIES(httpserver PROPERTIES COMPILE_DEFINITIONS "WEBSERVER;WEBSVONLY;${FTE_REVISON}")
|
|
IF(WIN32)
|
|
TARGET_LINK_LIBRARIES(httpserver ws2_32)
|
|
ENDIF()
|
|
#SET(INSTALLTARGS ${INSTALLTARGS} httpserver)
|
|
|
|
ADD_EXECUTABLE(fteqcc
|
|
engine/qclib/qcctui.c
|
|
engine/qclib/comprout.c
|
|
engine/qclib/hash.c
|
|
engine/qclib/qcc_cmdlib.c
|
|
engine/qclib/qcc_pr_comp.c
|
|
engine/qclib/qcc_pr_lex.c
|
|
engine/qclib/qccmain.c
|
|
engine/qclib/qcd_main.c
|
|
)
|
|
SET_TARGET_PROPERTIES(fteqcc PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_REVISON}")
|
|
TARGET_LINK_LIBRARIES(fteqcc ${FTEQCC_LIBS} ${SYS_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} fteqcc)
|
|
|
|
IF(${WIN32})
|
|
ADD_EXECUTABLE(fteqccgui WIN32
|
|
engine/qclib/qccgui.c
|
|
engine/qclib/qccguistuff.c
|
|
engine/qclib/comprout.c
|
|
engine/qclib/hash.c
|
|
engine/qclib/qcc_cmdlib.c
|
|
engine/qclib/qcc_pr_comp.c
|
|
engine/qclib/qcc_pr_lex.c
|
|
engine/qclib/qccmain.c
|
|
engine/qclib/decomp.c
|
|
engine/qclib/packager.c
|
|
engine/qclib/qcd_main.c
|
|
)
|
|
SET_TARGET_PROPERTIES(fteqccgui PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_REVISON}")
|
|
TARGET_LINK_LIBRARIES(fteqccgui ${FTEQCC_LIBS} shlwapi ole32 comctl32 comdlg32)
|
|
SET(INSTALLTARGS ${INSTALLTARGS} fteqccgui)
|
|
ELSE()
|
|
FIND_PACKAGE(Qt5Widgets)
|
|
|
|
FIND_PATH(QSCINTILLA_INCLUDE_DIR
|
|
NAMES Qsci/qsciglobal.h
|
|
PATHS ${Qt5Widgets_INCLUDE_DIRS}
|
|
PATH_SUFFIXES Qsci
|
|
)
|
|
FIND_LIBRARY(QSCINTILLA_LIBRARY
|
|
NAMES qscintilla2_qt5
|
|
PATHS
|
|
${QT_LIBRARY_DIR}
|
|
/usr/local/lib
|
|
/usr/local/lib/qt5
|
|
/usr/lib
|
|
)
|
|
|
|
IF (QSCINTILLA_INCLUDE_DIR AND QSCINTILLA_LIBRARY AND Qt5Widgets_FOUND)
|
|
ADD_EXECUTABLE(fteqccgui
|
|
engine/qclib/qccguiqt.cpp
|
|
engine/qclib/qccguistuff.c
|
|
engine/qclib/comprout.c
|
|
engine/qclib/hash.c
|
|
engine/qclib/qcc_cmdlib.c
|
|
engine/qclib/qcc_pr_comp.c
|
|
engine/qclib/qcc_pr_lex.c
|
|
engine/qclib/qccmain.c
|
|
engine/qclib/decomp.c
|
|
engine/qclib/packager.c
|
|
engine/qclib/qcd_main.c
|
|
)
|
|
TARGET_INCLUDE_DIRECTORIES(fteqccgui PUBLIC ${Qt5Widgets_INCLUDE_DIRS} ${QSCINTILLA_INCLUDE_DIR})
|
|
SET_TARGET_PROPERTIES(fteqccgui PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_REVISON};${Qt5Widgets_COMPILE_DEFINITIONS}")
|
|
SET_PROPERTY(TARGET fteqccgui PROPERTY POSITION_INDEPENDENT_CODE TRUE)
|
|
TARGET_LINK_LIBRARIES(fteqccgui ${FTEQCC_LIBS} ${Qt5Widgets_LIBRARIES} ${QSCINTILLA_LIBRARY})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} fteqccgui)
|
|
ELSE()
|
|
MESSAGE(WARNING "qscintilla/qt5widgets library not detected, no fteqccgui for you")
|
|
ENDIF()
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
#Quake Injector Alike plugin
|
|
ADD_LIBRARY(qi MODULE
|
|
plugins/plugin.c
|
|
plugins/qi/qi.c
|
|
plugins/emailnot/md5.c
|
|
plugins/jabber/xml.c
|
|
)
|
|
SET_TARGET_PROPERTIES(qi PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(qi PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(qi PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(qi ${SYS_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} qi)
|
|
|
|
#ODE Physics library plugin
|
|
FIND_PATH(LIBODE_INCLUDE_DIR ode/ode.h)
|
|
FIND_LIBRARY(LIBODE_LIBRARY ode)
|
|
IF (LIBODE_INCLUDE_DIR)
|
|
ADD_LIBRARY(ode MODULE
|
|
plugins/plugin.c
|
|
engine/common/com_phys_ode.c
|
|
engine/common/mathlib.c
|
|
)
|
|
TARGET_INCLUDE_DIRECTORIES(ode PUBLIC ${ODE_INCLUDE_DIRS})
|
|
SET_TARGET_PROPERTIES(ode PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;ODE_STATIC")
|
|
SET_TARGET_PROPERTIES(ode PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(ode PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(ode ${SYS_LIBS} ${LIBODE_LIBRARY})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} ode)
|
|
ENDIF()
|
|
|
|
#EzQuake Hud port plugin
|
|
ADD_LIBRARY(ezhud MODULE
|
|
plugins/plugin.c
|
|
plugins/ezhud/ezquakeisms.c
|
|
plugins/ezhud/hud.c
|
|
plugins/ezhud/hud_common.c
|
|
plugins/ezhud/hud_editor.c
|
|
)
|
|
SET_TARGET_PROPERTIES(ezhud PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(ezhud PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(ezhud PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(ezhud ${SYS_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} ezhud)
|
|
|
|
#NameMaker string generation plugin
|
|
ADD_LIBRARY(namemaker MODULE
|
|
plugins/plugin.c
|
|
plugins/namemaker/namemaker.c
|
|
)
|
|
SET_TARGET_PROPERTIES(namemaker PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(namemaker PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(namemaker PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(namemaker ${SYS_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} namemaker)
|
|
|
|
#Terrain Generation plugin
|
|
ADD_LIBRARY(terrorgen MODULE
|
|
plugins/plugin.c
|
|
plugins/terrorgen/terragen.c
|
|
)
|
|
SET_TARGET_PROPERTIES(terrorgen PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(terrorgen PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(terrorgen PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(terrorgen ${SYS_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} terrorgen)
|
|
|
|
#IRC client plugin
|
|
ADD_LIBRARY(irc MODULE
|
|
plugins/plugin.c
|
|
plugins/irc/ircclient.c
|
|
)
|
|
SET_TARGET_PROPERTIES(irc PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_REVISON};${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(irc PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(irc PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(irc ${SYS_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} irc)
|
|
|
|
#model formats plugin
|
|
ADD_LIBRARY(models MODULE
|
|
plugins/plugin.c
|
|
plugins/models/models.c
|
|
plugins/models/gltf.c
|
|
plugins/models/exportiqm.c
|
|
)
|
|
SET_TARGET_PROPERTIES(models PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(models PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(models PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(models ${SYS_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} models)
|
|
|
|
IF(0)
|
|
#x11 server plugin (note: for displaying other programs)
|
|
#not stable enough, and probably won't ever be
|
|
ADD_LIBRARY(x11sv MODULE
|
|
plugins/plugin.c
|
|
plugins/xsv/m_x.c
|
|
plugins/xsv/x_reqs.c
|
|
plugins/xsv/x_res.c
|
|
engine/qclib/hash.c
|
|
)
|
|
SET_TARGET_PROPERTIES(x11sv PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(x11sv PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(x11sv PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(x11sv ${SYS_LIBS})
|
|
SET(INSTALLTARGS ${INSTALLTARGS} x11sv)
|
|
ENDIF()
|
|
|
|
#ffmpeg client plugin. no proper way to detect dependancies right now, so I've gotta try the manual way.
|
|
FIND_PATH(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h)
|
|
FIND_PATH(AVFORMAT_INCLUDE_DIR libavformat/avformat.h)
|
|
FIND_PATH(AVUTIL_INCLUDE_DIR libavutil/avutil.h)
|
|
FIND_PATH(AVSWSCALE_INCLUDE_DIR libswscale/swscale.h)
|
|
IF((AVFORMAT_INCLUDE_DIR) AND (AVSWSCALE_INCLUDE_DIR))
|
|
FIND_LIBRARY(AVCODEC_LIBRARY avcodec)
|
|
FIND_LIBRARY(AVFORMAT_LIBRARY avformat)
|
|
FIND_LIBRARY(AVUTIL_LIBRARY avutil)
|
|
FIND_LIBRARY(AVSWSCALE_LIBRARY swscale)
|
|
|
|
ADD_LIBRARY(ffmpeg MODULE
|
|
plugins/plugin.c
|
|
plugins/avplug/avaudio.c
|
|
plugins/avplug/avdecode.c
|
|
plugins/avplug/avencode.c
|
|
)
|
|
TARGET_INCLUDE_DIRECTORIES(ffmpeg PUBLIC ${AVCODEC_INCLUDE_DIR} ${AVFORMAT_INCLUDE_DIR} ${AVUTIL_INCLUDE_DIR} ${AVSWSCALE_INCLUDE_DIR})
|
|
SET_TARGET_PROPERTIES(ffmpeg PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
TARGET_LINK_LIBRARIES(ffmpeg ${SYS_LIBS} ${AVFORMAT_LIBRARY} ${AVCODEC_LIBRARY} ${AVUTIL_LIBRARY} ${AVSWSCALE_LIBRARY})
|
|
SET_TARGET_PROPERTIES(ffmpeg PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(ffmpeg PROPERTIES PREFIX "fteplug_")
|
|
SET(INSTALLTARGS ${INSTALLTARGS} ffmpeg)
|
|
ELSE()
|
|
MESSAGE(WARNING "ffmpeg library NOT available. Quake shouldn't be playing fmv anyway.")
|
|
ENDIF()
|
|
|
|
#openxr plugin
|
|
FIND_PACKAGE(PkgConfig)
|
|
IF (PKGCONFIG_FOUND)
|
|
IF (NOT CMAKE_CROSSCOMPILING) #its picking up the linux headers then complaining that they're missing in mingw. also almost entirely untested so no great loss.
|
|
PKG_SEARCH_MODULE(OPENXR openxr)
|
|
ENDIF()
|
|
IF (OPENXR_FOUND)
|
|
ADD_LIBRARY(openxr MODULE
|
|
plugins/plugin.c
|
|
plugins/openxr.c
|
|
)
|
|
TARGET_INCLUDE_DIRECTORIES(openxr PRIVATE ${OPENXR_INCLUDE_DIRS} )
|
|
|
|
SET_TARGET_PROPERTIES(openxr PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(openxr PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
IF (1) #dynamically link
|
|
SET_TARGET_PROPERTIES(openxr PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES};${FTE_DEFINES};XR_NO_PROTOTYPES")
|
|
TARGET_LINK_LIBRARIES(openxr ${SYS_LIBS})
|
|
ELSE() #statically link
|
|
SET_TARGET_PROPERTIES(openxr PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES};${FTE_DEFINES}")
|
|
TARGET_LINK_LIBRARIES(openxr ${SYS_LIBS} ${OPENXR_LIBRARIES})
|
|
ENDIF()
|
|
SET(INSTALLTARGS ${INSTALLTARGS} openxr)
|
|
ELSE()
|
|
MESSAGE(WARNING "openxr library NOT available. Quake is already a reality anyway.")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
#cef plugin
|
|
#libcef itself can be obtained from http://opensource.spotify.com/cefbuilds/index.html (minimal builds, which still ends up with a 940mb libcef.so - yes, actual size)
|
|
#(be sure to manually strip the binary of its debug info)
|
|
IF (0)
|
|
FIND_PATH (CEF_PATH include/cef_version.h /tmp/cef/cef_binary_81.3.1+gb2b49f1+chromium-81.0.4044.113_linux64_minimal)
|
|
#FIND_LIBRARY(CEF_LIBRARIES cef ${CEF_PATH}/Release)
|
|
IF (CEF_PATH)
|
|
ADD_LIBRARY(cef MODULE
|
|
plugins/plugin.c
|
|
plugins/cef/cef.c
|
|
)
|
|
TARGET_INCLUDE_DIRECTORIES(cef PRIVATE ${CEF_PATH}/..)
|
|
if (CEF_LIBRARIES)
|
|
SET_TARGET_PROPERTIES(cef PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES};${FTE_DEFINES};LIBCEF_STATIC")
|
|
TARGET_LINK_LIBRARIES(cef ${SYS_LIBS} ${CEF_LIBRARIES} ${CMAKE_DL_LIBS})
|
|
ELSE()
|
|
SET_TARGET_PROPERTIES(cef PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES};${FTE_DEFINES};LIBCEF_DYNAMIC")
|
|
TARGET_LINK_LIBRARIES(cef ${SYS_LIBS} ${CMAKE_DL_LIBS})
|
|
ENDIF()
|
|
SET_TARGET_PROPERTIES(cef PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(cef PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF(NOT ANDROID)
|
|
#XMPP/jabber client plugin
|
|
ADD_LIBRARY(xmpp MODULE
|
|
plugins/plugin.c
|
|
plugins/jabber/jabberclient.c
|
|
plugins/jabber/xml.c
|
|
plugins/jabber/jingle.c
|
|
plugins/jabber/sift.c
|
|
engine/common/sha1.c
|
|
plugins/emailnot/md5.c
|
|
)
|
|
SET_TARGET_PROPERTIES(xmpp PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
|
SET_TARGET_PROPERTIES(xmpp PROPERTIES PREFIX "fteplug_")
|
|
SET_TARGET_PROPERTIES(xmpp PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
|
|
IF(${WIN32})
|
|
ELSE()
|
|
TARGET_LINK_LIBRARIES(xmpp ${SYS_LIBS} resolv)
|
|
ENDIF()
|
|
SET(INSTALLTARGS ${INSTALLTARGS} xmpp)
|
|
ENDIF()
|
|
|
|
INCLUDE(GNUInstallDirs)
|
|
SET(FTE_INSTALL_BINDIR games CACHE STRING "Binary dir to install to.")
|
|
INSTALL(TARGETS ${INSTALLTARGS}
|
|
RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}${FTE_INSTALL_BINDIR}"
|
|
LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}"
|
|
)
|
|
|
|
ADD_CUSTOM_TARGET(menusys ALL
|
|
VERBATIM
|
|
COMMAND fteqcc -srcfile "${CMAKE_CURRENT_SOURCE_DIR}/quakec/menusys/menu.src" -o "${CMAKE_CURRENT_BINARY_DIR}/menu.dat"
|
|
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/menu.dat" "${CMAKE_CURRENT_BINARY_DIR}/menu.lno"
|
|
SOURCES
|
|
quakec/menusys/menu.src
|
|
quakec/menusys/menusys/mitems.qc
|
|
quakec/menusys/menusys/mitems_common.qc
|
|
quakec/menusys/menusys/mitem_frame.qc
|
|
quakec/menusys/menusys/mitem_desktop.qc
|
|
quakec/menusys/menusys/mitem_exmenu.qc
|
|
quakec/menusys/menusys/mitem_edittext.qc
|
|
quakec/menusys/menusys/mitem_tabs.qc
|
|
quakec/menusys/menusys/mitem_colours.qc
|
|
quakec/menusys/menusys/mitem_checkbox.qc
|
|
quakec/menusys/menusys/mitem_slider.qc
|
|
quakec/menusys/menusys/mitem_combo.qc
|
|
quakec/menusys/menusys/mitem_bind.qc
|
|
quakec/menusys/menusys/mitem_spinnymodel.qc
|
|
quakec/menusys/menu/loadsave.qc
|
|
quakec/menusys/menu/newgame.qc
|
|
quakec/menusys/menu/options_basic.qc
|
|
quakec/menusys/menu/options_effects.qc
|
|
quakec/menusys/menu/options_keys.qc
|
|
quakec/menusys/menu/options.qc
|
|
quakec/menusys/menu/presets.qc
|
|
quakec/menusys/menu/servers.qc
|
|
quakec/menusys/menu/main.qc
|
|
quakec/menusys/menu/mods.qc
|
|
quakec/menusys/menu/cvars.qc
|
|
quakec/menusys/menu/updates.qc
|
|
quakec/menusys/menu/options_audio.qc
|
|
quakec/menusys/menu/options_configs.qc
|
|
quakec/menusys/menu/options_hud.qc
|
|
quakec/menusys/menu/options_particles.qc
|
|
quakec/menusys/menu/options_video.qc
|
|
quakec/menusys/menu/quit.qc
|
|
)
|