mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 20:21:26 +00:00
7a601515df
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)
423 lines
11 KiB
Text
423 lines
11 KiB
Text
# Sub-makefile autogenerated by premake
|
|
# And then tweaked by hand
|
|
|
|
# Where did you install the FMOD API to? Change this line so that the build process can find it.
|
|
FMODDIR = "c:/program files/fmodapi375win"
|
|
|
|
ifndef CC
|
|
CC=gcc
|
|
endif
|
|
ifndef CXX
|
|
CC=g++
|
|
endif
|
|
|
|
ifndef CONFIG
|
|
CONFIG=Release
|
|
endif
|
|
|
|
ifndef OPTLEVEL
|
|
OPTLEVEL=2
|
|
endif
|
|
|
|
ifndef ARCH_TYPE
|
|
ARCH_TYPE=pentium
|
|
endif
|
|
|
|
ifndef TUNE_TYPE
|
|
TUNE_TYPE=athlon-xp
|
|
endif
|
|
|
|
ifndef RELEASETARGET
|
|
RELEASETARGET = zdoomgcc.exe
|
|
endif
|
|
ifndef DEBUGTARGET
|
|
DEBUGTARGET = zdoomgccd.exe
|
|
endif
|
|
DEBUGOBJDIR = debugobj
|
|
RELEASEOBJDIR = releaseobj
|
|
|
|
CCDV = @ccdv
|
|
|
|
CPPFLAGS = -DWIN32 -D_WIN32 -D_WINDOWS -DHAVE_STRUPR -DHAVE_FILELENGTH -DI_DO_NOT_LIKE_BIG_DOWNLOADS -D__forceinline=inline -MMD -Izlib -IFLAC -Isrc -Isrc/win32 -Isrc/g_doom -Isrc/g_heretic -I src/g_hexen -Isrc/g_raven -Isrc/g_strife -Isrc/g_shared -Isrc/oplsynth -Isrc/sound
|
|
LDFLAGS += flac/libflac.a zlib/libz.a -lfmod -lwsock32 -lwinmm -lddraw -ldsound -ldxguid -ldinput8 -lole32 -luser32 -lgdi32 -lcomctl32 -lcomdlg32 -lsetupapi -lws2_32 -Wl,--subsystem,windows
|
|
|
|
ifdef FMODDIR
|
|
CPPFLAGS += -I$(FMODDIR)/api/inc
|
|
LDFLAGS += -L$(FMODDIR)/api/lib
|
|
endif
|
|
|
|
CFLAGS += -fno-strict-aliasing
|
|
|
|
ifeq ($(CONFIG),Debug)
|
|
OBJDIR = $(DEBUGOBJDIR)
|
|
CFLAGS += $(CPPFLAGS) -Wall -Wno-unused -g3
|
|
CPPFLAGS += -D_DEBUG
|
|
CXXFLAGS = $(CFLAGS)
|
|
TARGET = $(DEBUGTARGET)
|
|
endif
|
|
ifeq ($(CONFIG),Release)
|
|
OBJDIR = $(RELEASEOBJDIR)
|
|
CFLAGS += $(CPPFLAGS) -march=$(ARCH_TYPE) -mtune=$(TUNE_TYPE) -Wall -Wno-unused -O$(OPTLEVEL) -fomit-frame-pointer -pipe
|
|
CFLAGS += -ffunction-sections -fno-rtti
|
|
CPPFLAGS += -DNDEBUG
|
|
CXXFLAGS = $(CFLAGS)
|
|
LDFLAGS += -s -Wl,-Map=zdoomgcc.map -Wl,--gc-sections
|
|
TARGET = $(RELEASETARGET)
|
|
endif
|
|
|
|
# This must be first.
|
|
OBJECTS = $(OBJDIR)/autostart.o
|
|
|
|
OBJECTS += \
|
|
$(OBJDIR)/am_map.o \
|
|
$(OBJDIR)/b_bot.o \
|
|
$(OBJDIR)/b_func.o \
|
|
$(OBJDIR)/b_game.o \
|
|
$(OBJDIR)/b_move.o \
|
|
$(OBJDIR)/b_think.o \
|
|
$(OBJDIR)/bbannouncer.o \
|
|
$(OBJDIR)/c_bind.o \
|
|
$(OBJDIR)/c_cmds.o \
|
|
$(OBJDIR)/c_console.o \
|
|
$(OBJDIR)/c_cvars.o \
|
|
$(OBJDIR)/c_dispatch.o \
|
|
$(OBJDIR)/c_expr.o \
|
|
$(OBJDIR)/cmdlib.o \
|
|
$(OBJDIR)/colormatcher.o \
|
|
$(OBJDIR)/configfile.o \
|
|
$(OBJDIR)/ct_chat.o \
|
|
$(OBJDIR)/d_dehacked.o \
|
|
$(OBJDIR)/d_main.o \
|
|
$(OBJDIR)/d_net.o \
|
|
$(OBJDIR)/d_netinfo.o \
|
|
$(OBJDIR)/d_protocol.o \
|
|
$(OBJDIR)/decallib.o \
|
|
$(OBJDIR)/decorations.o \
|
|
$(OBJDIR)/dobject.o \
|
|
$(OBJDIR)/dobjtype.o \
|
|
$(OBJDIR)/doomdef.o \
|
|
$(OBJDIR)/doomstat.o \
|
|
$(OBJDIR)/dsectoreffect.o \
|
|
$(OBJDIR)/dthinker.o \
|
|
$(OBJDIR)/f_finale.o \
|
|
$(OBJDIR)/f_wipe.o \
|
|
$(OBJDIR)/farchive.o \
|
|
$(OBJDIR)/files.o \
|
|
$(OBJDIR)/g_game.o \
|
|
$(OBJDIR)/g_hub.o \
|
|
$(OBJDIR)/g_level.o \
|
|
$(OBJDIR)/gameconfigfile.o \
|
|
$(OBJDIR)/gi.o \
|
|
$(OBJDIR)/hu_scores.o \
|
|
$(OBJDIR)/info.o \
|
|
$(OBJDIR)/infodefaults.o \
|
|
$(OBJDIR)/lumpconfigfile.o \
|
|
$(OBJDIR)/m_alloc.o \
|
|
$(OBJDIR)/m_argv.o \
|
|
$(OBJDIR)/m_bbox.o \
|
|
$(OBJDIR)/m_cheat.o \
|
|
$(OBJDIR)/m_fixed.o \
|
|
$(OBJDIR)/m_menu.o \
|
|
$(OBJDIR)/m_misc.o \
|
|
$(OBJDIR)/m_options.o \
|
|
$(OBJDIR)/m_png.o \
|
|
$(OBJDIR)/m_random.o \
|
|
$(OBJDIR)/mus2midi.o \
|
|
$(OBJDIR)/nodebuild.o \
|
|
$(OBJDIR)/nodebuild_classify_nosse2.o \
|
|
$(OBJDIR)/nodebuild_classify_sse2.o \
|
|
$(OBJDIR)/nodebuild_events.o \
|
|
$(OBJDIR)/nodebuild_extract.o \
|
|
$(OBJDIR)/nodebuild_gl.o \
|
|
$(OBJDIR)/nodebuild_utility.o \
|
|
$(OBJDIR)/p_acs.o \
|
|
$(OBJDIR)/p_buildmap.o \
|
|
$(OBJDIR)/p_ceiling.o \
|
|
$(OBJDIR)/p_conversation.o \
|
|
$(OBJDIR)/p_doors.o \
|
|
$(OBJDIR)/p_effect.o \
|
|
$(OBJDIR)/p_enemy.o \
|
|
$(OBJDIR)/p_floor.o \
|
|
$(OBJDIR)/p_interaction.o \
|
|
$(OBJDIR)/p_lights.o \
|
|
$(OBJDIR)/p_lnspec.o \
|
|
$(OBJDIR)/p_map.o \
|
|
$(OBJDIR)/p_maputl.o \
|
|
$(OBJDIR)/p_mobj.o \
|
|
$(OBJDIR)/p_pillar.o \
|
|
$(OBJDIR)/p_plats.o \
|
|
$(OBJDIR)/p_pspr.o \
|
|
$(OBJDIR)/p_saveg.o \
|
|
$(OBJDIR)/p_sectors.o \
|
|
$(OBJDIR)/p_setup.o \
|
|
$(OBJDIR)/p_sight.o \
|
|
$(OBJDIR)/p_spec.o \
|
|
$(OBJDIR)/p_switch.o \
|
|
$(OBJDIR)/p_teleport.o \
|
|
$(OBJDIR)/p_terrain.o \
|
|
$(OBJDIR)/p_things.o \
|
|
$(OBJDIR)/p_tick.o \
|
|
$(OBJDIR)/p_trace.o \
|
|
$(OBJDIR)/p_user.o \
|
|
$(OBJDIR)/p_writemap.o \
|
|
$(OBJDIR)/p_xlat.o \
|
|
$(OBJDIR)/po_man.o \
|
|
$(OBJDIR)/r_anim.o \
|
|
$(OBJDIR)/r_bsp.o \
|
|
$(OBJDIR)/r_data.o \
|
|
$(OBJDIR)/r_draw.o \
|
|
$(OBJDIR)/r_drawt.o \
|
|
$(OBJDIR)/r_main.o \
|
|
$(OBJDIR)/r_plane.o \
|
|
$(OBJDIR)/r_segs.o \
|
|
$(OBJDIR)/r_sky.o \
|
|
$(OBJDIR)/r_things.o \
|
|
$(OBJDIR)/r_polymost.o \
|
|
$(OBJDIR)/s_advsound.o \
|
|
$(OBJDIR)/s_environment.o \
|
|
$(OBJDIR)/s_playlist.o \
|
|
$(OBJDIR)/s_sndseq.o \
|
|
$(OBJDIR)/s_sound.o \
|
|
$(OBJDIR)/sc_man.o \
|
|
$(OBJDIR)/skins.o \
|
|
$(OBJDIR)/st_stuff.o \
|
|
$(OBJDIR)/stats.o \
|
|
$(OBJDIR)/stringtable.o \
|
|
$(OBJDIR)/tables.o \
|
|
$(OBJDIR)/tempfiles.o \
|
|
$(OBJDIR)/thingdef.o \
|
|
$(OBJDIR)/thingdef_codeptr.o \
|
|
$(OBJDIR)/thingdef_exp.o \
|
|
$(OBJDIR)/v_collection.o \
|
|
$(OBJDIR)/v_draw.o \
|
|
$(OBJDIR)/v_font.o \
|
|
$(OBJDIR)/v_palette.o \
|
|
$(OBJDIR)/v_pfx.o \
|
|
$(OBJDIR)/v_text.o \
|
|
$(OBJDIR)/v_video.o \
|
|
$(OBJDIR)/vectors.o \
|
|
$(OBJDIR)/name.o \
|
|
$(OBJDIR)/zstring.o \
|
|
$(OBJDIR)/zstrformat.o \
|
|
$(OBJDIR)/w_wad.o \
|
|
$(OBJDIR)/wi_stuff.o \
|
|
$(OBJDIR)/a_arachnotron.o \
|
|
$(OBJDIR)/a_archvile.o \
|
|
$(OBJDIR)/a_bossbrain.o \
|
|
$(OBJDIR)/a_bruiser.o \
|
|
$(OBJDIR)/a_cacodemon.o \
|
|
$(OBJDIR)/a_cyberdemon.o \
|
|
$(OBJDIR)/a_demon.o \
|
|
$(OBJDIR)/a_doomhealth.o \
|
|
$(OBJDIR)/a_doomimp.o \
|
|
$(OBJDIR)/a_doommisc.o \
|
|
$(OBJDIR)/a_doomplayer.o \
|
|
$(OBJDIR)/a_doomweaps.o \
|
|
$(OBJDIR)/a_fatso.o \
|
|
$(OBJDIR)/a_keen.o \
|
|
$(OBJDIR)/a_lostsoul.o \
|
|
$(OBJDIR)/a_painelemental.o \
|
|
$(OBJDIR)/a_possessed.o \
|
|
$(OBJDIR)/a_revenant.o \
|
|
$(OBJDIR)/a_scriptedmarine.o \
|
|
$(OBJDIR)/a_spidermaster.o \
|
|
$(OBJDIR)/doom_sbar.o \
|
|
$(OBJDIR)/a_beast.o \
|
|
$(OBJDIR)/a_chicken.o \
|
|
$(OBJDIR)/a_clink.o \
|
|
$(OBJDIR)/a_dsparil.o \
|
|
$(OBJDIR)/a_hereticartifacts.o \
|
|
$(OBJDIR)/a_hereticimp.o \
|
|
$(OBJDIR)/a_heretickeys.o \
|
|
$(OBJDIR)/a_hereticmisc.o \
|
|
$(OBJDIR)/a_hereticplayer.o \
|
|
$(OBJDIR)/a_hereticweaps.o \
|
|
$(OBJDIR)/a_ironlich.o \
|
|
$(OBJDIR)/a_knight.o \
|
|
$(OBJDIR)/a_mummy.o \
|
|
$(OBJDIR)/a_snake.o \
|
|
$(OBJDIR)/a_wizard.o \
|
|
$(OBJDIR)/heretic_sbar.o \
|
|
$(OBJDIR)/a_bats.o \
|
|
$(OBJDIR)/a_bishop.o \
|
|
$(OBJDIR)/a_blastradius.o \
|
|
$(OBJDIR)/a_boostarmor.o \
|
|
$(OBJDIR)/a_centaur.o \
|
|
$(OBJDIR)/a_clericboss.o \
|
|
$(OBJDIR)/a_clericflame.o \
|
|
$(OBJDIR)/a_clericholy.o \
|
|
$(OBJDIR)/a_clericmace.o \
|
|
$(OBJDIR)/a_clericplayer.o \
|
|
$(OBJDIR)/a_clericstaff.o \
|
|
$(OBJDIR)/a_demons.o \
|
|
$(OBJDIR)/a_dragon.o \
|
|
$(OBJDIR)/a_ettin.o \
|
|
$(OBJDIR)/a_fighteraxe.o \
|
|
$(OBJDIR)/a_fighterboss.o \
|
|
$(OBJDIR)/a_fighterhammer.o \
|
|
$(OBJDIR)/a_fighterplayer.o \
|
|
$(OBJDIR)/a_fighterquietus.o \
|
|
$(OBJDIR)/a_firedemon.o \
|
|
$(OBJDIR)/a_flechette.o \
|
|
$(OBJDIR)/a_fog.o \
|
|
$(OBJDIR)/a_healingradius.o \
|
|
$(OBJDIR)/a_heresiarch.o \
|
|
$(OBJDIR)/a_hexenspecialdecs.o \
|
|
$(OBJDIR)/a_iceguy.o \
|
|
$(OBJDIR)/a_korax.o \
|
|
$(OBJDIR)/a_mageboss.o \
|
|
$(OBJDIR)/a_magecone.o \
|
|
$(OBJDIR)/a_magelightning.o \
|
|
$(OBJDIR)/a_mageplayer.o \
|
|
$(OBJDIR)/a_magestaff.o \
|
|
$(OBJDIR)/a_magewand.o \
|
|
$(OBJDIR)/a_mana.o \
|
|
$(OBJDIR)/a_pig.o \
|
|
$(OBJDIR)/a_puzzleitems.o \
|
|
$(OBJDIR)/a_serpent.o \
|
|
$(OBJDIR)/a_spike.o \
|
|
$(OBJDIR)/a_summon.o \
|
|
$(OBJDIR)/a_teleportother.o \
|
|
$(OBJDIR)/a_weaponpiece.o \
|
|
$(OBJDIR)/a_weaponpieces.o \
|
|
$(OBJDIR)/a_wraith.o \
|
|
$(OBJDIR)/hexen_sbar.o \
|
|
$(OBJDIR)/a_artiegg.o \
|
|
$(OBJDIR)/a_artitele.o \
|
|
$(OBJDIR)/a_minotaur.o \
|
|
$(OBJDIR)/a_ravenambient.o \
|
|
$(OBJDIR)/a_acolyte.o \
|
|
$(OBJDIR)/a_alienspectres.o \
|
|
$(OBJDIR)/a_coin.o \
|
|
$(OBJDIR)/a_crusader.o \
|
|
$(OBJDIR)/a_entityboss.o \
|
|
$(OBJDIR)/a_inquisitor.o \
|
|
$(OBJDIR)/a_loremaster.o \
|
|
$(OBJDIR)/a_macil.o \
|
|
$(OBJDIR)/a_oracle.o \
|
|
$(OBJDIR)/a_programmer.o \
|
|
$(OBJDIR)/a_reaver.o \
|
|
$(OBJDIR)/a_rebels.o \
|
|
$(OBJDIR)/a_sentinel.o \
|
|
$(OBJDIR)/a_spectral.o \
|
|
$(OBJDIR)/a_stalker.o \
|
|
$(OBJDIR)/a_strifeammo.o \
|
|
$(OBJDIR)/a_strifebishop.o \
|
|
$(OBJDIR)/a_strifeitems.o \
|
|
$(OBJDIR)/a_strifeplayer.o \
|
|
$(OBJDIR)/a_strifestuff.o \
|
|
$(OBJDIR)/a_strifeweapons.o \
|
|
$(OBJDIR)/a_templar.o \
|
|
$(OBJDIR)/a_thingstoblowup.o \
|
|
$(OBJDIR)/strife_sbar.o \
|
|
$(OBJDIR)/a_action.o \
|
|
$(OBJDIR)/a_artifacts.o \
|
|
$(OBJDIR)/a_bridge.o \
|
|
$(OBJDIR)/a_camera.o \
|
|
$(OBJDIR)/a_debris.o \
|
|
$(OBJDIR)/a_decals.o \
|
|
$(OBJDIR)/a_flashfader.o \
|
|
$(OBJDIR)/a_fountain.o \
|
|
$(OBJDIR)/a_hatetarget.o \
|
|
$(OBJDIR)/a_keys.o \
|
|
$(OBJDIR)/a_lightning.o \
|
|
$(OBJDIR)/a_movingcamera.o \
|
|
$(OBJDIR)/a_pickups.o \
|
|
$(OBJDIR)/a_quake.o \
|
|
$(OBJDIR)/a_secrettrigger.o \
|
|
$(OBJDIR)/a_sectoraction.o \
|
|
$(OBJDIR)/a_sharedmisc.o \
|
|
$(OBJDIR)/a_skies.o \
|
|
$(OBJDIR)/a_soundenvironment.o \
|
|
$(OBJDIR)/a_soundsequence.o \
|
|
$(OBJDIR)/a_spark.o \
|
|
$(OBJDIR)/a_waterzone.o \
|
|
$(OBJDIR)/a_weapons.o \
|
|
$(OBJDIR)/hudmessages.o \
|
|
$(OBJDIR)/shared_sbar.o \
|
|
$(OBJDIR)/fmopl.o \
|
|
$(OBJDIR)/mlkernel.o \
|
|
$(OBJDIR)/mlopl.o \
|
|
$(OBJDIR)/mlopl_io.o \
|
|
$(OBJDIR)/opl_mus_player.o \
|
|
$(OBJDIR)/altsound.o \
|
|
$(OBJDIR)/altsoundmixer.o \
|
|
$(OBJDIR)/fmodsound.o \
|
|
$(OBJDIR)/i_music.o \
|
|
$(OBJDIR)/i_sound.o \
|
|
$(OBJDIR)/music_cd.o \
|
|
$(OBJDIR)/music_flac.o \
|
|
$(OBJDIR)/music_midi_midiout.o \
|
|
$(OBJDIR)/music_midi_stream.o \
|
|
$(OBJDIR)/music_midi_timidity.o \
|
|
$(OBJDIR)/music_mod.o \
|
|
$(OBJDIR)/music_mus_midiout.o \
|
|
$(OBJDIR)/music_mus_opl.o \
|
|
$(OBJDIR)/music_spc.o \
|
|
$(OBJDIR)/music_stream.o \
|
|
$(OBJDIR)/sample_flac.o \
|
|
$(OBJDIR)/helperthread.o \
|
|
$(OBJDIR)/i_input.o \
|
|
$(OBJDIR)/i_net.o \
|
|
$(OBJDIR)/eaxedit.o \
|
|
$(OBJDIR)/i_cd.o \
|
|
$(OBJDIR)/i_main.o \
|
|
$(OBJDIR)/i_system.o \
|
|
$(OBJDIR)/hardware.o \
|
|
$(OBJDIR)/i_crash.o \
|
|
$(OBJDIR)/i_movie.o \
|
|
$(OBJDIR)/win32video.o \
|
|
$(OBJDIR)/zdoom.o
|
|
|
|
ifndef NOASM
|
|
OBJECTS += \
|
|
$(OBJDIR)/a.o \
|
|
$(OBJDIR)/misc.o \
|
|
$(OBJDIR)/tmap.o \
|
|
$(OBJDIR)/tmap2.o \
|
|
$(OBJDIR)/tmap3.o
|
|
CPPFLAGS := -DUSEASM=1 $(CPPFLAGS)
|
|
else
|
|
CPPFLAGS := -DNOASM $(CPPFLAGS)
|
|
endif
|
|
|
|
# This must be last
|
|
OBJECTS += $(OBJDIR)/autozend.o
|
|
|
|
VPATH = src src/g_doom src/g_heretic src/g_hexen src/g_raven src/g_strife src/g_shared src/oplsynth src/sound src/win32
|
|
|
|
|
|
.PHONY: clean all
|
|
|
|
all: $(TARGET)
|
|
|
|
|
|
$(OBJDIR)/%.o : %.cpp
|
|
$(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
# This file needs special handling so that it actually gets compiled with SSE2 support.
|
|
$(OBJDIR)/nodebuild_classify_sse2.o: nodebuild_classify_sse2.cpp
|
|
$(CCDV) $(CXX) $(CXXFLAGS) -msse2 -mfpmath=sse -c -o $@ $<
|
|
|
|
$(OBJDIR)/%.o : %.nas
|
|
$(CCDV) nasmw -o $@ -f win32 $<
|
|
|
|
$(OBJDIR)/%.o : %.rc
|
|
$(CCDV) windres --include-dir=src/win32 -o $@ -i $<
|
|
|
|
|
|
$(TARGET): testobjdir $(OBJECTS)
|
|
$(CCDV) $(CXX) -o $@ $(OBJECTS) $(LDFLAGS)
|
|
|
|
clean:
|
|
-del /q /f $(RELEASETARGET) 2>nul
|
|
-del /q /f $(DEBUGTARGET) 2>nul
|
|
-del /q /f $(DEBUGOBJDIR) 2>nul
|
|
-del /q /f $(RELEASEOBJDIR) 2>nul
|
|
|
|
testobjdir:
|
|
-@if not exist $(OBJDIR) mkdir $(OBJDIR)
|
|
|
|
ifneq ($(MAKECMDGOALS),clean)
|
|
-include $(OBJECTS:%.o=%.d)
|
|
endif
|