2018-03-04 14:41:16 +00:00
#Note: this file was made primarily to support msvc and its project file incompatibilities nightmare.
2018-08-04 19:00:19 +00:00
#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.
2018-03-04 14:41:16 +00:00
2018-08-23 07:04:55 +00:00
CMAKE_MINIMUM_REQUIRED ( VERSION 3.0 )
2018-08-24 00:35:16 +00:00
cmake_policy ( SET CMP0063 NEW )
2018-11-19 06:37:25 +00:00
PROJECT ( FTEQuake )
2018-03-04 14:41:16 +00:00
INCLUDE_DIRECTORIES (
e n g i n e / c o m m o n
e n g i n e / c l i e n t
e n g i n e / q c l i b
e n g i n e / g l
e n g i n e / s e r v e r
e n g i n e
)
EXECUTE_PROCESS ( COMMAND
2018-06-06 09:52:25 +00:00
" s v n v e r s i o n "
2018-03-04 14:41:16 +00:00
W O R K I N G _ D I R E C T O R Y " $ { C M A K E _ S O U R C E _ D I R } "
O U T P U T _ V A R I A B L E F T E _ R E V I S O N
E R R O R _ Q U I E T O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E
)
IF ( NOT "${FTE_REVISON}" STREQUAL "" )
SET ( FTE_REVISON SVNREVISION= ${ FTE_REVISON } )
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 )
2018-08-04 19:00:19 +00:00
IF ( ${ CMAKE_VERSION } VERSION_LESS "3.9.0" )
2018-11-19 06:37:25 +00:00
MESSAGE ( STATUS "no LTO - old cmake." )
2018-08-04 19:00:19 +00:00
ELSE ( )
2018-11-19 06:37:25 +00:00
cmake_policy ( SET CMP0069 NEW )
IF ( NOT CMAKE_BUILD_TYPE MATCHES "Debug" )
2018-08-23 07:04:55 +00:00
#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 )
2018-11-19 06:37:25 +00:00
MESSAGE ( STATUS "Using LTO." )
ELSE ( )
MESSAGE ( STATUS "no LTO - not supported." )
2018-08-23 07:04:55 +00:00
ENDIF ( )
2018-11-19 06:37:25 +00:00
ELSE ( )
MESSAGE ( STATUS "no LTO - debug." )
2018-08-23 07:04:55 +00:00
ENDIF ( )
ENDIF ( )
2018-11-19 06:37:25 +00:00
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 } )
2018-08-23 07:04:55 +00:00
FIND_PACKAGE ( ZLIB )
IF ( NOT ZLIB_FOUND )
MESSAGE ( WARNING "libz library NOT available. compressed pk3 will not be available." )
SET ( FTE_LIB_DEFINES ${ FTE_LIB_DEFINES } ;NO_ZLIB )
2018-11-19 06:37:25 +00:00
SET ( ZLIB_LIBRARY )
SET ( ZLIB_LIBRARIES )
2018-08-23 07:04:55 +00:00
ENDIF ( )
2018-11-27 16:48:19 +00:00
FIND_PACKAGE ( BZip2 )
IF ( BZIP2_FOUND )
SET ( FTE_LIB_DEFINES ${ FTE_LIB_DEFINES } ;AVAIL_BZLIB )
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 ( )
2018-08-24 00:35:16 +00:00
SET ( OpenGL_GL_PREFERENCE LEGACY )
2018-08-23 07:04:55 +00:00
FIND_PACKAGE ( OpenGL )
2018-11-19 06:37:25 +00:00
IF ( OpenGL_FOUND )
SET ( FTE_LIB_DEFINES ${ FTE_LIB_DEFINES } ;GLQUAKE )
ELSE ( )
2018-08-23 07:04:55 +00:00
MESSAGE ( WARNING "opengl library NOT available. Will depend upon vulkan." )
SET ( FTE_LIB_DEFINES ${ FTE_LIB_DEFINES } ;NO_OPENGL )
2018-06-06 09:52:25 +00:00
ENDIF ( )
2018-03-04 14:41:16 +00:00
2018-08-23 07:04:55 +00:00
FIND_PACKAGE ( JPEG )
IF ( NOT JPEG_FOUND )
MESSAGE ( WARNING "libjpeg library NOT available. Who cares?" )
SET ( FTE_LIB_DEFINES ${ FTE_LIB_DEFINES } ;NO_JPEG )
ENDIF ( )
FIND_PACKAGE ( PNG )
IF ( NOT PNG_FOUND )
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 } )
ELSE ( )
MESSAGE ( WARNING "freetype library NOT available. I hope you're okay with ascii." )
SET ( FTE_LIB_DEFINES ${ FTE_LIB_DEFINES } ;NO_FREETYPE )
ENDIF ( )
2018-11-27 16:48:19 +00:00
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 ( )
2018-11-19 06:37:25 +00:00
2018-08-23 07:04:55 +00:00
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" )
2018-08-04 19:00:19 +00:00
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-sign" )
endif ( )
2018-10-11 10:31:23 +00:00
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} -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") #
2019-01-13 16:51:50 +00:00
#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" )
2019-02-16 19:09:07 +00:00
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wcast-align -Werror -Wno-pointer-sign -Wno-unknown-pragmas -Wno-format-zero-length -Wno-strict-aliasing -Wno-error=cpp" )
2019-01-13 16:51:50 +00:00
ELSE ( )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3" )
ENDIF ( )
2018-10-11 10:31:23 +00:00
ENDIF ( )
2018-09-29 17:31:58 +00:00
IF ( CMAKE_BUILD_TYPE MATCHES "Debug" )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-strong" )
2018-10-11 10:31:23 +00:00
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu89" )
2019-01-13 16:51:50 +00:00
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_DEBUG" )
ENDIF ( )
2018-08-04 19:00:19 +00:00
IF ( ${ ANDROID } )
# FIND_PACKAGE(Freetype REQUIRED)
# INCLUDE_DIRECTORIES( ${FREETYPE_INCLUDE_DIRS} )
2018-11-19 06:37:25 +00:00
SET ( FTE_DEFINES ${ FTE_DEFINES } ;ANDROID;VKQUAKE;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG;MULTITHREAD;stricmp=strcasecmp;strnicmp=strncasecmp )
2018-11-27 16:48:19 +00:00
SET ( FTE_LIBS ${ FTE_LIBS } android log EGL ${ ZLIB_LIBRARIES } m ${ CMAKE_DL_LIBS } )
2018-08-04 19:00:19 +00:00
SET ( FTE_ARCH_FILES
e n g i n e / c l i e n t / s y s _ d r o i d . c
e n g i n e / c o m m o n / s y s _ l i n u x _ t h r e a d s . c
e n g i n e / c l i e n t / s n d _ d r o i d . c
e n g i n e / c l i e n t / c d _ n u l l . c
e n g i n e / g l / g l _ v i d d r o i d . c
)
ELSEIF ( ${ WIN32 } )
2018-03-04 14:41:16 +00:00
INCLUDE_DIRECTORIES ( engine/libs engine/libs/freetype2/include )
# LINK_DIRECTORIES(engine/libs/mingw64-libs)
# engine/server/sv_sys_win.c
2018-11-27 16:48:19 +00:00
SET ( FTE_LIBS ${ FTE_LIBS } ${ ZLIB_LIBRARIES } ole32 gdi32 wsock32 winmm dxguid )
2018-11-19 06:37:25 +00:00
SET ( FTE_DEFINES ${ FTE_DEFINES } ;D3D9QUAKE;D3D11QUAKE;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG )
2018-03-04 14:41:16 +00:00
SET ( FTE_ARCH_FILES
e n g i n e / c l i e n t / w i n q u a k e . r c
e n g i n e / c o m m o n / s y s _ w i n _ t h r e a d s . c
e n g i n e / c o m m o n / n e t _ s s l _ w i n s s p i . c
e n g i n e / c o m m o n / f s _ w i n 3 2 . c
e n g i n e / c l i e n t / c d _ w i n . c
e n g i n e / c l i e n t / i n _ w i n . c
e n g i n e / c l i e n t / s n d _ a l . c
e n g i n e / c l i e n t / s n d _ d i r e c t x . c
e n g i n e / c l i e n t / s n d _ w a s a p i . c
e n g i n e / c l i e n t / s n d _ w i n . c
e n g i n e / c l i e n t / s n d _ x a u d i o . c
e n g i n e / c l i e n t / s y s _ w i n . c
e n g i n e / g l / g l _ v i d n t . c
e n g i n e / d 3 d / d 3 d _ b a c k e n d . c
e n g i n e / d 3 d / d 3 d _ i m a g e . c
e n g i n e / d 3 d / d 3 d _ s h a d e r . c
e n g i n e / d 3 d / d 3 d 1 1 _ b a c k e n d . c
e n g i n e / d 3 d / d 3 d 1 1 _ i m a g e . c
e n g i n e / d 3 d / d 3 d 1 1 _ s h a d e r . c
e n g i n e / d 3 d / d 3 d 8 _ b a c k e n d . c
e n g i n e / d 3 d / d 3 d 8 _ i m a g e . c
e n g i n e / d 3 d / v i d _ d 3 d . c
e n g i n e / d 3 d / v i d _ d 3 d 1 1 . c
e n g i n e / d 3 d / v i d _ d 3 d 8 . c
)
2018-11-27 16:48:19 +00:00
SET ( FTESV_LIBS ${ FTESV_LIBS } ${ ZLIB_LIBRARIES } wsock32 winmm )
2018-03-04 14:41:16 +00:00
SET ( FTESV_ARCH_FILES
e n g i n e / c l i e n t / w i n q u a k e . r c
e n g i n e / c o m m o n / s y s _ w i n _ t h r e a d s . c
e n g i n e / c o m m o n / n e t _ s s l _ w i n s s p i . c
e n g i n e / c o m m o n / f s _ w i n 3 2 . c
e n g i n e / s e r v e r / s v _ s y s _ w i n . c
)
ELSEIF ( ${ UNIX } ) #linux(ish)
2018-06-06 09:52:25 +00:00
#openbsd will have issues with snd_linux.c
2018-11-19 06:37:25 +00:00
#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 ( )
ELSE ( )
MESSAGE ( WARNING "x11 library NOT available." )
SET ( FTE_LIB_DEFINES ${ FTE_LIB_DEFINES } ;NO_X11 )
ENDIF ( )
SET ( FTE_DEFINES ${ FTE_DEFINES } ;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG;DYNAMIC_SDL;MULTITHREAD;stricmp=strcasecmp;strnicmp=strncasecmp )
2018-11-27 16:48:19 +00:00
SET ( FTE_LIBS ${ FTE_LIBS } ${ ZLIB_LIBRARIES } m ${ CMAKE_DL_LIBS } pthread ${ SDL2_LIBRARIES } )
2018-03-04 14:41:16 +00:00
SET ( FTE_ARCH_FILES
e n g i n e / c l i e n t / s y s _ l i n u x . c
e n g i n e / c o m m o n / s y s _ l i n u x _ t h r e a d s . c
e n g i n e / c o m m o n / n e t _ s s l _ g n u t l s . c
2018-10-23 07:09:06 +00:00
# engine/common/net_ssl_openssl.c
2018-03-04 14:41:16 +00:00
e n g i n e / c l i e n t / s n d _ a l . c
e n g i n e / c l i e n t / s n d _ a l s a . c
e n g i n e / c l i e n t / s n d _ l i n u x . c
2019-01-13 16:51:50 +00:00
e n g i n e / c l i e n t / s n d _ p u l s e . c
2018-03-04 14:41:16 +00:00
e n g i n e / c l i e n t / s n d _ s d l . 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.
e n g i n e / c l i e n t / c d _ l i n u x . c
e n g i n e / g l / g l _ v i d l i n u x g l x . c
e n g i n e / g l / g l _ v i d e g l . c
# engine/gl/gl_vidrpi.c
# engine/gl/gl_vidwayland.c
)
2018-06-06 09:52:25 +00:00
#openbsd uses a libossaudio library for all the oss stuff, use that to ensure that we still get sound
FIND_LIBRARY (
O S S A U D I O _ L I B R A R Y
2018-08-23 07:04:55 +00:00
N A M E S o s s a u d i o
2018-06-06 09:52:25 +00:00
)
IF ( OSSAUDIO_LIBRARY )
SET ( FTE_LIBS ${ FTE_LIBS } ${ OSSAUDIO_LIBRARY } )
ENDIF ( )
#on linux, use wayland.
FIND_LIBRARY (
W A Y L A N D _ C L I E N T _ L I B R A R Y
N A M E S w a y l a n d - c l i e n t l i b w a y l a n d - c l i e n t
)
IF ( WAYLAND_CLIENT_LIBRARY )
SET ( FTE_DEFINES ${ FTE_DEFINES } ;WAYLANDQUAKE;USE_EGL )
SET ( FTE_ARCH_FILES ${ FTE_ARCH_FILES }
e n g i n e / g l / g l _ v i d w a y l a n d . c
)
2018-08-23 07:04:55 +00:00
ELSE ( )
MESSAGE ( WARNING "Wayland library NOT available" )
IF ( NOT X11_FOUND )
MESSAGE ( WARNING "No renderers supported!" )
SET ( FTE_NO_RENDERERS 1 )
ENDIF ( )
2018-06-06 09:52:25 +00:00
ENDIF ( )
2018-08-04 19:00:19 +00:00
SET ( FTESV_DEFINES MULTITHREAD;stricmp=strcasecmp;strnicmp=strncasecmp )
2018-03-04 14:41:16 +00:00
SET ( FTESV_ARCH_FILES
e n g i n e / s e r v e r / s v _ s y s _ u n i x . c
e n g i n e / c o m m o n / s y s _ l i n u x _ t h r e a d s . c
e n g i n e / c o m m o n / n e t _ s s l _ g n u t l s . c
2018-10-23 07:09:06 +00:00
# engine/common/net_ssl_openssl.c
2018-03-04 14:41:16 +00:00
)
2018-11-27 16:48:19 +00:00
SET ( FTESV_LIBS ${ FTESV_LIBS } ${ ZLIB_LIBRARIES } m ${ CMAKE_DL_LIBS } pthread )
2018-10-23 07:09:06 +00:00
# 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)
2018-03-04 14:41:16 +00:00
ELSEIF ( 1 ) #SDL
2018-08-23 07:04:55 +00:00
# FIND_PACKAGE(Freetype REQUIRED)
2018-03-04 14:41:16 +00:00
# INCLUDE_DIRECTORIES(engine/libs engine/libs/freetype2/include)
FIND_PACKAGE ( PkgConfig REQUIRED )
PKG_SEARCH_MODULE ( sdl2 REQUIRED sdl2 )
2019-05-10 09:31:21 +00:00
FIND_PACKAGE ( SDL2 REQUIRED )
2018-03-04 14:41:16 +00:00
INCLUDE_DIRECTORIES ( ${ FREETYPE_INCLUDE_DIRS } ${ SDL2_INCLUDE_DIRS } )
#SDL2.0.7 supports vulkan, so lets use it.
2018-11-19 06:37:25 +00:00
SET ( FTE_DEFINES ${ FTE_DEFINES } ;FTE_SDL;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG;stricmp=strcasecmp;strnicmp=strncasecmp )
2018-11-27 16:48:19 +00:00
SET ( FTE_LIBS ${ FTE_LIBS } ${ ZLIB_LIBRARIES } m ${ CMAKE_DL_LIBS } ${ SDL2_LIBRARIES } )
2018-03-04 14:41:16 +00:00
SET ( FTE_ARCH_FILES
e n g i n e / c l i e n t / s y s _ s d l . c
e n g i n e / c l i e n t / s n d _ a l . c
e n g i n e / c l i e n t / s n d _ s d l . c
e n g i n e / c l i e n t / i n _ s d l . c
e n g i n e / c l i e n t / c d _ s d l . c
e n g i n e / g l / g l _ v i d s d l . c
)
SET ( FTESV_DEFINES FTE_SDL;stricmp=strcasecmp;strnicmp=strncasecmp )
2018-11-27 16:48:19 +00:00
SET ( FTESV_LIBS ${ FTESV_LIBS } ${ ZLIB_LIBRARIES } m ${ CMAKE_DL_LIBS } ${ SDL2_LIBRARIES } )
2018-03-04 14:41:16 +00:00
IF ( WIN32 )
SET ( FTE_LIBS ${ FTE_LIBS } wsock32 gdi32 ole32 )
SET ( FTE_DEFINES ${ FTE_DEFINES } ;NO_DIRECTX )
SET ( FTE_ARCH_FILES ${ FTE_ARCH_FILES }
e n g i n e / c l i e n t / w i n q u a k e . r c
e n g i n e / c o m m o n / n e t _ s s l _ w i n s s p i . c
)
SET ( FTESV_ARCH_FILES ${ FTESV_ARCH_FILES }
e n g i n e / c l i e n t / w i n q u a k e . r c
e n g i n e / c o m m o n / n e t _ s s l _ w i n s s p i . c
e n g i n e / s e r v e r / s v _ s y s _ w i n . c
)
ELSE ( )
SET ( FTE_ARCH_FILES ${ FTE_ARCH_FILES }
e n g i n e / c o m m o n / n e t _ s s l _ g n u t l s . c
)
SET ( FTESV_ARCH_FILES ${ FTESV_ARCH_FILES }
e n g i n e / c o m m o n / n e t _ s s l _ g n u t l s . c
e n g i n e / c o m m o n / s y s _ l i n u x _ t h r e a d s . c
e n g i n e / s e r v e r / s v _ s y s _ u n i x . 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_COMMON_FILES
#these files are common to both server-only and client+server builds.
e n g i n e / c o m m o n / c m d . c
e n g i n e / c o m m o n / c o m _ m e s h . c
e n g i n e / c o m m o n / c o m m o n . c
e n g i n e / c o m m o n / c r c . c
e n g i n e / c o m m o n / c v a r . c
e n g i n e / c o m m o n / f s . c
e n g i n e / c o m m o n / f s _ d z i p . c
e n g i n e / c o m m o n / f s _ p a k . c
e n g i n e / c o m m o n / f s _ s t d i o . c
e n g i n e / c o m m o n / f s _ x z . c
e n g i n e / c o m m o n / f s _ z i p . c
2018-11-27 16:48:19 +00:00
e n g i n e / c o m m o n / f s _ v p k . c
2018-03-04 14:41:16 +00:00
e n g i n e / c o m m o n / g l _ q 2 b s p . c
e n g i n e / c o m m o n / h u f f . c
e n g i n e / c o m m o n / l o g . c
e n g i n e / c o m m o n / m a t h l i b . c
e n g i n e / c o m m o n / m d 4 . c
e n g i n e / c o m m o n / n e t _ c h a n . c
e n g i n e / c o m m o n / n e t _ i c e . c
e n g i n e / c o m m o n / n e t _ w i n s . c
e n g i n e / c o m m o n / p l u g i n . c
e n g i n e / c o m m o n / p m o v e . c
e n g i n e / c o m m o n / p m o v e t s t . c
e n g i n e / c o m m o n / p r _ b g c m d . c
e n g i n e / c o m m o n / q 1 b s p . c
e n g i n e / c o m m o n / q 2 p m o v e . c
e n g i n e / c o m m o n / q 3 c o m m o n . c
e n g i n e / c o m m o n / q v m . c
e n g i n e / c o m m o n / s h a 1 . c
e n g i n e / c o m m o n / t r a n s l a t e . c
e n g i n e / c o m m o n / z o n e . c
2018-11-27 16:48:19 +00:00
2019-01-13 16:51:50 +00:00
#important headers
e n g i n e / c o m m o n / b o t h d e f s . h
2018-11-27 16:48:19 +00:00
e n g i n e / c o m m o n / c o n f i g _ f t e q w . h
e n g i n e / c o m m o n / c o n f i g _ m i n i m a l . h
e n g i n e / c o m m o n / c o n f i g _ n o c o m p a t . h
e n g i n e / c o m m o n / c o n f i g _ w a s t e s . h
2019-01-13 16:51:50 +00:00
e n g i n e / c o m m o n / c o n f i g _ f r e e c s . h
#useless headers that I'll never search for
e n g i n e / c l i e n t / a p i _ m e n u . h
e n g i n e / c l i e n t / c d a u d i o . h
e n g i n e / c l i e n t / c l i e n t . h
e n g i n e / c l i e n t / c l _ i g n o r e . h
e n g i n e / c l i e n t / c l _ m a s t e r . h
e n g i n e / c l i e n t / c l q 3 d e f s . h
e n g i n e / c l i e n t / i n p u t . h
e n g i n e / c l i e n t / k e y s . h
e n g i n e / c l i e n t / m e n u . h
e n g i n e / c l i e n t / m e r g e d . h
e n g i n e / c l i e n t / m o d e l g e n . h
e n g i n e / c l i e n t / q u a k e d e f . h
e n g i n e / c l i e n t / r e n d e r . h
e n g i n e / c l i e n t / s b a r . h
e n g i n e / c l i e n t / s c r e e n . h
e n g i n e / c l i e n t / s o u n d . h
e n g i n e / c l i e n t / s p r i t e g n . h
# engine/client/sys_plugfte.h
e n g i n e / c l i e n t / v i d . h
e n g i n e / c l i e n t / v i e w . h
e n g i n e / c l i e n t / w a d . h
# engine/client/winquake.h
e n g i n e / c o m m o n / b o t h d e f s . h
e n g i n e / c o m m o n / b s p f i l e . h
e n g i n e / c o m m o n / c m d . h
e n g i n e / c o m m o n / c o m _ m e s h . h
e n g i n e / c o m m o n / c o m m o n . h
e n g i n e / c o m m o n / c o n s o l e . h
e n g i n e / c o m m o n / c r c . h
e n g i n e / c o m m o n / c v a r . h
e n g i n e / c o m m o n / f s . h
e n g i n e / c o m m o n / m a t h l i b . h
e n g i n e / c o m m o n / n e t . h
e n g i n e / c o m m o n / n e t i n c . h
e n g i n e / c o m m o n / p a r t i c l e s . h
e n g i n e / c o m m o n / p m o v e . h
e n g i n e / c o m m o n / p r _ c o m m o n . h
e n g i n e / c o m m o n / p r o t o c o l . h
e n g i n e / c o m m o n / s y s . h
e n g i n e / c o m m o n / t r a n s l a t e . h
e n g i n e / c o m m o n / u i _ p u b l i c . h
e n g i n e / c o m m o n / v m . h
e n g i n e / c o m m o n / w o r l d . h
e n g i n e / c o m m o n / z o n e . h
e n g i n e / g l / g l _ d r a w . h
e n g i n e / g l / g l _ m o d e l . h
e n g i n e / g l / g l q u a k e . h
e n g i n e / g l / g l s u p p . h
e n g i n e / g l / g l _ t e r r a i n . h
e n g i n e / g l / g l _ v i d e g l . h
e n g i n e / g l / m o d e l _ h l . h
e n g i n e / g l / s h a d e r . h
e n g i n e / h t t p / i w e b . h
e n g i n e / q c l i b / c m d l i b . h
e n g i n e / q c l i b / e x e c l o o p . h
e n g i n e / q c l i b / g u i . h
e n g i n e / q c l i b / h a s h . h
e n g i n e / q c l i b / p r _ c o m p . h
e n g i n e / q c l i b / p r o g s i n t . h
e n g i n e / q c l i b / p r o g s l i b . h
e n g i n e / q c l i b / p r o g t y p e . h
e n g i n e / q c l i b / q c c . h
e n g i n e / q c l i b / q c d . h
e n g i n e / s e r v e r / b o t l i b . h
e n g i n e / s e r v e r / p r o g d e f s . h
e n g i n e / s e r v e r / p r o g s . h
e n g i n e / s e r v e r / q 2 g a m e . h
e n g i n e / s e r v e r / q 3 g _ p u b l i c . h
e n g i n e / s e r v e r / s e r v e r . h
#engine/server/svhl_gcapi.h
e n g i n e / s e r v e r / s v _ s q l . h
#engine/sw/sw.h
#engine/sw/sw_spans.h
e n g i n e / v k / v k r e n d e r e r . h
e n g i n e / w e b / f t e j s l i b . h
2018-03-04 14:41:16 +00:00
#sigh
e n g i n e / c l i e n t / p r _ s k e l o b j . c
e n g i n e / c l i e n t / m _ d o w n l o a d . c
e n g i n e / c l i e n t / n e t _ m a s t e r . c
#these are here because of hitmodel etc
e n g i n e / g l / g l _ h e i g h t m a p . c
e n g i n e / g l / g l _ h l m d l . c
e n g i n e / g l / g l _ m o d e l . c
e n g i n e / s e r v e r / n e t _ p r e p a r s e . c
e n g i n e / s e r v e r / p r _ c m d s . c
e n g i n e / s e r v e r / p r _ l u a . c
e n g i n e / s e r v e r / p r _ q 1 q v m . c
e n g i n e / s e r v e r / s a v e g a m e . c
e n g i n e / s e r v e r / s v _ c c m d s . c
e n g i n e / s e r v e r / s v _ c h a t . c
e n g i n e / s e r v e r / s v _ c l u s t e r . c
e n g i n e / s e r v e r / s v _ d e m o . c
e n g i n e / s e r v e r / s v _ e n t s . c
e n g i n e / s e r v e r / s v _ i n i t . c
e n g i n e / s e r v e r / s v _ m a i n . c
e n g i n e / s e r v e r / s v _ m a s t e r . c
e n g i n e / s e r v e r / s v _ m o v e . c
e n g i n e / s e r v e r / s v _ m v d . c
e n g i n e / s e r v e r / s v _ n c h a n . c
e n g i n e / s e r v e r / s v _ p h y s . c
e n g i n e / s e r v e r / s v _ r a n k i n . c
e n g i n e / s e r v e r / s v _ s e n d . c
e n g i n e / s e r v e r / s v _ s q l . c
e n g i n e / s e r v e r / s v _ u s e r . c
# engine/server/svhl_game.c
# engine/server/svhl_phys.c
# engine/server/svhl_world.c
e n g i n e / s e r v e r / s v q 2 _ e n t s . c
e n g i n e / s e r v e r / s v q 2 _ g a m e . c
e n g i n e / s e r v e r / s v q 3 _ g a m e . c
e n g i n e / s e r v e r / w o r l d . c
e n g i n e / q c l i b / c o m p r o u t . c
e n g i n e / q c l i b / h a s h . c
e n g i n e / q c l i b / i n i t l i b . c
e n g i n e / q c l i b / p r _ e d i c t . c
e n g i n e / q c l i b / p r _ e x e c . c
e n g i n e / q c l i b / p r _ m u l t i . c
e n g i n e / q c l i b / q c c _ c m d l i b . c
e n g i n e / q c l i b / q c c _ p r _ c o m p . c
e n g i n e / q c l i b / q c c _ p r _ l e x . 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
e n g i n e / q c l i b / q c c m a i n . c
e n g i n e / q c l i b / q c d _ m a i n . c
e n g i n e / q c l i b / q c d e c o m p . c
e n g i n e / h t t p / h t t p c l i e n t . c
)
2018-08-04 19:00:19 +00:00
#these files are only in the client
SET ( FTE_CLIENT_FILES
2018-03-04 14:41:16 +00:00
e n g i n e / c l i e n t / c l _ c a m . c
e n g i n e / c l i e n t / c l _ c g . c
e n g i n e / c l i e n t / c l _ d e m o . c
e n g i n e / c l i e n t / c l _ e n t s . c
e n g i n e / c l i e n t / c l _ i g n o r e . c
e n g i n e / c l i e n t / c l _ i n p u t . c
e n g i n e / c l i e n t / c l _ m a i n . c
e n g i n e / c l i e n t / c l _ p a r s e . c
e n g i n e / c l i e n t / c l _ p r e d . c
e n g i n e / c l i e n t / c l _ s c r e e n . c
e n g i n e / c l i e n t / c l _ t e n t . c
e n g i n e / c l i e n t / c l _ u i . c
# engine/client/clhl_game.c
e n g i n e / c l i e n t / c l q 2 _ c i n . c
e n g i n e / c l i e n t / c l q 2 _ e n t s . c
e n g i n e / c l i e n t / c l q 3 _ p a r s e . c
e n g i n e / c l i e n t / c o n s o l e . c
e n g i n e / c l i e n t / f r a g s t a t s . c
e n g i n e / c l i e n t / i m a g e . c
e n g i n e / c l i e n t / i n _ g e n e r i c . c
e n g i n e / c l i e n t / k e y s . c
e n g i n e / c l i e n t / m _ i t e m s . c
e n g i n e / c l i e n t / m _ m a s t e r . c
e n g i n e / c l i e n t / m _ m p 3 . c
e n g i n e / c l i e n t / m _ m u l t i . c
e n g i n e / c l i e n t / m _ o p t i o n s . c
e n g i n e / c l i e n t / m _ s c r i p t . c
2018-05-21 13:47:53 +00:00
e n g i n e / c l i e n t / m _ n a t i v e . c
2018-03-04 14:41:16 +00:00
e n g i n e / c l i e n t / m _ s i n g l e . c
e n g i n e / c l i e n t / m e n u . c
e n g i n e / c l i e n t / p _ c l a s s i c . c
e n g i n e / c l i e n t / p _ n u l l . c
e n g i n e / c l i e n t / p _ s c r i p t . c
e n g i n e / c l i e n t / p r _ c l c m d . c
e n g i n e / c l i e n t / p r _ c s q c . c
e n g i n e / c l i e n t / p r _ m e n u . c
e n g i n e / c l i e n t / r _ 2 d . c
e n g i n e / c l i e n t / r _ d 3 . c
e n g i n e / c l i e n t / r _ p a r t . c
e n g i n e / c l i e n t / r _ p a r t s e t . c
e n g i n e / c l i e n t / r _ s u r f . c
e n g i n e / c l i e n t / r e n d e r e r . c
e n g i n e / c l i e n t / r e n d e r q u e . c
e n g i n e / c l i e n t / r o q _ r e a d . c
e n g i n e / c l i e n t / s b a r . c
e n g i n e / c l i e n t / s k i n . c
e n g i n e / c l i e n t / s n d _ d m a . c
e n g i n e / c l i e n t / s n d _ m e m . c
e n g i n e / c l i e n t / s n d _ m i x . c
e n g i n e / c l i e n t / s n d _ m p 3 . c
e n g i n e / c l i e n t / s n d _ o v . c
e n g i n e / c l i e n t / t e x t e d i t . c
e n g i n e / c l i e n t / v a l i d . c
e n g i n e / c l i e n t / v i d _ h e a d l e s s . c
e n g i n e / c l i e n t / v i e w . c
e n g i n e / c l i e n t / w a d . c
e n g i n e / c l i e n t / z q t p . c
#These are generic renderer files
e n g i n e / g l / g l _ a l i a s . c
e n g i n e / g l / g l _ f o n t . c
e n g i n e / g l / g l _ n g r a p h . c
e n g i n e / g l / g l _ r l i g h t . c
e n g i n e / g l / g l _ s h a d e r . c
e n g i n e / g l / g l _ s h a d o w . c
e n g i n e / g l / g l _ w a r p . c
e n g i n e / g l / l t f a c e . c
2018-08-23 07:04:55 +00:00
#These are GL-specific, but can be left even if no gl is supported.
2018-03-04 14:41:16 +00:00
e n g i n e / g l / g l _ b a c k e n d . c
e n g i n e / g l / g l _ b l o o m . c
e n g i n e / g l / g l _ d r a w . c
e n g i n e / g l / g l _ r m a i n . c
e n g i n e / g l / g l _ r m i s c . c
e n g i n e / g l / g l _ r s u r f . c
e n g i n e / g l / g l _ s c r e e n . c
e n g i n e / g l / g l _ v i d c o m m o n . c
e n g i n e / g l / g l m o d _ d o o m . c
2018-08-23 07:04:55 +00:00
2018-03-04 14:41:16 +00:00
e n g i n e / v k / v k _ b a c k e n d . c
e n g i n e / v k / v k _ i n i t . c
)
2019-01-29 07:18:07 +00:00
ADD_LIBRARY ( fteq3bot MODULE
e n g i n e / b o t l i b / b e _ a a s _ b s p q 3 . c
e n g i n e / b o t l i b / b e _ a a s _ e n t i t y . c
e n g i n e / b o t l i b / b e _ a a s _ m o v e . c
e n g i n e / b o t l i b / b e _ a a s _ r o u t e a l t . c
e n g i n e / b o t l i b / b e _ a i _ c h a r . c
e n g i n e / b o t l i b / b e _ a i _ g o a l . c
e n g i n e / b o t l i b / b e _ a i _ w e i g h t . c
e n g i n e / b o t l i b / l _ c r c . c
e n g i n e / b o t l i b / l _ m e m o r y . c
e n g i n e / b o t l i b / l _ s t r u c t . c
e n g i n e / b o t l i b / b e _ a a s _ c l u s t e r . c
e n g i n e / b o t l i b / b e _ a a s _ f i l e . c
e n g i n e / b o t l i b / b e _ a a s _ o p t i m i z e . c
e n g i n e / b o t l i b / b e _ a a s _ r o u t e . c
e n g i n e / b o t l i b / b e _ a i _ c h a t . c
e n g i n e / b o t l i b / b e _ a i _ m o v e . c
e n g i n e / b o t l i b / b e _ e a . c
e n g i n e / b o t l i b / l _ l i b v a r . c
e n g i n e / b o t l i b / l _ p r e c o m p . c
e n g i n e / b o t l i b / b e _ a a s _ d e b u g . c
e n g i n e / b o t l i b / b e _ a a s _ m a i n . c
e n g i n e / b o t l i b / b e _ a a s _ r e a c h . c
e n g i n e / b o t l i b / b e _ a a s _ s a m p l e . c
e n g i n e / b o t l i b / b e _ a i _ g e n . c
e n g i n e / b o t l i b / b e _ a i _ w e a p . c
e n g i n e / b o t l i b / b e _ i n t e r f a c e . c
e n g i n e / b o t l i b / l _ l o g . c
e n g i n e / b o t l i b / l _ s c r i p t . c
e n g i n e / b o t l i b / s t a n d a l o n e . 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" )
2018-11-27 16:48:19 +00:00
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
p l u g i n s / q v m _ a p i . c
p l u g i n s / p l u g i n . c
p l u g i n s / b u l l e t / b u l l e t p l u g . c p p
)
TARGET_INCLUDE_DIRECTORIES ( bullet PUBLIC ${ BULLET_INCLUDE_DIRS } )
SET_TARGET_PROPERTIES ( bullet PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN" )
SET_TARGET_PROPERTIES ( bullet PROPERTIES PREFIX "fteplug_" )
SET_TARGET_PROPERTIES ( bullet PROPERTIES LINK_FLAGS "-Wl,--no-undefined" )
TARGET_LINK_LIBRARIES ( bullet m ${ BULLET_LIBRARIES } )
ENDIF ( )
ENDIF ( )
2018-11-19 06:37:25 +00:00
IF ( ANDROID )
2018-08-23 07:04:55 +00:00
#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
$ { F T E _ A R C H _ F I L E S }
$ { F T E _ C O M M O N _ F I L E S }
$ { F T E _ C L I E N T _ F I L E S }
)
SET_TARGET_PROPERTIES ( ftedroid PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_DEFINES};${FTE_REVISON}" )
TARGET_LINK_LIBRARIES ( ftedroid ${ FTE_LIBS } )
2018-08-04 19:00:19 +00:00
ELSE ( )
2018-08-23 07:04:55 +00:00
#systems that actually have executables...
ADD_EXECUTABLE ( fteqw WIN32
$ { F T E _ A R C H _ F I L E S }
$ { F T E _ C O M M O N _ F I L E S }
$ { F T E _ C L I E N T _ F I L E S }
)
SET_TARGET_PROPERTIES ( fteqw PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_DEFINES};${FTE_REVISON}" )
TARGET_LINK_LIBRARIES ( fteqw ${ FTE_LIBS } )
ADD_EXECUTABLE ( fteqw-sv
$ { F T E S V _ A R C H _ F I L E S }
$ { F T E _ C O M M O N _ F I L E S }
)
SET_TARGET_PROPERTIES ( fteqw-sv PROPERTIES COMPILE_DEFINITIONS "SERVERONLY;${FTE_LIB_DEFINES};${FTESV_DEFINES};${FTE_REVISON}" )
TARGET_LINK_LIBRARIES ( fteqw-sv ${ FTESV_LIBS } )
2018-11-19 06:37:25 +00:00
ADD_EXECUTABLE ( iqmtool
i q m / i q m . c p p
i q m / i q m . h
)
SET_TARGET_PROPERTIES ( iqmtool PROPERTIES COMPILE_DEFINITIONS "${FTE_REVISON}" )
2019-02-16 19:09:07 +00:00
ADD_EXECUTABLE ( qtv
f t e q t v / n e t c h a n . c
f t e q t v / p a r s e . c
f t e q t v / m s g . c
f t e q t v / q w . c
f t e q t v / s o u r c e . c
f t e q t v / b s p . c
f t e q t v / r c o n . c
f t e q t v / m d f o u r . c
f t e q t v / c r c . c
f t e q t v / c o n t r o l . c
f t e q t v / f o r w a r d . c
f t e q t v / p m o v e . c
f t e q t v / m e n u . c
f t e q t v / h t t p s v . c
f t e q t v / l i b q t v c / g l i b c _ s u c k s . c
e n g i n e / c o m m o n / s h a 1 . c
)
SET_TARGET_PROPERTIES ( qtv PROPERTIES COMPILE_DEFINITIONS "${FTE_REVISON};stricmp=strcasecmp;strnicmp=strncasecmp" )
IF ( WIN32 )
TARGET_LINK_LIBRARIES ( qtv ${ ZLIB_LIBRARIES } ws2_32 winmm )
ELSE ( )
TARGET_LINK_LIBRARIES ( qtv m )
ENDIF ( )
2019-01-29 23:43:50 +00:00
IF ( NOT WIN32 )
2018-12-30 21:09:13 +00:00
ADD_EXECUTABLE ( ftemaster
$ { F T E S V _ A R C H _ F I L E S }
e n g i n e / s e r v e r / s v _ m a s t e r . c
e n g i n e / c o m m o n / n e t _ w i n s . c
e n g i n e / c o m m o n / c v a r . c
e n g i n e / c o m m o n / c m d . c
e n g i n e / c o m m o n / s h a 1 . c #for websockets
e n g i n e / h t t p / h t t p c l i e n t . c #for the pipe stuff
e n g i n e / c o m m o n / l o g . c
e n g i n e / c o m m o n / f s . c
e n g i n e / c o m m o n / f s _ s t d i o . c
e n g i n e / c o m m o n / c o m m o n . c
e n g i n e / c o m m o n / t r a n s l a t e . c
e n g i n e / c o m m o n / z o n e . c
e n g i n e / q c l i b / h a s h . c
)
SET_TARGET_PROPERTIES ( ftemaster PROPERTIES COMPILE_DEFINITIONS "MASTERONLY;${FTE_LIB_DEFINES};${FTESV_DEFINES};${FTE_REVISON}" )
TARGET_LINK_LIBRARIES ( ftemaster ${ FTESV_LIBS } )
ENDIF ( )
2018-11-19 06:37:25 +00:00
ADD_EXECUTABLE ( httpserver
e n g i n e / c o m m o n / f s _ s t d i o . c
e n g i n e / h t t p / h t t p s e r v e r . c
e n g i n e / h t t p / i w e b i f a c e . c
e n g i n e / h t t p / f t p s e r v e r . c
)
SET_TARGET_PROPERTIES ( httpserver PROPERTIES COMPILE_DEFINITIONS "WEBSERVER;WEBSVONLY;${FTE_REVISON};stricmp=strcasecmp;strnicmp=strncasecmp" )
2018-11-27 16:48:19 +00:00
IF ( WIN32 )
TARGET_LINK_LIBRARIES ( httpserver ${ ZLIB_LIBRARIES } ws2_32 )
ENDIF ( )
2018-08-23 07:04:55 +00:00
ADD_EXECUTABLE ( fteqcc
e n g i n e / q c l i b / q c c t u i . c
e n g i n e / q c l i b / c o m p r o u t . c
e n g i n e / q c l i b / h a s h . c
e n g i n e / q c l i b / q c c _ c m d l i b . c
e n g i n e / q c l i b / q c c _ p r _ c o m p . c
e n g i n e / q c l i b / q c c _ p r _ l e x . c
e n g i n e / q c l i b / q c c m a i n . c
e n g i n e / q c l i b / q c d _ m a i n . c
)
SET_TARGET_PROPERTIES ( fteqcc PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_REVISON}" )
TARGET_LINK_LIBRARIES ( fteqcc ${ ZLIB_LIBRARIES } m )
IF ( ${ WIN32 } )
ADD_EXECUTABLE ( fteqccgui WIN32
e n g i n e / q c l i b / q c c g u i . c
e n g i n e / q c l i b / q c c g u i s t u f f . c
e n g i n e / q c l i b / c o m p r o u t . c
e n g i n e / q c l i b / h a s h . c
e n g i n e / q c l i b / q c c _ c m d l i b . c
e n g i n e / q c l i b / q c c _ p r _ c o m p . c
e n g i n e / q c l i b / q c c _ p r _ l e x . c
e n g i n e / q c l i b / q c c m a i n . c
e n g i n e / q c l i b / d e c o m p . c
e n g i n e / q c l i b / p a c k a g e r . c
e n g i n e / q c l i b / q c d _ m a i n . c
)
SET_TARGET_PROPERTIES ( fteqccgui PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_REVISON}" )
TARGET_LINK_LIBRARIES ( fteqccgui ${ ZLIB_LIBRARIES } shlwapi ole32 comctl32 comdlg32 )
2019-01-20 16:26:50 +00:00
ELSE ( )
FIND_PACKAGE ( Qt5Widgets )
IF ( Qt5Widgets_FOUND )
ADD_EXECUTABLE ( fteqccgui
e n g i n e / q c l i b / q c c g u i q t . c p p
e n g i n e / q c l i b / q c c g u i s t u f f . c
e n g i n e / q c l i b / c o m p r o u t . c
e n g i n e / q c l i b / h a s h . c
e n g i n e / q c l i b / q c c _ c m d l i b . c
e n g i n e / q c l i b / q c c _ p r _ c o m p . c
e n g i n e / q c l i b / q c c _ p r _ l e x . c
e n g i n e / q c l i b / q c c m a i n . c
e n g i n e / q c l i b / d e c o m p . c
e n g i n e / q c l i b / p a c k a g e r . c
e n g i n e / q c l i b / q c d _ m a i n . c
)
TARGET_INCLUDE_DIRECTORIES ( fteqccgui PUBLIC ${ Qt5Widgets_INCLUDE_DIRS } )
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 ${ ZLIB_LIBRARIES } ${ Qt5Widgets_LIBRARIES } qscintilla2_qt5 )
ENDIF ( )
2018-08-23 07:04:55 +00:00
ENDIF ( )
2018-03-04 14:41:16 +00:00
ENDIF ( )
#Quake Injector Alike plugin
ADD_LIBRARY ( qi MODULE
p l u g i n s / q v m _ a p i . c
p l u g i n s / p l u g i n . c
p l u g i n s / q i / q i . c
p l u g i n s / e m a i l n o t / m d 5 . c
p l u g i n s / j a b b e r / x m l . c
)
2018-08-23 07:04:55 +00:00
SET_TARGET_PROPERTIES ( qi PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}" )
2018-03-04 14:41:16 +00:00
SET_TARGET_PROPERTIES ( qi PROPERTIES PREFIX "fteplug_" )
2018-11-27 16:48:19 +00:00
SET_TARGET_PROPERTIES ( qi PROPERTIES LINK_FLAGS "-Wl,--no-undefined" )
TARGET_LINK_LIBRARIES ( qi m )
2018-08-04 19:00:19 +00:00
2018-08-23 07:04:55 +00:00
#ODE Physics library plugin
2018-11-27 16:48:19 +00:00
FIND_PATH ( LIBODE_INCLUDE_DIR ode/ode.h )
FIND_LIBRARY ( LIBODE_LIBRARY ode )
IF ( LIBODE_INCLUDE_DIR )
2018-08-23 07:04:55 +00:00
ADD_LIBRARY ( ode MODULE
p l u g i n s / q v m _ a p i . c
p l u g i n s / p l u g i n . c
e n g i n e / c o m m o n / c o m _ p h y s _ o d e . c
2018-11-27 16:48:19 +00:00
e n g i n e / c o m m o n / m a t h l i b . c
2018-08-23 07:04:55 +00:00
)
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_" )
2018-11-27 16:48:19 +00:00
SET_TARGET_PROPERTIES ( ode PROPERTIES LINK_FLAGS "-Wl,--no-undefined" )
TARGET_LINK_LIBRARIES ( ode m ${ LIBODE_LIBRARY } )
2018-08-23 07:04:55 +00:00
ENDIF ( )
2018-08-04 19:00:19 +00:00
2018-03-04 14:41:16 +00:00
#EzQuake Hud port plugin
ADD_LIBRARY ( ezhud MODULE
p l u g i n s / q v m _ a p i . c
p l u g i n s / p l u g i n . c
p l u g i n s / e z h u d / e z q u a k e i s m s . c
p l u g i n s / e z h u d / h u d . c
p l u g i n s / e z h u d / h u d _ c o m m o n . c
p l u g i n s / e z h u d / h u d _ e d i t o r . c
)
2018-08-23 07:04:55 +00:00
SET_TARGET_PROPERTIES ( ezhud PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}" )
2018-03-04 14:41:16 +00:00
SET_TARGET_PROPERTIES ( ezhud PROPERTIES PREFIX "fteplug_" )
2018-11-27 16:48:19 +00:00
SET_TARGET_PROPERTIES ( ezhud PROPERTIES LINK_FLAGS "-Wl,--no-undefined" )
TARGET_LINK_LIBRARIES ( ezhud m )
2018-03-04 14:41:16 +00:00
#IRC client plugin
ADD_LIBRARY ( irc MODULE
p l u g i n s / q v m _ a p i . c
p l u g i n s / p l u g i n . c
p l u g i n s / i r c / i r c c l i e n t . c
)
2018-08-23 07:04:55 +00:00
SET_TARGET_PROPERTIES ( irc PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}" )
2018-03-04 14:41:16 +00:00
SET_TARGET_PROPERTIES ( irc PROPERTIES PREFIX "fteplug_" )
2018-11-27 16:48:19 +00:00
SET_TARGET_PROPERTIES ( irc PROPERTIES LINK_FLAGS "-Wl,--no-undefined" )
TARGET_LINK_LIBRARIES ( irc m )
2018-03-04 14:41:16 +00:00
2019-02-16 19:09:07 +00:00
#model formats plugin
ADD_LIBRARY ( models MODULE
p l u g i n s / q v m _ a p i . c
p l u g i n s / p l u g i n . c
p l u g i n s / m o d e l s / m o d e l s . c
p l u g i n s / m o d e l s / g l t f . 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 m )
2019-05-10 09:31:21 +00:00
#x11 server plugin (note: for displaying other programs)
2019-02-16 19:09:07 +00:00
ADD_LIBRARY ( x11 MODULE
p l u g i n s / q v m _ a p i . c
p l u g i n s / p l u g i n . c
p l u g i n s / x s v / m _ x . c
p l u g i n s / x s v / x _ r e q s . c
p l u g i n s / x s v / x _ r e s . c
e n g i n e / q c l i b / h a s h . c
)
SET_TARGET_PROPERTIES ( x11 PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}" )
SET_TARGET_PROPERTIES ( x11 PROPERTIES PREFIX "fteplug_" )
SET_TARGET_PROPERTIES ( x11 PROPERTIES LINK_FLAGS "-Wl,--no-undefined" )
TARGET_LINK_LIBRARIES ( x11 m )
2018-11-19 06:37:25 +00:00
#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 )
2019-01-13 16:51:50 +00:00
IF ( ( AVFORMAT_INCLUDE_DIR ) AND ( AVSWSCALE_INCLUDE_DIR ) )
2018-11-19 06:37:25 +00:00
FIND_LIBRARY ( AVCODEC_LIBRARY avcodec )
FIND_LIBRARY ( AVFORMAT_LIBRARY avformat )
FIND_LIBRARY ( AVUTIL_LIBRARY avutil )
FIND_LIBRARY ( AVSWSCALE_LIBRARY swscale )
ADD_LIBRARY ( ffmpeg MODULE
p l u g i n s / q v m _ a p i . c
p l u g i n s / p l u g i n . c
p l u g i n s / a v p l u g / a v a u d i o . c
p l u g i n s / a v p l u g / a v d e c o d e . c
p l u g i n s / a v p l u g / a v e n c o d e . 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 m ${ 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_" )
ELSE ( )
MESSAGE ( WARNING "ffmpeg library NOT available. Quake shouldn't be playing fmv anyway." )
ENDIF ( )
IF ( NOT ANDROID )
2018-08-23 07:04:55 +00:00
#XMPP/jabber client plugin
ADD_LIBRARY ( xmpp MODULE
p l u g i n s / q v m _ a p i . c
p l u g i n s / p l u g i n . c
p l u g i n s / j a b b e r / j a b b e r c l i e n t . c
p l u g i n s / j a b b e r / x m l . c
p l u g i n s / j a b b e r / j i n g l e . c
p l u g i n s / j a b b e r / s i f t . c
e n g i n e / c o m m o n / s h a 1 . c
p l u g i n s / e m a i l n o t / m d 5 . c
)
SET_TARGET_PROPERTIES ( xmpp PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}" )
SET_TARGET_PROPERTIES ( xmpp PROPERTIES PREFIX "fteplug_" )
2018-11-27 16:48:19 +00:00
SET_TARGET_PROPERTIES ( xmpp PROPERTIES LINK_FLAGS "-Wl,--no-undefined" )
IF ( ${ WIN32 } )
ELSE ( )
TARGET_LINK_LIBRARIES ( xmpp m resolv )
ENDIF ( )
2018-08-04 19:00:19 +00:00
ENDIF ( )
2018-03-04 14:41:16 +00:00
#cef plugin