gzdoom/default.cbd
2006-05-16 02:50:18 +00:00

475 lines
10 KiB
Text

do ifopt help
echo "Available options are:
debug - Build debug instead of release
verbose - Show system commands instead of decorated messages
clean - Clean temp files (use with debug to clean debug files)
zdoom.pk3 - (Re)build just zdoom.pk3, even if it already exists
To use with MinGW, compile cbuild.c into an executable using:
gcc -O2 -W -Wall -Werror -o cbuild.exe cbuild.c
Or if you have a sh-compatible shell, you can run the cbuild.c file
directly or have it automatically compile itself with GCC by passing
--make-compiled
"
exit 0
done
# Here's the main script. All commands are case in-sensitive.
# 'Ifopt' will check if the following word was passed on the command line, and execute the
# rest of the line if so. The reverse, 'ifnopt', also exists.
ifopt verbose verbose 1
ifopt debug CONFIG = Debug
# VAR?=foo will only set the var if it's unset. Note that if you want spaces, put '' or ""
# quotes around the value. VAR+=foo will append foo to the very end of the existing var.
# And, VAR-=foo will remove all occurences of foo from the var.
CONFIG ?= Release
OPTLEVEL ?= 2
ARCH_TYPE ?= pentium
TUNE_TYPE ?= athlon-xp
RELEASETARGET ?= zdoomgcc
DEBUGTARGET ?= zdoomgccd
DEBUGOBJDIR = debugobj
RELEASEOBJDIR = releaseobj
CPPFLAGS = "-DHAVE_FILELENGTH -D__forceinline=inline -Izlib -IFLAC -Isrc -Isrc/sdl -Isrc/g_doom -Isrc/g_heretic -Isrc/g_hexen -Isrc/g_raven -Isrc/g_strife -Isrc/g_shared -Isrc/oplsynth -Isrc/sound"
LDFLAGS = "-lFLAC++ -lFLAC -lz -lfmod `sdl-config --libs`"
CFLAGS = "`sdl-config --cflags` "
do ifopt debug
OBJDIR = "${DEBUGOBJDIR}"
CFLAGS += "-Wall -Wno-unused -g3"
CPPFLAGS += " -D_DEBUG"
CXXFLAGS = "${CFLAGS}"
NASMFLAGS = "-g"
TARGET = "${DEBUGTARGET}"
else
OBJDIR = "${RELEASEOBJDIR}"
CFLAGS += "-march=${ARCH_TYPE} -mtune=${TUNE_TYPE} -Wall -Wno-unused -O${OPTLEVEL} -fomit-frame-pointer"
CPPFLAGS += " -DNDEBUG"
CXXFLAGS = "${CFLAGS}"
LDFLAGS += " -Wl,-Map=zdoomgcc.map"
TARGET = "${RELEASETARGET}"
done
ifnplat win32 CPPFLAGS += " -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp"
# This is where the object and dependancy files go when compiled
OBJ_DIR = "${OBJDIR}"
DEP_DIR = "${OBJDIR}"
do ifnopt clean
EVILCLEAN = 0
ifnexist "${OBJ_DIR}" mkdir "${OBJ_DIR}"
ifopt zdoom.pk3 goto makewad
do if "${NOASM}"=""
# This sets a custom command to run durring a compile for files with the
# given extension. <@> is replaced with the output file, <!> is the source,
# and <*> is the raw name as given to the compile command, without the
# extension
do ifplat win32
associate 'nas' 'nasmw -o <@> -f win32 <!>'
else ifplat unix
associate 'nas' 'nasm -o <@> -f elf -DM_TARGET_LINUX <!>'
else
echo ''
echo Disabling assembly for this platform.
echo ''
goto no_asm
done
CPPFLAGS = "-DUSEASM ${CPPFLAGS}"
else
#:no_asm
CPPFLAGS = "-DNOASM ${CPPFLAGS}"
done
# Set the compile and link commands. 'Compile' will compile the list of sourcefiles and
# store their names until another Compile is encountered (if you wish to add to a previous
# list, use 'Compileadd').
#
# C sources are compiled with:
# ${CC} ${CPPFLAGS} ${CFLAGS} ${DEP_OPT}${DEP_DIR}/file-sans-ext${DEP_EXT} ${OUT_OPT}${OBJ_DIR}/file-sans-ext${OBJ_EXT} ${SRC_OPT}detected-source-path/file-with-ext
#
# and for C++ sources:
# ${CXX} ${CPPFLAGS} ${CXXFLAGS} ${DEP_OPT}${DEP_DIR}/file-sans-ext${DEP_EXT} ${OUT_OPT}${OBJ_DIR}/file-sans-ext${OBJ_EXT} ${SRC_OPT}detected-source-path/file-with-ext
#
# A source file will not be compiled if the object file exists and is newer than the source.
# Or if the associated dependancy file exists, all of the object's dependancies are older
# than the object.
#
# If DEP_OPT is unset, the whole DEP_* section will be removed from the command line. Files
# with unknown extensions are silently ignored (but will still be passed to Linkexec with
# their name "object-ified").
#
# 'Linkexec' executes:
# ${LD} ${OUT_OPT}file${EXE_EXT} <list of objects previously compiled> ${LDFLAGS}
#
# It will not link if the target executable exists and is newer than all of the objects it's
# linking with.
COMPILER = Compile
LINK = Linkexec
# This is where it can find the sources.
src_paths src src/g_doom src/g_heretic src/g_hexen src/g_raven src/g_strife \
src/g_shared src/oplsynth src/sound src/sdl
else
# Override the compile and link commands with rmobj and rmexec. A quick way to delete
# the objects and executables while dealing with only one list. No, rmobj will not
# delete the specified source file, but rather the object and dependancy files that would
# result from compiling the specified source.
EVILCLEAN = 1
COMPILER = -rmobj
LINK = -rmexec
done
${COMPILER} "autostart.cpp \
a.nas \
blocks.nas \
misc.nas \
tmap.nas \
tmap2.nas \
tmap3.nas \
am_map.cpp \
b_bot.cpp \
b_func.cpp \
b_game.cpp \
b_move.cpp \
b_think.cpp \
bbannouncer.cpp \
c_bind.cpp \
c_cmds.cpp \
c_console.cpp \
c_cvars.cpp \
c_dispatch.cpp \
c_expr.cpp \
cmdlib.cpp \
colormatcher.cpp \
configfile.cpp \
ct_chat.cpp \
d_dehacked.cpp \
d_main.cpp \
d_net.cpp \
d_netinfo.cpp \
d_protocol.cpp \
decallib.cpp \
decorations.cpp \
dobject.cpp \
dobjtype.cpp \
doomdef.cpp \
doomstat.cpp \
dsectoreffect.cpp \
dthinker.cpp \
empty.cpp \
f_finale.cpp \
f_wipe.cpp \
farchive.cpp \
files.cpp \
g_game.cpp \
g_hub.cpp \
g_level.cpp \
gameconfigfile.cpp \
gi.cpp \
hu_scores.cpp \
info.cpp \
infodefaults.cpp \
lumpconfigfile.cpp \
m_alloc.cpp \
m_argv.cpp \
m_bbox.cpp \
m_cheat.cpp \
m_fixed.cpp \
m_menu.cpp \
m_misc.cpp \
m_options.cpp \
m_png.cpp \
m_random.cpp \
mus2midi.cpp \
nodebuild.cpp \
nodebuild_events.cpp \
nodebuild_extract.cpp \
nodebuild_gl.cpp \
nodebuild_utility.cpp \
p_acs.cpp \
p_buildmap.cpp \
p_ceiling.cpp \
p_conversation.cpp \
p_doors.cpp \
p_effect.cpp \
p_enemy.cpp \
p_floor.cpp \
p_interaction.cpp \
p_lights.cpp \
p_lnspec.cpp \
p_map.cpp \
p_maputl.cpp \
p_mobj.cpp \
p_pillar.cpp \
p_plats.cpp \
p_pspr.cpp \
p_saveg.cpp \
p_sectors.cpp \
p_setup.cpp \
p_sight.cpp \
p_spec.cpp \
p_switch.cpp \
p_teleport.cpp \
p_terrain.cpp \
p_things.cpp \
p_tick.cpp \
p_trace.cpp \
p_user.cpp \
p_writemap.cpp \
p_xlat.cpp \
po_man.cpp \
r_bsp.cpp \
r_data.cpp \
r_draw.cpp \
r_drawt.cpp \
r_main.cpp \
r_plane.cpp \
r_segs.cpp \
r_sky.cpp \
r_things.cpp \
r_polymost.cpp \
s_advsound.cpp \
s_environment.cpp \
s_playlist.cpp \
s_sndseq.cpp \
s_sound.cpp \
sc_man.cpp \
skins.cpp \
st_stuff.cpp \
stats.cpp \
stringtable.cpp \
tables.cpp \
tempfiles.cpp \
thingdef.cpp \
thingdef_codeptr.cpp \
thingdef_exp.cpp \
v_collection.cpp \
v_draw.cpp \
v_font.cpp \
v_palette.cpp \
v_pfx.cpp \
v_text.cpp \
v_video.cpp \
vectors.cpp \
name.cpp \
zstring.cpp \
zstrformat.cpp \
w_wad.cpp \
wi_stuff.cpp \
a_arachnotron.cpp \
a_archvile.cpp \
a_bossbrain.cpp \
a_bruiser.cpp \
a_cacodemon.cpp \
a_cyberdemon.cpp \
a_demon.cpp \
a_doomartifacts.cpp \
a_doomhealth.cpp \
a_doomimp.cpp \
a_doommisc.cpp \
a_doomplayer.cpp \
a_doomweaps.cpp \
a_fatso.cpp \
a_keen.cpp \
a_lostsoul.cpp \
a_painelemental.cpp \
a_possessed.cpp \
a_revenant.cpp \
a_scriptedmarine.cpp \
a_spidermaster.cpp \
doom_sbar.cpp \
a_beast.cpp \
a_chicken.cpp \
a_clink.cpp \
a_dsparil.cpp \
a_hereticartifacts.cpp \
a_hereticimp.cpp \
a_heretickeys.cpp \
a_hereticmisc.cpp \
a_hereticplayer.cpp \
a_hereticweaps.cpp \
a_ironlich.cpp \
a_knight.cpp \
a_mummy.cpp \
a_snake.cpp \
a_wizard.cpp \
heretic_sbar.cpp \
a_bats.cpp \
a_bishop.cpp \
a_blastradius.cpp \
a_boostarmor.cpp \
a_centaur.cpp \
a_clericboss.cpp \
a_clericflame.cpp \
a_clericholy.cpp \
a_clericmace.cpp \
a_clericplayer.cpp \
a_clericstaff.cpp \
a_demons.cpp \
a_dragon.cpp \
a_ettin.cpp \
a_fighteraxe.cpp \
a_fighterboss.cpp \
a_fighterhammer.cpp \
a_fighterplayer.cpp \
a_fighterquietus.cpp \
a_firedemon.cpp \
a_flechette.cpp \
a_fog.cpp \
a_healingradius.cpp \
a_heresiarch.cpp \
a_hexenspecialdecs.cpp \
a_iceguy.cpp \
a_korax.cpp \
a_mageboss.cpp \
a_magecone.cpp \
a_magelightning.cpp \
a_mageplayer.cpp \
a_magestaff.cpp \
a_magewand.cpp \
a_mana.cpp \
a_pig.cpp \
a_puzzleitems.cpp \
a_serpent.cpp \
a_spike.cpp \
a_summon.cpp \
a_teleportother.cpp \
a_weaponpieces.cpp \
a_wraith.cpp \
hexen_sbar.cpp \
a_artiegg.cpp \
a_artitele.cpp \
a_minotaur.cpp \
a_ravenambient.cpp \
a_acolyte.cpp \
a_alienspectres.cpp \
a_coin.cpp \
a_crusader.cpp \
a_entityboss.cpp \
a_inquisitor.cpp \
a_loremaster.cpp \
a_macil.cpp \
a_oracle.cpp \
a_programmer.cpp \
a_reaver.cpp \
a_rebels.cpp \
a_sentinel.cpp \
a_spectral.cpp \
a_stalker.cpp \
a_strifeammo.cpp \
a_strifebishop.cpp \
a_strifeitems.cpp \
a_strifeplayer.cpp \
a_strifestuff.cpp \
a_strifeweapons.cpp \
a_templar.cpp \
a_thingstoblowup.cpp \
strife_sbar.cpp \
a_action.cpp \
a_artifacts.cpp \
a_bridge.cpp \
a_camera.cpp \
a_debris.cpp \
a_decals.cpp \
a_flashfader.cpp \
a_fountain.cpp \
a_hatetarget.cpp \
a_keys.cpp \
a_lightning.cpp \
a_movingcamera.cpp \
a_pickups.cpp \
a_quake.cpp \
a_secrettrigger.cpp \
a_sectoraction.cpp \
a_sharedmisc.cpp \
a_skies.cpp \
a_soundenvironment.cpp \
a_soundsequence.cpp \
a_spark.cpp \
a_waterzone.cpp \
a_weaponpiece.cpp \
a_weapons.cpp \
hudmessages.cpp \
shared_sbar.cpp \
fmopl.cpp \
mlkernel.cpp \
mlopl.cpp \
mlopl_io.cpp \
opl_mus_player.cpp \
fmodsound.cpp \
i_music.cpp \
i_sound.cpp \
music_cd.cpp \
music_flac.cpp \
music_midi_midiout.cpp \
music_midi_stream.cpp \
music_midi_timidity.cpp \
music_mod.cpp \
music_mus_midiout.cpp \
music_mus_opl.cpp \
music_stream.cpp \
sample_flac.cpp \
crashcatcher.c \
i_input.cpp \
i_net.cpp \
i_cd.cpp \
i_main.cpp \
i_system.cpp \
hardware.cpp \
i_movie.cpp \
sdlvideo.cpp \
autozend.cpp"
${LINK} "${TARGET}"
# If we're not cleaning and zdoom.pk3 exists, exit now.
if "${EVILCLEAN}"="0" ifexist zdoom.pk3 exit 0
#:makewad
CFLAGS = '-Os -Wall -fomit-frame-pointer'
LDFLAGS = '-lz'
src_paths tools/makewad
${COMPILER} makewad.c ioapi.c zip.c
${LINK} tools/makewad/makewad
LDFLAGS = ''
src_paths tools/xlatcc
${COMPILER} xlat-parse.tab.c gen.c
${LINK} tools/xlatcc/xlatcc
src_paths tools/dehsupp
${COMPILER} parse.tab.c
${LINK} tools/dehsupp/dehsupp
do if "${EVILCLEAN}"="1"
-rm "${OBJ_DIR}"
-rm "${DEP_DIR}"
-rm zdoomgcc.map
-rm zdoom.pk3
else
chdir wadsrc
do ifret 0
-call ../tools/makewad/makewad zdoom.lst
ifret 0 -copy zdoom.pk3 ../
chdir ..
done
done