2021-05-09 13:01:50 +00:00
#FTEQW Makefile
#make m-rel plugins-rel sv-rel [FTE_TARGET=$ARCH]
#only limited forms of cross-making is supported
#only the following 3 are supported
#linux->win32 (FTE_TARGET=win32) RPM Package: "mingw32-gcc", DEB Package: "mingw32"
#linux->win64 (FTE_TARGET=win64) RPM Package: "mingw32-gcc", DEB Package: "mingw32"
2021-08-04 21:17:31 +00:00
#linux->win32 (FTE_TARGET=msvc32 MSVCPATH=? WINDOWSSDKDIR=?) invokes via wine.
#linux->win64 (FTE_TARGET=msvc64 MSVCPATH=? WINDOWSSDKDIR=?) invokes via wine.
2021-05-09 13:01:50 +00:00
#linux->linux 32 (FTE_TARGET=linux32)
#linux->linux 64 (FTE_TARGET=linux64)
#linux->linux x32 (FTE_TARGET=linux_x32)
#linux->linux armhf (FTE_TARGET=linux_armhf)
#linux->linux arm64/aarch64 (FTE_TARGET=linux_arm64)
#linux->linux *others* (FTE_TARGET=linux CC=other-gcc)
#linux->morphos (FTE_TARGET=morphos)
#linux->macosx (FTE_TARGET=macosx) or (FTE_TARGET=macosx_x86)
#linux->javascript (FTE_TARGET=web)
#linux->droid (make droid)
#win32->droid (make droid)
#if you are cross compiling, you'll need to use FTE_TARGET=mytarget
#note: cross compiling will typically require 'make makelibs FTE_TARGET=mytarget', which avoids installing lots of extra system packages.
#
2005-01-23 17:44:11 +00:00
CC = gcc
2007-10-25 17:59:01 +00:00
WINDRES = windres
2019-07-03 18:27:09 +00:00
STRIP ?= strip
2006-05-02 00:11:29 +00:00
STRIPFLAGS = --strip-unneeded --remove-section= .comment
2005-01-23 17:44:11 +00:00
2021-11-10 01:36:00 +00:00
VISIBILITY_FLAGS = -fvisibility= hidden #just assume this for sanities sake. disable only for compilers that error.
2021-07-24 14:24:46 +00:00
CPUOPTIMIZATIONS = -Os
2005-01-23 17:44:11 +00:00
2019-05-10 02:06:07 +00:00
COMPILE_SYS := $( shell uname -o 2>& 1)
2013-05-11 05:03:07 +00:00
#canonicalize the source path. except emscripten warns about that like crazy. *sigh*
i f e q ( $( FTE_TARGET ) , w e b )
2020-06-12 23:29:58 +00:00
BASE_DIR:= .
2021-08-04 21:17:31 +00:00
e l s e i f e q ( $( findstring msvc ,$ ( FTE_TARGET ) ) , m s v c )
BASE_DIR:= .
2013-06-04 16:08:00 +00:00
e l s e i f e q ( $( FTE_TARGET ) , d r o i d )
2019-05-10 02:06:07 +00:00
#android tools suck, but plugins need to find the engine directory.
2020-06-12 23:29:58 +00:00
BASE_DIR:= ../engine
2013-05-11 14:02:55 +00:00
e l s e
2020-06-12 23:29:58 +00:00
BASE_DIR:= $( realpath .)
2013-05-11 05:03:07 +00:00
e n d i f
2005-01-23 17:44:11 +00:00
2017-09-20 11:27:13 +00:00
i f e q ( $( SVNREVISION ) , )
2021-05-09 13:01:50 +00:00
#try subversion firstly...
Too many changes, sorry.
Change revision displays, use the SVN commit date instead of using __DATE__ (when there's no local changes). This should allow reproducible builds.
Added s_al_disable cvar, to block openal and all the various problems people have had with it, without having to name an explicit fallback (which would vary by system).
Add mastervolume cvar (for ss).
Add r_shadows 2 (aka fake shadows - for ss).
Add scr_loadingscreen_aspect -1 setting, to disable levelshots entirely, also disables the progress bar (for ss).
Better support for some effectinfo hacks (for ss).
Added dpcompat_nocsqcwarnings (because of lazy+buggy mods like ss).
Rework the dpcsqc versions of project+unproject builtins for better compat (for ss).
Added dpcompat_csqcinputeventtypes to block unexpected csqc input events (for ss).
Better compat with DP's loadfont console command (for ss).
Added dpcompat_smallerfonts cvar to replicate a DP bug (for ss).
Detect dp's m_draw extension, to work around it (for ss).
Cvar dpcompat_ignoremodificationtimes added. A value of 0 favour the most recently modified file, 1 will use DP-like alphabetically sorted preferences (for ss).
loadfont builtin can now accept outline=1 in the sizes arg for slightly more readable fonts.
Fix bbox calcs for rotated entities, fix needed for r_ignorenetpvs 0.
Hackily parse emoji.json to provide :poop: etc suggestions.
Skip prediction entirely when there's no local entity info. This fixes stair-smoothing in xonotic.
screenshot_cubemap will now capture half-float images when saving to ktx or dds files.
Fix support for xcf files larger than 4gb, mostly to avoid compiler warnings.
Fixed size of gfx/loading.lmp when replacement textures are used.
Added mipmap support for rg8 and l8a8 textures.
r_hdr_framebuffer cvar updated to support format names instead of random negative numbers. Description updated to name some interesting ones.
Perform autoupdate _checks_ ONLY with explicit user confirmation (actual updating already needed user confirmation, but this extra step should reduce the chances of us getting wrongly accused of exfiltrating user data if we're run in a sandbox - we ONLY ever included the updating engine's version in the checks, though there's nothing we can do to avoid sending the user's router's IP).
Removed the 'summon satan all over your harddrive' quit message, in case paranoid security researchers are idiots and don't bother doing actual research.
Removed the triptohell.info and fte.triptohell.info certificates, they really need to stop being self-signed. The updates domain is still self-signed for autoupdates.
Video drivers are now able to report supported video resolutions, visible to menuqc. Currently only works with SDL2 builds.
Added setmousepos builtin. Should work with glx+win32 build.
VF_SKYROOM_CAMERA can now accept an extra two args, setviewprop(VF_SKYROOM_CAMERA, org, axis, degrees).
Removed v_skyroom_origin+v_skyroom_orientation cvars in favour just v_skyroom, which should make it behave more like the 'fog' command (used when csqc isn't overriding).
Added R_EndPolygonRibbon builtin to make it faster+easier to generate textured ribbon/cable/etc wide lines (for TW).
sdl: Fix up sys_sdl.c's file enumeration to support wildcards in directories.
edit command now displays end1.bin/end2.bin correctly, because we can.
Finally add support for f_modified - though ruleset_allow_larger_models and ruleset_allow_overlong_sounds generally make it redundant.
Fix threading race condition in sha1 lookups.
Updated f_ruleset to include the same extra flags reported by ezquake.
A mod's default.fmf file can now contain an eg 'mainconfig config.cfg' line (to explicitly set the main config saved with cfg_save_auto 1 etc).
fmf: basegame steam:GameName/GameDir can be used to try to load a mod directory from an installed steam game. The resulting gamedir will be read-only.
HOMEDIR CHANGE: use homedirs only if the basedir cannot be written or a homedir already exists, which should further reduce the probability of microsoft randomly uploading our data to their cloud (but mostly because its annoying to never know where your data is written).
Fixed buf_cvarlist, should work in xonotic now, and without segfaults.
Added an extra arg to URI_Get_Callback calls - the response size, also changed the tempstring to contain all bytes of the response, you need to be careful about nulls though.
Try to work around nvidia's forced-panning bug on x11 when changing video modes. This might screw with other programs.
sdl: support custom icons.
sdl: support choosing a specific display.
Added some documentation to menuqc builtins.
menusys: use outlines for slightly more readable fonts.
menusys: switch vid_width and vid_height combos into a single video mode combo to set both according to reported video modes.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5581 fc73d0e0-1445-4013-8a0c-d673dee63da5
2019-11-20 03:09:50 +00:00
SVN_VERSION:= $( shell test -d $( BASE_DIR) /../.svn && svnversion $( BASE_DIR) )
SVN_DATE:= $( shell test -d $( BASE_DIR) /../.svn && cd $( BASE_DIR) && svn info --show-item last-changed-date --no-newline)
2024-02-07 01:34:21 +00:00
# ifeq (,$(SVN_VERSION))
# #grab the svn version from git-svn (assuming no other modifications). this fails when there's extra commits (probably a good thing).
# SVN_VERSION=$(shell test -d $(BASE_DIR)/../.git && git svn find-rev `git rev-parse HEAD`)
# SVN_DATE:=$(shell test -d $(BASE_DIR)/../.git && git log -1 --format=%cs $(BASE_DIR))
# endif
2021-10-05 05:05:22 +00:00
ifeq ( ,$( SVN_VERSION) )
#try to get git version info instead. this usually uses git-count-hash[-dirty] format
SVN_VERSION:= $( shell test -d $( BASE_DIR) /../.git && cd $( BASE_DIR) && echo $$ ( ( ` git rev-list HEAD --count` + 29) ) )
GIT_VERSION:= $( shell test -d $( BASE_DIR) /../.git && cd $( BASE_DIR) && git describe --long --always --dirty)
2021-05-09 13:01:50 +00:00
SVN_DATE:= $( shell test -d $( BASE_DIR) /../.git && git log -1 --format= %cs $( BASE_DIR) )
ifneq ( ,$( SVN_VERSION) )
#make sure its prefixed with something specific. we use versions for versioning, which will confuse the update mechanism if they're inconsistent - like random hashses that have no implied ordering...
2021-10-05 05:05:22 +00:00
SVN_VERSION:= git-$( SVN_VERSION) -$( GIT_VERSION)
2021-05-09 13:01:50 +00:00
endif
endif
Too many changes, sorry.
Change revision displays, use the SVN commit date instead of using __DATE__ (when there's no local changes). This should allow reproducible builds.
Added s_al_disable cvar, to block openal and all the various problems people have had with it, without having to name an explicit fallback (which would vary by system).
Add mastervolume cvar (for ss).
Add r_shadows 2 (aka fake shadows - for ss).
Add scr_loadingscreen_aspect -1 setting, to disable levelshots entirely, also disables the progress bar (for ss).
Better support for some effectinfo hacks (for ss).
Added dpcompat_nocsqcwarnings (because of lazy+buggy mods like ss).
Rework the dpcsqc versions of project+unproject builtins for better compat (for ss).
Added dpcompat_csqcinputeventtypes to block unexpected csqc input events (for ss).
Better compat with DP's loadfont console command (for ss).
Added dpcompat_smallerfonts cvar to replicate a DP bug (for ss).
Detect dp's m_draw extension, to work around it (for ss).
Cvar dpcompat_ignoremodificationtimes added. A value of 0 favour the most recently modified file, 1 will use DP-like alphabetically sorted preferences (for ss).
loadfont builtin can now accept outline=1 in the sizes arg for slightly more readable fonts.
Fix bbox calcs for rotated entities, fix needed for r_ignorenetpvs 0.
Hackily parse emoji.json to provide :poop: etc suggestions.
Skip prediction entirely when there's no local entity info. This fixes stair-smoothing in xonotic.
screenshot_cubemap will now capture half-float images when saving to ktx or dds files.
Fix support for xcf files larger than 4gb, mostly to avoid compiler warnings.
Fixed size of gfx/loading.lmp when replacement textures are used.
Added mipmap support for rg8 and l8a8 textures.
r_hdr_framebuffer cvar updated to support format names instead of random negative numbers. Description updated to name some interesting ones.
Perform autoupdate _checks_ ONLY with explicit user confirmation (actual updating already needed user confirmation, but this extra step should reduce the chances of us getting wrongly accused of exfiltrating user data if we're run in a sandbox - we ONLY ever included the updating engine's version in the checks, though there's nothing we can do to avoid sending the user's router's IP).
Removed the 'summon satan all over your harddrive' quit message, in case paranoid security researchers are idiots and don't bother doing actual research.
Removed the triptohell.info and fte.triptohell.info certificates, they really need to stop being self-signed. The updates domain is still self-signed for autoupdates.
Video drivers are now able to report supported video resolutions, visible to menuqc. Currently only works with SDL2 builds.
Added setmousepos builtin. Should work with glx+win32 build.
VF_SKYROOM_CAMERA can now accept an extra two args, setviewprop(VF_SKYROOM_CAMERA, org, axis, degrees).
Removed v_skyroom_origin+v_skyroom_orientation cvars in favour just v_skyroom, which should make it behave more like the 'fog' command (used when csqc isn't overriding).
Added R_EndPolygonRibbon builtin to make it faster+easier to generate textured ribbon/cable/etc wide lines (for TW).
sdl: Fix up sys_sdl.c's file enumeration to support wildcards in directories.
edit command now displays end1.bin/end2.bin correctly, because we can.
Finally add support for f_modified - though ruleset_allow_larger_models and ruleset_allow_overlong_sounds generally make it redundant.
Fix threading race condition in sha1 lookups.
Updated f_ruleset to include the same extra flags reported by ezquake.
A mod's default.fmf file can now contain an eg 'mainconfig config.cfg' line (to explicitly set the main config saved with cfg_save_auto 1 etc).
fmf: basegame steam:GameName/GameDir can be used to try to load a mod directory from an installed steam game. The resulting gamedir will be read-only.
HOMEDIR CHANGE: use homedirs only if the basedir cannot be written or a homedir already exists, which should further reduce the probability of microsoft randomly uploading our data to their cloud (but mostly because its annoying to never know where your data is written).
Fixed buf_cvarlist, should work in xonotic now, and without segfaults.
Added an extra arg to URI_Get_Callback calls - the response size, also changed the tempstring to contain all bytes of the response, you need to be careful about nulls though.
Try to work around nvidia's forced-panning bug on x11 when changing video modes. This might screw with other programs.
sdl: support custom icons.
sdl: support choosing a specific display.
Added some documentation to menuqc builtins.
menusys: use outlines for slightly more readable fonts.
menusys: switch vid_width and vid_height combos into a single video mode combo to set both according to reported video modes.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5581 fc73d0e0-1445-4013-8a0c-d673dee63da5
2019-11-20 03:09:50 +00:00
SVNREVISION =
2021-05-09 13:01:50 +00:00
ifneq ( ,$( SVN_VERSION) )
SVNREVISION += -DSVNREVISION= $( SVN_VERSION)
endif
Too many changes, sorry.
Change revision displays, use the SVN commit date instead of using __DATE__ (when there's no local changes). This should allow reproducible builds.
Added s_al_disable cvar, to block openal and all the various problems people have had with it, without having to name an explicit fallback (which would vary by system).
Add mastervolume cvar (for ss).
Add r_shadows 2 (aka fake shadows - for ss).
Add scr_loadingscreen_aspect -1 setting, to disable levelshots entirely, also disables the progress bar (for ss).
Better support for some effectinfo hacks (for ss).
Added dpcompat_nocsqcwarnings (because of lazy+buggy mods like ss).
Rework the dpcsqc versions of project+unproject builtins for better compat (for ss).
Added dpcompat_csqcinputeventtypes to block unexpected csqc input events (for ss).
Better compat with DP's loadfont console command (for ss).
Added dpcompat_smallerfonts cvar to replicate a DP bug (for ss).
Detect dp's m_draw extension, to work around it (for ss).
Cvar dpcompat_ignoremodificationtimes added. A value of 0 favour the most recently modified file, 1 will use DP-like alphabetically sorted preferences (for ss).
loadfont builtin can now accept outline=1 in the sizes arg for slightly more readable fonts.
Fix bbox calcs for rotated entities, fix needed for r_ignorenetpvs 0.
Hackily parse emoji.json to provide :poop: etc suggestions.
Skip prediction entirely when there's no local entity info. This fixes stair-smoothing in xonotic.
screenshot_cubemap will now capture half-float images when saving to ktx or dds files.
Fix support for xcf files larger than 4gb, mostly to avoid compiler warnings.
Fixed size of gfx/loading.lmp when replacement textures are used.
Added mipmap support for rg8 and l8a8 textures.
r_hdr_framebuffer cvar updated to support format names instead of random negative numbers. Description updated to name some interesting ones.
Perform autoupdate _checks_ ONLY with explicit user confirmation (actual updating already needed user confirmation, but this extra step should reduce the chances of us getting wrongly accused of exfiltrating user data if we're run in a sandbox - we ONLY ever included the updating engine's version in the checks, though there's nothing we can do to avoid sending the user's router's IP).
Removed the 'summon satan all over your harddrive' quit message, in case paranoid security researchers are idiots and don't bother doing actual research.
Removed the triptohell.info and fte.triptohell.info certificates, they really need to stop being self-signed. The updates domain is still self-signed for autoupdates.
Video drivers are now able to report supported video resolutions, visible to menuqc. Currently only works with SDL2 builds.
Added setmousepos builtin. Should work with glx+win32 build.
VF_SKYROOM_CAMERA can now accept an extra two args, setviewprop(VF_SKYROOM_CAMERA, org, axis, degrees).
Removed v_skyroom_origin+v_skyroom_orientation cvars in favour just v_skyroom, which should make it behave more like the 'fog' command (used when csqc isn't overriding).
Added R_EndPolygonRibbon builtin to make it faster+easier to generate textured ribbon/cable/etc wide lines (for TW).
sdl: Fix up sys_sdl.c's file enumeration to support wildcards in directories.
edit command now displays end1.bin/end2.bin correctly, because we can.
Finally add support for f_modified - though ruleset_allow_larger_models and ruleset_allow_overlong_sounds generally make it redundant.
Fix threading race condition in sha1 lookups.
Updated f_ruleset to include the same extra flags reported by ezquake.
A mod's default.fmf file can now contain an eg 'mainconfig config.cfg' line (to explicitly set the main config saved with cfg_save_auto 1 etc).
fmf: basegame steam:GameName/GameDir can be used to try to load a mod directory from an installed steam game. The resulting gamedir will be read-only.
HOMEDIR CHANGE: use homedirs only if the basedir cannot be written or a homedir already exists, which should further reduce the probability of microsoft randomly uploading our data to their cloud (but mostly because its annoying to never know where your data is written).
Fixed buf_cvarlist, should work in xonotic now, and without segfaults.
Added an extra arg to URI_Get_Callback calls - the response size, also changed the tempstring to contain all bytes of the response, you need to be careful about nulls though.
Try to work around nvidia's forced-panning bug on x11 when changing video modes. This might screw with other programs.
sdl: support custom icons.
sdl: support choosing a specific display.
Added some documentation to menuqc builtins.
menusys: use outlines for slightly more readable fonts.
menusys: switch vid_width and vid_height combos into a single video mode combo to set both according to reported video modes.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5581 fc73d0e0-1445-4013-8a0c-d673dee63da5
2019-11-20 03:09:50 +00:00
i f n e q ( M , $( findstring M ,$ ( SVN_VERSION ) ) )
SVNREVISION += -DSVNDATE= $( SVN_DATE)
e n d i f
2017-09-20 11:27:13 +00:00
e n d i f
2021-10-05 05:05:22 +00:00
MAKE := $( MAKE) --no-print-directory SVNREVISION = " $( SVNREVISION) " SVN_VERSION = " $( SVN_VERSION) "
2009-07-25 11:22:28 +00:00
2018-10-13 06:20:49 +00:00
#WHOAMI:=$(shell whoami)
2011-07-08 09:17:23 +00:00
2017-05-10 02:57:34 +00:00
#update these to download+build a different version. this assumes that the url+subdirs etc contain a consistant version everywhere.
2019-09-26 02:48:55 +00:00
JPEGVER = 9c
2024-02-07 01:34:21 +00:00
ZLIBVER = 1.3.1
PNGVER = 1.6.40
2019-09-26 02:48:55 +00:00
OGGVER = 1.3.4
2024-02-07 01:34:21 +00:00
VORBISVER = 1.3.7
VULKANVER = 1.3.275.0
2023-01-19 04:30:06 +00:00
SDL2VER = 2.26.4
2017-05-10 02:57:34 +00:00
SCINTILLAVER = 373
2019-09-26 02:48:55 +00:00
OPUSVER = 1.3.1
2018-03-24 04:02:09 +00:00
SPEEXVER = 1.2.0
2019-09-26 02:48:55 +00:00
SPEEXDSPVER = 1.2.0
FREETYPEVER = 2.10.1
2018-08-04 19:00:19 +00:00
BULLETVER = 2.87
2024-02-07 01:34:21 +00:00
OPENSSLVER = 3.0.1
2017-05-10 02:57:34 +00:00
2013-11-28 00:45:22 +00:00
#cygwin's make's paths confuses non-cygwin things
RELEASE_DIR = $( BASE_DIR) /release
DEBUG_DIR = $( BASE_DIR) /debug
PROFILE_DIR = $( BASE_DIR) /profile
2014-12-02 02:00:41 +00:00
NATIVE_ABSBASE_DIR := $( realpath $( BASE_DIR) )
2014-09-02 04:00:45 +00:00
i f e q ( $( COMPILE_SYS ) , C y g w i n )
2020-06-12 23:29:58 +00:00
OUT_DIR?= .
NATIVE_OUT_DIR:= $( shell cygpath -m $( OUT_DIR) )
NATIVE_BASE_DIR:= $( shell cygpath -m $( BASE_DIR) )
NATIVE_RELEASE_DIR:= $( shell cygpath -m $( RELEASE_DIR) )
NATIVE_DEBUG_DIR:= $( shell cygpath -m $( DEBUG_DIR) )
NATIVE_ABSBASE_DIR:= $( shell cygpath -m $( NATIVE_ABSBASE_DIR) )
2013-11-28 00:45:22 +00:00
e n d i f
2014-02-07 08:38:40 +00:00
NATIVE_OUT_DIR ?= $( OUT_DIR)
NATIVE_BASE_DIR ?= $( BASE_DIR)
2013-11-28 01:41:55 +00:00
NATIVE_RELEASE_DIR ?= $( RELEASE_DIR)
NATIVE_DEBUG_DIR ?= $( DEBUG_DIR)
2013-11-28 00:45:22 +00:00
2017-02-28 05:04:41 +00:00
EXE_NAME = fteqw
2017-02-19 00:15:42 +00:00
2014-10-05 20:04:11 +00:00
#include the appropriate games.
i f n e q ( , $( BRANDING ) )
2020-06-12 23:29:58 +00:00
BRANDFLAGS += -DBRANDING_INC= ../game_$( BRANDING) .h
-include game_$( BRANDING) .mak
2014-10-05 20:04:11 +00:00
e n d i f
2018-10-13 06:20:49 +00:00
FTE_CONFIG ?= fteqw
2021-08-04 21:17:31 +00:00
i f n e q ( $( findstring msvc ,$ ( FTE_TARGET ) ) , m s v c )
2018-10-13 06:20:49 +00:00
i f e q ( , $( FTE_CONFIG_EXTRA ) )
2024-02-07 01:34:21 +00:00
FTE_CONFIG_EXTRA := $( shell $( CC) -xc -E -P -DFTE_TARGET_$( shell echo $( FTE_TARGET) | tr '[:lower:]' '[:upper:]' ) -DCOMPILE_OPTS $( CFLAGS) common/config_$( FTE_CONFIG) .h)
2017-02-19 00:15:42 +00:00
e n d i f
2018-10-13 06:20:49 +00:00
e n d i f
BRANDFLAGS += -DCONFIG_FILE_NAME= config_$( FTE_CONFIG) .h $( FTE_CONFIG_EXTRA)
EXE_NAME = $( FTE_CONFIG)
2017-02-19 00:15:42 +00:00
i f e q ( , $( findstring DNO_SPEEX ,$ ( FTE_CONFIG_EXTRA ) ) )
2020-06-12 23:29:58 +00:00
USE_SPEEX?= 1
2017-02-19 00:15:42 +00:00
e n d i f
2017-11-24 18:40:17 +00:00
i f e q ( , $( findstring DNO_OPUS ,$ ( FTE_CONFIG_EXTRA ) ) )
2020-06-12 23:29:58 +00:00
USE_OPUS = 1
2017-11-24 18:40:17 +00:00
e n d i f
2022-03-08 05:32:38 +00:00
i f n e q ( , $( findstring DLINK_QUAKE 3,$ ( FTE_CONFIG_EXTRA ) ) )
LINK_QUAKE3 = 1
2017-02-19 00:15:42 +00:00
e n d i f
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
i f e q ( $( findstring web ,$ ( FTE_TARGET ) ) , ) #the web target uses javascript/browser loaders for common audio+image files instead of needing to embed our own, which keeps sizes down slightly.
2017-02-19 00:15:42 +00:00
i f e q ( , $( findstring DNO_VORBISFILE ,$ ( FTE_CONFIG_EXTRA ) ) )
2020-06-12 23:29:58 +00:00
USE_VORBISFILE = 1
2017-02-19 00:15:42 +00:00
e n d i f
2019-09-29 02:16:34 +00:00
i f n e q ( , $( findstring DLINK_JPEG ,$ ( FTE_CONFIG_EXTRA ) ) )
2020-06-12 23:29:58 +00:00
LINK_JPEG = 1
2019-09-29 02:16:34 +00:00
e n d i f
2018-08-25 02:53:45 +00:00
i f n e q ( , $( findstring DLINK_PNG ,$ ( FTE_CONFIG_EXTRA ) ) )
2020-06-12 23:29:58 +00:00
LINK_ZLIB = 1
LINK_PNG = 1
2018-08-25 02:53:45 +00:00
e n d i f
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
e n d i f
i f n e q ( , $( findstring DLINK_FREETYPE ,$ ( FTE_CONFIG_EXTRA ) ) )
LINK_FREETYPE = 1
LINK_ZLIB = 1
LINK_PNG = 1
e n d i f
2017-02-19 00:15:42 +00:00
i f n e q ( , $( findstring -Os ,$ ( FTE_CONFIG_EXTRA ) ) )
2020-06-12 23:29:58 +00:00
CPUOPTIMIZATIONS += -Os
BRANDFLAGS:= $( filter-out -O%,$( BRANDFLAGS) )
2017-02-19 00:15:42 +00:00
e n d i f
2022-05-28 17:58:53 +00:00
i f n e q ( , $( findstring DLINK_ODE ,$ ( FTE_CONFIG_EXTRA ) ) )
#ode library will be statically linked.
LINK_ODE = 1
e n d i f
2018-07-05 16:21:44 +00:00
i f n e q ( , $( findstring DLINK_INTERNAL_BULLET ,$ ( FTE_CONFIG_EXTRA ) ) )
2022-05-28 17:58:53 +00:00
#bullet plugin will be built into the exe itself
INTERNAL_BULLET = 1
2018-07-05 16:21:44 +00:00
e n d i f
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
i f n e q ( , $( findstring DLINK_EZHUD ,$ ( FTE_CONFIG_EXTRA ) ) )
LINK_EZHUD = 1
e n d i f
i f n e q ( , $( findstring DLINK_OPENSSL ,$ ( FTE_CONFIG_EXTRA ) ) )
LINK_OPENSSL = 1
e n d i f
2013-11-28 00:45:22 +00:00
2015-09-14 15:20:09 +00:00
i f e q ( $( BITS ) , 6 4 )
2020-06-12 23:29:58 +00:00
CC:= $( CC) -m64
CXX:= $( CXX) -m64
2015-09-14 15:20:09 +00:00
e n d i f
i f e q ( $( BITS ) , 3 2 )
2020-06-12 23:29:58 +00:00
CC:= $( CC) -m32
CXX:= $( CXX) -m32
2015-09-14 15:20:09 +00:00
e n d i f
2007-07-23 18:55:10 +00:00
#correct the gcc build when cross compiling
2014-02-13 23:54:57 +00:00
i f n e q ( , $( findstring win 32,$ ( FTE_TARGET ) ) )
2007-07-23 18:55:10 +00:00
ifeq ( $( shell $( CC) -v 2>& 1 | grep mingw) ,)
#CC didn't state that it was mingw... so try fixing that up
2013-10-08 16:49:42 +00:00
#old/original mingw project, headers are not very up to date.
2007-10-14 22:02:30 +00:00
ifneq ( $( shell which i586-mingw32msvc-gcc 2> /dev/null) ,)
2007-09-02 19:55:17 +00:00
#yup, the alternative exists (this matches the one debian has)
CC = i586-mingw32msvc-gcc
2018-08-04 19:00:19 +00:00
CXX = i586-mingw32msvc-g++
2014-12-29 06:50:24 +00:00
AR = i586-mingw32msvc-ar
2007-10-26 09:05:59 +00:00
WINDRES = i586-mingw32msvc-windres
2008-11-18 03:20:10 +00:00
STRIP = i586-mingw32msvc-strip
2013-10-08 16:49:42 +00:00
# BITS?=32
endif
#mingw64 provides a 32bit toolchain too, which has more up to date header files than the mingw32 project. so favour that if its installed.
ifneq ( $( shell which i686-w64-mingw32-gcc 2> /dev/null) ,)
#yup, the alternative exists (this matches the one debian has)
CC = i686-w64-mingw32-gcc
2018-08-04 19:00:19 +00:00
CXX = i686-w64-mingw32-g++
2014-12-29 06:50:24 +00:00
AR = i686-w64-mingw32-ar
2013-10-08 16:49:42 +00:00
WINDRES = i686-w64-mingw32-windres
STRIP = i686-w64-mingw32-strip
2007-09-02 19:55:17 +00:00
# BITS?=32
endif
2007-07-23 18:55:10 +00:00
endif
e n d i f
2007-11-02 00:30:47 +00:00
2010-12-08 14:42:05 +00:00
#correct the gcc build when cross compiling
2014-02-13 23:54:57 +00:00
i f n e q ( , $( findstring win 64,$ ( FTE_TARGET ) ) )
2010-12-08 14:42:05 +00:00
ifeq ( $( shell $( CC) -v 2>& 1 | grep mingw) ,)
#CC didn't state that it was mingw... so try fixing that up
2012-09-30 05:52:03 +00:00
ifneq ( $( shell which x86_64-w64-mingw32-gcc 2> /dev/null) ,)
#yup, the alternative exists (this matches the one debian has)
CC = x86_64-w64-mingw32-gcc -m64
2018-08-04 19:00:19 +00:00
CXX = x86_64-w64-mingw32-g++ -m64
2014-12-29 06:50:24 +00:00
AR = x86_64-w64-mingw32-ar
2012-09-30 05:52:03 +00:00
WINDRES = x86_64-w64-mingw32-windres
STRIP = x86_64-w64-mingw32-strip
2012-10-24 12:49:23 +00:00
# BITS=64
endif
ifneq ( $( shell which amd64-mingw32msvc-gcc 2> /dev/null) ,)
#yup, the alternative exists (this matches the one debian has)
CC = amd64-mingw32msvc-gcc -m64
2018-08-04 19:00:19 +00:00
CXX = amd64-mingw32msvc-g++ -m64
2014-12-29 06:50:24 +00:00
AR = amd64-mingw32msvc-ar
2012-10-24 12:49:23 +00:00
WINDRES = amd64-mingw32msvc-windres
STRIP = amd64-mingw32msvc-strip
2011-07-08 09:17:23 +00:00
# BITS=64
2010-12-08 14:42:05 +00:00
endif
endif
e n d i f
2011-07-08 19:43:49 +00:00
i f e q ( $( FTE_TARGET ) , w i n 3 2 _ s d l )
2020-06-12 23:29:58 +00:00
FTE_TARGET = win32_SDL
2011-07-08 19:43:49 +00:00
e n d i f
2013-03-12 23:09:25 +00:00
USER_TARGET := $( FTE_TARGET)
2013-12-03 15:15:50 +00:00
#make droid-rel doesn't get the right stuff
2017-03-26 01:46:08 +00:00
#add a small default config file. its only small. and some other stuff, because we can. This makes it much easier to get it up and running.
DROID_PACKSU ?= $( BASE_DIR) /droid/fte.cfg $( BASE_DIR) /droid/default.fmf $( BASE_DIR) /droid/configs/touch.cfg
2013-04-09 21:31:44 +00:00
ANDROID_HOME ?= ~/android-sdk-linux
2017-04-10 07:52:18 +00:00
#ANDROID_NDK_ROOT?=~/android-ndk-r8e
2018-03-24 08:33:03 +00:00
#ANDROID_NDK_ROOT?=$(ANDROID_HOME)/ndk-bundle
ANDROID_NDK_ROOT = $( ANDROID_HOME) /android-ndk-r14b
2017-08-12 19:32:09 +00:00
ANDROID_ZIPALIGN ?= $( ZIPALIGN)
ANDROID_ZIPALIGN ?= $( ANDROID_HOME) /tools/zipalign
2012-01-17 07:57:46 +00:00
ANT ?= ant
2017-04-10 07:52:18 +00:00
JAVA_HOME ?= /usr
2013-04-03 09:52:09 +00:00
JAVATOOL = $( JAVA_HOME) /bin/
2012-07-21 07:36:26 +00:00
ANDROID_SCRIPT = android
2018-08-25 02:53:45 +00:00
DO_CMAKE = cmake -DCMAKE_C_COMPILER= " $( firstword $( CC) ) " -DCMAKE_C_FLAGS= " $( wordlist 2,99,$( CC) ) $( CPUOPTIMIZATIONS) " -DCMAKE_CXX_COMPILER= " $( firstword $( CXX) ) " -DCMAKE_CXX_FLAGS= " $( wordlist 2,99,$( CXX) ) $( CPUOPTIMIZATIONS) "
2012-05-11 01:20:36 +00:00
2012-02-27 12:23:15 +00:00
i f e q ( $( DROID_ARCH ) , )
2017-06-23 20:36:35 +00:00
#armeabi armeabi-v7a arm64-v8a x86 x86_64 mips mips64
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
DROID_ARCH += armeabi-v7a #old 32bit android. yucky.
DROID_ARCH += arm64-v8a #modern android devices are 64bit-only. urgh.
DROID_ARCH += x86 #mostly for testing...
2019-04-15 18:43:42 +00:00
#DROID_ARCH+=x86_64 #starting with DROID_API_LEVEL 21
2012-02-27 12:23:15 +00:00
e n d i f
2011-09-05 01:48:23 +00:00
i f e q ( $( FTE_TARGET ) , d r o i d )
2017-04-10 07:52:18 +00:00
#figure out the host system, required to find a usable compiler
ifneq ( $( shell uname -o 2>& 1 | grep Cygwin) ,)
# ifeq ($(shell uname -m 2>&1), i686)
2017-04-18 13:47:02 +00:00
# ANDROID_HOSTSYSTEM?=windows
2017-04-10 07:52:18 +00:00
# else
2017-04-18 13:47:02 +00:00
# ANDROID_HOSTSYSTEM?=windows-$(shell uname -m)
2017-04-10 07:52:18 +00:00
# endif
2017-04-18 13:47:02 +00:00
ANDROID_HOSTSYSTEM?= windows-x86_64
2017-04-10 07:52:18 +00:00
else
2017-04-18 13:47:02 +00:00
ANDROID_HOSTSYSTEM?= linux-$( shell uname -m)
2017-04-10 07:52:18 +00:00
endif
2017-11-24 23:02:46 +00:00
DROID_ABI_VER?= 4.9
2017-04-10 07:52:18 +00:00
2017-06-23 20:36:35 +00:00
#omfg why the FUCK do we need all this bullshit? Why isn't there some sane way to do this that actually works regardless of ndk updates?!?
#name is some random subdir that someone at google arbitrarily picked
#arch is some random other name for a group of ABIs...
#prefix is the 'standard' tupple that the toolchain was compiled to target (by default)
#ver is whatever gcc version it is, or clang. so yeah, pretty much random.
#cflags is whatever is needed to actually target that abi properly with the specific toolchain... -m64 etc.
DROID_ABI_NAME___armeabi = arm-linux-androideabi
DROID_ABI_PREFIX_armeabi = arm-linux-androideabi
DROID_ABI_ARCH___armeabi = arm
2017-08-12 19:32:09 +00:00
DROID_ABI_VER____armeabi?= $( DROID_ABI_VER)
2017-06-23 20:36:35 +00:00
DROID_ABI_CFLAGS_armeabi = -march= armv5te -mtune= xscale -msoft-float
DROID_ABI_NAME___armeabi-v7a= $( DROID_ABI_NAME___armeabi)
DROID_ABI_PREFIX_armeabi-v7a= $( DROID_ABI_PREFIX_armeabi)
DROID_ABI_ARCH___armeabi-v7a= $( DROID_ABI_ARCH___armeabi)
DROID_ABI_VER____armeabi-v7a= $( DROID_ABI_VER____armeabi)
DROID_ABI_CFLAGS_armeabi-v7a= -march= armv7-a -mfloat-abi= softfp -mfpu= vfpv3-d16
DROID_ABI_NAME___arm64-v8a= $( DROID_ABI_NAME___armeabi)
DROID_ABI_PREFIX_arm64-v8a= $( DROID_ABI_PREFIX_armeabi)
DROID_ABI_ARCH___arm64-v8a= $( DROID_ABI_ARCH___armeabi)
DROID_ABI_VER____arm64-v8a= $( DROID_ABI_VER____armeabi)
DROID_ABI_CFLAGS_arm64-v8a= -m64
DROID_ABI_NAME___x86 = x86
DROID_ABI_PREFIX_x86 = i686-linux-android
DROID_ABI_ARCH___x86 = x86
2017-08-12 19:32:09 +00:00
DROID_ABI_VER____x86?= $( DROID_ABI_VER)
2017-06-23 20:36:35 +00:00
DROID_ABI_CFLAGS_x86 = -march= i686 -mssse3 -mfpmath= sse -m32 -Os
2019-04-15 18:43:42 +00:00
DROID_ABI_NAME___x86_64 = x86_64
DROID_ABI_PREFIX_x86_64 = x86_64-linux-android
DROID_ABI_ARCH___x86_64 = x86_64
2017-06-23 20:36:35 +00:00
DROID_ABI_VER____x86_64 = $( DROID_ABI_VER____x86)
DROID_ABI_CFLAGS_x86_64 = -march= x86-64 -msse4.2 -mpopcnt -m64 -Os
#DROID_ABI_NAME___mips=mipsel-linux-android
#DROID_ABI_PREFIX_mips=mipsel-linux-android
#DROID_ABI_ARCH___mips=mips
2017-08-12 19:32:09 +00:00
#DROID_ABI_VER____mips?=$(DROID_ABI_VER)
2017-06-23 20:36:35 +00:00
#DROID_ABI_CFLAGS_mips=
#DROID_ABI_NAME___mips64=$(DROID_ABI_NAME___mips)
#DROID_ABI_PREFIX_mips64=$(DROID_ABI_PREFIX_mips)
#DROID_ABI_ARCH___mips64=$(DROID_ABI_ARCH___mips)
#DROID_ABI_VER____mips64=$(DROID_ABI_VER____mips)
#DROID_ABI_CFLAGS_mips64=-m64
2017-10-13 17:50:28 +00:00
ifeq ( 1,$( words [ $( DROID_ARCH) ] ) )
#try and make sense of the above nonsense.
DROID_ABI:= $( DROID_ABI_CFLAGS_$( DROID_ARCH) )
TOOLCHAINPATH:= $( ANDROID_NDK_ROOT) /toolchains/$( DROID_ABI_NAME___$( DROID_ARCH) ) -$( DROID_ABI_VER____$( DROID_ARCH) ) /prebuilt/$( ANDROID_HOSTSYSTEM) /bin/
TOOLCHAIN:= $( TOOLCHAINPATH) $( DROID_ABI_PREFIX_$( DROID_ARCH) ) -
#4 is the min that fte requires
DROID_API_LEVEL?= 9
ifeq ( $( DROID_ARCH) ,x86)
#google fecked up. anything before api_level 9 will fail to compile on x86
DROID_API_LEVEL = 9
endif
2019-04-15 18:43:42 +00:00
ifeq ( $( DROID_ARCH) ,x86_64)
#google fecked up. anything before api_level 9 will fail to compile on x86
DROID_API_LEVEL = 21
endif
2017-06-23 20:36:35 +00:00
DROID_API_NAME?= android-$( DROID_API_LEVEL)
2017-10-13 17:50:28 +00:00
DROID_PLAT_INC = arch-$( DROID_ABI_ARCH___$( DROID_ARCH) )
DROIDSYSROOT = $( realpath $( ANDROID_NDK_ROOT) /platforms/$( DROID_API_NAME) /$( DROID_PLAT_INC) )
ifeq ( $( DROIDSYSROOT) ,) #its possible that google removed whatever api we're trying to target, just switch up to the new default.
BITCHANDMOAN:= $( shell echo targetting \" android-9\" instead of \" android-$( DROID_API_LEVEL) \" 1>& 2)
DROID_API_LEVEL = 9
DROID_API_NAME = android-$( DROID_API_LEVEL)
DROIDSYSROOT = $( realpath $( ANDROID_NDK_ROOT) /platforms/$( DROID_API_NAME) /$( DROID_PLAT_INC) )
ifeq ( $( DROIDSYSROOT) ,) #its possible that google removed whatever api we're trying to target, just switch up to the new default.
BITCHANDMOAN:= $( shell echo $( DROID_API_NAME) not available either - $( DROID_ARCH) 1>& 2)
endif
endif
DROIDSYSROOT:= $( DROIDSYSROOT)
2017-04-10 07:52:18 +00:00
endif
2014-12-29 02:35:10 +00:00
2012-01-17 07:57:46 +00:00
#if we're running under windows, then we want to run some other binary
ifeq ( $( shell uname -o 2>& 1 | grep Cygwin) ,)
2017-04-10 07:52:18 +00:00
#set up for linux/mingw
TOOLOVERRIDES = PATH = " /usr/bin: $( realpath $( TOOLCHAINPATH) ) " CFLAGS = --sysroot= " $( realpath $( ANDROID_NDK_ROOT) /platforms/$( DROID_API_NAME) /$( DROID_PLAT_INC) ) " CPPFLAGS = --sysroot= " $( realpath $( ANDROID_NDK_ROOT) /platforms/$( DROID_API_NAME) /$( DROID_PLAT_INC) ) "
CONFIGARGS = --with-sysroot= " $( realpath $( ANDROID_NDK_ROOT) /platforms/$( DROID_API_NAME) /$( DROID_PLAT_INC) ) "
2012-01-17 07:57:46 +00:00
else
2017-04-10 07:52:18 +00:00
#we're running upon cygwin
2013-11-28 00:45:22 +00:00
#FIXME: support mingw too...
2012-07-21 07:36:26 +00:00
ANDROID_SCRIPT = android.bat
2013-05-11 05:03:07 +00:00
#make can't cope with absolute win32 paths in dependancy files
DEPCC =
2018-08-04 19:00:19 +00:00
DEPCXX =
2014-12-02 02:00:41 +00:00
2017-06-23 20:36:35 +00:00
ifneq ( $( realpath $( TOOLCHAINPATH) ) ,) #don't invoke cygpath when realpath returns nothing due to dodgy paths (which happens when stuff isn't set up right for the top-level makefile)
#configure hates android, with its broken default sysroot and lack of path etc
DROIDSYSROOT:= $( shell cygpath -m $( DROIDSYSROOT) )
TOOLOVERRIDES = PATH = " /usr/bin: $( shell cygpath -u $( realpath $( TOOLCHAINPATH) ) ) " CFLAGS = --sysroot= " $( DROIDSYSROOT) " CPPFLAGS = --sysroot= " $( DROIDSYSROOT) "
CONFIGARGS = --with-sysroot= " $( shell cygpath -u $( realpath $( ANDROID_NDK_ROOT) /platforms/$( DROID_API_NAME) /$( DROID_PLAT_INC) ) ) "
endif
2012-01-17 07:57:46 +00:00
endif
2011-09-05 01:48:23 +00:00
2014-12-29 02:35:10 +00:00
CC:= $( TOOLCHAIN) gcc --sysroot= " $( DROIDSYSROOT) " -DANDROID $( DROID_ABI) -fno-strict-aliasing
2018-08-04 19:00:19 +00:00
CXX:= $( TOOLCHAIN) g++ --sysroot= " $( DROIDSYSROOT) " -DANDROID $( DROID_ABI) -fno-strict-aliasing
2019-10-27 06:59:19 +00:00
DO_LD = +$( DO_ECHO) $( CC) -Wl,-soname,libftedroid.so -shared -Wl,--no-undefined -Wl,-z,noexecstack -o $@ $( LTO_LD) $( WCFLAGS) $( BRANDFLAGS) $( CFLAGS) -llog -lc -lm -lz
2014-12-02 02:00:41 +00:00
LD:= $( TOOLCHAIN) ld
AR:= $( TOOLCHAIN) ar
2012-01-17 07:57:46 +00:00
STRIP = $( TOOLCHAIN) strip
2011-09-05 01:48:23 +00:00
e n d i f
2009-04-08 08:12:29 +00:00
2011-07-08 19:43:49 +00:00
i f e q ( $( FTE_TARGET ) , w i n 6 4 _ s d l )
FTE_TARGET = win64_SDL
e n d i f
2007-11-02 00:30:47 +00:00
#crosscompile macosx from linux, default target ppc 32bit
i f e q ( $( FTE_TARGET ) , m a c o s x )
ifeq ( $( shell $( CC) -v 2>& 1 | grep apple) ,)
ifneq ( $( shell which powerpc-apple-darwin8-gcc 2> /dev/null) ,)
CC = powerpc-apple-darwin8-gcc
2018-08-04 19:00:19 +00:00
CXX = powerpc-apple-darwin8-g++
2007-11-02 00:30:47 +00:00
STRIP = powerpc-apple-darwin8-strip
#seems, macosx has a more limited version of strip
STRIPFLAGS =
BITS = 32
EXTENSION = _ppc
endif
endif
e n d i f
i f e q ( $( FTE_TARGET ) , m a c o s x _ p p c 6 4 )
ifeq ( $( shell $( CC) -v 2>& 1 | grep apple) ,)
ifneq ( $( shell which powerpc-apple-darwin8-gcc 2> /dev/null) ,)
FTE_TARGET = macosx
CC = powerpc-apple-darwin8-gcc -arch ppc64
2018-08-04 19:00:19 +00:00
CXX = powerpc-apple-darwin8-g++ -arch ppc64
2007-11-02 00:30:47 +00:00
STRIP = powerpc-apple-darwin8-strip
#seems, macosx has a more limited version of strip
STRIPFLAGS =
BITS = 64
EXTENSION = _ppc
endif
endif
e n d i f
i f e q ( $( FTE_TARGET ) , m a c o s x _ x 8 6 )
ifeq ( $( shell $( CC) -v 2>& 1 | grep apple) ,)
ifneq ( $( shell which i686-apple-darwin8-gcc 2> /dev/null) ,)
FTE_TARGET = macosx
# i686-apple-darwin8-gcc's default target is i386, powerpc-apple-darwin8-gcc -arch i386 just invokes i686-apple-darwin8-gcc anyway
CC = i686-apple-darwin8-gcc
2018-08-04 19:00:19 +00:00
CXX = i686-apple-darwin8-g++
2007-11-02 00:30:47 +00:00
STRIP = i686-apple-darwin8-strip
#seems, macosx has a more limited version of strip
STRIPFLAGS =
EXTENSION = _x86
endif
endif
e n d i f
#crosscompile morphos from linux
i f e q ( $( FTE_TARGET ) , m o r p h o s )
ifeq ( $( shell $( CC) -v 2>& 1 | grep morphos) ,)
ifneq ( $( shell which ppc-morphos-gcc 2> /dev/null) ,)
CC = ppc-morphos-gcc
2018-08-04 19:00:19 +00:00
CXX = ppc-morphos-g++
2007-11-02 00:30:47 +00:00
#morphos strip has a 'feature', it strips permissions
STRIP = ppc-morphos-strip
endif
endif
e n d i f
2017-05-19 03:32:02 +00:00
i f e q ( $( FTE_TARGET ) , d o s )
#at least from dos.
CC = i586-pc-msdosdjgpp-gcc
2018-08-04 19:00:19 +00:00
CXX = i586-pc-msdosdjgpp-g++
2019-07-29 06:04:43 +00:00
STRIP = i586-pc-msdosdjgpp-strip
2017-05-19 03:32:02 +00:00
CFLAGS += -DNO_ZLIB
e n d i f
2014-09-21 03:35:38 +00:00
#if you have an x86, you can get gcc to build binaries using 3 different ABIs, instead of builds for just the default ABI
2007-09-02 19:55:17 +00:00
i f e q ( $( FTE_TARGET ) , l i n u x 3 2 )
FTE_TARGET = linux
CC = gcc -m32
2018-08-04 19:00:19 +00:00
CXX = g++ -m32
2019-07-29 06:04:43 +00:00
STRIP = strip
2007-09-02 19:55:17 +00:00
BITS = 32
e n d i f
2021-05-09 13:01:04 +00:00
i f e q ( $( FTE_TARGET ) , l i n u x _ x 8 6 )
2020-06-12 23:29:58 +00:00
FTE_TARGET = linux
CC = i686-linux-gnu-gcc
PKGCONFIG = i686-linux-gnu-pkg-config
CXX = i686-linux-gnu-g++
STRIP = i686-linux-gnu-strip
BITS = 32
e n d i f
2021-05-09 13:01:04 +00:00
i f e q ( $( FTE_TARGET ) , l i n u x _ a m d 6 4 )
FTE_TARGET = linux
CC = x86_64-linux-gnu-gcc
PKGCONFIG = x86_64-linux-gnu-pkg-config
CXX = x86_64-linux-gnu-g++
STRIP = x86_64-linux-gnu-strip
BITS = 64
e n d i f
i f e q ( $( FTE_TARGET ) , l i n u x _ a r m h f )
2017-04-16 09:27:43 +00:00
#debian's armhf is armv7, but armv6 works on RPI too.
FTE_TARGET = linux
CC = arm-linux-gnueabihf-gcc -marm -march= armv6 -mfpu= vfp -mfloat-abi= hard
2018-08-04 19:00:19 +00:00
CXX = arm-linux-gnueabihf-g++ -marm -march= armv6 -mfpu= vfp -mfloat-abi= hard
2019-07-29 06:04:43 +00:00
STRIP = arm-linux-gnueabihf-strip
2017-04-16 09:27:43 +00:00
BITS = armhf
e n d i f
2021-05-09 13:01:04 +00:00
i f e q ( $( FTE_TARGET ) , l i n u x _ a r m 6 4 )
2018-11-19 06:37:25 +00:00
FTE_TARGET = linux
CC = aarch64-linux-gnu-gcc
CXX = aarch64-linux-gnu-g++
2019-07-29 06:04:43 +00:00
STRIP = aarch64-linux-gnu-strip
2018-11-19 06:37:25 +00:00
BITS = arm64
USE_SPEEX = 0 #fails to compile due to neon asm, I'm just going to disable it (will still soft-link).
e n d i f
2022-02-19 20:49:56 +00:00
i f e q ( $( FTE_TARGET ) , l i n u x _ a a r c h 6 4 )
FTE_TARGET = linux
CC = aarch64-linux-gnu-gcc
CXX = aarch64-linux-gnu-g++
STRIP = aarch64-linux-gnu-strip
BITS = aarch64
USE_SPEEX = 0 #fails to compile due to neon asm, I'm just going to disable it (will still soft-link).
e n d i f
2021-05-09 13:01:04 +00:00
i f e q ( $( FTE_TARGET ) , l i n u x _ x 3 2 )
#DO NOT CONFUSE WITH linux_x86. this target is amd64-with-32bit-pointers
2014-09-21 03:35:38 +00:00
#note: the x32 abi is still not finished or something.
#at the current time, you will need to edit your kernel's commandline to allow this stuff to run
2018-11-19 06:37:25 +00:00
#try and use a proper cross-compiler if we can, otherwise fall back on multi-arch.
2014-09-21 03:35:38 +00:00
FTE_TARGET = linux
2018-11-19 06:37:25 +00:00
i f n e q ( $( shell which x 86_ 64-linux -gnux 32-gcc 2> /dev /null ) , )
CC = x86_64-linux-gnux32-gcc
CXX = x86_64-linux-gnux32-g++
2019-07-29 06:04:43 +00:00
STRIP = x86_64-linux-gnux32-strip
2018-11-19 06:37:25 +00:00
e l s e
2014-09-21 03:35:38 +00:00
CC = gcc -mx32
2018-08-04 19:00:19 +00:00
CXX = g++ -mx32
2019-07-29 06:04:43 +00:00
STRIP = strip
2018-11-19 06:37:25 +00:00
e n d i f
2014-09-21 03:35:38 +00:00
BITS = x32
e n d i f
2007-09-02 19:55:17 +00:00
i f e q ( $( FTE_TARGET ) , l i n u x 6 4 )
FTE_TARGET = linux
CC = gcc -m64
2018-08-04 19:00:19 +00:00
CXX = g++ -m64
2019-07-29 06:04:43 +00:00
STRIP = strip
2007-09-02 19:55:17 +00:00
BITS = 64
e n d i f
2021-10-22 22:27:58 +00:00
i f e q ( $( FTE_TARGET ) , w e b )
CC = emcc
CXX = em++
AR = emar
e n d i f
2016-02-10 23:23:43 +00:00
i f e q ( $( FTE_TARGET ) , c y g w i n )
FTE_TARGET = cyg
e n d i f
2020-07-17 16:19:35 +00:00
i f e q ( $( shell uname -s ) , O p e n B S D )
PKGCONFIG = pkg-config
e n d i f
2005-12-15 19:15:39 +00:00
2005-01-23 17:44:11 +00:00
i f e q ( $( FTE_TARGET ) , ) #user didn't specify prefered target
2013-11-21 23:02:28 +00:00
ifneq ( $( shell uname 2>& 1 | grep CYGWIN) ,)
2016-02-10 23:23:43 +00:00
FTE_TARGET = cyg
2012-09-30 05:52:03 +00:00
ANDROID_SCRIPT = android.bat
2005-12-15 19:15:39 +00:00
endif
2013-11-21 23:02:28 +00:00
ifneq ( $( shell $( CC) -v 2>& 1 | grep mingw) ,)
FTE_TARGET = win32
endif
2005-12-15 19:15:39 +00:00
ifeq ( $( FTE_TARGET) ,) #still not set
2018-05-19 05:07:30 +00:00
UNAME_SYSTEM:= $( shell uname)
ifeq ( $( UNAME_SYSTEM) ,Linux)
2005-01-23 17:44:11 +00:00
FTE_TARGET = linux
2005-05-20 03:33:10 +00:00
endif
2018-05-19 05:07:30 +00:00
ifeq ( $( UNAME_SYSTEM) ,Darwin)
2007-09-22 19:28:27 +00:00
FTE_TARGET = macosx
endif
2018-05-19 05:07:30 +00:00
ifeq ( $( UNAME_SYSTEM) ,FreeBSD)
2005-05-20 08:13:48 +00:00
FTE_TARGET = bsd
endif
2018-05-19 05:07:30 +00:00
ifeq ( $( UNAME_SYSTEM) ,NetBSD)
2005-05-20 08:13:48 +00:00
FTE_TARGET = bsd
endif
2018-05-19 05:07:30 +00:00
ifeq ( $( UNAME_SYSTEM) ,OpenBSD)
2005-05-20 08:13:48 +00:00
FTE_TARGET = bsd
endif
2018-05-19 05:07:30 +00:00
ifeq ( $( UNAME_SYSTEM) ,MorphOS)
2006-03-06 22:15:40 +00:00
FTE_TARGET = morphos
endif
2005-05-20 08:13:48 +00:00
#else I've no idea what it is you're running
2005-01-23 17:44:11 +00:00
endif
2013-11-21 23:02:28 +00:00
FTE_TARGET ?= unk #so go for sdl.
2005-01-23 17:44:11 +00:00
e n d i f
2005-11-21 22:16:53 +00:00
i f n e q ( $( shell ls |grep config .h ) , )
HAVECONFIG = -DHAVE_CONFIG_H
e n d i f
2005-01-23 17:44:11 +00:00
CLIENT_DIR = $( BASE_DIR) /client
GL_DIR = $( BASE_DIR) /gl
2011-03-03 12:57:34 +00:00
D3D_DIR = $( BASE_DIR) /d3d
2016-07-12 00:40:13 +00:00
VK_DIR = $( BASE_DIR) /vk
2017-05-19 03:32:02 +00:00
SW_DIR = $( BASE_DIR) /sw
2005-01-23 17:44:11 +00:00
SERVER_DIR = $( BASE_DIR) /server
COMMON_DIR = $( BASE_DIR) /common
HTTP_DIR = $( BASE_DIR) /http
2005-01-24 23:47:32 +00:00
#LIBS_DIR=$(BASE_DIR)/libs
LIBS_DIR ?= .
2005-01-23 17:44:11 +00:00
PROGS_DIR = $( BASE_DIR) /qclib
2016-10-22 07:06:51 +00:00
i f e q ( $( NOCOMPAT ) , 1 )
NCCFLAGS = -DNOLEGACY -DOMIT_QCC
NCDIRPREFIX = nc
e n d i f
2017-04-16 09:27:43 +00:00
ALL_CFLAGS = $( HAVECONFIG) $( VISIBILITY_FLAGS) $( BRANDFLAGS) $( CFLAGS) $( BASE_CFLAGS) $( WCFLAGS) $( ARCH_CFLAGS) $( NCCFLAGS) -I$( ARCHLIBS)
2018-08-04 19:00:19 +00:00
ALL_CXXFLAGS = $( subst -Wno-pointer-sign,,$( ALL_CFLAGS) )
2005-11-21 22:16:53 +00:00
2011-03-12 13:51:40 +00:00
#cheap compile-everything-in-one-unit (compile becomes preprocess only)
i f n e q ( $( WPO ) , )
LTO_CC = -E
2019-10-27 06:59:19 +00:00
LTO_LD = -flto= jobserver -fwhole-program -x c
2011-03-12 13:51:40 +00:00
LTO_END = ltoxnone
LTO_START = ltoxc
e n d i f
#proper/consistant link-time optimisations (requires gcc 4.5+ or so)
i f n e q ( $( LTO ) , )
2019-10-27 06:59:19 +00:00
LTO_CC = -flto= jobserver -fvisibility= hidden
LTO_LD = -flto= jobserver
2011-03-12 13:51:40 +00:00
e n d i f
2013-03-12 22:47:42 +00:00
#DO_ECHO=@echo $< &&
DO_ECHO = @
2017-04-18 11:12:17 +00:00
#DO_ECHO=
2013-03-12 22:47:42 +00:00
DO_CC = $( DO_ECHO) $( CC) $( LTO_CC) $( ALL_CFLAGS) -o $@ -c $<
2018-08-04 19:00:19 +00:00
DO_CXX = $( DO_ECHO) $( CXX) $( LTO_CC) $( ALL_CXXFLAGS) -o $@ -c $<
2005-12-21 03:07:33 +00:00
2021-08-04 21:17:31 +00:00
i f e q ( $( findstring msvc ,$ ( FTE_TARGET ) ) , m s v c )
2009-11-04 21:16:50 +00:00
BASELDFLAGS =
2021-11-10 01:36:00 +00:00
VISIBILITY_FLAGS =
2009-11-04 21:16:50 +00:00
e n d i f
2016-02-10 23:23:43 +00:00
i f e q ( $( FTE_TARGET ) , c y g )
2005-12-21 03:07:33 +00:00
BASELDFLAGS = -lm
e n d i f
2017-05-19 03:32:02 +00:00
i f e q ( $( FTE_TARGET ) , d o s )
BASELDFLAGS = -lm
e n d i f
2006-03-06 22:15:40 +00:00
i f e q ( $( FTE_TARGET ) , m o r p h o s )
BASELDFLAGS = -lm
e n d i f
2021-11-10 01:36:00 +00:00
2021-07-01 11:03:28 +00:00
i f n e q ( , $( findstring bsd ,$ ( FTE_TARGET ) ) )
2006-03-14 01:29:45 +00:00
BASELDFLAGS = -lm
e n d i f
2007-07-23 18:55:10 +00:00
BASELDFLAGS ?= -lm -ldl -lpthread
2005-12-21 03:07:33 +00:00
2014-03-30 08:55:06 +00:00
i f e q ( w i n , $( findstring cyg ,$ ( FTE_TARGET ) ) $( findstring win ,$ ( FTE_TARGET ) ) )
2013-11-21 23:29:24 +00:00
BASELDFLAGS = -lm
2019-09-29 02:16:34 +00:00
# MINGW_LIBS_DIR=$(LIBS_DIR)/mingw-libs
2013-11-21 23:29:24 +00:00
2019-09-29 02:16:34 +00:00
# ifeq ($(shell echo $(FTE_TARGET)|grep -v win64),)
# MINGW_LIBS_DIR=$(LIBS_DIR)/mingw64-libs
# endif
2013-11-21 23:29:24 +00:00
2019-09-29 02:16:34 +00:00
# IMAGELDFLAGS=$(MINGW_LIBS_DIR)/libpng.a $(MINGW_LIBS_DIR)/libz.a $(MINGW_LIBS_DIR)/libjpeg.a
# OGGVORBISLDFLAGS=$(MINGW_LIBS_DIR)/libvorbisfile.a $(MINGW_LIBS_DIR)/libvorbis.a $(MINGW_LIBS_DIR)/libogg.a
2013-11-21 23:29:24 +00:00
e n d i f
2011-07-08 09:17:23 +00:00
2005-10-14 18:30:13 +00:00
#BASELDFLAGS=-lm -lz
2017-04-16 09:27:43 +00:00
XLDFLAGS = -L$( ARCHLIBS) $( IMAGELDFLAGS)
2005-01-23 17:44:11 +00:00
2013-09-29 17:07:57 +00:00
#hack some other arguments based upon the toolchain
2021-08-04 21:17:31 +00:00
i f e q ( $( findstring msvc ,$ ( FTE_TARGET ) ) , m s v c )
WARNINGFLAGS?= -W3 -D_CRT_SECURE_NO_WARNINGS
2009-11-04 21:16:50 +00:00
GNUC_FUNCS =
e l s e
2021-08-04 21:17:31 +00:00
WARNINGFLAGS?= -Wall -Wno-pointer-sign -Wno-unknown-pragmas -Wno-format-zero-length -Wno-strict-aliasing #-Wcast-align
2019-12-16 17:36:00 +00:00
# GNUC_FUNCS= -Dstrnicmp=strncasecmp -Dstricmp=strcasecmp
2009-11-04 21:16:50 +00:00
e n d i f
2014-02-07 08:38:40 +00:00
SDL_INCLUDES =
#-I$(LIBS_DIR)/sdl/include -I/usr/include/SDL -I$(LIBS_DIR)/sdl/include/SDL
2019-10-27 06:59:19 +00:00
BASE_INCLUDES = -I$( CLIENT_DIR) -I$( SERVER_DIR) -I$( COMMON_DIR) -I$( GL_DIR) -I$( D3D_DIR) -I$( PROGS_DIR) -I.
2022-03-08 05:31:34 +00:00
BASE_CFLAGS = $( WARNINGFLAGS) $( GNUC_FUNCS) $( BASE_INCLUDES) -I$( LIBS_DIR) /dxsdk9/include -I$( LIBS_DIR) /dxsdk7/include $( SDL_INCLUDES) $( SVNREVISION)
2005-01-23 17:44:11 +00:00
CLIENT_ONLY_CFLAGS = -DCLIENTONLY
SERVER_ONLY_CFLAGS = -DSERVERONLY
JOINT_CFLAGS =
2014-02-07 08:38:40 +00:00
DEBUG_CFLAGS ?= -ggdb -g
2021-11-10 01:36:00 +00:00
DEBUG_CFLAGS += -DDEBUG -D_DEBUG
2021-07-24 14:24:46 +00:00
RELEASE_CFLAGS ?= $( CPUOPTIMIZATIONS)
2019-07-02 04:37:11 +00:00
#
#note: RELEASE_CFLAGS used to contain -ffast-math
#however, its use resulted in the player getting stuck etc, so be warned if you try re-enabling it.
#
2007-10-12 10:27:51 +00:00
2021-08-04 21:17:31 +00:00
i f e q ( $( findstring msvc ,$ ( FTE_TARGET ) ) , m s v c )
2017-04-18 11:12:17 +00:00
#msvc doesn't do -dumpmachine.
#we might as well get it to reuse the mingw libraries, if only because that makes those libraries easier to compile...
2021-08-04 21:17:31 +00:00
ifeq ( $( FTE_TARGET) ,msvc32)
BITS?= 32
else ifeq ( $( FTE_TARGET) ,msvc64)
BITS?= 64
endif
BITS?= 32
2017-04-18 11:12:17 +00:00
ifeq ( $( BITS) ,64)
ARCH?= x86_64-w64-mingw32
else
ARCH?= i686-w64-mingw32
endif
e l s e
2017-10-25 09:43:01 +00:00
#some idiot decided that -dumpmachine shouldn't respect -m32 etc.
#at the same time, -print-multiarch is not present, buggy, or just screwed in many gcc builds (ones that target a single arch will unhelpfully just give an empty string).
#so try multiarch first, and if that fails risk dumpmachine giving the wrong values.
#really we want dumpmachine's more specific cpu arch included here, so lets hope that idiot burns for all eternity. or something equally melodramatic.
2018-03-05 04:00:56 +00:00
ARCH:= $( shell $( CC) -print-multiarch 2>/dev/null)
2017-10-25 09:43:01 +00:00
ifneq ( $( words $( ARCH) ) ,1)
2018-03-05 04:00:56 +00:00
ARCH:= $( shell $( CC) -dumpmachine 2>/dev/null)
2017-10-25 09:43:01 +00:00
endif
2017-10-31 22:52:58 +00:00
#foo:=$(shell echo ARCH is $(ARCH) 1>&2 )
2017-04-18 11:12:17 +00:00
e n d i f
2020-06-12 23:29:58 +00:00
ARCHLIBS := $( NATIVE_ABSBASE_DIR) /libs-$( ARCH)
2017-04-16 09:27:43 +00:00
2011-07-08 09:17:23 +00:00
#incase our compiler doesn't support it (mingw)
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
i f e q ( $( shell LANG =c $ ( CC ) -rdynamic 2>&1 | grep unrecognized ) , )
2011-07-08 09:17:23 +00:00
DEBUG_CFLAGS += -rdynamic
2010-12-10 13:41:31 +00:00
e n d i f
2009-09-02 15:14:50 +00:00
2020-06-12 23:29:58 +00:00
PKGCONFIG ?= $( ARCH) -pkg-config
2020-01-09 15:35:40 +00:00
i f e q ( $( shell which $ ( PKGCONFIG ) 2> /dev /null ) , )
2020-06-12 23:29:58 +00:00
FFS:= $( shell echo $( PKGCONFIG) not found 1>& 2 )
2022-01-17 09:12:56 +00:00
PKGCONFIG = /bin/false #don't end up using eg /usr/include when cross-compiling. makelibs is a valid workaround.
2020-01-09 15:35:40 +00:00
e n d i f
#try to statically link
i f e q ( $( COMPILE_SYS ) , D a r w i n )
ifneq ( ,$( findstring SDL,$( FTE_TARGET) ) )
IMAGELDFLAGS := $( shell $( PKGCONFIG) libpng --variable= libdir) /libpng.a $( shell $( PKGCONFIG) libjpeg --variable= libdir) /libjpeg.a
OGGVORBISLDFLAGS := $( shell $( PKGCONFIG) vorbisfile --variable= libdir) /libvorbisfile.a $( shell $( PKGCONFIG) vorbis --variable= libdir) /libvorbis.a $( shell $( PKGCONFIG) ogg --variable= libdir) /libogg.a
endif
e n d i f
2021-07-22 07:17:30 +00:00
# Statically link everything but SDL/AL for the SDL target,
# this assumes makelibs; but we don't really care. These are portable builds
# that can only make one assumption: SDL/AL are installed.
# Dependencies like libjpeg9 don't exist everywhere.
i f e q ( $( FTE_TARGET ) , S D L 2 )
IMAGELDFLAGS:= libs-$( ARCH) /libpng.a libs-$( ARCH) /libjpeg.a
OGGVORBISLDFLAGS:= libs-$( ARCH) /libvorbisfile.a libs-$( ARCH) /libvorbis.a libs-$( ARCH) /libogg.a
BASE_CFLAGS += -DLIBJPEG_STATIC -DLIBJPEG_STATIC -DLIBPNG_STATIC -DOPUS_STATIC -DSPEEX_STATIC -DFREETYPE_STATIC -DLIBVORBISFILE_STATIC
e n d i f
2011-07-08 09:17:23 +00:00
2023-07-01 22:20:13 +00:00
VPATH := $( BASE_DIR) : $( CLIENT_DIR) : $( GL_DIR) : $( SW_DIR) : $( COMMON_DIR) : $( SERVER_DIR) : $( HTTP_DIR) : $( QUX_DIR) : $( PROGS_DIR) : $( D3D_DIR) : $( VK_DIR) : $( BASE_DIR) /web
2022-03-08 05:33:52 +00:00
2021-07-22 07:17:30 +00:00
PROFILE_CFLAGS = -pg
2011-07-08 09:17:23 +00:00
DX7SDK = -I./libs/dxsdk7/include/
2007-10-12 10:27:51 +00:00
2015-09-07 14:34:39 +00:00
GLCFLAGS ?= -DGLQUAKE
2015-09-14 15:20:09 +00:00
D3DCFLAGS ?= -DD3D9QUAKE -DD3D11QUAKE
2016-07-12 00:40:13 +00:00
VKCFLAGS ?= -DVKQUAKE
2017-02-19 00:15:42 +00:00
2011-03-03 12:57:34 +00:00
CLIENT_OBJS = \
2005-01-23 17:44:11 +00:00
textedit.o \
fragstats.o \
zqtp.o \
cl_demo.o \
cl_ents.o \
clq2_ents.o \
cl_input.o \
2012-10-14 09:00:49 +00:00
in_generic.o \
2005-01-23 17:44:11 +00:00
cl_main.o \
cl_parse.o \
cl_pred.o \
cl_tent.o \
cl_cam.o \
cl_screen.o \
2013-03-12 22:35:33 +00:00
pr_clcmd.o \
2005-11-30 01:20:53 +00:00
cl_ignore.o \
2005-01-24 05:06:16 +00:00
pr_csqc.o \
2005-01-23 17:44:11 +00:00
console.o \
image.o \
keys.o \
menu.o \
m_master.o \
m_multi.o \
m_items.o \
m_options.o \
m_single.o \
m_script.o \
2018-05-21 13:47:53 +00:00
m_native.o \
2005-01-23 17:44:11 +00:00
m_mp3.o \
roq_read.o \
clq2_cin.o \
r_part.o \
2008-11-09 22:29:28 +00:00
p_script.o \
p_null.o \
p_classic.o \
2005-01-23 17:44:11 +00:00
r_partset.o \
renderer.o \
renderque.o \
sbar.o \
skin.o \
2010-12-07 13:19:19 +00:00
snd_al.o \
2005-01-23 17:44:11 +00:00
snd_dma.o \
snd_mem.o \
snd_mix.o \
snd_mp3.o \
snd_ov.o \
valid.o \
2017-02-19 00:15:42 +00:00
vid_headless.o \
2005-01-23 17:44:11 +00:00
view.o \
wad.o \
\
ftpclient.o \
\
\
pr_menu.o
2016-07-12 00:40:13 +00:00
VKQUAKE_OBJS = \
vk_init.o \
vk_backend.o
2005-01-23 17:44:11 +00:00
GLQUAKE_OBJS = \
gl_draw.o \
2009-11-05 03:07:52 +00:00
gl_backend.o \
2005-01-23 17:44:11 +00:00
gl_rmain.o \
gl_rmisc.o \
gl_rsurf.o \
gl_screen.o \
2006-03-03 03:31:19 +00:00
gl_bloom.o \
2016-07-12 00:40:13 +00:00
gl_vidcommon.o \
$( VKQUAKE_OBJS)
2005-01-23 17:44:11 +00:00
2007-09-17 20:35:39 +00:00
D3DQUAKE_OBJS = \
2017-03-21 17:35:27 +00:00
d3d8_backend.o \
d3d8_image.o \
vid_d3d8.o \
2011-01-28 05:06:20 +00:00
d3d_backend.o \
d3d_image.o \
2011-04-01 12:52:58 +00:00
d3d_shader.o \
2012-09-30 05:52:03 +00:00
vid_d3d.o \
d3d11_backend.o \
d3d11_image.o \
d3d11_shader.o \
vid_d3d11.o
2011-01-28 08:35:19 +00:00
2012-01-01 13:11:35 +00:00
D3DGL_OBJS = \
2011-01-28 08:35:19 +00:00
gl_font.o \
2012-08-04 12:27:24 +00:00
gl_ngraph.o \
2011-01-28 08:35:19 +00:00
gl_shader.o \
2012-01-01 11:22:24 +00:00
gl_shadow.o \
2011-01-28 08:35:19 +00:00
gl_rlight.o \
gl_warp.o \
ltface.o \
r_surf.o \
r_2d.o
2007-09-17 20:35:39 +00:00
2005-01-23 17:44:11 +00:00
MP3_OBJS = \
fixed.o \
bit.o \
timer.o \
stream.o \
frame.o \
synth.o \
decoder.o \
layer12.o \
layer3.o \
huffman.o \
mymad.o
2013-07-26 17:19:06 +00:00
QCC_OBJS = \
2005-01-23 17:44:11 +00:00
comprout.o \
hash.o \
2013-07-26 17:19:06 +00:00
qcc_cmdlib.o \
qccmain.o \
qcc_pr_comp.o \
qcc_pr_lex.o \
qcd_main.o
PROGS_OBJS = \
$( QCC_OBJS) \
2005-01-23 17:44:11 +00:00
initlib.o \
2008-11-15 02:12:55 +00:00
pr_bgcmd.o \
2011-12-06 00:35:24 +00:00
pr_skelobj.o \
2005-01-23 17:44:11 +00:00
pr_edict.o \
pr_exec.o \
pr_multi.o \
2009-08-29 15:17:43 +00:00
pr_x86.o \
2013-07-26 17:19:06 +00:00
qcdecomp.o
2005-01-23 17:44:11 +00:00
SERVER_OBJS = \
pr_cmds.o \
2007-09-02 19:55:17 +00:00
pr_q1qvm.o \
2014-03-30 08:55:06 +00:00
pr_lua.o \
2005-01-23 17:44:11 +00:00
sv_master.o \
sv_init.o \
sv_main.o \
sv_nchan.o \
sv_ents.o \
sv_send.o \
sv_user.o \
2012-11-27 03:23:19 +00:00
sv_sql.o \
2005-01-23 17:44:11 +00:00
sv_mvd.o \
sv_ccmds.o \
2014-09-02 02:44:43 +00:00
sv_cluster.o \
2005-01-23 17:44:11 +00:00
sv_rankin.o \
sv_chat.o \
sv_demo.o \
net_preparse.o \
savegame.o \
svq2_ents.o \
svq2_game.o \
webgen.o \
ftpserver.o \
2005-11-21 22:16:53 +00:00
httpserver.o
2005-01-23 17:44:11 +00:00
SERVERONLY_OBJS = \
2016-02-10 23:23:43 +00:00
sv_sys_unix.o \
sys_linux_threads.o
2005-05-20 08:13:48 +00:00
2005-01-23 17:44:11 +00:00
WINDOWSSERVERONLY_OBJS = \
2013-03-31 04:21:08 +00:00
net_ssl_winsspi.o \
2012-11-29 13:37:48 +00:00
sv_sys_win.o \
sys_win_threads.o
2005-01-23 17:44:11 +00:00
2013-03-31 04:21:08 +00:00
WINDOWS_OBJS = \
snd_win.o \
snd_directx.o \
2016-07-12 00:40:13 +00:00
snd_xaudio.o \
snd_wasapi.o \
2013-03-31 04:21:08 +00:00
cd_win.o \
fs_win32.o \
in_win.o \
sys_win.o \
sys_win_threads.o \
net_ssl_winsspi.o \
$( LTO_END) resources.o $( LTO_START)
2011-03-03 12:57:34 +00:00
COMMON_OBJS = \
2011-09-05 01:48:23 +00:00
gl_alias.o \
2016-12-19 13:31:05 +00:00
gl_hlmdl.o \
2012-04-16 12:19:15 +00:00
gl_heightmap.o \
2014-05-23 02:14:36 +00:00
gl_model.o \
2021-04-14 05:21:04 +00:00
com_bih.o \
2007-05-27 13:59:39 +00:00
com_mesh.o \
2005-01-23 17:44:11 +00:00
common.o \
2022-02-19 20:48:40 +00:00
json.o \
2005-01-23 17:44:11 +00:00
cvar.o \
cmd.o \
crc.o \
2013-06-24 09:04:00 +00:00
net_ssl_gnutls.o \
2014-12-23 15:26:42 +00:00
net_master.o \
2005-09-09 23:40:55 +00:00
fs.o \
2009-04-02 22:25:54 +00:00
fs_stdio.o \
fs_pak.o \
fs_zip.o \
2017-07-12 08:15:27 +00:00
fs_dzip.o \
2015-04-27 12:51:42 +00:00
fs_xz.o \
2016-08-25 00:12:14 +00:00
m_download.o \
2005-01-23 17:44:11 +00:00
mathlib.o \
huff.o \
md4.o \
2012-04-10 10:51:52 +00:00
sha1.o \
2020-03-25 21:29:30 +00:00
sha2.o \
2005-09-27 19:48:42 +00:00
log.o \
2005-01-23 17:44:11 +00:00
net_chan.o \
net_wins.o \
2013-11-21 23:02:28 +00:00
net_ice.o \
2015-05-16 15:57:04 +00:00
httpclient.o \
2005-01-23 17:44:11 +00:00
zone.o \
2005-12-17 22:50:02 +00:00
qvm.o \
2011-02-27 02:04:36 +00:00
r_d3.o \
2005-01-23 17:44:11 +00:00
gl_q2bsp.o \
glmod_doom.o \
2010-11-07 02:12:35 +00:00
world.o \
2011-10-29 19:01:33 +00:00
sv_phys.o \
2010-11-07 03:58:09 +00:00
sv_move.o \
2005-01-23 17:44:11 +00:00
pmove.o \
pmovetst.o \
iwebiface.o \
translate.o \
plugin.o \
q1bsp.o \
q2pmove.o
2017-02-19 00:15:42 +00:00
2022-03-08 05:32:38 +00:00
i f e q ( 1 , $( LINK_QUAKE 3) )
2022-03-08 05:33:52 +00:00
VPATH := $( VPATH) : $( BASE_DIR) /../plugins/quake3 : $( BASE_DIR) /../plugins/quake3/botlib
ALL_CFLAGS += -DBOTLIB -DBOTLIB_STATIC -DSTATIC_Q3
COMMON_OBJS += \
2022-03-08 05:31:34 +00:00
clq3_parse.o \
2022-03-08 05:33:52 +00:00
clq3_ui.o \
clq3_cg.o \
2022-03-08 05:31:34 +00:00
svq3_game.o \
2022-03-08 05:33:52 +00:00
q3common.o \
2017-02-19 00:15:42 +00:00
be_aas_bspq3.o \
be_aas_cluster.o \
be_aas_debug.o \
be_aas_entity.o \
be_aas_file.o \
be_aas_main.o \
be_aas_move.o \
be_aas_optimize.o \
be_aas_reach.o \
be_aas_route.o \
be_aas_routealt.o \
be_aas_sample.o \
be_ai_char.o \
be_ai_chat.o \
be_ai_gen.o \
be_ai_goal.o \
be_ai_move.o \
be_ai_weap.o \
be_ai_weight.o \
be_ea.o \
be_interface.o \
l_crc.o \
l_libvar.o \
l_log.o \
l_memory.o \
l_precomp.o \
l_script.o \
l_struct.o
e n d i f
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
COMMONLIBFLAGS ?=
COMMONLDDEPS ?=
2018-10-13 06:20:49 +00:00
CLIENTLIBFLAGS = $( COMMONLIBFLAGS) $( LIBOPUS_STATIC) $( LIBSPEEX_STATIC) $( OGGVORBISFILE_STATIC)
2018-08-04 19:00:19 +00:00
SERVERLIBFLAGS = $( COMMONLIBFLAGS)
2018-10-13 06:20:49 +00:00
CLIENTLDDEPS = $( COMMONLDDEPS) $( LIBOPUS_LDFLAGS) $( LIBSPEEX_LDFLAGS) $( OGGVORBISLDFLAGS)
2018-08-04 19:00:19 +00:00
SERVERLDDEPS = $( COMMONLDDEPS)
2017-11-24 18:40:17 +00:00
i f e q ( 1 , $( USE_OPUS ) )
2020-06-12 23:29:58 +00:00
LIBOPUS_STATIC = -DOPUS_STATIC
LIBOPUS_LDFLAGS = -lopus
ALL_CFLAGS += -I/usr/include/opus
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
MAKELIBS += libs-$( ARCH) /libopus.a
2017-11-24 18:40:17 +00:00
e n d i f
2018-03-24 04:02:09 +00:00
i f e q ( 1 , $( USE_SPEEX ) )
2020-06-12 23:29:58 +00:00
LIBSPEEX_STATIC = -DSPEEX_STATIC
LIBSPEEX_LDFLAGS = -lspeex -lspeexdsp
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
MAKELIBS += libs-$( ARCH) /libspeex.a libs-$( ARCH) /libspeexdsp.a
2018-03-24 04:02:09 +00:00
e n d i f
2017-11-24 18:40:17 +00:00
2017-02-19 00:15:42 +00:00
i f e q ( 1 , $( USE_VORBISFILE ) )
2020-06-12 23:29:58 +00:00
OGGVORBISFILE_STATIC = -DLIBVORBISFILE_STATIC
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
OGGVORBISLDFLAGS ?= -lvorbisfile -lvorbis -logg
2017-02-19 00:15:42 +00:00
e l s e
2020-06-12 23:29:58 +00:00
OGGVORBISLDFLAGS =
OGGVORBISFILE_STATIC =
2017-02-19 00:15:42 +00:00
e n d i f
2020-06-12 23:29:58 +00:00
#freetype is annoying.
2018-08-25 02:53:45 +00:00
i f e q ( 1 , $( LINK_FREETYPE ) )
2020-06-12 23:29:58 +00:00
CLIENTLIBFLAGS += -DFREETYPE_STATIC
CLIENTLDDEPS += $( FREETYPE_LDFLAGS)
e n d i f
i f n e q ( "$(wildcard $(ARCHLIBS))" , "" )
#makelibs has been used. we know what to use here.
FREETYPE_CFLAGS:=
FREETYPE_LDFLAGS:= -lfreetype
e l s e
#we're using system libraries... lets hope pkg-config knows it and can handle any cross compiles.
FREETYPE_CFLAGS:= $( shell $( PKGCONFIG) freetype2 --cflags --silence-errors)
FREETYPE_LDFLAGS:= $( shell $( PKGCONFIG) freetype2 --libs --silence-errors)
ifeq ( ,$( FREETYPE_CFLAGS) )
#system freetype headers not installed. don't try to include them!
FREETYPE_CFLAGS:= -DNO_FREETYPE
FREETYPE_LDFLAGS:=
endif
2018-03-24 04:02:09 +00:00
e n d i f
2020-01-09 15:35:40 +00:00
ALL_CFLAGS += $( FREETYPE_CFLAGS)
2020-06-12 23:29:58 +00:00
2018-08-25 02:53:45 +00:00
i f e q ( 1 , $( LINK_PNG ) )
2020-06-12 23:29:58 +00:00
CLIENTLIBFLAGS += -DLIBPNG_STATIC
CLIENTLDDEPS += -lpng
2018-08-25 02:53:45 +00:00
e n d i f
2019-09-29 02:16:34 +00:00
i f e q ( 1 , $( LINK_JPEG ) )
2020-06-12 23:29:58 +00:00
CLIENTLIBFLAGS += -DLIBJPEG_STATIC
CLIENTLDDEPS += -ljpeg
2019-09-29 02:16:34 +00:00
e n d i f
i f e q ( 1 , $( LINK_ZLIB ) )
2020-06-12 23:29:58 +00:00
CLIENTLIBFLAGS += -DZLIB_STATIC
CLIENTLDDEPS += -lz
2023-03-27 12:53:40 +00:00
#and deflate64, because why not.
ifneq ( " $( wildcard $( ARCHLIBS) /infback9.h) " ,"" )
CLIENTLIBFLAGS += -DZLIB_DEFLATE64
CLIENTLDDEPS += -lz9
QCC_CFLAGS += -DZLIB_DEFLATE64
QCC_LDFLAGS += -lz9
endif
2019-09-29 02:16:34 +00:00
e n d i f
2022-05-28 17:58:53 +00:00
i f e q ( 1 , $( LINK_ODE ) )
ALL_CFLAGS += $( shell $( PKGCONFIG) ode --cflags --silence-errors) -DODE_STATIC
COMMONLDDEPS += $( shell $( PKGCONFIG) ode --libs --silence-errors)
e n d i f
2018-07-05 16:21:44 +00:00
i f e q ( 1 , $( strip $ ( INTERNAL_BULLET ) ) )
2020-06-12 23:29:58 +00:00
COMMON_OBJS += com_phys_bullet.o
ALL_CFLAGS += -I/usr/include/bullet -I$( ARCHLIBS) /bullet3-$( BULLETVER) /src
COMMONLDDEPS += -lBulletDynamics -lBulletCollision -lLinearMath
LDCC = $( CXX)
MAKELIBS += libs-$( ARCH) /libBulletDynamics.a
2018-07-05 16:21:44 +00:00
e n d i f
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
i f e q ( 1 , $( LINK_EZHUD ) )
VPATH := $( VPATH) : $( BASE_DIR) /../plugins/ezhud
ALL_CFLAGS += -DSTATIC_EZHUD #let the plugins code know it needs to add the appropriate entry.
CLIENT_OBJS += \
ezquakeisms.o \
hud.o \
hud_common.o \
hud_editor.o
e n d i f
i f e q ( 1 , $( LINK_OPENSSL ) )
ifeq ( 1,$( shell $( PKGCONFIG) --version-atleast 3 openssl && echo 1) ) #must exist... and if its not openssl3 then its not gpl3-compatible so refuse to use it.
VPATH := $( VPATH) : $( BASE_DIR) /../plugins
ALL_CFLAGS += -DSTATIC_OPENSSL #let the plugins code know it needs to add the appropriate entry.
COMMON_OBJS += \
net_ssl_openssl.o
ALL_DFLAGS += $( shell $( PKGCONFIG) openssl --cflags --silence-errors)
COMMONLDDEPS += $( shell $( PKGCONFIG) openssl --libs --silence-errors)
endif
e n d i f
i f e q ( 1 , $( shell $ ( PKGCONFIG ) --exists gnutls && echo 1) )
ALL_CFLAGS += $( shell $( PKGCONFIG) gnutls --cflags --silence-errors)
#ALL_CFLAGS+=-DGNUTLS_STATIC
#COMMONLDDEPS+=$(shell $(PKGCONFIG) gnutls --static --libs --silence-errors) #we soft-link, so we don't need the -lgnutls stuff.
e l s e
ALL_CFLAGS += -DNO_GNUTLS
e n d i f
2005-01-23 17:44:11 +00:00
#the defaults for sdl come first
2015-05-16 15:51:39 +00:00
#CC_MACHINE:=$(shell $(CC) -dumpmachine)
2014-02-09 09:25:28 +00:00
i f e q ( $( FTE_TARGET ) , S D L 2 )
2020-06-12 23:29:58 +00:00
SDLCONFIG?= sdl2-config
FTE_FULLTARGET?= sdl2$( BITS)
2014-02-09 09:25:28 +00:00
e n d i f
2016-07-15 12:26:24 +00:00
i f e q ( $( FTE_TARGET ) , S D L 1 )
2020-06-12 23:29:58 +00:00
SDLCONFIG?= sdl-config
FTE_FULLTARGET?= sdl1$( BITS)
2016-07-15 12:26:24 +00:00
e n d i f
2014-02-09 09:25:28 +00:00
i f e q ( $( FTE_TARGET ) , S D L )
2020-06-12 23:29:58 +00:00
FTE_FULLTARGET?= sdl$( BITS)
2014-02-09 09:25:28 +00:00
e n d i f
SDLCONFIG ?= sdl-config
FTE_FULLTARGET ?= sdl$( FTE_TARGET) $( BITS)
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o
2017-02-19 00:15:42 +00:00
GL_EXE_NAME = ../$( EXE_NAME) -gl$( FTE_FULLTARGET)
GLCL_EXE_NAME = ../$( EXE_NAME) cl-gl$( FTE_FULLTARGET)
2014-02-09 09:25:28 +00:00
2014-02-07 08:38:40 +00:00
#SDLCONFIG:=libs/sdl2_mingw/$(CC_MACHINE)/bin/sdl2-config --prefix=libs/sdl2_mingw/$(CC_MACHINE)
2005-01-23 17:44:11 +00:00
i f d e f w i n d i r
2014-09-02 04:00:45 +00:00
GL_LDFLAGS = $( GLLDFLAGS) -lmingw32 -lws2_32 ` $( SDLCONFIG) --static-libs`
2017-09-20 11:27:13 +00:00
VK_LDFLAGS = $( VKLDFLAGS) -lmingw32 -lws2_32 ` $( SDLCONFIG) --static-libs`
2015-09-14 15:20:09 +00:00
M_LDFLAGS = $( MLDFLAGS) -lmingw32 -lws2_32 ` $( SDLCONFIG) --static-libs`
2016-07-15 12:26:24 +00:00
SV_LDFLAGS = ` $( SDLCONFIG) --static-libs`
2005-01-23 17:44:11 +00:00
e l s e
2020-11-03 15:52:26 +00:00
GL_LDFLAGS = $( GLLDFLAGS) $( IMAGELDFLAGS) ` $( SDLCONFIG) --libs`
VK_LDFLAGS = $( VKLDFLAGS) $( IMAGELDFLAGS) ` $( SDLCONFIG) --libs`
M_LDFLAGS = $( MLDFLAGS) $( IMAGELDFLAGS) ` $( SDLCONFIG) --libs`
SV_LDFLAGS = ` $( SDLCONFIG) --libs`
2005-01-23 17:44:11 +00:00
e n d i f
2021-11-10 01:35:55 +00:00
GL_CFLAGS = -DFTE_SDL $( GLCFLAGS) -DMULTITHREAD ` $( SDLCONFIG) --cflags`
2014-02-09 09:25:28 +00:00
GLB_DIR = gl_$( FTE_FULLTARGET)
GLCL_DIR = glcl_$( FTE_FULLTARGET)
2016-07-15 12:26:24 +00:00
SV_DIR ?= sv_$( FTE_FULLTARGET)
2005-01-23 17:44:11 +00:00
2022-03-08 05:31:34 +00:00
VKCL_OBJS = $( VKQUAKE_OBJS) $( D3DGL_OBJS) gl_bloom.o gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o
2021-07-25 22:55:17 +00:00
VK_CFLAGS = -DFTE_SDL $( VKCFLAGS) -DMULTITHREAD ` $( SDLCONFIG) --cflags`
2018-06-18 16:44:29 +00:00
VKB_DIR = vk_$( FTE_FULLTARGET)
VKCL_DIR = vk_$( FTE_FULLTARGET)
VK_EXE_NAME = ../$( EXE_NAME) -vk$( FTE_FULLTARGET)
VKCL_EXE_NAME = ../$( EXE_NAME) -vkcl$( FTE_FULLTARGET)
2017-09-20 11:27:13 +00:00
2022-03-08 05:31:34 +00:00
SV_OBJS = $( COMMON_OBJS) $( SERVER_OBJS) $( PROGS_OBJS) $( SERVERONLY_OBJS)
2017-02-19 00:15:42 +00:00
SV_EXE_NAME = ../$( EXE_NAME) -sv$( FTE_FULLTARGET)
2021-07-25 22:55:17 +00:00
SV_CFLAGS = -DFTE_SDL -DMULTITHREAD ` $( SDLCONFIG) --cflags` $( SERVER_ONLY_CFLAGS)
2009-04-07 03:48:32 +00:00
2014-02-09 09:25:28 +00:00
MINGL_DIR = mingl_$( FTE_FULLTARGET)
2017-02-19 00:15:42 +00:00
MINGL_EXE_NAME = ../$( EXE_NAME) -mingl$( FTE_FULLTARGET)
2009-04-07 03:48:32 +00:00
2014-02-09 09:25:28 +00:00
MB_DIR = m_$( FTE_FULLTARGET)
2021-07-25 22:55:17 +00:00
MCL_DIR = mcl_$( FTE_FULLTARGET)
2017-02-19 00:15:42 +00:00
M_EXE_NAME = ../$( EXE_NAME) -$( FTE_FULLTARGET)
2021-07-25 22:55:17 +00:00
MCL_EXE_NAME = ../$( EXE_NAME) -cl$( FTE_FULLTARGET)
2022-03-08 05:31:34 +00:00
MCL_OBJS = $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( SOFTWARE_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o
2021-11-10 01:35:55 +00:00
M_CFLAGS = -DFTE_SDL $( VKCFLAGS) $( GLCFLAGS) -DMULTITHREAD ` $( SDLCONFIG) --cflags`
2009-04-07 03:48:32 +00:00
2016-07-12 00:40:13 +00:00
QCC_DIR = qcc$( BITS)
2014-03-30 00:39:37 +00:00
i f e q ( , $( findstring NO_ZLIB ,$ ( CFLAGS ) ) )
SV_LDFLAGS += -lz
GL_LDFLAGS += -lz
2017-09-20 11:27:13 +00:00
VK_LDFLAGS += -lz
2014-03-30 00:39:37 +00:00
M_LDFLAGS += -lz
2017-04-16 09:27:43 +00:00
QCC_LDFLAGS += -L$( ARCHLIBS) -lz
2014-03-30 00:39:37 +00:00
e n d i f
2005-05-20 08:13:48 +00:00
2005-01-23 17:44:11 +00:00
#specific targets override those defaults as needed.
2005-05-20 08:13:48 +00:00
2011-07-08 09:17:23 +00:00
#FTE_TARGET=win32_SDL | FTE_TARGET=win64_SDL (MinGW32 + SDL | MinGW64 + SDL)
2014-02-13 23:54:57 +00:00
i f e q ( w i n _ S D L , $( findstring win ,$ ( FTE_TARGET ) ) $( findstring _SDL ,$ ( FTE_TARGET ) ) )
2018-08-25 02:53:45 +00:00
DO_CMAKE += -DCMAKE_SYSTEM_NAME= Windows -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM= "NEVER"
2014-02-13 23:54:57 +00:00
ifneq ( ,$( findstring win64,$( FTE_TARGET) ) )
2011-07-08 09:17:23 +00:00
BITS = 64
endif
2013-07-29 18:09:16 +00:00
EXEPOSTFIX = .exe
2014-02-09 09:25:28 +00:00
2015-05-16 15:51:39 +00:00
CC_MACHINE:= $( shell $( CC) -dumpmachine)
2017-05-10 05:05:39 +00:00
ARCH_PREDEP = $( BASE_DIR) /libs/SDL2-$( SDL2VER) /$( CC_MACHINE) /bin/sdl2-config
SDLCONFIG = $( ARCH_PREDEP) --prefix= $( BASE_DIR) /libs/SDL2-$( SDL2VER) /$( CC_MACHINE)
2014-02-13 23:54:57 +00:00
ARCH_CFLAGS = ` $( SDLCONFIG) --cflags`
2009-04-08 08:12:29 +00:00
#the defaults for sdl come first
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $( LTO_END) resources.o $( LTO_START)
2017-02-19 00:15:42 +00:00
GL_EXE_NAME = ../$( EXE_NAME) -sdl-gl$( BITS) $( EXEPOSTFIX)
GLCL_EXE_NAME = ../$( EXE_NAME) -sdl-glcl$( BITS) $( EXEPOSTFIX)
2009-04-08 08:12:29 +00:00
ifdef windir
2014-09-02 04:00:45 +00:00
GL_LDFLAGS = $( GLLDFLAGS) -lmingw32 -lws2_32 ` $( SDLCONFIG) --static-libs`
2017-09-20 11:27:13 +00:00
VK_LDFLAGS = $( GLLDFLAGS) -lmingw32 -lws2_32 ` $( SDLCONFIG) --static-libs`
2015-09-14 15:20:09 +00:00
M_LDFLAGS = $( MLDFLAGS) -lmingw32 -lws2_32 ` $( SDLCONFIG) --static-libs`
2019-10-27 06:59:19 +00:00
SV_LDFLAGS = -lm -lmingw32 -lws2_32 -lwinmm ` $( SDLCONFIG) --static-libs`
QCC_LDFLAGS =
2009-04-08 08:12:29 +00:00
else
2018-08-25 02:53:45 +00:00
GL_LDFLAGS = $( IMAGELDFLAGS) -lws2_32 -lmingw32 $( SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $( GLLDFLAGS) ` $( SDLCONFIG) --libs`
VK_LDFLAGS = $( IMAGELDFLAGS) -lws2_32 -lmingw32 $( SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $( GLLDFLAGS) ` $( SDLCONFIG) --libs`
M_LDFLAGS = $( IMAGELDFLAGS) -lws2_32 -lmingw32 $( SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32 $( MLDFLAGS) ` $( SDLCONFIG) --libs`
2019-10-27 06:59:19 +00:00
SV_LDFLAGS = -lm -lmingw32 -lws2_32 -lwinmm ` $( SDLCONFIG) --libs`
QCC_LDFLAGS =
2009-04-08 08:12:29 +00:00
endif
2011-07-08 09:17:23 +00:00
2019-10-27 06:59:19 +00:00
GL_CFLAGS = -DFTE_SDL $( GLCFLAGS) $( CLIENTLIBFLAGS) $( DX7SDK)
2011-07-08 09:17:23 +00:00
2011-09-16 05:56:54 +00:00
GLB_DIR = gl_mgw_sdl$( BITS)
GLCL_DIR = glcl_mgw_sdl$( BITS)
2009-04-08 08:12:29 +00:00
2022-03-08 05:31:34 +00:00
SV_OBJS = $( COMMON_OBJS) $( SERVER_OBJS) $( PROGS_OBJS) $( WINDOWSSERVERONLY_OBJS) $( LTO_END) resources.o $( LTO_START)
2017-02-19 00:15:42 +00:00
SV_EXE_NAME = ../$( EXE_NAME) -sdl-sv$( BITS) $( EXEPOSTFIX)
2014-02-09 09:25:28 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS) -DFTE_SDL
2009-04-08 08:12:29 +00:00
2011-09-16 05:56:54 +00:00
MINGL_DIR = mingl_sdlwin$( BITS)
2017-02-19 00:15:42 +00:00
MINGL_EXE_NAME = ../$( EXE_NAME) -sdl-mingl$( BITS) $( EXEPOSTFIX)
2009-04-08 08:12:29 +00:00
MB_DIR = m_mgw_sdl$( BITS)
2017-02-19 00:15:42 +00:00
M_EXE_NAME = ../$( EXE_NAME) -sdl$( BITS) $( EXEPOSTFIX)
2017-09-20 11:27:13 +00:00
#with d3d...
2022-03-08 05:31:34 +00:00
#MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(D3DQUAKE_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $(LTO_END) resources.o $(LTO_START)
2019-10-27 06:59:19 +00:00
#M_CFLAGS=$(D3DCFLAGS) $(VKCFLAGS) $(GLCFLAGS) -DFTE_SDL $(CLIENTLIBFLAGS) $(DX7SDK)
2017-09-20 11:27:13 +00:00
#without d3d...
2022-03-08 05:31:34 +00:00
MCL_OBJS = $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( SOFTWARE_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $( LTO_END) resources.o $( LTO_START)
2019-10-27 06:59:19 +00:00
M_CFLAGS = $( VKCFLAGS) $( GLCFLAGS) -DFTE_SDL $( CLIENTLIBFLAGS) $( DX7SDK)
2011-01-28 08:35:19 +00:00
2022-03-08 05:31:34 +00:00
D3DCL_OBJS = $( D3DQUAKE_OBJS) snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $( D3DGL_OBJS) $( LTO_END) resources.o $( LTO_START)
2017-02-19 00:15:42 +00:00
D3D_EXE_NAME = ../$( EXE_NAME) -sdl-d3d$( BITS) $( EXEPOSTFIX)
D3DCL_EXE_NAME = ../$( EXE_NAME) -sdl-d3dcl$( BITS) $( EXEPOSTFIX)
2018-08-25 02:53:45 +00:00
D3D_LDFLAGS = $( IMAGELDFLAGS) -lws2_32 -lmingw32 $( SDL_LDFLAGS) -mwindows -ldxguid -lwinmm -lole32
2019-10-27 06:59:19 +00:00
D3D_CFLAGS = $( D3DCFLAGS) -DFTE_SDL -DNO_XFLIP $( CLIENTLIBFLAGS) $( DX7SDK)
2011-07-08 11:33:26 +00:00
D3DB_DIR = sdl_d3d_mgw$( BITS)
D3DCL_DIR = sdl_d3dcl_mgw$( BITS)
2016-07-12 00:40:13 +00:00
2022-03-08 05:31:34 +00:00
VKCL_OBJS = $( VKQUAKE_OBJS) gl_bloom.o gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o snd_directx.o $( D3DGL_OBJS) $( LTO_END) resources.o $( LTO_START)
2017-02-19 00:15:42 +00:00
VK_EXE_NAME = ../$( EXE_NAME) -sdl-vk$( BITS) $( EXEPOSTFIX)
VKCL_EXE_NAME = ../$( EXE_NAME) -sdl-vkcl$( BITS) $( EXEPOSTFIX)
2019-10-27 06:59:19 +00:00
VK_CFLAGS = $( VKCFLAGS) -DFTE_SDL -DNO_XFLIP $( CLIENTLIBFLAGS) $( DX7SDK)
2016-07-12 00:40:13 +00:00
VKB_DIR = sdl_vk_mgw$( BITS)
VKCL_DIR = sdl_vkcl_mgw$( BITS)
2011-01-28 08:35:19 +00:00
2017-09-20 11:27:13 +00:00
ifeq ( $( shell echo $( FTE_TARGET) | grep -E -i -v "win32.*sdl" ) ,)
GL_CFLAGS += -D_MINGW_VFPRINTF
VK_CFLAGS += -D_MINGW_VFPRINTF
D3D_CFLAGS += -D_MINGW_VFPRINTF
M_CFLAGS += -D_MINGW_VFPRINTF
endif
2009-04-08 08:12:29 +00:00
e n d i f
2011-07-08 09:17:23 +00:00
#FTE_TARGET=vc (Visual C)
2021-08-04 21:17:31 +00:00
i f e q ( $( findstring msvc ,$ ( FTE_TARGET ) ) , m s v c )
#assumptions...
ifneq ( $( shell uname -o 2>& 1 | grep Cygwin) ,)
#we're on cygwin
MSVCPATH?= C:/Program Files ( x86) /Microsoft Visual Studio 8/VC/
WINDOWSSDKDIR?= C:/Program Files/Microsoft SDKs/Windows/v7.1/
FIXPATH = ` cygpath -m " $( 1) " `
INVOKE = " $( 1) "
else
#we're PROBABLY on linux (invoke it via wine)
#MSVCPATH=/mnt/win/Program Files (x86)/Microsoft Visual Studio 10.0/VC/
MSVCPATH?= /mnt/win/Program Files ( x86) /Microsoft Visual Studio 8/VC/
WINDOWSSDKDIR?= /mnt/win/Program Files/Microsoft SDKs/Windows/v7.1/
#functions to handle wine (or cygwin)
FIXPATH = ` winepath -w " $( 1) " `
INVOKE = WINEDEBUG = -all WINEPATH = " $( WINEPATH) " wine " $( 1) "
endif
2012-12-04 19:37:57 +00:00
2021-08-04 21:17:31 +00:00
#our msvc library naming still assumes 32bit and thus no postfix for that target (microsoft usually reuse '32' for 64bit libraries too...).
ifeq ( $( BITS) ,32)
LIBBITS =
else
LIBBITS = $( BITS)
endif
2012-12-04 19:37:57 +00:00
2021-08-04 21:17:31 +00:00
#evil lameness.
LIBS_DIR = ./libs/
2014-03-30 08:55:06 +00:00
2021-08-04 21:17:31 +00:00
ifeq ( $( BITS) ,64)
MSVC_ARCH = amd64/
WINSDK_ARCH = x64/
WINEPATH =
else
MSVC_ARCH =
WINSDK_ARCH =
WINEPATH = $( MSVCPATH) ../Common7/IDE/
endif
2014-03-30 08:55:06 +00:00
2021-08-04 21:17:31 +00:00
LIBOPUS_STATIC =
2014-03-30 08:55:06 +00:00
2021-08-04 21:17:31 +00:00
#-I"$(MSVCPATH)/ATLMFC/INCLUDE"
MSVCINC += -I" $( shell winepath -w " $( MSVCPATH) INCLUDE " ) "
MSVCINC += -I" $( shell winepath -w " $( WINDOWSSDKDIR) /Include " ) "
#-I"$(MSVCPATH)PlatformSDK/include"
#-I"$(MSVCPATH)../SDK/v2.0/include"
2014-03-30 08:55:06 +00:00
2021-08-04 21:17:31 +00:00
MSVCLIB += /libpath:" $( call FIXPATH,$( MSVCPATH) lib/$( MSVC_ARCH) ) "
MSVCLIB += /libpath:" $( call FIXPATH,$( WINDOWSSDKDIR) Lib/$( WINSDK_ARCH) ) "
MSVCLIB += /libpath:" $( call FIXPATH,$( LIBS_DIR) ) "
2012-12-04 19:37:57 +00:00
2021-08-04 21:17:31 +00:00
ARCHLIBS:= $( call FIXPATH,$( ARCHLIBS) )
2014-03-30 08:55:06 +00:00
2021-08-04 21:17:31 +00:00
MSVCINC:= $( MSVCINC)
DO_WINDRES = $( DO_ECHO) $( WINDRES) /nologo $( BRANDFLAGS) $( MSVCINC) -I$( call FIXPATH,$( CLIENT_DIR) ) -fo $( call FIXPATH,$@ ) $( call FIXPATH,$<)
WINDRES = $( call INVOKE,$( WINDOWSSDKDIR) Bin/$( WINSDK_ARCH) RC.exe)
LINK:= $( call INVOKE,$( MSVCPATH) /bin/$( MSVC_ARCH) link.exe)
CC:= $( call INVOKE,$( MSVCPATH) /bin/$( MSVC_ARCH) cl.exe) $( MSVCINC) -DMSVCLIBSPATH= libs/
CXX = $( CC)
2014-03-30 08:55:06 +00:00
2021-08-04 21:17:31 +00:00
#library stuff... we'll be breaking attempts to statically link because deps are too painful otherwise.
BASELDFLAGS =
CLIENTLIBFLAGS =
SERVERLIBFLAGS =
CLIENTLDDEPS =
SERVERLDDEPS =
2014-03-30 08:55:06 +00:00
2021-08-04 21:17:31 +00:00
#override various flags that expected gcc.
DEBUG_CFLAGS = -Od $( CPUOPTIMIZATIONS) /fp:fast
RELEASE_CFLAGS = -O2 -Gy -GS- $( CPUOPTIMIZATIONS) /fp:fast
RELEASE_LDFLAGS = /LTCG
#we need some command tweaks.
DO_CC = $( DO_ECHO) $( CC) /nologo $( ALL_CFLAGS) -Fo" $( call FIXPATH,$@ ) " -c " $( call FIXPATH,$<) "
DO_CXX = $( DO_ECHO) $( CXX) /nologo $( ALL_CFLAGS) -Fo" $( call FIXPATH,$@ ) " -c " $( call FIXPATH,$<) "
DO_LD = $( DO_ECHO) PATH = " $( MSVCPATH) /Common7/IDE: $( PATH) " $( LINK) /nologo /out:" $( call FIXPATH,$@ ) " /nodefaultlib:libc.lib /LARGEADDRESSAWARE /nodefaultlib:MSVCRT $( MSVCLIB) $( SDKLIB) /manifest:no /OPT:REF wsock32.lib user32.lib kernel32.lib advapi32.lib winmm.lib libs/zlib$( LIBBITS) .lib shell32.lib
2019-07-02 04:12:20 +00:00
STRIP = @echo SKIP: strip
2013-07-29 18:09:16 +00:00
EXEPOSTFIX = .exe
2012-12-04 19:37:57 +00:00
2021-08-04 21:17:31 +00:00
#gotta work around a whole load of paths.
BASE_CFLAGS:= $( WARNINGFLAGS) $( GNUC_FUNCS) -I$( call FIXPATH,$( CLIENT_DIR) ) -I$( call FIXPATH,$( SERVER_DIR) ) -I$( call FIXPATH,$( COMMON_DIR) ) -I$( call FIXPATH,$( GL_DIR) ) -I$( call FIXPATH,$( D3D_DIR) ) -I$( call FIXPATH,$( PROGS_DIR) ) -I. -I$( LIBS_DIR) -I$( LIBS_DIR) /dxsdk9/include -I$( LIBS_DIR) /dxsdk7/include $( SDL_INCLUDES) $( BOTLIB_CFLAGS) $( SVNREVISION)
2009-11-04 21:16:50 +00:00
2021-08-04 21:17:31 +00:00
#this stuff isn't supported.
PRECOMPHEADERS =
2013-05-11 05:03:07 +00:00
DEPCC =
2018-08-04 19:00:19 +00:00
DEPCXX =
2009-11-04 21:16:50 +00:00
2021-08-04 21:17:31 +00:00
#dedicated server stuff
2015-08-04 15:16:24 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS) $( W32_CFLAGS) -DMULTITHREAD -DMSVCLIBPATH= libs/
2017-02-19 00:15:42 +00:00
SV_EXE_NAME = ../$( EXE_NAME) -sv$( BITS) $( EXEPOSTFIX)
2012-12-04 19:37:57 +00:00
SV_DIR = sv_vc$( BITS)
2022-03-08 05:31:34 +00:00
SV_OBJS = $( COMMON_OBJS) $( SERVER_OBJS) $( PROGS_OBJS) $( WINDOWSSERVERONLY_OBJS) fs_win32.o resources.o
2021-08-04 21:17:31 +00:00
SV_LDFLAGS = ole32.lib /subsystem:console
2012-12-04 19:37:57 +00:00
2017-02-19 00:15:42 +00:00
GL_EXE_NAME = ../$( EXE_NAME) -gl$( BITS) $( EXEPOSTFIX)
GLCL_EXE_NAME = ../$( EXE_NAME) -mingl$( BITS)
2012-12-04 19:37:57 +00:00
GLB_DIR = gl_vc$( BITS)
GLCL_DIR = glcl_vc$( BITS)
GL_LDFLAGS = $( GLLDFLAGS) $( JPEGLIB) libs/libpng$( BITS) .lib uuid.lib gdi32.lib ole32.lib /subsystem:windows
2018-03-24 04:02:09 +00:00
GL_CFLAGS = $( GLCFLAGS) $( W32_CFLAGS) -DMULTITHREAD -DMSVCLIBPATH= libs/
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidnt.o $( WINDOWS_OBJS)
2012-12-04 19:37:57 +00:00
GL_OBJS =
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
MINGL_DIR = mingl_vc$( BITS)
2017-02-19 00:15:42 +00:00
MINGL_EXE_NAME = ../$( EXE_NAME) -mingl$( BITS) $( EXEPOSTFIX)
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
2022-03-08 05:31:34 +00:00
VKCL_OBJS = $( VKQUAKE_OBJS) $( D3DGL_OBJS) gl_bloom.o gl_vidnt.o $( WINDOWS_OBJS)
2021-08-04 21:17:31 +00:00
VK_EXE_NAME = ../$( EXE_NAME) -vk$( BITS) $( EXEPOSTFIX)
VKCL_EXE_NAME = ../$( EXE_NAME) -vkcl$( BITS) $( EXEPOSTFIX)
VK_CFLAGS = $( VKCFLAGS) $( CLIENTLIBFLAGS) $( DX7SDK) -DMULTITHREAD -DMSVCLIBPATH= libs/
VK_LDFLAGS = $( JPEGLIB) libs/libpng$( BITS) .lib uuid.lib gdi32.lib ole32.lib /subsystem:windows
VKB_DIR = vk_vc$( BITS)
VKCL_DIR = vkcl_vc$( BITS)
2022-03-08 05:31:34 +00:00
D3DCL_OBJS = $( D3DQUAKE_OBJS) $( D3DGL_OBJS) $( WINDOWS_OBJS)
2017-02-19 00:15:42 +00:00
D3D_EXE_NAME = ../$( EXE_NAME) -d3d$( BITS) $( EXEPOSTFIX)
D3DCL_EXE_NAME = ../$( EXE_NAME) -d3dcl$( BITS) $( EXEPOSTFIX)
2013-03-12 22:35:33 +00:00
D3D_LDFLAGS = $( JPEGLIB) libs/libpng$( BITS) .lib uuid.lib gdi32.lib ole32.lib /subsystem:windows
2018-03-24 04:02:09 +00:00
D3D_CFLAGS = $( D3DCFLAGS) $( W32_CFLAGS) $( DX7SDK) -DMULTITHREAD -DMSVCLIBPATH= libs/
2012-12-04 19:37:57 +00:00
D3DB_DIR = d3d_vc$( BITS)
D3DCL_DIR = d3dcl_vc$( BITS)
2021-08-04 21:17:31 +00:00
#merged client stuff
2022-03-08 05:31:34 +00:00
MCL_OBJS = $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( SOFTWARE_OBJS) $( D3DQUAKE_OBJS) gl_vidnt.o gl_videgl.o $( WINDOWS_OBJS)
2017-02-19 00:15:42 +00:00
M_EXE_NAME = ../$( EXE_NAME) $( BITS) $( EXEPOSTFIX)
2021-08-04 21:17:31 +00:00
MCL_EXE_NAME = ../$( EXE_NAME) cl$( BITS) $( EXEPOSTFIX)
M_CFLAGS = $( GLCFLAGS) $( W32_CFLAGS) $( D3DCFLAGS) $( DX7SDK) $( VKCFLAGS) -DMULTITHREAD $( CLIENTLIBFLAGS)
2012-12-04 19:37:57 +00:00
MB_DIR = m_vc$( BITS)
2021-08-04 21:17:31 +00:00
MCL_DIR = mcl_vc$( BITS)
M_LDFLAGS = $( GLLDFLAGS) $( JPEGLIB) libs/libpng$( LIBBITS) .lib uuid.lib gdi32.lib ole32.lib /subsystem:windows
2009-11-04 21:16:50 +00:00
e n d i f
2011-07-08 09:17:23 +00:00
#FTE_TARGET=win32 | FTE_TARGET=win64 (MinGW32 | MinGW64)
2014-02-13 23:54:57 +00:00
i f e q ( w i n , $( findstring win ,$ ( FTE_TARGET ) ) $( findstring _SDL ,$ ( FTE_TARGET ) ) )
2007-10-25 17:59:01 +00:00
# The extra object file called resources.o is specific for MinGW to link the icon in
2018-08-25 02:53:45 +00:00
# DO_CMAKE+=-DCMAKE_SYSTEM_NAME=Windows -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="NEVER"
DO_CMAKE = cmake -DCMAKE_TOOLCHAIN_FILE= /home/spike/fteqw/fteqw-code/cmakesucks.cmake -DBUILD_SHARED_LIBS= OFF -DCMAKE_SYSTEM_NAME= Windows -DCMAKE_C_COMPILER= " $( firstword $( CC) ) " -DCMAKE_C_FLAGS= " $( wordlist 2,99,$( CC) ) " -DCMAKE_CXX_COMPILER= " $( firstword $( CXX) ) " -DCMAKE_CXX_FLAGS= " $( wordlist 2,99,$( CXX) ) "
2006-10-05 21:59:43 +00:00
#cygwin's gcc requires an extra command to use mingw instead of cygwin (default paths, etc).
2013-12-02 14:30:30 +00:00
ifneq ( $( shell $( CC) -dumpmachine 2>& 1 | grep cygwin) ,)
2006-10-05 21:59:43 +00:00
W32_CFLAGS = -mno-cygwin
endif
2011-07-08 09:17:23 +00:00
2011-07-08 10:38:56 +00:00
ifeq ( $( FTE_TARGET) ,win64)
2011-07-08 09:17:23 +00:00
BITS = 64
endif
2016-07-12 00:40:13 +00:00
QCC_DIR = winqcc$( BITS)
2006-10-05 21:59:43 +00:00
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
BASELDFLAGS =
2015-04-21 23:11:26 +00:00
2012-10-22 14:26:47 +00:00
# Allow 32bit FTE to access beyond the 2GB address space
ifeq ( $( FTE_TARGET) ,win32)
BASELDFLAGS = -Wl,--large-address-aware
endif
2019-12-10 14:36:53 +00:00
#Note: for deterministic builds, the following line disables timestamps for import/export tables. This is UNSAFE if there are any PE files bound to the compiled PE file. Our plugin dlls are dynamically loaded so this should not be an issue for us.
BASELDFLAGS += -Wl,--no-insert-timestamp
2020-08-16 04:40:13 +00:00
DEBUG_LDFLAGS = -Wl,--no-dynamicbase #debug builds are useful for catching crashes. the resulting stack traces are not very useful if we don't even know what the base address should be.
RELEASE_LDFLAGS = -Wl,--dynamicbase #release builds should attempt to use aslr
2012-10-22 14:26:47 +00:00
2015-04-21 23:11:26 +00:00
BASELDFLAGS += -lcomctl32
2013-07-29 18:09:16 +00:00
EXEPOSTFIX = .exe
2006-10-05 21:59:43 +00:00
2019-02-16 19:09:07 +00:00
QTV_LDFLAGS = -lws2_32 -lwinmm
2017-02-19 00:15:42 +00:00
SV_EXE_NAME = ../$( EXE_NAME) sv$( BITS) $( EXEPOSTFIX)
2019-11-20 05:27:43 +00:00
SV_LDFLAGS = -lws2_32 -lwinmm -lole32
2011-07-08 11:33:26 +00:00
SV_DIR = sv_mingw$( BITS)
2022-03-08 05:31:34 +00:00
SV_OBJS = $( COMMON_OBJS) $( SERVER_OBJS) $( PROGS_OBJS) $( WINDOWSSERVERONLY_OBJS) fs_win32.o $( LTO_END) resources.o $( LTO_START)
2016-07-15 12:26:24 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS) $( W32_CFLAGS)
2005-05-20 08:13:48 +00:00
2009-04-03 07:31:54 +00:00
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidnt.o $( WINDOWS_OBJS)
2013-07-29 18:09:16 +00:00
GL_EXE_NAME = ../fteglqw$( BITS) $( EXEPOSTFIX)
GLCL_EXE_NAME = ../fteglqwcl$( BITS) $( EXEPOSTFIX)
2018-08-25 02:53:45 +00:00
GL_LDFLAGS = $( GLLDFLAGS) $( IMAGELDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows
2018-03-24 04:02:09 +00:00
GL_CFLAGS = $( GLCFLAGS) $( W32_CFLAGS) $( DX7SDK) -DMULTITHREAD $( CLIENTLIBFLAGS)
2011-07-08 11:33:26 +00:00
GLB_DIR = gl_mgw$( BITS)
GLCL_DIR = glcl_mgw$( BITS)
2005-01-23 17:44:11 +00:00
2022-03-08 05:31:34 +00:00
MCL_OBJS = $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( SOFTWARE_OBJS) $( D3DQUAKE_OBJS) gl_vidnt.o gl_videgl.o $( WINDOWS_OBJS)
2017-02-19 00:15:42 +00:00
M_EXE_NAME = ../$( EXE_NAME) $( BITS) $( EXEPOSTFIX)
MCL_EXE_NAME = ../$( EXE_NAME) cl$( BITS) $( EXEPOSTFIX)
2018-08-25 02:53:45 +00:00
M_LDFLAGS = $( GLLDFLAGS) $( IMAGELDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows
2018-03-24 04:02:09 +00:00
M_CFLAGS = $( GLCFLAGS) $( W32_CFLAGS) $( D3DCFLAGS) $( DX7SDK) $( VKCFLAGS) -DMULTITHREAD $( CLIENTLIBFLAGS)
2011-07-08 11:33:26 +00:00
MB_DIR = m_mgw$( BITS)
MCL_DIR = mcl_mgw$( BITS)
2005-01-23 17:44:11 +00:00
2022-03-08 05:31:34 +00:00
D3DCL_OBJS = $( D3DQUAKE_OBJS) $( D3DGL_OBJS) $( WINDOWS_OBJS)
2013-07-29 18:09:16 +00:00
D3D_EXE_NAME = ../fted3dqw$( BITS) $( EXEPOSTFIX)
D3DCL_EXE_NAME = ../fted3dclqw$( BITS) $( EXEPOSTFIX)
2018-08-25 02:53:45 +00:00
D3D_LDFLAGS = $( IMAGELDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows
2018-03-24 04:02:09 +00:00
D3D_CFLAGS = $( D3DCFLAGS) $( W32_CFLAGS) $( DX7SDK) -DMULTITHREAD $( CLIENTLIBFLAGS)
2011-07-08 11:33:26 +00:00
D3DB_DIR = d3d_mgw$( BITS)
D3DCL_DIR = d3dcl_mgw$( BITS)
2007-09-17 20:35:39 +00:00
2022-03-08 05:31:34 +00:00
VKCL_OBJS = $( GLQUAKE_OBJS) $( D3DGL_OBJS) $( WINDOWS_OBJS) gl_vidnt.o
2016-07-12 00:40:13 +00:00
VK_EXE_NAME = ../ftevkqw$( BITS) $( EXEPOSTFIX)
VKCL_EXE_NAME = ../ftevkclqw$( BITS) $( EXEPOSTFIX)
2018-08-25 02:53:45 +00:00
VK_LDFLAGS = $( IMAGELDFLAGS) -ldxguid -lws2_32 -lwinmm -lgdi32 -lole32 -Wl,--subsystem,windows
2018-03-24 04:02:09 +00:00
VK_CFLAGS = $( VKCFLAGS) $( W32_CFLAGS) $( DX7SDK) -DMULTITHREAD $( CLIENTLIBFLAGS)
2016-07-12 00:40:13 +00:00
VKB_DIR = vk_mgw$( BITS)
VKCL_DIR = vkcl_mgw$( BITS)
2013-07-29 18:09:16 +00:00
MINGL_EXE_NAME = ../fteminglqw$( BITS) $( EXEPOSTFIX)
2011-07-08 11:33:26 +00:00
MINGL_DIR = mingl_mgw$( BITS)
2015-09-01 04:45:15 +00:00
2019-09-29 02:16:34 +00:00
ifeq ( ,$( findstring NO_ZLIB,$( CFLAGS) ) )
SV_LDFLAGS += -lz
GL_LDFLAGS += -lz
VK_LDFLAGS += -lz
M_LDFLAGS += -lz
QCC_LDFLAGS += -L$( ARCHLIBS) -lz
endif
2015-09-01 04:45:15 +00:00
ifeq ( $( NOCOMPAT) ,1)
2016-08-25 00:12:14 +00:00
SV_EXE_NAME = ../engine-sv$( BITS) $( EXEPOSTFIX)
GL_EXE_NAME = ../engine-gl$( BITS) $( EXEPOSTFIX)
VK_EXE_NAME = ../engine-vk$( BITS) $( EXEPOSTFIX)
2015-09-01 04:45:15 +00:00
M_EXE_NAME = ../engine$( BITS) $( EXEPOSTFIX)
2016-08-25 00:12:14 +00:00
D3D_EXE_NAME = ../engine-d3d$( BITS) $( EXEPOSTFIX)
MINGL_EXE_NAME = ../engine-mingl$( BITS) $( EXEPOSTFIX)
2015-09-01 04:45:15 +00:00
endif
2005-01-23 17:44:11 +00:00
e n d i f
2010-12-08 14:42:05 +00:00
2005-05-20 08:13:48 +00:00
i f e q ( $( FTE_TARGET ) , b s d )
#mostly uses the linux stuff.
#oss, X, etc.
2019-08-11 23:35:23 +00:00
CC = cc
CXX = c++
2018-05-19 05:07:30 +00:00
SV_DIR = sv_bsd
SV_EXE_NAME = ../$( EXE_NAME) -sv$( BITS)
2018-05-19 05:11:09 +00:00
SV_LDFLAGS = -lpthread
2018-05-19 05:07:30 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS) -DMULTITHREAD
2005-05-20 08:13:48 +00:00
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o
2017-02-19 00:15:42 +00:00
GL_EXE_NAME = ../$( EXE_NAME) -gl
GLCL_EXE_NAME = ../$( EXE_NAME) -glcl
2013-04-06 08:30:43 +00:00
GL_LDFLAGS = -L/usr/local/lib $( GLLDFLAGS) $( XLDFLAGS) -lpthread
2021-06-01 08:33:06 +00:00
GL_CFLAGS = $( GLCFLAGS) -I/usr/local/include -I/usr/X11R6/include -I/usr/X11R6/include/freetype2 -DMULTITHREAD -DAUDIO_OSS
2005-05-20 08:13:48 +00:00
GLB_DIR = gl_bsd
GLCL_DIR = glcl_bsd
2022-03-08 05:31:34 +00:00
MCL_OBJS = $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( SOFTWARE_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o
2017-02-19 00:15:42 +00:00
M_EXE_NAME = ../$( EXE_NAME)
MCL_EXE_NAME = ../$( EXE_NAME) -cl
2019-07-30 23:34:18 +00:00
M_LDFLAGS = -L/usr/local/lib -L/usr/X11R6/lib $( GLLDFLAGS) $( XLDFLAGS) -lpthread
2020-07-14 00:48:56 +00:00
M_CFLAGS = $( VKCFLAGS) $( GLCFLAGS) -I/usr/local/include -I/usr/X11R6/include -I/usr/X11R6/include/freetype2 -DMULTITHREAD -DAUDIO_OSS
2005-05-20 08:13:48 +00:00
MB_DIR = m_bsd
MCL_DIR = mcl_bsd
2007-10-20 19:52:02 +00:00
2017-02-19 00:15:42 +00:00
MINGL_EXE_NAME = ../$( EXE_NAME) -mingl
2007-10-20 19:52:02 +00:00
MINGL_DIR = mingl_bsd
2018-05-19 05:07:30 +00:00
2018-05-19 05:11:09 +00:00
#openbsd has a special library for oss emulation.
2018-05-19 05:07:30 +00:00
ifeq ( $( shell uname -s) ,OpenBSD)
2019-08-12 02:32:18 +00:00
GL_LDFLAGS += -lossaudio -lfreetype
VK_LDFLAGS += -lossaudio -lfreetype
M_LDFLAGS += -lossaudio -lfreetype
M_CFLAGS += -DFREETYPE_STATIC
VK_CFLAGS += -DFREETYPE_STATIC
GL_CFLAGS += -DFREETYPE_STATIC
2018-05-19 05:07:30 +00:00
endif
ifeq ( ,$( findstring NO_ZLIB,$( CFLAGS) ) )
SV_LDFLAGS += -lz
GL_LDFLAGS += -lz
VK_LDFLAGS += -lz
M_LDFLAGS += -lz
endif
2005-05-20 08:13:48 +00:00
e n d i f
2014-03-30 00:39:37 +00:00
i f n e q ( , $( findstring linux ,$ ( FTE_TARGET ) ) )
2007-09-02 19:55:17 +00:00
SV_DIR = sv_linux$( BITS)
2017-02-19 00:15:42 +00:00
SV_EXE_NAME = ../$( EXE_NAME) -sv$( BITS)
2014-03-30 00:39:37 +00:00
SV_LDFLAGS =
2016-02-15 06:01:17 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS) -DMULTITHREAD
2016-07-12 00:40:13 +00:00
2018-11-19 06:37:25 +00:00
ifneq ( " $( wildcard /usr/include/wayland-client.h) " ,"" )
2018-06-03 09:46:41 +00:00
HAVE_WAYLAND = -DWAYLANDQUAKE
else
HAVE_WAYLAND =
endif
2018-11-19 06:37:25 +00:00
ifneq ( " $( wildcard /usr/include/EGL/egl.h) " ,"" )
2018-06-03 09:46:41 +00:00
HAVE_EGL = -DUSE_EGL
else
HAVE_EGL =
endif
2020-07-14 00:48:56 +00:00
CL_CFLAGS = -DMULTITHREAD -DDYNAMIC_SDL $( HAVE_EGL) $( HAVE_WAYLAND) -DX11QUAKE -DAUDIO_PULSE -DAUDIO_ALSA -DAUDIO_OSS -DAUDIO_SDL
2020-07-01 05:32:21 +00:00
BASELDFLAGS += -Wl,--warn-common
2017-04-29 02:45:21 +00:00
2020-09-08 05:11:09 +00:00
ifeq ( $( BITS) ,32)
CL_CFLAGS += -D_LARGEFILE64_SOURCE
SV_CFLAGS += -D_LARGEFILE64_SOURCE
endif
2016-07-12 00:40:13 +00:00
QCC_DIR = linqcc$( BITS)
2005-01-23 17:44:11 +00:00
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidlinuxglx.o gl_vidwayland.o gl_videgl.o snd_pulse.o snd_alsa.o snd_linux.o snd_sdl.o cd_linux.o sys_linux.o sys_linux_threads.o
2017-02-19 00:15:42 +00:00
GL_EXE_NAME = ../$( EXE_NAME) -gl$( BITS)
GLCL_EXE_NAME = ../$( EXE_NAME) -glcl$( BITS)
2018-08-25 02:53:45 +00:00
GL_LDFLAGS = $( GLLDFLAGS) $( XLDFLAGS)
2018-03-24 04:02:09 +00:00
GL_CFLAGS = $( GLCFLAGS) -I/usr/X11R6/include $( CL_CFLAGS) $( CLIENTLIBFLAGS)
2007-09-02 19:55:17 +00:00
GLB_DIR = gl_linux$( BITS)
GLCL_DIR = glcl_linux$( BITS)
2005-01-23 17:44:11 +00:00
2022-03-08 05:31:34 +00:00
VKCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidlinuxglx.o gl_vidwayland.o gl_videgl.o snd_pulse.o snd_alsa.o snd_linux.o snd_sdl.o cd_linux.o sys_linux.o sys_linux_threads.o
2017-02-19 00:15:42 +00:00
VK_EXE_NAME = ../$( EXE_NAME) -vk$( BITS)
VKCL_EXE_NAME = ../$( EXE_NAME) -vkcl$( BITS)
2018-08-25 02:53:45 +00:00
VK_LDFLAGS = $( GLLDFLAGS) $( XLDFLAGS)
2018-03-24 04:02:09 +00:00
VK_CFLAGS = $( VKCFLAGS) -I/usr/X11R6/include $( CL_CFLAGS) $( CLIENTLIBFLAGS)
2016-07-12 00:40:13 +00:00
VKB_DIR = vk_linux$( BITS)
VKCL_DIR = vkcl_linux$( BITS)
2022-03-08 05:31:34 +00:00
MCL_OBJS = $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( SOFTWARE_OBJS) gl_vidlinuxglx.o gl_vidwayland.o gl_videgl.o snd_linux.o snd_sdl.o snd_pulse.o snd_alsa.o cd_linux.o sys_linux.o sys_linux_threads.o
2017-02-19 00:15:42 +00:00
M_EXE_NAME = ../$( EXE_NAME) $( BITS)
MCL_EXE_NAME = ../$( EXE_NAME) -cl$( BITS)
2014-03-30 00:39:37 +00:00
M_LDFLAGS = $( GL_LDFLAGS)
2018-03-24 04:02:09 +00:00
M_CFLAGS = $( VKCFLAGS) $( GL_CFLAGS) $( CLIENTLIBFLAGS)
2007-09-02 19:55:17 +00:00
MB_DIR = m_linux$( BITS)
MCL_DIR = mcl_linux$( BITS)
2005-01-23 17:44:11 +00:00
2014-03-30 00:39:37 +00:00
ifeq ( ,$( findstring NO_ZLIB,$( CFLAGS) ) )
SV_LDFLAGS += -lz
GL_LDFLAGS += -lz
2016-07-12 00:40:13 +00:00
VK_LDFLAGS += -lz
2014-03-30 00:39:37 +00:00
M_LDFLAGS += -lz
endif
2005-01-23 17:44:11 +00:00
2017-02-19 00:15:42 +00:00
MINGL_EXE_NAME = ../$( EXE_NAME) -mingl$( BITS)
2007-09-02 19:55:17 +00:00
MINGL_DIR = mingl_linux$( BITS)
2014-03-30 00:39:37 +00:00
2016-10-22 07:06:51 +00:00
ifeq ( $( NOCOMPAT) ,1)
SV_EXE_NAME = ../engine-sv$( BITS) $( EXEPOSTFIX)
GL_EXE_NAME = ../engine-gl$( BITS) $( EXEPOSTFIX)
VK_EXE_NAME = ../engine-vk$( BITS) $( EXEPOSTFIX)
M_EXE_NAME = ../engine$( BITS) $( EXEPOSTFIX)
D3D_EXE_NAME = ../engine-d3d$( BITS) $( EXEPOSTFIX)
MINGL_EXE_NAME = ../engine-mingl$( BITS) $( EXEPOSTFIX)
endif
2014-03-30 00:39:37 +00:00
e n d i f
i f n e q ( , $( findstring rpi ,$ ( FTE_TARGET ) ) )
#These next two lines enable cross compiling. If you're compiling natively you can just kill the two.
RPI_SYSROOT:= $( realpath $( shell echo ~) /rpi/rpi-sysroot/)
CC = ~/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot= $( RPI_SYSROOT)
2018-08-04 19:00:19 +00:00
CXX = ~/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++ --sysroot= $( RPI_SYSROOT)
2014-03-30 00:39:37 +00:00
SDLCONFIG = $( RPI_SYSROOT) /usr/bin/sdl-config --prefix= $( RPI_SYSROOT) /usr
GL_CFLAGS += -I$( RPI_SYSROOT) /opt/vc/include -I$( RPI_SYSROOT) /opt/vc/include/interface/vmcs_host/linux -I$( RPI_SYSROOT) /opt/vc/include/interface/vcos/pthreads -DFTE_RPI -DUSE_EGL
GL_LDFLAGS += -L$( RPI_SYSROOT) /opt/vc/lib -Wl,--sysroot= $( RPI_SYSROOT) ,-rpath= /opt/vc/lib,-rpath-link= $( RPI_SYSROOT) /opt/vc/lib -lbcm_host
GLCL_OBJS += gl_vidrpi.o
e n d i f
i f n e q ( , $( findstring fbdev ,$ ( FTE_TARGET ) ) )
GL_CFLAGS += -DUSE_EGL
GLCL_OBJS += gl_vidfbdev.o
2018-03-24 04:02:09 +00:00
MCL_OBJS += gl_vidfbdev.o
2005-01-23 17:44:11 +00:00
e n d i f
2007-11-02 00:30:47 +00:00
i f n e q ( $( shell echo $ ( FTE_TARGET ) |grep macosx ) , )
SV_DIR = sv_macosx$( EXTENSION) $( BITS)
GLB_DIR = gl_macosx$( EXTENSION) $( BITS)
GLCL_DIR = glcl_macosx$( EXTENSION) $( BITS)
MINGL_DIR = mingl_macosx$( EXTENSION) $( BITS)
2012-10-24 14:05:19 +00:00
2013-04-09 21:31:44 +00:00
GL_CFLAGS = $( GLCFLAGS) -D__MACOSX__ -L/sw/lib -I/sw/include -L/opt/local/lib -I/opt/local/include -I$( LIBS_DIR)
2010-12-16 03:25:37 +00:00
ifeq ( $( FTE_TARGET) ,macosx_x86)
2011-07-09 09:43:49 +00:00
GL_CFLAGS = $( GLCFLAGS) -D__MACOSX__ -L/sw/lib -I/sw/include -L/opt/local/lib -I/opt/local/include -I$( LIBS_DIR)
2010-12-16 03:25:37 +00:00
endif
2019-09-29 02:16:34 +00:00
GL_LDFLAGS = -framework AGL -framework OpenGL -framework Cocoa -framework AudioUnit
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidcocoa.mo gl_vidmacos.o sys_linux.o cd_null.o snd_macos.o sys_linux_threads.o
2007-09-22 19:28:27 +00:00
2017-02-19 00:15:42 +00:00
GL_EXE_NAME = ../$( EXE_NAME) -macosx-gl$( EXTENSION) $( BITS)
GLCL_EXE_NAME = ../$( EXE_NAME) cl-macosx-gl$( EXTENSION) $( BITS)
M_EXE_NAME = ../$( EXE_NAME) -macosx$( EXTENSION) $( BITS)
MCL_EXE_NAME = ../$( EXE_NAME) -macosx-cl$( EXTENSION) $( BITS)
MINGL_EXE_NAME = ../$( EXE_NAME) -macosx-mingl$( EXTENSION) $( BITS)
2007-11-02 00:30:47 +00:00
MINGL_DIR = mingl_macosx$( EXTENSION) $( BITS)
2022-03-08 05:31:34 +00:00
SV_OBJS = $( COMMON_OBJS) $( SERVER_OBJS) $( PROGS_OBJS) $( SERVERONLY_OBJS)
2017-02-19 00:15:42 +00:00
SV_EXE_NAME = ../$( EXE_NAME) -macosx-sv$( EXTENSION) $( BITS)
2009-07-19 11:05:00 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS)
SV_LDFLAGS = -lz
2007-09-23 22:00:19 +00:00
#seems, macosx has a more limited version of strip
STRIPFLAGS =
2007-09-22 19:28:27 +00:00
e n d i f
2006-03-06 22:15:40 +00:00
i f e q ( $( FTE_TARGET ) , m o r p h o s )
2010-11-18 06:44:46 +00:00
#-Wno-pointer-sign unrecognised
WARNINGFLAGS = -Wall
2006-03-06 22:15:40 +00:00
2012-05-10 13:01:02 +00:00
CFLAGS += -D__MORPHOS_SHAREDLIBS
2006-03-06 22:15:40 +00:00
SV_DIR = sv_morphos
2010-12-09 07:37:22 +00:00
SV_LDFLAGS = -ldl -lz
2006-03-06 22:15:40 +00:00
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidmorphos.o in_morphos.o snd_morphos.o cd_null.o sys_morphos.o
2017-02-19 00:15:42 +00:00
GL_EXE_NAME = ../$( EXE_NAME) -morphos-gl
GLCL_EXE_NAME = ../$( EXE_NAME) -morphos-glcl
2012-10-24 12:57:12 +00:00
GL_LDFLAGS = $( GLLDFLAGS) -ldl $( IMAGELDFLAGS) -lz
2018-03-24 04:02:09 +00:00
GL_CFLAGS = $( GLCFLAGS) -noixemul -I./
2006-03-06 22:15:40 +00:00
GLB_DIR = gl_morphos
GLCL_DIR = glcl_morphos
2022-03-08 05:31:34 +00:00
MCL_OBJS = $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( SOFTWARE_OBJS) gl_vidmorphos.o vid_morphos.o in_morphos.o snd_morphos.o cd_null.o sys_morphos.o
2017-02-19 00:15:42 +00:00
M_EXE_NAME = ../$( EXE_NAME) -morphos
MCL_EXE_NAME = ../$( EXE_NAME) -morphos-cl
2012-10-24 12:57:12 +00:00
M_LDFLAGS = $( GLLDFLAGS)
2012-10-25 07:02:09 +00:00
M_CFLAGS = $( GLCFLAGS)
2006-03-06 22:15:40 +00:00
MB_DIR = m_morphos
MCL_DIR = mcl_morphos
2017-02-19 00:15:42 +00:00
MINGL_EXE_NAME = ../$( EXE_NAME) -morphos-mingl
2006-03-06 22:15:40 +00:00
MINGL_DIR = mingl_morphos
2007-11-02 00:30:47 +00:00
2022-03-08 05:31:34 +00:00
SV_OBJS = $( COMMON_OBJS) $( SERVER_OBJS) $( PROGS_OBJS) $( SERVERONLY_OBJS)
2017-02-19 00:15:42 +00:00
SV_EXE_NAME = ../$( EXE_NAME) -morphos-sv$( BITS)
2013-04-09 21:31:44 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS)
2006-03-06 22:15:40 +00:00
e n d i f
2017-05-19 03:32:02 +00:00
i f e q ( $( FTE_TARGET ) , d o s )
EXEPOSTFIX = .exe
SV_DIR = sv_dos
GLB_DIR = gl_dos
MB_DIR = m_dos
MCL_DIR = mcl_dos
MINGL_DIR = mingl_dos
VKB_DIR = vk_dos
VKCL_DIR = vkcl_dos
IMAGELDFLAGS =
SOFTWARE_OBJS = sw_rast.o sw_backend.o sw_image.o
M_LDFLAGS =
M_CFLAGS = -DSWQUAKE -DNO_ZLIB
MCL_OBJS = $( SOFTWARE_OBJS) $( D3DGL_OBJS) sw_viddos.o cd_null.o sys_dos.o snd_sblaster.o
M_EXE_NAME = ../$( EXE_NAME) $( EXEPOSTFIX)
SV_EXE_NAME = ../$( EXE_NAME) sv$( BITS) $( EXEPOSTFIX)
VK_EXE_NAME = ../$( EXE_NAME) -vk$( BITS) $( EXEPOSTFIX)
2022-03-08 05:31:34 +00:00
VKCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) cd_null.o sys_dos.o snd_sblaster.o
2017-05-19 03:32:02 +00:00
e n d i f
2006-03-06 22:15:40 +00:00
2016-02-10 23:23:43 +00:00
i f e q ( $( FTE_TARGET ) , c y g )
2005-12-15 19:15:39 +00:00
SV_DIR = sv_cygwin
SV_LDFLAGS = -lz
2016-07-15 12:26:24 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS)
2005-12-15 19:15:39 +00:00
2013-07-29 18:09:16 +00:00
EXEPOSTFIX = .exe
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o
2017-02-19 00:15:42 +00:00
GL_EXE_NAME = ../$( EXE_NAME) -cyg-gl$( EXEPOSTFIX)
GLCL_EXE_NAME = ../$( EXE_NAME) -cyg-glcl$( EXEPOSTFIX)
2018-08-25 02:53:45 +00:00
GL_LDFLAGS = $( GLLDFLAGS) $( XLDFLAGS) -lz -lltdl
2020-07-14 00:48:56 +00:00
GL_CFLAGS = $( GLCFLAGS) -I/usr/X11R6/include $( CLIENTLIBFLAGS) -DUSE_LIBTOOL -DAUDIO_OSS
2005-12-15 19:15:39 +00:00
GLB_DIR = gl_cygwin
GLCL_DIR = glcl_cygwin
2022-03-08 05:31:34 +00:00
MCL_OBJS = $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( SOFTWARE_OBJS) gl_vidlinuxglx.o snd_linux.o cd_null.o sys_linux.o sys_linux_threads.o
2017-02-19 00:15:42 +00:00
M_EXE_NAME = ../$( EXE_NAME) -cyg$( EXEPOSTFIX)
MCL_EXE_NAME = ../$( EXE_NAME) -cyg-cl$( EXEPOSTFIX)
2018-08-25 02:53:45 +00:00
M_LDFLAGS = $( GLLDFLAGS) $( XLDFLAGS) -lz -lltdl
2020-07-14 00:48:56 +00:00
M_CFLAGS = $( GLCFLAGS) $( CLIENTLIBFLAGS) -DUSE_LIBTOOL -DAUDIO_OSS
2005-12-15 19:15:39 +00:00
MB_DIR = m_cygwin
MCL_DIR = mcl_cygwin
2017-02-19 00:15:42 +00:00
MINGL_EXE_NAME = ../$( EXE_NAME) -cyg-mingl$( EXEPOSTFIX)
2005-12-15 19:15:39 +00:00
MINGL_DIR = mingl_cygwin
e n d i f
2011-09-05 01:48:23 +00:00
i f e q ( $( FTE_TARGET ) , d r o i d )
2017-06-23 20:36:35 +00:00
BASELDFLAGS = -lz
2018-08-25 02:53:45 +00:00
#erk! FIXME!
CLIENTLDDEPS =
SERVERLDDEPS =
2011-09-05 01:48:23 +00:00
2017-10-13 17:50:28 +00:00
SYS_DROID_O = sys_droid.o sys_linux_threads.o
GL_DROID_O = gl_viddroid.o $( SYS_DROID_O)
2016-07-15 12:26:24 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS) $( W32_CFLAGS)
2014-02-14 09:59:32 +00:00
SV_LDFLAGS =
2012-02-27 12:23:15 +00:00
SV_DIR = sv_droid-$( DROID_ARCH)
2022-03-08 05:31:34 +00:00
SV_OBJS = $( COMMON_OBJS) $( SERVER_OBJS) $( PROGS_OBJS) $( SYS_DROID_O)
2012-02-27 12:23:15 +00:00
SV_EXE_NAME = libftedroid.so
2011-09-05 01:48:23 +00:00
2014-02-14 09:59:32 +00:00
GL_CFLAGS = $( GLCFLAGS)
2019-04-15 18:43:42 +00:00
GL_LDFLAGS = $( GLLDFLAGS) -landroid
2022-03-08 05:31:34 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( GL_DROID_O) cd_null.o snd_droid.o
2012-02-27 12:23:15 +00:00
GLB_DIR = gl_droid-$( DROID_ARCH)
2017-10-13 17:50:28 +00:00
GL_EXE_NAME = libftedroid.so
M_CFLAGS = $( VKCFLAGS) $( GLCFLAGS) -DMULTITHREAD
2019-04-15 18:43:42 +00:00
M_LDFLAGS = $( GLLDFLAGS) -landroid -lEGL -lOpenSLES
2022-03-08 05:31:34 +00:00
MCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( GLQUAKE_OBJS) $( GL_DROID_O) cd_null.o snd_opensl.o
2019-04-15 18:43:42 +00:00
#snd_droid.o
2017-10-13 17:50:28 +00:00
MB_DIR = m_droid-$( DROID_ARCH)
M_EXE_NAME = libftedroid.so
2011-09-05 01:48:23 +00:00
e n d i f
2013-04-02 05:18:17 +00:00
i f e q ( $( FTE_TARGET ) , w e b )
2013-08-07 14:20:24 +00:00
COMMON_OBJS += sys_web.o fs_web.o
2013-04-06 08:37:45 +00:00
WEB_PREJS ?= --pre-js web/prejs.js
2013-07-31 07:01:34 +00:00
# WEB_MEMORY?=402653184 #384mb
2015-08-07 17:49:49 +00:00
# ASMJS_MEMORY?=16777216 #16mb
# ASMJS_MEMORY?=33554432 #32mb
ASMJS_MEMORY?= 268435456 #256mb
# ASMJS_MEMORY?=536870912 #512mb
# ASMJS_MEMORY?=1073741824 #1025mb
# ASMJS_MEMORY?=2147483648 #2048mb
2013-07-31 07:01:34 +00:00
WEB_MEMORY?= $( ASMJS_MEMORY)
2020-05-01 07:57:31 +00:00
JSLIBS = --js-library web/ftejslib.js
EMCC_CFLAGS = -DFTE_TARGET_WEB
EMCC_LDFLAGS = $( EMCC_CFLAGS) $( JSLIBS) $( WEB_PREJS)
2021-06-21 13:46:38 +00:00
# EMCC_CFLAGS+= -s BINARYEN_TRAP_MODE='clamp' #fix bigfloat->int rounding crashes
2020-05-01 07:57:31 +00:00
EMCC_CFLAGS += -s LEGACY_GL_EMULATION = 0 #simplify the opengl wrappers.
EMCC_CFLAGS += -s NO_FILESYSTEM = 1 #we have our own.
2021-10-12 04:42:01 +00:00
EMCC_CFLAGS += -s FILESYSTEM = 0 #we have our own.
EMCC_CFLAGS += -s ALLOW_MEMORY_GROWTH = 1 #reduce crashes...
EMCC_CFLAGS += -s MAX_WEBGL_VERSION = 2 #make use of what we can.
2020-05-01 07:57:31 +00:00
EMCC_LDFLAGS += -s ERROR_ON_UNDEFINED_SYMBOLS = 1 #fairly obvious. no runtime errors please.
RELEASE_CFLAGS = -DOMIT_QCC -DGL_STATIC $( EMCC_CFLAGS)
DEBUG_CFLAGS = -g4 -DOMIT_QCC -DGL_STATIC $( EMCC_CFLAGS)
RELEASE_LDFLAGS = -O3 -s TOTAL_MEMORY = $( ASMJS_MEMORY) $( EMCC_LDFLAGS)
# RELEASE_LDFLAGS=-O1 -s TOTAL_MEMORY=$(WEB_MEMORY) $(EMCC_LDFLAGS)
DEBUG_LDFLAGS = -O0 -g4 -s TOTAL_MEMORY = $( WEB_MEMORY) $( EMCC_LDFLAGS) -s SAFE_HEAP = 1 -s ALIASING_FUNCTION_POINTERS = 0 -s ASSERTIONS = 2
2021-06-21 13:46:38 +00:00
CC = emcc
CXX = em++
2021-10-22 22:27:58 +00:00
AR = emar
BASELDFLAGS = -lz
2014-08-25 07:35:41 +00:00
PRECOMPHEADERS =
2013-04-02 05:18:17 +00:00
#mostly we inherit the sdl defaults. because we can, however emscripten does not support sdl cd code.
2021-10-22 22:27:58 +00:00
GLCL_OBJS = $( GL_OBJS) $( D3DGL_OBJS) $( BOTLIB_OBJS) $( GLQUAKE_OBJS) gl_vidweb.o cd_null.o
2013-04-02 05:18:17 +00:00
SDL_INCLUDES =
SV_DIR = sv_web
2021-10-22 22:27:58 +00:00
SV_LDFLAGS =
2014-05-23 02:14:36 +00:00
#SV_OBJS=$(COMMON_OBJS) $(SERVER_OBJS) $(PROGS_OBJS)
2013-04-04 09:59:14 +00:00
SV_EXE_NAME = ../libftesv.js
2016-07-15 12:26:24 +00:00
SV_CFLAGS = $( SERVER_ONLY_CFLAGS)
2013-04-02 05:18:17 +00:00
#SV_LDFLAGS=
2019-07-02 04:12:20 +00:00
STRIP = @echo SKIP: strip
2013-04-02 05:18:17 +00:00
#GLCL_OBJS=$(GL_OBJS) $(D3DGL_OBJS) $(GLQUAKE_OBJS) cd_null.o
#GL_LDFLAGS=$(GLLDFLAGS)
GLB_DIR = gl_web
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
GLCL_DIR = glcl_web
2015-08-07 17:49:49 +00:00
GL_EXE_NAME = ../ftewebgl.js
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
GLCL_EXE_NAME = ../ftewebglcl.js
2013-04-02 05:18:17 +00:00
2018-08-25 02:53:45 +00:00
GL_LDFLAGS = $( GLLDFLAGS) $( IMAGELDFLAGS)
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
GL_CFLAGS = $( GLCFLAGS) $( CLIENTLIBFLAGS)
2013-04-04 08:08:49 +00:00
2013-04-02 05:18:17 +00:00
IMAGELDFLAGS =
2018-08-25 02:53:45 +00:00
SERVERLDDEPS =
2013-04-02 05:18:17 +00:00
2013-05-11 05:03:07 +00:00
#generate deps properly
#DEPCC=
2018-08-04 19:00:19 +00:00
#DEPCXX=
2013-04-02 05:18:17 +00:00
e n d i f
2005-01-23 17:44:11 +00:00
SV_DIR ?= sv_sdl
2013-05-11 05:03:07 +00:00
DEPCC ?= $( CC)
2018-08-04 19:00:19 +00:00
DEPCXX ?= $( CXX)
2017-04-16 09:27:43 +00:00
ARCH := $( ARCH)
2021-08-04 21:17:31 +00:00
i f e q ( $( findstring msvc ,$ ( FTE_TARGET ) ) , m s v c )
BASELDFLAGS:= /libpath:" $( ARCHLIBS) " $( BASELDFLAGS)
e l s e
BASELDFLAGS:= -L$( ARCHLIBS) $( BASELDFLAGS)
e n d i f
2005-01-23 17:44:11 +00:00
2020-05-14 15:50:26 +00:00
default : help
2013-03-12 22:35:33 +00:00
- i n c l u d e M a k e f i l e _ p r i v a t e
2007-09-02 19:55:17 +00:00
all : rel
2018-10-23 07:09:06 +00:00
rel : sv -rel m -rel qcc -rel
dbg : sv -dbg m -dbg qcc -dbg
2009-07-16 22:06:59 +00:00
relcl : glcl -rel mcl -rel
2011-01-28 09:56:45 +00:00
profile : sv -profile gl -profile mingl -profile
2007-09-02 19:55:17 +00:00
releases :
#this is for releasing things from a linux box
#just go through compiling absolutly everything
-$( MAKE) FTE_TARGET = linux32 rel
-$( MAKE) FTE_TARGET = linux64 rel
-$( MAKE) FTE_TARGET = win32 rel
2010-12-10 13:41:31 +00:00
-$( MAKE) FTE_TARGET = win64 rel
-$( MAKE) FTE_TARGET = win32_SDL rel
-$( MAKE) FTE_TARGET = win64_SDL rel
-$( MAKE) FTE_TARGET = morphos rel
-$( MAKE) FTE_TARGET = macosx rel
2007-09-02 19:55:17 +00:00
# -$(MAKE) FTE_TARGET=linux32 relcl
# -$(MAKE) FTE_TARGET=linux64 relcl
# -$(MAKE) FTE_TARGET=win32 relcl
2011-09-16 05:56:54 +00:00
-$( MAKE) droid-rel
2014-09-20 04:11:39 +00:00
-$( MAKE) web-rel
2005-01-23 17:44:11 +00:00
2005-11-21 22:16:53 +00:00
autoconfig : clean
/bin/bash makeconfig.sh y
config : clean
/bin/bash makeconfig.sh
2005-01-23 17:44:11 +00:00
2005-11-21 22:16:53 +00:00
i f n e q ( $( OUT_DIR ) , )
2009-11-07 02:55:09 +00:00
- i n c l u d e $( OUT_DIR ) / * . o . d
2005-11-21 22:16:53 +00:00
e n d i f
2021-08-04 21:17:31 +00:00
DO_WINDRES ?= $( DO_ECHO) $( WINDRES) $( BRANDFLAGS) -I$( CLIENT_DIR) -O coff $< $@
2007-10-25 17:59:01 +00:00
# This is for linking the FTE icon to the MinGW target
$(OUT_DIR)/resources.o : winquake .rc
2021-08-04 21:17:31 +00:00
$( DO_WINDRES)
2015-12-28 17:41:39 +00:00
$(OUT_DIR)/fteqcc.o : fteqcc .rc
2021-08-04 21:17:31 +00:00
$( DO_WINDRES)
2009-04-03 07:31:54 +00:00
2005-11-21 22:16:53 +00:00
#$(OUT_DIR)/%.d: %.c
# @set -e; rm -f $@; \
# $(CC) -MM $(ALL_CFLAGS) $< > $@.$$$$; \
# sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
# rm -f $@.$$$$
$(OUT_DIR)/%.o $(OUT_DIR)/%.d : %.c
2013-05-11 05:03:07 +00:00
i f n e q ( $( DEPCC ) , )
2014-09-20 04:11:39 +00:00
@-set -e; rm -f $@ .d; \
2013-05-11 05:03:07 +00:00
$( DEPCC) -MM $( ALL_CFLAGS) $< > $@ .d.$$ $$ ; \
2009-11-07 02:55:09 +00:00
sed 's,\($*\)\.o[ :]*,$@ $@.d : ,g' < $@ .d.$$ $$ > $@ .d; \
sed -e 's/.*://' -e 's/\\$$//' < $@ .d.$$ $$ | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $@ .d; \
2005-11-21 22:16:53 +00:00
rm -f $@ .d.$$ $$
2009-11-04 21:16:50 +00:00
e n d i f
2005-05-20 08:13:48 +00:00
$( DO_CC) -I$( OUT_DIR)
2005-01-23 17:44:11 +00:00
2011-10-29 04:06:49 +00:00
$(OUT_DIR)/%.o $(OUT_DIR)/%.d : %.cpp
2018-08-04 19:00:19 +00:00
i f n e q ( $( DEPCXX ) , )
2014-09-20 04:11:39 +00:00
@-set -e; rm -f $@ .d; \
2018-08-04 19:00:19 +00:00
$( DEPCXX) -MM $( ALL_CXXFLAGS) $< > $@ .d.$$ $$ ; \
2011-10-29 04:06:49 +00:00
sed 's,\($*\)\.o[ :]*,$@ $@.d : ,g' < $@ .d.$$ $$ > $@ .d; \
sed -e 's/.*://' -e 's/\\$$//' < $@ .d.$$ $$ | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $@ .d; \
rm -f $@ .d.$$ $$
e n d i f
2018-08-04 19:00:19 +00:00
$( DO_CXX) -I$( OUT_DIR)
2011-10-29 04:06:49 +00:00
2014-12-29 06:39:57 +00:00
$(OUT_DIR)/%.o $(OUT_DIR)/%.d : %.cxx
2018-08-04 19:00:19 +00:00
i f n e q ( $( DEPCXX ) , )
2014-12-29 06:39:57 +00:00
@-set -e; rm -f $@ .d; \
2018-08-04 19:00:19 +00:00
$( DEPCXX) -MM $( ALL_CXXFLAGS) $< > $@ .d.$$ $$ ; \
2014-12-29 06:39:57 +00:00
sed 's,\($*\)\.o[ :]*,$@ $@.d : ,g' < $@ .d.$$ $$ > $@ .d; \
sed -e 's/.*://' -e 's/\\$$//' < $@ .d.$$ $$ | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $@ .d; \
rm -f $@ .d.$$ $$
e n d i f
2018-08-04 19:00:19 +00:00
$( DO_CXX) -I$( OUT_DIR)
2014-12-29 06:39:57 +00:00
2006-02-06 01:06:17 +00:00
$(OUT_DIR)/%.oo $(OUT_DIR)/%.d : %.c
2013-05-11 05:03:07 +00:00
i f n e q ( $( DEPCC ) , )
2014-09-20 04:11:39 +00:00
@-set -e; rm -f $@ .d; \
2013-05-11 05:03:07 +00:00
$( DEPCC) -MM $( ALL_CFLAGS) $< > $@ .d.$$ $$ ; \
2009-11-07 02:55:09 +00:00
sed 's,\($*\)\.oo[ :]*,$@ $@.d : ,g' < $@ .d.$$ $$ > $@ .d; \
sed -e 's/.*://' -e 's/\\$$//' < $@ .d.$$ $$ | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $@ .d; \
2006-02-06 01:06:17 +00:00
rm -f $@ .d.$$ $$
2009-11-04 21:16:50 +00:00
e n d i f
2006-02-06 01:06:17 +00:00
$( DO_CC) -I$( OUT_DIR)
2007-09-23 22:00:19 +00:00
$(OUT_DIR)/%.mo $(OUT_DIR)/%.d : %.m
2014-09-20 04:11:39 +00:00
@-set -e; rm -f $@ .d; \
2013-05-11 05:03:07 +00:00
$( DEPCC) -MM $( ALL_CFLAGS) $< > $@ .d.$$ $$ ; \
2009-11-07 02:55:09 +00:00
sed 's,\($*\)\.mo[ :]*,$@ $@.d : ,g' < $@ .d.$$ $$ > $@ .d; \
sed -e 's/.*://' -e 's/\\$$//' < $@ .d.$$ $$ | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $@ .d; \
2007-09-23 22:00:19 +00:00
rm -f $@ .d.$$ $$
$( DO_CC) -I$( OUT_DIR)
2005-05-20 08:13:48 +00:00
#enables use of precompiled headers in gcc 3.4 onwards.
$(OUT_DIR)/quakedef.h.gch : quakedef .h
2019-11-20 07:14:28 +00:00
$( CC) -x c-header $( ALL_CFLAGS) -o $@ -c $<
2009-11-04 21:16:50 +00:00
PRECOMPHEADERS ?= $( OUT_DIR) /quakedef.h.gch
2019-10-27 06:59:19 +00:00
i f n e q ( $( OUT_DIR ) , )
2018-10-13 06:20:49 +00:00
ALL_CFLAGS += -I$( OUT_DIR)
2019-10-27 06:59:19 +00:00
e n d i f
2005-05-20 08:13:48 +00:00
2005-01-23 17:44:11 +00:00
#addprefix is to add the ./release/server/ part of the object name
#foreach is needed as the OBJS is a list of variable names containing object lists.
#which is needed as windows sucks too much for the chaining to carry a full list.
#god knows how gcc loads the list properly.
#or at least I hope he does. It makes no sence to mortals.
2005-05-20 08:13:48 +00:00
2018-08-04 19:00:19 +00:00
LDCC ?= $( CC)
2019-10-27 06:59:19 +00:00
DO_LD ?= +$( DO_ECHO) $( LDCC) -o $@ $( LTO_LD) $( WCFLAGS) $( BRANDFLAGS) $( CFLAGS)
2011-03-12 13:51:40 +00:00
$(OUT_DIR)/$(EXE_NAME) : $( PRECOMPHEADERS ) $( foreach fn , $ ( CUSTOMOBJS ) $ ( foreach ol , $ ( OBJS ) , $ ( $ ( ol ) ) ) ,$ ( if $ ( findstring ltox ,$ ( fn ) ) ,,$ ( OUT_DIR ) /$ ( fn ) ) )
2014-02-07 08:38:40 +00:00
$( DO_LD) $( foreach fn, $( CUSTOMOBJS) $( foreach ol, $( OBJS) $( LTO_END) , $( $( ol) ) ) ,$( if $( findstring ltox,$( fn) ) ,$( subst ltox,-x ,$( fn) ) ,$( NATIVE_OUT_DIR) /$( fn) ) ) $( LDFLAGS)
2005-01-23 17:44:11 +00:00
2019-07-02 04:12:20 +00:00
$(OUT_DIR)/$(EXE_NAME).db : $( PRECOMPHEADERS ) $( foreach fn , $ ( CUSTOMOBJS ) $ ( foreach ol , $ ( OBJS ) , $ ( $ ( ol ) ) ) ,$ ( if $ ( findstring ltox ,$ ( fn ) ) ,,$ ( OUT_DIR ) /$ ( fn ) ) )
$( DO_LD) $( foreach fn, $( CUSTOMOBJS) $( foreach ol, $( OBJS) $( LTO_END) , $( $( ol) ) ) ,$( if $( findstring ltox,$( fn) ) ,$( subst ltox,-x ,$( fn) ) ,$( NATIVE_OUT_DIR) /$( fn) ) ) $( LDFLAGS)
i f e q ( , $( findstring SKIP ,$ ( STRIP ) ) )
#link to a .db file
#then strip its debug data to the non-.db release binary
_out-rel : $( ARCH_PREDEP )
@$( MAKE) $( OUT_DIR) /$( EXE_NAME) .db EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( WCFLAGS) $( RELEASE_CFLAGS) " LDFLAGS = " $( BASELDFLAGS) $( LDFLAGS) $( RELEASE_LDFLAGS) " OBJS = " $( OBJS) "
@$( STRIP) $( STRIPFLAGS) $( OUT_DIR) /$( EXE_NAME) .db -o $( OUT_DIR) /$( EXE_NAME)
e l s e
#STRIP macro won't work, don't do the .db thing and don't expect strip -o to work.
2014-02-13 23:54:57 +00:00
_out-rel : $( ARCH_PREDEP )
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
@$( MAKE) $( OUT_DIR) /$( EXE_NAME) EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( WCFLAGS) $( RELEASE_CFLAGS) " LDFLAGS = " $( BASELDFLAGS) $( LDFLAGS) $( RELEASE_LDFLAGS) " OBJS = " $( OBJS) "
2019-07-02 04:12:20 +00:00
@echo not stripping $( OUT_DIR) /$( EXE_NAME)
e n d i f
2005-01-23 17:44:11 +00:00
2014-02-13 23:54:57 +00:00
_out-dbg : $( ARCH_PREDEP )
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
@$( MAKE) $( OUT_DIR) /$( EXE_NAME) EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( WCFLAGS) $( DEBUG_CFLAGS) " LDFLAGS = " $( BASELDFLAGS) $( LDFLAGS) $( DEBUG_LDFLAGS) " OBJS = " $( OBJS) "
2005-01-23 17:44:11 +00:00
2014-02-13 23:54:57 +00:00
_out-profile : $( ARCH_PREDEP )
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
@$( MAKE) $( OUT_DIR) /$( EXE_NAME) EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( WCFLAGS) $( PROFILE_CFLAGS) " LDFLAGS = " $( BASELDFLAGS) $( LDFLAGS) $( PROFILE_LDFLAGS) " OBJS = " $( OBJS) "
2009-09-05 11:03:25 +00:00
2006-03-06 22:15:40 +00:00
_cl-rel : reldir
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
@$( MAKE) _out-rel EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( CLIENT_ONLY_CFLAGS) $( WCFLAGS) " LDFLAGS = " $( LDFLAGS) " SOBJS = " $( SOBJS) " OBJS = "SOBJS COMMON_OBJS CLIENT_OBJS PROGS_OBJS"
2005-01-23 17:44:11 +00:00
2006-03-06 22:15:40 +00:00
_cl-dbg : debugdir
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
@$( MAKE) _out-dbg EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( CLIENT_ONLY_CFLAGS) $( WCFLAGS) " LDFLAGS = " $( LDFLAGS) " SOBJS = " $( SOBJS) " OBJS = "SOBJS COMMON_OBJS CLIENT_OBJS PROGS_OBJS"
2005-01-23 17:44:11 +00:00
2009-09-05 11:03:25 +00:00
_cl-profile : reldir
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
@$( MAKE) _out-profile EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( CLIENT_ONLY_CFLAGS) $( WCFLAGS) " LDFLAGS = " $( LDFLAGS) " SOBJS = " $( SOBJS) " OBJS = "SOBJS COMMON_OBJS CLIENT_OBJS PROGS_OBJS"
2009-09-05 11:03:25 +00:00
2005-01-23 17:44:11 +00:00
_clsv-rel : reldir
2018-08-25 02:53:45 +00:00
$( DO_ECHO) $( MAKE) _out-rel EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( JOINT_CFLAGS) $( WCFLAGS) " LDFLAGS = " $( LDFLAGS) " SOBJS = " $( SOBJS) " OBJS = "SOBJS COMMON_OBJS CLIENT_OBJS PROGS_OBJS SERVER_OBJS"
2005-01-23 17:44:11 +00:00
_clsv-dbg : debugdir
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
@$( MAKE) _out-dbg EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( JOINT_CFLAGS) $( WCFLAGS) " LDFLAGS = " $( LDFLAGS) " SOBJS = " $( SOBJS) " OBJS = "SOBJS COMMON_OBJS CLIENT_OBJS PROGS_OBJS SERVER_OBJS"
2005-01-23 17:44:11 +00:00
2009-09-05 11:03:25 +00:00
_clsv-profile : reldir
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
@$( MAKE) _out-profile EXE_NAME = " $( EXE_NAME) " OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( JOINT_CFLAGS) $( WCFLAGS) " LDFLAGS = " $( LDFLAGS) " SOBJS = " $( SOBJS) " OBJS = "SOBJS COMMON_OBJS CLIENT_OBJS PROGS_OBJS SERVER_OBJS"
2005-01-23 17:44:11 +00:00
sv-tmp : reldir debugdir
2018-08-25 02:53:45 +00:00
@$( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( SV_EXE_NAME) " WCFLAGS = " $( SV_CFLAGS) " LDFLAGS = " $( ARCH_LDFLAGS) $( SV_LDFLAGS) $( LDFLAGS) $( SERVERLDDEPS) " OBJS = "SV_OBJS"
2005-01-23 17:44:11 +00:00
sv-rel :
2016-10-22 07:06:51 +00:00
@$( MAKE) sv-tmp TYPE = _out-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( SV_DIR) "
2005-01-23 17:44:11 +00:00
sv-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) sv-tmp TYPE = _out-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( SV_DIR) "
2009-09-05 11:03:25 +00:00
sv-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) sv-tmp TYPE = _out-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( SV_DIR) "
2005-01-23 17:44:11 +00:00
2007-09-17 20:35:39 +00:00
d3dcl-tmp :
2018-08-25 02:53:45 +00:00
@$( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( D3DCL_EXE_NAME) " WCFLAGS = " $( D3D_CFLAGS) " LDFLAGS = " $( D3D_LDFLAGS) $( LDFLAGS) $( CLIENTLDDEPS) " SOBJS = " $( D3DCL_OBJS) "
2007-09-17 20:35:39 +00:00
d3d-tmp :
2018-08-25 02:53:45 +00:00
@$( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( D3D_EXE_NAME) " WCFLAGS = " $( D3D_CFLAGS) " LDFLAGS = " $( D3D_LDFLAGS) $( LDFLAGS) $( CLIENTLDDEPS) " SOBJS = " $( D3DCL_OBJS) "
2007-09-17 20:35:39 +00:00
d3dcl-rel :
2016-10-22 07:06:51 +00:00
@$( MAKE) d3dcl-tmp TYPE = _cl-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( D3DCL_DIR) "
2007-09-17 20:35:39 +00:00
d3dcl-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) d3dcl-tmp TYPE = _cl-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( D3DCL_DIR) "
2009-09-05 11:03:25 +00:00
d3dcl-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) d3dcl-tmp TYPE = _cl-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( D3DCL_DIR) "
2009-09-05 11:03:25 +00:00
2007-09-17 20:35:39 +00:00
d3d-rel :
2016-10-22 07:06:51 +00:00
@$( MAKE) d3d-tmp TYPE = _clsv-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( D3DB_DIR) "
2007-09-17 20:35:39 +00:00
d3d-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) d3d-tmp TYPE = _clsv-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( D3DB_DIR) "
2009-09-05 11:03:25 +00:00
d3d-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) d3d-tmp TYPE = _clsv-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( D3DB_DIR) "
2005-01-23 17:44:11 +00:00
2016-07-12 00:40:13 +00:00
vkcl-tmp :
2018-08-25 02:53:45 +00:00
@$( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( VKCL_EXE_NAME) " WCFLAGS = " $( VK_CFLAGS) " LDFLAGS = " $( VK_LDFLAGS) $( LDFLAGS) $( CLIENTLDDEPS) " SOBJS = " $( VKCL_OBJS) "
2016-07-12 00:40:13 +00:00
vk-tmp :
2018-08-25 02:53:45 +00:00
@$( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( VK_EXE_NAME) " WCFLAGS = " $( VK_CFLAGS) " LDFLAGS = " $( VK_LDFLAGS) $( LDFLAGS) $( CLIENTLDDEPS) " SOBJS = " $( VKCL_OBJS) "
2016-07-12 00:40:13 +00:00
vkcl-rel :
2016-10-22 07:06:51 +00:00
@$( MAKE) vkcl-tmp TYPE = _cl-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( VKCL_DIR) "
2016-07-12 00:40:13 +00:00
vkcl-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) vkcl-tmp TYPE = _cl-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( VKCL_DIR) "
2016-07-12 00:40:13 +00:00
vkcl-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) vkcl-tmp TYPE = _cl-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( VKCL_DIR) "
2016-07-12 00:40:13 +00:00
vk-rel :
2016-10-22 07:06:51 +00:00
@$( MAKE) vk-tmp TYPE = _clsv-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( VKB_DIR) "
2016-07-12 00:40:13 +00:00
vk-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) vk-tmp TYPE = _clsv-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( VKB_DIR) "
2016-07-12 00:40:13 +00:00
vk-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) vk-tmp TYPE = _clsv-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( VKB_DIR) "
2016-07-12 00:40:13 +00:00
2005-01-23 17:44:11 +00:00
glcl-tmp :
2018-08-25 02:53:45 +00:00
@$( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( GLCL_EXE_NAME) " WCFLAGS = " $( GL_CFLAGS) " LDFLAGS = " $( GL_LDFLAGS) $( LDFLAGS) $( CLIENTLDDEPS) " SOBJS = " $( GLCL_OBJS) "
2005-01-23 17:44:11 +00:00
gl-tmp :
2018-08-25 02:53:45 +00:00
@$( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( GL_EXE_NAME) " WCFLAGS = " $( GL_CFLAGS) " LDFLAGS = " $( GL_LDFLAGS) $( LDFLAGS) $( CLIENTLDDEPS) " SOBJS = " $( GLCL_OBJS) "
2005-01-23 17:44:11 +00:00
glcl-rel :
2016-10-22 07:06:51 +00:00
@$( MAKE) glcl-tmp TYPE = _cl-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( GLCL_DIR) "
2005-01-23 17:44:11 +00:00
glcl-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) glcl-tmp TYPE = _cl-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( GLCL_DIR) "
2009-09-05 11:03:25 +00:00
glcl-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) glcl-tmp TYPE = _cl-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( GLCL_DIR) "
2005-01-23 17:44:11 +00:00
gl-rel :
2016-10-22 07:06:51 +00:00
@$( MAKE) gl-tmp TYPE = _clsv-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( GLB_DIR) "
2005-01-23 17:44:11 +00:00
gl-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) gl-tmp TYPE = _clsv-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( GLB_DIR) "
2009-09-05 11:03:25 +00:00
gl-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) gl-tmp TYPE = _clsv-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( GLB_DIR) "
2005-01-23 17:44:11 +00:00
2005-09-15 05:55:43 +00:00
mingl-tmp : reldir
2018-08-25 02:53:45 +00:00
@$( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( MINGL_EXE_NAME) " WCFLAGS = " $( GL_CFLAGS) -DMINIMAL " LDFLAGS = " $( GL_LDFLAGS) $( LDFLAGS) $( CLIENTLDDEPS) " SOBJS = " $( GLCL_OBJS) "
2005-01-24 05:06:16 +00:00
mingl-rel :
2016-10-22 07:06:51 +00:00
@$( MAKE) mingl-tmp TYPE = _cl-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( MINGL_DIR) "
2009-09-04 15:29:08 +00:00
mingl-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) mingl-tmp TYPE = _cl-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( MINGL_DIR) "
2009-09-05 11:03:25 +00:00
mingl-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) mingl-tmp TYPE = _cl-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( MINGL_DIR) "
2005-01-23 17:44:11 +00:00
mcl-tmp :
2018-08-25 02:53:45 +00:00
@$( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( MCL_EXE_NAME) " WCFLAGS = " $( M_CFLAGS) " LDFLAGS = " $( M_LDFLAGS) $( LDFLAGS) $( CLIENTLDDEPS) " SOBJS = " $( MCL_OBJS) "
2005-02-06 02:47:36 +00:00
m-tmp :
2018-08-25 02:53:45 +00:00
$( DO_ECHO) $( MAKE) $( TYPE) OUT_DIR = " $( OUT_DIR) " EXE_NAME = " $( M_EXE_NAME) " WCFLAGS = " $( M_CFLAGS) " LDFLAGS = " $( M_LDFLAGS) $( LDFLAGS) $( CLIENTLDDEPS) " SOBJS = " $( MCL_OBJS) "
2005-02-06 02:47:36 +00:00
2005-01-23 17:44:11 +00:00
mcl-rel :
2016-10-22 07:06:51 +00:00
@$( MAKE) mcl-tmp TYPE = _cl-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( MCL_DIR) "
2005-01-23 17:44:11 +00:00
mcl-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) mcl-tmp TYPE = _cl-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( MCL_DIR) "
2009-09-05 11:03:25 +00:00
mcl-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) mcl-tmp TYPE = _cl-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( MCL_DIR) "
2005-01-23 17:44:11 +00:00
m-rel :
2018-08-25 02:53:45 +00:00
$( DO_ECHO) $( MAKE) m-tmp TYPE = _clsv-rel OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( MB_DIR) "
2005-01-23 17:44:11 +00:00
m-dbg :
2016-10-22 07:06:51 +00:00
@$( MAKE) m-tmp TYPE = _clsv-dbg OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( MB_DIR) "
2009-09-05 11:03:25 +00:00
m-profile :
2016-10-22 07:06:51 +00:00
@$( MAKE) m-tmp TYPE = _clsv-profile OUT_DIR = " $( PROFILE_DIR) / $( NCDIRPREFIX) $( MB_DIR) "
2005-01-23 17:44:11 +00:00
2021-06-21 13:46:31 +00:00
.PHONY : m -tmp mcl -tmp mingl -tmp glcl -tmp gl -tmp sv -tmp _clsv -dbg _clsv -rel _cl -dbg _cl -rel _out -rel _out -dbg reldir debugdir makelibs wel -rel web -dbg httpserver iqmtool imgtool
2005-01-23 17:44:11 +00:00
2013-03-12 23:09:25 +00:00
2013-07-26 17:19:06 +00:00
_qcc-tmp : $( REQDIR )
2023-03-27 12:53:40 +00:00
@$( MAKE) $( TYPE) EXE_NAME = " $( EXE_NAME) $( EXEPOSTFIX) " PRECOMPHEADERS = "" OUT_DIR = " $( OUT_DIR) " WCFLAGS = " $( QCC_CFLAGS) $( WCFLAGS) " LDFLAGS = " $( LDFLAGS) $( QCC_LDFLAGS) " OBJS = "QCC_OBJS SOBJS"
2013-07-26 17:19:06 +00:00
qcc-rel :
2020-10-26 06:30:35 +00:00
@$( MAKE) _qcc-tmp TYPE = _out-rel REQDIR = reldir EXE_NAME = " ../fteqcc $( BITS) " OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( QCC_DIR) " SOBJS = " qcctui.o packager.o $( if $( findstring win,$( FTE_TARGET) ) ,fteqcc.o) "
2013-07-26 17:19:06 +00:00
qccgui-rel :
2019-10-27 06:59:19 +00:00
@$( MAKE) _qcc-tmp TYPE = _out-rel REQDIR = reldir EXE_NAME = " ../fteqccgui $( BITS) " LTO = OUT_DIR = " $( RELEASE_DIR) / $( NCDIRPREFIX) $( QCC_DIR) gui " SOBJS = "qccgui.o qccguistuff.o packager.o decomp.o fteqcc.o" LDFLAGS = " $( LDFLAGS) -lole32 -lcomdlg32 -lcomctl32 -lshlwapi -mwindows "
2013-07-26 17:19:06 +00:00
qcc-dbg :
2020-10-26 06:30:35 +00:00
@$( MAKE) _qcc-tmp TYPE = _out-dbg REQDIR = debugdir EXE_NAME = " ../fteqcc $( BITS) " OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( QCC_DIR) " SOBJS = " qcctui.o packager.o $( if $( findstring win,$( FTE_TARGET) ) ,fteqcc.o) "
2013-07-26 17:19:06 +00:00
qccgui-dbg :
2019-10-27 06:59:19 +00:00
@$( MAKE) _qcc-tmp TYPE = _out-dbg REQDIR = debugdir EXE_NAME = " ../fteqccgui $( BITS) " LTO = OUT_DIR = " $( DEBUG_DIR) / $( NCDIRPREFIX) $( QCC_DIR) gui " SOBJS = "qccgui.o qccguistuff.o packager.o decomp.o fteqcc.o" LDFLAGS = " $( LDFLAGS) -lole32 -lcomdlg32 -lcomctl32 -lshlwapi -mwindows "
2013-07-26 17:19:06 +00:00
2014-12-29 06:39:57 +00:00
#scintilla is messy as fuck when building statically. but at least we can strip out the lexers we don't use this way.
#note that this is only used in the 'qccgui-scintilla' target.
2016-07-12 00:40:13 +00:00
SCINTILLA_FILES = AutoComplete.o CallTip.o CaseConvert.o CaseFolder.o CellBuffer.o CharacterCategory.o CharacterSet.o CharClassify.o ContractionState.o Decoration.o Document.o EditModel.o Editor.o EditView.o KeyMap.o Indicator.o LineMarker.o MarginView.o PerLine.o PlatWin.o PositionCache.o PropSetSimple.o RESearch.o RunStyles.o Selection.o Style.o UniConversion.o ViewStyle.o XPM.o ScintillaWin.o HanjaDic.o ScintillaBase.o Accessor.o Catalogue.o ExternalLexer.o LexerBase.o LexerModule.o LexerSimple.o StyleContext.o WordList.o LexCPP.o
2014-12-29 06:39:57 +00:00
SCINTILLA_ROOT = $( BASE_DIR) /scintilla$( SCINTILLAVER) /scintilla
SCINTILLA_DIRS = $( SCINTILLA_ROOT) /lexers:$( SCINTILLA_ROOT) /lexlib:$( SCINTILLA_ROOT) /src:$( SCINTILLA_ROOT) /win32
SCINTILLA_INC = -I$( SCINTILLA_ROOT) /include -I$( SCINTILLA_ROOT) /lexlib -I$( SCINTILLA_ROOT) /win32 -I$( SCINTILLA_ROOT) /src
$(RELEASE_DIR)/scintilla$(BITS).a : $( foreach f ,$ ( SCINTILLA_FILES ) ,$ ( OUT_DIR ) /$ ( f ) )
2016-07-12 00:40:13 +00:00
@$( AR) -r $@ $?
@$( AR) -s $@
2014-12-29 06:39:57 +00:00
scintilla$(BITS)_static :
@test -f scintilla$( SCINTILLAVER) .tar.gz || wget http://prdownloads.sourceforge.net/scintilla/scintilla$( SCINTILLAVER) .tgz?download -O scintilla$( SCINTILLAVER) .tar.gz
2016-07-12 00:40:13 +00:00
@-test -f $( SCINTILLA_ROOT) || ( mkdir $( BASE_DIR) /scintilla$( SCINTILLAVER) && cd $( BASE_DIR) /scintilla$( SCINTILLAVER) && tar -xvzf ../scintilla$( SCINTILLAVER) .tar.gz && cd scintilla && mv lexers/LexCPP.cxx . && rm lexers/Lex*.cxx && mv LexCPP.cxx lexers/ && cd scripts && python LexGen.py)
@$( MAKE) reldir OUT_DIR = $( RELEASE_DIR) /$( QCC_DIR) scin
@$( MAKE) $( RELEASE_DIR) /scintilla$( BITS) .a VPATH = " $( SCINTILLA_DIRS) " CFLAGS = " $( SCINTILLA_INC) -DDISABLE_D2D -DSTATIC_BUILD -DSCI_LEXER -std=c++11 " OUT_DIR = $( RELEASE_DIR) /$( QCC_DIR) scin WCFLAGS = " $( WCFLAGS) -Os " WARNINGFLAGS =
2014-12-29 06:39:57 +00:00
qccgui-scintilla : scintilla $( BITS ) _static
2019-10-27 06:59:19 +00:00
#LTO bugs out on WinMain for some reason, so try to disable it for this target.
@LTO= $( MAKE) _qcc-tmp TYPE = _out-rel REQDIR = reldir EXE_NAME = " ../fteqccgui $( BITS) " OUT_DIR = " $( RELEASE_DIR) / $( QCC_DIR) scin " SOBJS = "qccgui.o qccguistuff.o packager.o decomp.o fteqcc.o" WCFLAGS = " $( WCFLAGS) -DSCISTATIC " LDFLAGS = " $( LDFLAGS) $( RELEASE_DIR) /scintilla $( BITS) .a -static -luuid -lole32 -limm32 -lstdc++ -loleaut32 -lcomdlg32 -lcomctl32 -lshlwapi -mwindows "
2014-12-29 06:39:57 +00:00
2005-01-23 17:44:11 +00:00
i f d e f w i n d i r
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
outdir :
i f n e q "$(OUT_DIR)" ""
2017-08-14 17:43:13 +00:00
@-mkdir -p " $( subst /,\, $( OUT_DIR) ) "
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
e n d i f
debugdir : outdir
@-mkdir -p " $( subst /,\, $( RELEASE_DIR) ) "
reldir : outdir
@-mkdir -p " $( subst /,\, $( DEBUG_DIR) ) "
2005-01-23 17:44:11 +00:00
e l s e
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
outdir :
i f n e q "$(OUT_DIR)" ""
2017-08-14 17:43:13 +00:00
@-mkdir -p " $( OUT_DIR) "
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
e n d i f
debugdir : outdir
reldir : outdir
@-mkdir -p " $( RELEASE_DIR) "
debugdir : outdir
2017-08-14 17:43:13 +00:00
@-mkdir -p " $( DEBUG_DIR) "
2005-01-23 17:44:11 +00:00
e n d i f
2017-08-14 17:43:13 +00:00
plugins-dbg :
@-mkdir -p $( DEBUG_DIR)
2013-05-03 04:28:08 +00:00
@if test -e ../plugins/Makefile; \
2021-06-21 13:44:05 +00:00
then $( MAKE) native -C ../plugins OUT_DIR = " $( DEBUG_DIR) " CC = " $( CC) $( W32_CFLAGS) $( DEBUG_CFLAGS) " CXX = " $( CXX) $( W32_CFLAGS) $( subst -Wno-pointer-sign,,$( DEBUG_CFLAGS) ) " PKGCONFIG = " $( PKGCONFIG) " ARCH = " $( ARCH) " BASE_CFLAGS = " $( BASE_CFLAGS) $( BRANDFLAGS) " BASE_CXXFLAGS = " $( subst -Wno-pointer-sign,,$( BASE_CFLAGS) ) $( BRANDFLAGS) " FTE_TARGET = " $( FTE_TARGET) " ; \
2013-05-03 04:28:08 +00:00
else echo no plugins directory installed; \
fi
2005-05-20 08:13:48 +00:00
plugins :
2005-01-24 05:06:16 +00:00
2017-08-14 17:43:13 +00:00
plugins-rel :
@-mkdir -p $( RELEASE_DIR)
2013-05-03 04:28:08 +00:00
@if test -e ../plugins/Makefile; \
2021-07-24 14:24:46 +00:00
then $( MAKE) native -C ../plugins OUT_DIR = " $( RELEASE_DIR) " CC = " $( CC) " CXX = " $( CXX) " PKGCONFIG = " $( PKGCONFIG) " ARCH = " $( ARCH) " BASE_CFLAGS = " $( BASE_CFLAGS) $( BRANDFLAGS) " BASE_CXXFLAGS = " $( subst -Wno-pointer-sign,,$( BASE_CFLAGS) ) $( BRANDFLAGS) " FTE_TARGET = " $( FTE_TARGET) " ; \
2013-05-03 04:28:08 +00:00
else echo no plugins directory installed; \
fi
plugins-rel :
2005-01-23 17:44:11 +00:00
help :
@-echo "Specfic targets:"
@-echo "clean - removes all output (use make dirs afterwards)"
@-echo "all - make all the targets possible"
2007-09-02 19:55:17 +00:00
@-echo "rel - make the releases for the default system"
2009-04-06 02:45:11 +00:00
@-echo "dbg - make the debug builds for the default system"
2009-09-05 11:03:25 +00:00
@-echo "profile - make all the releases with profiling support for the default system"
2005-01-23 17:44:11 +00:00
@-echo ""
@-echo "Normal targets:"
@-echo "(each of these targets must have the postfix -rel or -dbg)"
2009-04-06 02:45:11 +00:00
@-echo "'sv-???' (Dedicated Server)"
@-echo "'gl-???' (OpenGL rendering + Built-in Server)"
2009-07-16 22:06:59 +00:00
@-echo "'m-???' (Merged client, OpenGL & D3D rendering + Dedicated server)"
2009-04-06 02:45:11 +00:00
@-echo "'mingl-???' (Minimal featured OpenGL render)"
@-echo "'d3d-???' (for windows builds)"
@-echo "'mcl-???' (currently broken)"
@-echo "'glcl-???' (currently broken)"
2013-03-12 23:09:25 +00:00
@-echo "'droid-???' (cross compiles Android package)"
2014-09-20 04:11:39 +00:00
@-echo "'web-???' (compiles javascript/emscripten page)"
2009-11-04 21:16:50 +00:00
@-echo ""
@-echo "Cross targets can be specified with FTE_TARGET=blah"
@-echo "linux32, linux64 specify specific x86 archs"
@-echo "SDL - Attempt to use sdl for the current target"
@-echo "win32 - Mingw compile for win32"
@-echo "vc - Attempts to use msvc8+ to compile. Note: uses profile guided optimisations. You must build+run the relevent profile target before a release target will compile properly. Debug doesn't care."
2023-07-09 18:44:14 +00:00
@-echo "android targets explicitly cross compile, and should generally not be given an FTE_TARGET."
2005-01-23 17:44:11 +00:00
clean :
-rm -f -r $( RELEASE_DIR)
-rm -f -r $( DEBUG_DIR)
2009-09-05 11:03:25 +00:00
-rm -f -r $( PROFILE_DIR)
2011-09-16 05:56:54 +00:00
-rm -f -r droid/bin
-rm -f -r droid/gen
-rm -f -r droid/libs
-rm -f droid/default.properties
-rm -f droid/local.properties
-rm -f droid/proguard.cfg
-rm -f droid/build.xml
2012-01-02 15:32:08 +00:00
distclean : clean
-rm -f droid/ftekeystore
2017-05-10 05:05:39 +00:00
-rm -f -r libs/SDL2-$( SDL2VER)
2011-09-16 05:56:54 +00:00
2013-03-12 23:09:25 +00:00
2014-09-20 04:11:39 +00:00
#################################################
#webgl helpers
2021-10-05 05:05:50 +00:00
i f e q ( $( FTE_TARGET ) , w e b )
2021-10-22 22:27:58 +00:00
$(OUT_DIR)/$(EXE_NAME) : web /ftejslib .js web /prejs .js
2021-10-05 05:05:50 +00:00
e n d i f
2021-08-04 21:17:31 +00:00
i f n e q ( $( shell which emcc 2> /dev /null ) , )
EMCC ?= emcc
e l s e
2017-04-18 11:12:17 +00:00
#EMCC?=/opt/emsdk_portable/emscripten/master/emcc
EMCC ?= emcc.bat --em-config $( shell cygpath -m $( USERPROFILE) ) /.emscripten
2021-08-04 21:17:31 +00:00
e n d i f
2017-04-18 11:12:17 +00:00
i f e q ( $( EMSDK ) , )
2017-04-10 07:52:18 +00:00
#just adds some extra paths (WINDOWS HOST ONLY)
#assumes you installed the emscripten 1.22.0 sdk to EMSCRIPTENROOT
#if you have a different version installed, you will need to fix up the paths yourself (or just use fte_target explicitly yourself).
EMSCRIPTENROOT?= C:/Games/tools/Emscripten
#EMSCRIPTENPATH=$(realpath $(EMSCRIPTENROOT)):$(realpath $(EMSCRIPTENROOT)/clang/e1.22.0_64bit):$(realpath $(EMSCRIPTENROOT)/node/0.10.17_64bit):$(realpath $(EMSCRIPTENROOT)/python/2.7.5.3_64bit):$(realpath $(EMSCRIPTENROOT)/emscripten/1.22.0):$(PATH)
EMSCRIPTENPATH = $( realpath $( EMSCRIPTENROOT) ) :$( realpath $( EMSCRIPTENROOT) /clang/e1.35.0_64bit) :$( realpath $( EMSCRIPTENROOT) /node/4.1.1_64bit/bin) :$( realpath $( EMSCRIPTENROOT) /python/2.7.5.3_64bit) :$( realpath $( EMSCRIPTENROOT) /emscripten/1.35.0) :$( PATH)
e l s e
EMSCRIPTENPATH = $( PATH)
e n d i f
2014-09-20 04:11:39 +00:00
web-rel :
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
@PATH= " $( EMSCRIPTENPATH) " $( MAKE) makelibs FTE_TARGET = web CC = " $( EMCC) " && PATH = " $( EMSCRIPTENPATH) " $( MAKE) gl-rel FTE_TARGET = web CC = " $( EMCC) "
@cp $( BASE_DIR) /web/fteshell.html $( RELEASE_DIR) /ftewebgl.html
2021-10-12 04:41:49 +00:00
@gzip -kf $( RELEASE_DIR) /ftewebgl.html
@gzip -kf $( RELEASE_DIR) /ftewebgl.js
@gzip -kf $( RELEASE_DIR) /ftewebgl.wasm
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
webcl-rel :
@PATH= " $( EMSCRIPTENPATH) " $( MAKE) makelibs FTE_TARGET = web CC = " $( EMCC) " && PATH = " $( EMSCRIPTENPATH) " $( MAKE) glcl-rel FTE_TARGET = web CC = " $( EMCC) "
@cp $( BASE_DIR) /web/fteshell.html $( RELEASE_DIR) /ftewebglcl.html
@sed -i 's/ftewebgl.js/ftewebglcl.js/g' release/ftewebglcl.html #swap out the .js filename for the client-only one.
@gzip -kf $( RELEASE_DIR) /ftewebglcl.html
@gzip -kf $( RELEASE_DIR) /ftewebglcl.js
@gzip -kf $( RELEASE_DIR) /ftewebglcl.wasm
2014-09-20 04:11:39 +00:00
web-dbg :
2016-07-15 12:26:24 +00:00
@PATH= " $( EMSCRIPTENPATH) " $( MAKE) gl-dbg FTE_TARGET = web CC = " $( EMCC) "
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
@cp $( BASE_DIR) /web/fteshell.html $( DEBUG_DIR) /ftewebgl.html
2021-10-12 04:41:49 +00:00
@gzip -kf $( DEBUG_DIR) /ftewebgl.html
@gzip -kf $( DEBUG_DIR) /ftewebgl.js
@gzip -kf $( DEBUG_DIR) /ftewebgl.wasm
2014-09-20 04:11:39 +00:00
2013-03-12 23:09:25 +00:00
#################################################
#android
2011-09-16 05:56:54 +00:00
#building for android will require:
#download android sdk+ndk
#ant installed
#droid-dbg will install it on 'the current device', if you've got a device plugged in or an emulator running, it should just work.
#makes an ant project for us
droid/build.xml :
2019-04-17 09:48:03 +00:00
-cd droid && PATH = $$ PATH:$( realpath $( ANDROID_HOME) /tools) :$( realpath $( ANDROID_NDK_ROOT) ) $( ANDROID_SCRIPT) update project -t android-9 -p . -n FTEDroid
2011-09-16 05:56:54 +00:00
#build FTE as a library, then build the java+package (release)
2012-01-02 15:32:08 +00:00
droid/ftekeystore :
2013-04-03 09:52:09 +00:00
i f e q ( $( KEYTOOLARGS ) , )
2012-01-02 15:32:08 +00:00
@echo
@echo In order to build a usable APK file it must be signed. That requires a private key.
@echo Creation of a private key requries various bits of info...
@echo You are expected to fill that stuff in now... By the way, don\' t forget the password!
@echo Note that every time you use make droid-rel, you will be required to enter a password.
@echo You can use \' make droid-opt\' instead if you wish to build an optimised build without signing,
@echo but such packages will require a rooted device \( or to be signed later\) .
@echo Just press control-c if you don\' t want to proceed.
@echo Morality warning: never distribute droid/ftekeystore - always do make distclean before distributing.
@echo
2012-01-17 07:57:46 +00:00
$( JAVATOOL) keytool -genkey -v -keystore $@ -alias autogen -keyalg RSA -keysize 2048 -validity 10000
2013-04-03 09:52:09 +00:00
e l s e
@echo Generating keystore
@$( JAVATOOL) keytool -genkey -keystore $@ -alias autogen -keyalg RSA -keysize 2048 -validity 10000 -noprompt $( KEYTOOLARGS)
e n d i f
2012-01-02 15:32:08 +00:00
2013-07-29 17:36:44 +00:00
droid-rel :
2021-08-04 21:17:31 +00:00
@$( MAKE) FTE_TARGET = droid droid/build.xml droid/ftekeystore
@$( foreach a, $( DROID_ARCH) , $( MAKE) FTE_TARGET = droid m-rel plugins-rel DROID_ARCH = $a NATIVE_PLUGINS = " $( NATIVE_PLUGINS) " ; )
@-rm -rf droid/libs
2012-02-27 12:23:15 +00:00
@$( foreach a, $( DROID_ARCH) , mkdir -p droid/libs/$a ; )
2019-05-10 02:06:07 +00:00
-@$( foreach a, $( DROID_ARCH) , cp $( RELEASE_DIR) /m_droid-$a /*.so droid/libs/$a /; )
2012-02-27 12:23:15 +00:00
2021-08-04 21:17:31 +00:00
@cd droid && $( ANT) -q release
2012-01-28 10:40:09 +00:00
i f n e q ( $( DROID_PACKSU ) , )
@echo Adding custom data files - non-compressed
2012-01-28 10:30:44 +00:00
zip droid/bin/FTEDroid-release-unsigned.apk -0 -j $( DROID_PACKSU)
2012-01-28 10:33:48 +00:00
e n d i f
2012-01-28 10:40:09 +00:00
i f n e q ( $( DROID_PACKSC ) , )
@echo Adding custom data files - compressed
2012-01-28 10:30:44 +00:00
zip droid/bin/FTEDroid-release-unsigned.apk -9 -j $( DROID_PACKSC)
2012-01-28 10:33:48 +00:00
e n d i f
2012-01-02 15:32:08 +00:00
@echo Signing package... I hope you remember your password.
2012-02-02 04:19:24 +00:00
@$( JAVATOOL) jarsigner $( JARSIGNARGS) -digestalg SHA1 -sigalg MD5withRSA -keystore droid/ftekeystore droid/bin/FTEDroid-release-unsigned.apk autogen
2021-08-04 21:17:31 +00:00
@-rm -f $( RELEASE_DIR) /FTEDroid.apk
@$( ANDROID_ZIPALIGN) 4 droid/bin/FTEDroid-release-unsigned.apk $( NATIVE_RELEASE_DIR) /FTEDroid.apk
2012-01-02 15:32:08 +00:00
2013-07-29 17:36:44 +00:00
droid-opt :
$( MAKE) FTE_TARGET = droid droid/build.xml droid/ftekeystore
2011-09-16 05:56:54 +00:00
$( MAKE) FTE_TARGET = droid gl-rel
mkdir -p droid/libs/armeabi
@cp $( RELEASE_DIR) /libftedroid.so droid/libs/armeabi/
2012-01-17 07:57:46 +00:00
@cd droid && $( ANT) release
2011-09-16 05:56:54 +00:00
cp droid/bin/FTEDroid-unsigned.apk $( RELEASE_DIR) /FTEDroid.apk
#build FTE as a library, then build the java+package (release). also installs it onto the 'current' device.
2013-07-29 17:36:44 +00:00
droid-dbg :
$( MAKE) FTE_TARGET = droid droid/build.xml
2019-05-10 02:06:07 +00:00
$( foreach a, $( DROID_ARCH) , $( MAKE) FTE_TARGET = droid m-dbg plugins-dbg DROID_ARCH = $a NATIVE_PLUGINS = " $( NATIVE_PLUGINS) " ; )
2019-04-15 18:43:42 +00:00
-rm -rf droid/libs
Android: fat presses, vibrator, onscreen keyboard, keep-screen-on, console scaling, touch-based console scrolling, additional bindables.
Some memory leaks fixed.
latency with the nq protocol over loopback is much reduced.
Terrain: now mostly a property of a (q1 for now) bsp map, file format changed, glsl now built in, terrain editor builtin improved/changed, holes supported.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4067 fc73d0e0-1445-4013-8a0c-d673dee63da5
2012-07-14 16:25:18 +00:00
@$( foreach a, $( DROID_ARCH) , mkdir -p droid/libs/$a ; )
2019-05-10 02:06:07 +00:00
-@$( foreach a, $( DROID_ARCH) , cp $( DEBUG_DIR) /m_droid-$a /*.so droid/libs/$a /; )
2014-04-06 15:16:39 +00:00
@cd droid && $( ANT) debug #&& $(ANT) debug install
2011-09-16 05:56:54 +00:00
cp droid/bin/FTEDroid-debug.apk $( DEBUG_DIR) /FTEDroid.apk
2005-01-23 17:44:11 +00:00
2012-01-28 10:30:44 +00:00
droid-help :
@-echo "make droid-dbg - compiles engine with debug info and signs package with debug key. Attempts to install onto emulator."
@-echo "make droid-opt - compiles engine with optimisations, but does not sign package. Not useful."
@-echo "make droid-rel - compiles engine with optimisations, adds custom data files, signs with private key, requires password."
@-echo
@-echo " Android Settings:
@-echo "DROID_PACKSC: specifies additional pak or pk3 files to compress into the package, which avoids extra configuration. Only used in release builds. You probably shouldn't use this except for really small packages. Any file seeks will give really poor performance."
@-echo "DROID_PACKSU: like DROID_PACKSC, but without compression. Faster loading times, but bigger. Use for anything that is already compressed (especially pk3s)."
2013-04-09 21:31:44 +00:00
@-echo "ANDROID_HOME: path to the android sdk install path."
@-echo "ANDROID_NDK_ROOT: path to the android ndk install path."
2012-01-28 10:30:44 +00:00
@-echo "ANT: path and name of apache ant. Probably doesn't need to be set if you're on linux."
@-echo "JAVA_HOME: path of your java install. Commonly already set in environment settings."
@-echo "JAVATOOL: path to your java install's bin directory. Doesn't need to be set if its already in your path."
@-echo "JARSIGNARGS: Additional optional arguments to java's jarsigner program. You may want to put -storepass FOO in here, but what ever you do - keep it secure. Avoid bash history snooping, etc. If its not present, you will safely be prompted as required."
@-echo
@-echo "Note that 'make droid-rel' will automatically generate a keystore. If you forget the password, just do a 'make dist-clean'."
2013-05-11 14:02:55 +00:00
2017-05-10 05:05:39 +00:00
$(BASE_DIR)/libs/SDL2-$(SDL2VER)/i686-w64-mingw32/bin/sdl2-config :
wget http://www.libsdl.org/release/SDL2-devel-$( SDL2VER) -mingw.tar.gz -O $( BASE_DIR) /sdl2.tar.gz
2014-02-13 23:54:57 +00:00
cd $( BASE_DIR) /libs && tar -xvzf $( BASE_DIR) /sdl2.tar.gz
rm $( BASE_DIR) /sdl2.tar.gz
2017-05-10 05:05:39 +00:00
$(BASE_DIR)/libs/SDL2-$(SDL2VER)/x86_64-w64-mingw32/bin/sdl2-config : $( BASE_DIR ) /libs /SDL 2-$( SDL 2VER ) /i 686-w 64-mingw 32/bin /sdl 2-config
2014-02-13 23:54:57 +00:00
2014-12-02 02:00:41 +00:00
#makes sure the configure scripts get the right idea.
AR ?= $( ARCH) -ar
2017-04-16 09:27:43 +00:00
CONFIGARGS += -host= $( ARCH) --enable-shared= no CC = " $( CC) "
CONFIGARGS := $( CONFIGARGS)
2017-11-24 18:40:17 +00:00
#--disable-silent-rules
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
OPUSCONFIGARGS = $( CONFIGARGS)
2017-11-24 18:40:17 +00:00
TOOLOVERRIDES += CFLAGS = " $$ CFLAGS -Os "
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
TOOLCONGIGUREOVERRIDES = $( TOOLOVERRIDES)
TOOLMAKEOVERRIDES = $( TOOLOVERRIDES)
i f e q ( w e b , $( FTE_TARGET ) )
TOOLCONFIGUREOVERRIDES = emconfigure
TOOLMAKEOVERRIDES = emmake
OPUSCONFIGARGS = --disable-rtcd --disable-hardening --enable-stack-protector= no --enable-shared= no
CONFIGARGS = --enable-shared= no
e n d i f
2014-12-02 02:00:41 +00:00
2017-04-29 02:45:21 +00:00
libs-$(ARCH)/libjpeg.a :
2014-12-02 02:00:41 +00:00
test -f jpegsrc.v$( JPEGVER) .tar.gz || wget http://www.ijg.org/files/jpegsrc.v$( JPEGVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libjpeg.a || ( mkdir -p libs-$( ARCH) && cd libs-$( ARCH) && tar -xvzf ../jpegsrc.v$( JPEGVER) .tar.gz && cd jpeg-$( JPEGVER) && $( CONFIGUREOVERRIDES) ./configure $( CONFIGARGS) && $( TOOLOVERRIDES) $( MAKE) && cp .libs/libjpeg.a ../ && $( TOOLOVERRIDES) $( AR) -s ../libjpeg.a && cp jconfig.h jerror.h jmorecfg.h jpeglib.h jversion.h ../ )
2017-04-29 02:45:21 +00:00
2021-10-22 22:27:58 +00:00
libs-$(ARCH)/libz.a libs-$(ARCH)/libz.pc :
2024-03-08 19:44:06 +00:00
test -f zlib-$( ZLIBVER) .tar.gz || wget http://zlib.net/fossils/zlib-$( ZLIBVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libz.a || ( mkdir -p libs-$( ARCH) && cd libs-$( ARCH) && tar -xvzf ../zlib-$( ZLIBVER) .tar.gz && cd zlib-$( ZLIBVER) && $( TOOLCONFIGUREOVERRIDES) ./configure --static && $( TOOLMAKEOVERRIDES) $( MAKE) libz.a CC = " $( CC) $( W32_CFLAGS) -fPIC " && cp libz.a ../ && $( TOOLOVERRIDES) $( AR) -s ../libz.a && cp zlib.h zconf.h zutil.h zlib.pc ../ )
2023-03-27 12:53:40 +00:00
libs-$(ARCH)/libz9.a : libs -$( ARCH ) /libz .a
( cd libs-$( ARCH) /zlib-$( ZLIBVER) && \
$( CC) -o contrib/infback9/infback9.o -c contrib/infback9/infback9.c -I. && \
$( CC) -o contrib/infback9/inftree9.o -c contrib/infback9/inftree9.c -I. && \
cp contrib/infback9/infback9.h .. && \
$( AR) rcs ../libz9.a contrib/infback9/infback9.o contrib/infback9/inftree9.o)
2017-04-29 02:45:21 +00:00
2020-01-09 15:35:40 +00:00
libs-$(ARCH)/libpng.a libs-$(ARCH)/libpng.pc : libs -$( ARCH ) /libz .a libs -$( ARCH ) /libz .pc
2014-12-02 02:00:41 +00:00
test -f libpng-$( PNGVER) .tar.gz || wget http://prdownloads.sourceforge.net/libpng/libpng-$( PNGVER) .tar.gz?download -O libpng-$( PNGVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libpng.a || ( mkdir -p libs-$( ARCH) && cd libs-$( ARCH) && tar -xvzf ../libpng-$( PNGVER) .tar.gz && cd libpng-$( PNGVER) && $( TOOLOVERRIDES) ./configure CPPFLAGS = -I$( NATIVE_ABSBASE_DIR) /libs-$( ARCH) / LDFLAGS = -L$( NATIVE_ABSBASE_DIR) /libs-$( ARCH) / $( CONFIGARGS) --enable-static && $( TOOLOVERRIDES) $( MAKE) && cp .libs/libpng16.a ../libpng.a && cp libpng.pc png*.h ../ )
2017-04-29 02:45:21 +00:00
libs-$(ARCH)/libogg.a :
2014-12-02 02:00:41 +00:00
test -f libogg-$( OGGVER) .tar.gz || wget http://downloads.xiph.org/releases/ogg/libogg-$( OGGVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libogg.a || ( mkdir -p libs-$( ARCH) && cd libs-$( ARCH) && tar -xvzf ../libogg-$( OGGVER) .tar.gz && cd libogg-$( OGGVER) && $( TOOLOVERRIDES) ./configure $( CONFIGARGS) && $( TOOLOVERRIDES) $( MAKE) && cp src/.libs/libogg.a ../ && $( TOOLOVERRIDES) $( AR) -s ../libogg.a && mkdir ../ogg && cp include/ogg/*.h ../ogg)
2013-05-11 14:02:55 +00:00
2017-11-24 18:40:17 +00:00
libs-$(ARCH)/libvorbis.a : libs -$( ARCH ) /libogg .a
2014-12-02 02:00:41 +00:00
test -f libvorbis-$( VORBISVER) .tar.gz || wget http://downloads.xiph.org/releases/vorbis/libvorbis-$( VORBISVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libvorbisfile.a || ( mkdir -p libs-$( ARCH) && cd libs-$( ARCH) && tar -xvzf ../libvorbis-$( VORBISVER) .tar.gz && cd libvorbis-$( VORBISVER) && $( TOOLOVERRIDES) ./configure PKG_CONFIG = $( CONFIGARGS) --disable-oggtest --with-ogg-libraries= .. --with-ogg-includes= $( NATIVE_ABSBASE_DIR) /libs-$( ARCH) /libogg-$( OGGVER) /include && $( TOOLOVERRIDES) $( MAKE) && cp lib/.libs/libvorbis.a ../ && cp lib/.libs/libvorbisfile.a ../ && mkdir ../vorbis && cp include/vorbis/*.h ../vorbis)
2017-04-29 02:45:21 +00:00
2017-11-24 18:40:17 +00:00
libs-$(ARCH)/libopus.a :
test -f opus-$( OPUSVER) .tar.gz || wget https://archive.mozilla.org/pub/opus/opus-$( OPUSVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libopus.a || ( mkdir -p libs-$( ARCH) && cd libs-$( ARCH) && tar -xvzf ../opus-$( OPUSVER) .tar.gz && cd opus-$( OPUSVER) && CFLAGS = " -D_FORTIFY_SOURCE=0 $( CFLAGS) -Os " $( TOOLCONFIGUREOVERRIDES) ./configure $( OPUSCONFIGARGS) --disable-extra-programs && $( TOOLMAKEOVERRIDES) $( MAKE) && cp .libs/libopus.a ../ && cp include/opus*.h ../)
2017-11-24 18:40:17 +00:00
2018-03-24 04:02:09 +00:00
libs-$(ARCH)/libspeex.a :
test -f speex-$( SPEEXVER) .tar.gz || wget http://downloads.us.xiph.org/releases/speex/speex-$( SPEEXVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libspeex.a || ( mkdir -p libs-$( ARCH) /speex && cd libs-$( ARCH) && tar -xvzf ../speex-$( SPEEXVER) .tar.gz && cd speex-$( SPEEXVER) && CFLAGS = " $( CFLAGS) -Os " $( TOOLCONFIGUREOVERRIDES) ./configure $( CONFIGARGS) --disable-binaries && $( TOOLMAKEOVERRIDES) $( MAKE) && cp libspeex/.libs/libspeex.a ../ && cp -r include/speex/*.h ../speex/)
2018-03-24 04:02:09 +00:00
libs-$(ARCH)/libspeexdsp.a :
test -f speexdsp-$( SPEEXDSPVER) .tar.gz || wget http://downloads.xiph.org/releases/speex/speexdsp-$( SPEEXDSPVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libspeexdsp.a || ( mkdir -p libs-$( ARCH) /speex && cd libs-$( ARCH) && tar -xvzf ../speexdsp-$( SPEEXDSPVER) .tar.gz && cd speexdsp-$( SPEEXDSPVER) && CFLAGS = " $( CFLAGS) -Os " $( TOOLCONFIGUREOVERRIDES) ./configure $( CONFIGARGS) && $( TOOLMAKEOVERRIDES) $( MAKE) && cp libspeexdsp/.libs/libspeexdsp.a ../ && cp -r include/speex/*.h ../speex/)
2018-03-24 04:02:09 +00:00
2020-01-09 15:35:40 +00:00
libs-$(ARCH)/libfreetype.a libs-$(ARCH)/ft2build.h : libs -$( ARCH ) /libpng .a libs -$( ARCH ) /libpng .pc
2020-03-29 06:36:49 +00:00
test -f freetype-$( FREETYPEVER) .tar.gz || wget https://download-mirror.savannah.gnu.org/releases/freetype/freetype-$( FREETYPEVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libfreetype.a || ( mkdir -p libs-$( ARCH) && cd libs-$( ARCH) && tar -xvzf ../freetype-$( FREETYPEVER) .tar.gz && cd freetype-$( FREETYPEVER) && PKG_CONFIG_LIBDIR = $( NATIVE_ABSBASE_DIR) /libs-$( ARCH) CFLAGS = " $( CFLAGS) -Os " $( TOOLOVERRIDES) ./configure CPPFLAGS = -I$( NATIVE_ABSBASE_DIR) /libs-$( ARCH) / LDFLAGS = -L$( NATIVE_ABSBASE_DIR) /libs-$( ARCH) / $( CONFIGARGS) --with-zlib= yes --with-png= yes --with-bzip2= no --with-harfbuzz= no && $( TOOLOVERRIDES) $( MAKE) && cp objs/.libs/libfreetype.a ../ && cp -r include/* ../)
2017-11-24 18:40:17 +00:00
2018-08-04 19:00:19 +00:00
libs-$(ARCH)/libBulletDynamics.a :
2018-08-25 02:53:45 +00:00
test -f bullet3-$( BULLETVER) .tar.gz || wget https://github.com/bulletphysics/bullet3/archive/$( BULLETVER) .tar.gz -O bullet3-$( BULLETVER) .tar.gz
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
test -f libs-$( ARCH) /libBulletDynamics.a || ( mkdir -p libs-$( ARCH) && cd libs-$( ARCH) && tar -xvzf ../bullet3-$( BULLETVER) .tar.gz && cd bullet3-$( BULLETVER) && CFLAGS = " $( CFLAGS) -Os " $( TOOLOVERRIDES) $( DO_CMAKE) . && $( TOOLOVERRIDES) $( MAKE) LinearMath BulletDynamics BulletCollision && cp src/LinearMath/libLinearMath.a src/BulletDynamics/libBulletDynamics.a src/BulletCollision/libBulletCollision.a src/btBulletCollisionCommon.h src/btBulletDynamicsCommon.h ..)
2018-08-04 19:00:19 +00:00
2024-02-07 01:34:21 +00:00
libs-$(ARCH)/vulkan/vulkan.h :
test -f vulkan-sdk-$( VULKANVER) .tar.gz || wget https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/vulkan-sdk-$( VULKANVER) .tar.gz
cd libs-$( ARCH) && tar -xvzf ../vulkan-sdk-$( VULKANVER) .tar.gz --strip-components= 2 Vulkan-Headers-vulkan-sdk-$( VULKANVER) /include/
2021-10-22 22:27:58 +00:00
i f e q ( $( FTE_TARGET ) , w e b )
makelibs : libs -$( ARCH ) /libz .a $( MAKELIBS )
e l s e
2024-02-07 01:34:21 +00:00
MAKELIBS += libs-$( ARCH) /vulkan/vulkan.h
2023-03-27 12:53:40 +00:00
makelibs : libs -$( ARCH ) /libjpeg .a libs -$( ARCH ) /libz 9.a libs -$( ARCH ) /libz .a libs -$( ARCH ) /libpng .a libs -$( ARCH ) /libogg .a libs -$( ARCH ) /libvorbis .a libs -$( ARCH ) /libopus .a libs -$( ARCH ) /libspeex .a libs -$( ARCH ) /libspeexdsp .a libs -$( ARCH ) /libfreetype .a $( MAKELIBS )
2021-10-22 22:27:58 +00:00
e n d i f
2017-04-29 02:45:21 +00:00
2017-12-02 22:30:08 +00:00
HTTP_OBJECTS = http/httpserver.c http/iwebiface.c common/fs_stdio.c http/ftpserver.c
2019-02-16 19:09:07 +00:00
$(RELEASE_DIR)/httpserver$(BITS)$(EXEPOSTFIX) : $( HTTP_OBJECTS )
$( CC) -o $@ -Icommon -Iclient -Iqclib -Igl -Iserver -DWEBSERVER -DWEBSVONLY -Dstricmp= strcasecmp -Dstrnicmp= strncasecmp -DNO_PNG $( HTTP_OBJECTS)
httpserver : $( RELEASE_DIR ) /httpserver $( BITS ) $( EXEPOSTFIX )
2017-04-29 02:45:21 +00:00
2022-02-19 20:48:40 +00:00
IQM_OBJECTS = ../iqm/iqm.cpp ../imgtool.c client/image.c common/json.c ../plugins/models/gltf.c
2021-06-21 13:46:31 +00:00
$(RELEASE_DIR)/iqmtool$(BITS)$(EXEPOSTFIX) : $( IQM_OBJECTS )
2021-08-05 17:07:06 +00:00
i f e q ( w i n , $( findstring win ,$ ( FTE_TARGET ) ) )
2021-06-21 13:46:31 +00:00
$( CC) -o $@ $( IQM_OBJECTS) -Icommon -Iclient -Iqclib -Igl -Iserver $( ALL_CFLAGS) $( CLIENTLIBFLAGS) -DIQMTOOL $( BASELDFLAGS) $( CLIENTLDDEPS) --static -static-libgcc -static-libstdc++ -lstdc++ -lm -Os
2020-11-07 07:16:39 +00:00
e l s e
2021-07-20 10:15:02 +00:00
$( CC) -o $@ $( IQM_OBJECTS) -Icommon -Iclient -Iqclib -Igl -Iserver $( ALL_CFLAGS) -DIQMTOOL -lstdc++ -lm -ldl -Os
2020-11-07 07:16:39 +00:00
e n d i f
2022-03-06 20:16:21 +00:00
iqm-rel : reldir $( RELEASE_DIR ) /iqmtool $( BITS ) $( EXEPOSTFIX )
iqmtool-rel : reldir $( RELEASE_DIR ) /iqmtool $( BITS ) $( EXEPOSTFIX )
2019-02-16 19:09:07 +00:00
iqm : iqm -rel
2021-06-21 13:46:31 +00:00
iqmtool : iqmtool -rel
2015-06-04 06:15:14 +00:00
2019-09-29 03:08:01 +00:00
IMGTOOL_OBJECTS = ../imgtool.c client/image.c
2020-01-09 15:35:40 +00:00
$(RELEASE_DIR)/imgtool$(BITS)$(EXEPOSTFIX) : $( IMGTOOL_OBJECTS )
$( CC) -o $@ $( IMGTOOL_OBJECTS) -lstdc++ -lm -Os $( ALL_CFLAGS) $( CLIENTLIBFLAGS) -DIMGTOOL $( BASELDFLAGS) $( CLIENTLDDEPS)
2019-09-29 03:08:01 +00:00
imgtool-rel : $( RELEASE_DIR ) /imgtool $( BITS ) $( EXEPOSTFIX )
imgtool : imgtool -rel
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
MASTER_OBJECTS = server/sv_sys_unix.c common/sys_linux_threads.c common/net_ssl_gnutls.c server/sv_master.c common/net_wins.c common/net_ice.c common/cvar.c common/cmd.c common/sha1.c common/sha2.c http/httpclient.c common/log.c common/fs.c common/fs_stdio.c common/common.c common/translate.c common/zone.c qclib/hash.c
2019-02-16 19:09:07 +00:00
$(RELEASE_DIR)/ftemaster$(BITS)$(EXEPOSTFIX) : $( MASTER_OBJECTS )
2020-02-11 18:06:10 +00:00
$( CC) -o $@ $( MASTER_OBJECTS) -flto= jobserver -fvisibility= hidden -Icommon -Iclient -Iqclib -Igl -Iserver -DMASTERONLY -Dstricmp= strcasecmp -Dstrnicmp= strncasecmp -lm -ldl -lz $( RELEASE_CFLAGS) $( RELEASE_LDFLAGS)
$(DEBUG_DIR)/ftemaster$(BITS)$(EXEPOSTFIX) : $( MASTER_OBJECTS )
$( CC) -o $@ $( MASTER_OBJECTS) -Icommon -Iclient -Iqclib -Igl -Iserver -DMASTERONLY -Dstricmp= strcasecmp -Dstrnicmp= strncasecmp -lm -ldl -lz $( DEBUG_CFLAGS) $( DEBUG_LDFLAGS)
Added sys_openfile console command(and menu option) to web and flatpak(via cmake+dbus) builds, to 'install' packages on sandboxed systems a bit more easily.
Cmake: Add FTE_WERROR option, defaults to true in debug builds and off in release builds (in case future compilers have issues).
Cmake: Pull in libXscreensaver so we don't get interrupted by screensavers when playing demos.
Make: Added `make webcl-rel` for a web build without server bloat (eg for sites focused on demo playback. Yes, this means you XantoM).
fteqcc: Include the decompiler in fteqcc (non-gui) builds ('-d' arg).
fteqcc: Decompiler can now mostly handle hexen2 mods without any unknown opcodes.
Allow ezHud and OpenSSL to be compiled as in-engine plugins, potentially for web and windows ports respectively.
Web: Fix support for ogg vorbis. Add support for voip.
Web: Added basic support for WebXR.
QTV: Don't try seeking on unseekable qtv streams. Don't spam when developer 1 is set.
QTV: add support for some eztv extensions.
MVD: added hack to use ktx's vweps in mvd where mvdsv doesn't bother to record the info.
qwfwd: hack around a hack in qwfwd, allowing it to work again.
recording: favour qwd in single player, instead of mvd.
Protocol: reduce client memory used for precache names. Bump maximum precache counts - some people are just abusive, yes you Orl.
hexen2: add enough clientside protocol compat to play the demo included with h2mp. lacks effects.
in_xflip: restored this setting.
fs_hidesyspaths: new cvar, defaults to enabled so you won't find your username or whatever turning up in screenshots or the like. change it to 0 before debuging stuff eg via 'path'.
gl_overbright_models: Added cvar to match QS.
netchan: Added MTU determination, we'll no longer fail to connect when routers stupidly drop icmp packets.
Win: try a few other versions of xinput too.
CSQC: Added a CSQC_GenerateMaterial function, to give the csqc a chance to generate custom materials.
MenuQC: Added support for the skeletal objects API.
2024-04-09 17:13:59 +00:00
master-rel : reldir $( RELEASE_DIR ) /ftemaster $( BITS ) $( EXEPOSTFIX )
master-dbg : dbgdir $( DEBUG_DIR ) /ftemaster $( BITS ) $( EXEPOSTFIX )
2019-02-16 19:09:07 +00:00
master : master -rel
QTV_OBJECTS = \
netchan.c \
parse.c \
msg.c \
qw.c \
source.c \
bsp.c \
rcon.c \
mdfour.c \
crc.c \
control.c \
forward.c \
pmove.c \
menu.c \
2020-01-20 18:01:39 +00:00
msg.c \
2019-02-16 19:09:07 +00:00
httpsv.c \
sha1.c \
libqtvc/glibc_sucks.c
$(RELEASE_DIR)/qtv$(BITS)$(EXEPOSTFIX) : $( QTV_OBJECTS )
2020-01-20 18:01:39 +00:00
$( CC) -o $@ $? -lstdc++ -lm $( BASE_INCLUDES) $( QTV_LDFLAGS) $( SVNREVISION)
2019-02-16 19:09:07 +00:00
qtv-rel :
2019-10-27 06:59:19 +00:00
@$( MAKE) $( RELEASE_DIR) /qtv$( BITS) $( EXEPOSTFIX) VPATH = " $( BASE_DIR) /../fteqtv: $( VPATH) "
2019-02-16 19:09:07 +00:00
qtv : qtv -rel
2022-03-06 21:13:14 +00:00
utils : httpserver iqmtool imgtool master qtv -rel
2015-06-04 06:15:14 +00:00
prefix ?= /usr/local
exec_prefix ?= $( prefix)
bindir ?= $( exec_prefix) /bin
sbindir ?= $( exec_prefix) /sbin
INSTALL ?= install
INSTALL_PROGRAM ?= $( INSTALL)
INSTALL_DATA ?= ${ INSTALL } -m 644
install : sv -rel gl -rel mingl -rel qcc -rel
2017-02-19 00:15:42 +00:00
$( INSTALL_PROGRAM) $( RELEASE_DIR) /$( EXE_NAME) -gl $( DESTDIR) $( bindir) /$( EXE_NAME) -gl
$( INSTALL_PROGRAM) $( RELEASE_DIR) /$( EXE_NAME) -mingl $( DESTDIR) $( bindir) /$( EXE_NAME) -mingl
$( INSTALL_PROGRAM) $( RELEASE_DIR) /$( EXE_NAME) -sv $( DESTDIR) $( bindir) /$( EXE_NAME) -sv
2016-07-28 13:18:22 +00:00
$( INSTALL_PROGRAM) $( RELEASE_DIR) /fteqcc $( DESTDIR) $( bindir) /fteqcc
2018-07-05 16:21:44 +00:00
2021-05-09 13:01:50 +00:00
version :
@echo $( SVN_VERSION)
@echo $( SVN_DATE)
2022-03-08 05:32:38 +00:00
@echo $( FTE_CONFIG_EXTRA)
2021-05-09 13:01:50 +00:00