qzdoom-gpl/default.cbd
Randy Heit 7a601515df - ClassifyLine now chooses either SSE2 or regular x87 math depending on whether
or not SSE2 is available at runtime. Since most of the time is spent in
  ClassifyLine, using SSE2 in just this one function helps the most.
- Nodebuilding is a little faster if we inline PointOnSide.
- Changed FEventTree into a regular binary tree, since there just aren't enough
  nodes inserted into it to make a red-black tree worthwhile.
- Added more checks at the start of ClassifyLine so that it has a better chance
  of avoiding the more complicated checking, and it seems to have paid off with
  a reasonably modest performance boost.
- Added a "vertex map" for ZDBSP's vertex selection. (Think BLOCKMAP for
  vertices instead of lines.) On large maps, this can result in a very
  significant speed up. (In one particular map, ZDBSP had previously
  spent 40% of its time just scanning through all the vertices in the
  map. Now the time it spends finding vertices is immeasurable.) On small maps,
  this won't make much of a difference, because the number of vertices to search
  was so small to begin with.


SVN r173 (trunk)
2006-06-06 21:39:08 +00:00

487 lines
11 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 -ffunction-sections -fno-rtti"
ifopt gc
CFLAGS += "-march=${ARCH_TYPE} -mtune=${TUNE_TYPE} -Wall -Wno-unused -O${OPTLEL} -fomit-frame-pointer -fno-rtti"
done
CPPFLAGS += " -DNDEBUG"
CXXFLAGS = "${CFLAGS}"
LDFLAGS += " -s -Wl,-Map=zdoomgcc.map"
ifopt gc
LDFLAGS += " -Wl,--gc-sections"
done
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
# How do you pass -msse2 -mfpmath=sse2 with cbuild when compiling nodebuild_classify_sse2.cpp?
# Since I don't know the answer, that means you won't get an SSE2-supporting nodebuilder if
# you build with cbuild. Use make instead.
${COMPILER} "autostart.cpp \
a.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_classify_nosse2.cpp \
nodebuild_classify_sse2.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_anim.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 = '-s -lz'
src_paths tools/makewad
${COMPILER} makewad.c ioapi.c zip.c
${LINK} tools/makewad/makewad
LDFLAGS = '-s'
src_paths tools/xlatcc
${COMPILER} xlat-parse.tab.c gen.c
${LINK} tools/xlatcc/xlatcc
src_paths tools/dehsupp
${COMPILER} parse.c scanner.c dehsupp.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