216 lines
10 KiB
Makefile
216 lines
10 KiB
Makefile
# Nuclide-Lite Makefile
|
|
# 2025-01-22
|
|
|
|
# id1 = Quake; data1 = Hexen 2; qw = QuakeWorld
|
|
GAME=id1
|
|
ENGINE_CLBUILD=m-dbg
|
|
EDITOR=radiant
|
|
ENGINE_URL=https://www.github.com/fte-team/fteqw
|
|
NUCLIDE_DIR=`pwd`
|
|
QCC_DIR=$(NUCLIDE_DIR)
|
|
BUILD_DIR=$(NUCLIDE_DIR)/build
|
|
NAME=idtech2-$(GAME)
|
|
|
|
RADIANT_GAME="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/games/$(GAME).game"
|
|
RADIANT_XLINK="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/game/game.xlink"
|
|
RADIANT_SYNAPSE="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/game/synapse.config"
|
|
RADIANT_PROJECT="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/scripts/default_project.proj"
|
|
RADIANT_TEXTURES="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/textures"
|
|
ENTITY_DEF="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/scripts/entities.def"
|
|
|
|
EDITOR_QBSP="$(ARGSTR)TEMPLATEenginepath/qbsp"
|
|
EDITOR_QVIS="$(ARGSTR)TEMPLATEenginepath/qvis"
|
|
EDITOR_QRAD="$(ARGSTR)TEMPLATEenginepath/qrad"
|
|
EDITOR_ENGINEPATH="$(ARGSTR)TEMPLATEenginepath"
|
|
EDITOR_BASEPATH="$(ARGSTR)TEMPLATEbasedir"
|
|
EDITOR_HOMEPATH="$(ARGSTR)TEMPLATEuserhomepath"
|
|
|
|
define CMDSTR
|
|
#
|
|
endef
|
|
|
|
define ARGSTR
|
|
\$
|
|
endef
|
|
|
|
help:
|
|
@printf "Available targets:\n"
|
|
@printf "\thelp\n"
|
|
@printf "\tgame\n"
|
|
@printf "\tfteqcc\n"
|
|
@printf "\tfteqw\n"
|
|
|
|
all: models maps game gfx
|
|
|
|
game:
|
|
cd $(GAME)/src/ && ../../fteqcc
|
|
|
|
pak: game qfiles
|
|
./Tools/build_filesdat.sh id1
|
|
cd $(GAME)/src && ../../qfiles -pak 0
|
|
cd $(GAME)/src && ../../qfiles -pak 1
|
|
|
|
run: fteqw game
|
|
./fteqw -basedir `pwd` -netquake -game $(GAME)
|
|
|
|
wad: imgtool palette
|
|
./Tools/build_wads.sh $(GAME)
|
|
|
|
maps: wad
|
|
./Tools/build_maps.sh $(GAME)
|
|
|
|
$(GAME)/maps/%.bsp: qbsp qlight qvis
|
|
Tools/make_map.sh $(GAME) "$@"
|
|
|
|
models: iqmtool palette
|
|
./Tools/build_models.sh $(GAME)
|
|
|
|
edef:
|
|
Tools/make_mapdef.sh $(GAME)
|
|
|
|
gfx: imgtool palette
|
|
cd $(GAME)/gfxsrc/ && ls | grep -v palette\.lmp | grep \.xcf | xargs ../../imgtool --rgb8 --ext png
|
|
cd $(GAME)/gfxsrc/ && ls | grep -v palette\.png | grep \.png | xargs mogrify -type TrueColor -compress None -flip -format tga
|
|
cp $(GAME)/gfx/palette.lmp $(GAME)/gfxsrc/palette.lmp
|
|
cd $(GAME)/gfxsrc/ && ls | grep -v palette\.tga | grep \.tga | xargs ../../tga2lmp
|
|
rm $(GAME)/gfxsrc/*.tga
|
|
cp $(GAME)/gfx/palette.lmp $(GAME)/gfxsrc/palette.lmp
|
|
rsync -va $(GAME)/gfxsrc/*.lmp $(GAME)/gfx/
|
|
rm $(GAME)/gfxsrc/*.lmp
|
|
|
|
# various palette utilities needed
|
|
tga2pal:
|
|
$(CC) -o tga2pal Tools/Source/tga2pal.c
|
|
|
|
wav2loop:
|
|
$(CC) -o wav2loop Tools/Source/wav2loop.c
|
|
|
|
tga2lmp:
|
|
$(CC) -o tga2lmp Tools/Source/tga2lmp.c
|
|
|
|
pal2pal:
|
|
$(CC) -o pal2pal Tools/Source/pal2pal.c
|
|
|
|
pal2colormap:
|
|
$(CC) -o pal2colormap Tools/Source/pal2colormap.c
|
|
|
|
qfiles:
|
|
$(CC) -o qfiles Tools/Source/qfiles.c Tools/Source/cmdlib.c
|
|
|
|
palette: pal2colormap pal2pal tga2pal
|
|
if [ ! -d $(GAME)/gfx ];then mkdir $(GAME)/gfx; fi
|
|
mogrify -type TrueColor -compress None -flip -format tga $(GAME)/gfxsrc/palette.png
|
|
cd $(GAME)/gfxsrc/ && ../../tga2pal palette.tga
|
|
cd $(GAME)/gfxsrc/ && ../../pal2pal palette.lmp
|
|
cd $(GAME)/gfxsrc/ && ../../pal2colormap palette.lmp
|
|
mv $(GAME)/gfxsrc/palette.lmp $(GAME)/gfx/palette.lmp
|
|
mv $(GAME)/gfxsrc/colormap.lmp $(GAME)/gfx/colormap.lmp
|
|
mv $(GAME)/gfxsrc/palette.pal $(GAME)/gfx/palette.pal
|
|
-mkdir -p $(GAME)/gfxsrc
|
|
rm $(GAME)/gfxsrc/palette.tga
|
|
|
|
# fteqw repo
|
|
update:
|
|
if [ ! -d ThirdParty/fteqw ];then mkdir ThirdParty && git clone $(ENGINE_URL) ThirdParty/fteqw;else cd ./ThirdParty/fteqw && git pull;fi
|
|
if [ ! -d ThirdParty/gtkradiant ];then git clone https://github.com/TTimo/gtkradiant ThirdParty/gtkradiant;else cd ./ThirdParty/gtkradiant && git pull;fi
|
|
|
|
fteqcc: update
|
|
cd ThirdParty/fteqw/engine && $(MAKE) qcc-rel
|
|
install -m 0777 ./ThirdParty/fteqw/engine/release/fteqcc ./
|
|
|
|
fteqw: update
|
|
cd ThirdParty/fteqw/engine && $(MAKE) makelibs ARCH=x86_64
|
|
cd ThirdParty/fteqw/engine && $(MAKE) $(ENGINE_CLBUILD) ARCH=x86_64
|
|
install -m 0777 ./ThirdParty/fteqw/engine/debug/fteqw ./
|
|
|
|
imgtool: update
|
|
cd ThirdParty/fteqw/engine && $(MAKE) imgtool ARCH=x86_64
|
|
install -m 0777 ./ThirdParty/fteqw/engine/release/imgtool ./
|
|
|
|
iqmtool: update
|
|
cd ThirdParty/fteqw/engine && $(MAKE) iqmtool ARCH=x86_64
|
|
install -m 0777 ./ThirdParty/fteqw/engine/release/iqmtool ./
|
|
|
|
qbsp:
|
|
printf "qbsp build\n"
|
|
|
|
qvis:
|
|
printf "qvis build\n"
|
|
|
|
qlight:
|
|
printf "qlight build\n"
|
|
|
|
radiant: update
|
|
if [ ! -d ThirdParty/gtkradiant ];then git clone https://github.com/TTimo/gtkradiant ThirdParty/gtkradiant;fi
|
|
cd ThirdParty/gtkradiant && scons
|
|
Tools/make_launcher.sh ./ThirdParty/gtkradiant/install/ ./radiant.bin radiant
|
|
|
|
launcher:
|
|
Tools/make_launcher.sh "./" "./fteqw -readonly -basedir ./ -netquake -game $(GAME) +exec $(USER).cfg" $(GAME).sh
|
|
|
|
radiant-game: radiant edef
|
|
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"yes\"?>" > "$(RADIANT_GAME)"
|
|
echo "<game" >> "$(RADIANT_GAME)"
|
|
echo " name=\"$(NAME)\"" >> "$(RADIANT_GAME)"
|
|
echo " enginepath_linux=\"$(NUCLIDE_DIR)\"" >> "$(RADIANT_GAME)"
|
|
echo " gametools_linux=\"$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/game\"" >> "$(RADIANT_GAME)"
|
|
echo " prefix=\".$(GAME)\"" >> "$(RADIANT_GAME)"
|
|
echo " basegame=\"$(GAME)\"" >> "$(RADIANT_GAME)"
|
|
echo "/>" >> "$(RADIANT_GAME)"
|
|
mkdir -p "$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/game"
|
|
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"yes\"?>" > "$(RADIANT_XLINK)"
|
|
echo "<!-- Links for the $(NAME) game pack -->" >> "$(RADIANT_XLINK)"
|
|
echo "<links>" >> "$(RADIANT_XLINK)"
|
|
echo "<item name=\"Nuclide Developer Reference\" url=\"http://developer.vera-visions.com/\"/>" >> "$(RADIANT_XLINK)"
|
|
echo "<item name=\"Vera Visions\" url=\"http://www.vera-visions.com/\"/>" >> "$(RADIANT_XLINK)"
|
|
echo "</links>" >> "$(RADIANT_XLINK)"
|
|
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"yes\"?><synapseconfig><client name=\"core\"><api name=\"image\">" > "$(RADIANT_SYNAPSE)"
|
|
echo "pcx tga mip" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api><api name=\"VFS\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "wad" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api><api name=\"map\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "maphl" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api><api name=\"eclass\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "def" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api><api name=\"surfdialog\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api></client><client name=\"image\"><api name=\"VFS\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "wad" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api></client><client name=\"shaders\"><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api><api name=\"VFS\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "wad" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api></client><client name=\"map\"><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api></client><client name=\"xmap\"><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api></client><client name=\"model\"><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api><api name=\"VFS\">" >> "$(RADIANT_SYNAPSE)"
|
|
echo "wad" >> "$(RADIANT_SYNAPSE)"
|
|
echo "</api></client></synapseconfig>" >> "$(RADIANT_SYNAPSE)"
|
|
mkdir -p "$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/scripts"
|
|
cp "$(GAME)/scripts/entities.def" "$(ENTITY_DEF)"
|
|
echo "<?xml version=\"1.0\"?>" > "$(RADIANT_PROJECT)"
|
|
echo "<!DOCTYPE project SYSTEM \"dtds/project.dtd\">" >> "$(RADIANT_PROJECT)"
|
|
echo "<project>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"version\" value=\"2\"/>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"template_version\" value=\"8\"/>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"basepath\" value=\"$(EDITOR_ENGINEPATH)$(EDITOR_BASEPATH)/\"/>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"rshcmd\" value=\"\"/>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"remotebasepath\" value=\"$(EDITOR_ENGINEPATH)$(EDITOR_BASEPATH)/\"/>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"entitypath\" value=\"$(ARGSTR)TEMPLATEtoolspath$(EDITOR_BASEPATH)/scripts/entities.def\"/>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"texturepath\" value=\"$(EDITOR_ENGINEPATH)$(EDITOR_BASEPATH)/textures/\"/>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"autosave\" value=\"$(EDITOR_HOMEPATH)$(EDITOR_BASEPATH)/maps/autosave.map\"/>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"mapspath\" value=\"$(EDITOR_HOMEPATH)$(EDITOR_BASEPATH)/maps/\"/>" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"bsp_VMAP: (Fast Fullbright)\" value=\"! "$(EDITOR_VMAP)" -v $(CMDSTR) -game $(GAME) -fs_basepath "$(EDITOR_ENGINEPATH)" -custinfoparms -threads 4 -samplesize 8 $(ARGSTR) && ! "$(EDITOR_VMAP)" $(CMDSTR) -game $(GAME) -fs_basepath "$(EDITOR_ENGINEPATH)" -vis -saveprt$(ARGSTR)\" />" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"bsp_VMAP: (Fast Light)\" value=\"! "$(EDITOR_VMAP)" -v $(CMDSTR) -game $(GAME) -fs_basepath "$(EDITOR_ENGINEPATH)" -custinfoparms -threads 4 -samplesize 8 $(ARGSTR) && ! "$(EDITOR_VMAP)" $(CMDSTR) -game $(GAME) -fs_basepath "$(EDITOR_ENGINEPATH)" -vis -saveprt $(ARGSTR) && ! "$(EDITOR_VMAP)" $(CMDSTR) -game $(GAME) -fs_basepath "$(EDITOR_ENGINEPATH)" -light -custinfoparms -v -samplesize 8 -fast -threads 4 -samples 4 -shade -shadeangle 60 -patchshadows $(ARGSTR)\" />" >> "$(RADIANT_PROJECT)"
|
|
echo "<key name=\"bsp_VMAP: (Full)\" value=\"! "$(EDITOR_VMAP)" -v $(CMDSTR) -game $(GAME) -fs_basepath "$(EDITOR_ENGINEPATH)" -custinfoparms -threads 4 -samplesize 8 $(ARGSTR) && ! "$(EDITOR_VMAP)" $(CMDSTR) -game $(GAME) -fs_basepath "$(EDITOR_ENGINEPATH)" -vis -saveprt $(ARGSTR) && ! "$(EDITOR_VMAP)" $(CMDSTR) -game $(GAME) -fs_basepath "$(EDITOR_ENGINEPATH)" -light -custinfoparms -samplesize 8 -fast -threads 4 -samples 4 -shade -shadeangle 60 -patchshadows $(ARGSTR)\" />" >> "$(RADIANT_PROJECT)"
|
|
echo "</project>" >> "$(RADIANT_PROJECT)"
|
|
mkdir -p "$(RADIANT_TEXTURES)/."
|
|
cp "$(GAME)/gfx/palette.lmp" "$(RADIANT_TEXTURES)/palette.lmp"
|
|
mkdir -p "$(HOME)/.$(GAME)/$(GAME)/scripts"
|
|
rsync -rva "$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/." "$(HOME)/.$(GAME)/$(GAME)/."
|
|
rsync -rva "$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/." "./$(GAME)/."
|