mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 06:53:58 +00:00
087e34bbb3
- Added a cheap pitch shifting for underwater environments that should be fairly close to Duke's. It sounds okay for some sounds, but others like the BFG, where the timing of the sound actually matters, don't sound good. I shall have to replace it with a real pitch shifter DSP unit. SVN r819 (trunk)
158 lines
5 KiB
Text
158 lines
5 KiB
Text
# This makefile makes zdoom(d).exe only.
|
|
# Makefile.mgw builds this plus everything else.
|
|
|
|
# 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 = "e:/program files (x86)/FMOD SoundSystem/FMOD Programmers API Win32"
|
|
|
|
ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
|
|
WINCMD=0
|
|
else
|
|
WINCMD=1
|
|
endif
|
|
|
|
CC ?= gcc
|
|
CXX ?= g++
|
|
|
|
CONFIG ?= Release
|
|
OPTLEVEL ?= 2
|
|
ARCH_TYPE ?= pentium
|
|
TUNE_TYPE ?= i686
|
|
RELEASETARGET ?= zdoomgcc.exe
|
|
DEBUGTARGET ?= zdoomgccd.exe
|
|
DEBUGOBJDIR ?= debugobj
|
|
RELEASEOBJDIR ?= releaseobj
|
|
|
|
CCDV ?= @ccdv
|
|
RE2C = tools/re2c/re2c
|
|
LEMON = tools/lemon/lemon
|
|
|
|
CPPFLAGS = -DWIN32 -D_WIN32 -D_WINDOWS -DHAVE_STRUPR -DHAVE_FILELENGTH -DI_DO_NOT_LIKE_BIG_DOWNLOADS -D__forceinline=inline -MMD -Izlib -IFLAC -Ijpeg-6b -Isrc -Isrc/win32 -Isrc/g_doom -Isrc/g_heretic -Isrc/g_hexen -Isrc/g_raven -Isrc/g_strife -Isrc/g_shared -Isrc/oplsynth -Isrc/sound -Isrc/textures -Isrc/thingdef -Isnes_spc/snes_spc
|
|
LDFLAGS += zlib/libz.a jpeg-6b/libjpeg.a snes_spc/libsnes_spc.a -lfmodex -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
|
|
|
|
SRCDIRS = src/ $(addprefix src/,g_doom/ g_heretic/ g_hexen/ g_raven/ g_shared/ g_strife/ oplsynth/ sound/ win32/ textures/ thingdef/)
|
|
VPATH = $(SRCDIRS)
|
|
|
|
CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS))) src/xlat/parse_xlat.cpp
|
|
CSRCS = $(wildcard $(addsuffix *.c,$(SRCDIRS)))
|
|
RCSRCS = $(wildcard $(addsuffix *.rc,$(SRCDIRS)))
|
|
ifdef NOASM
|
|
CFLAGS += -DNOASM
|
|
else
|
|
ASRCS = $(wildcard src/*.nas)
|
|
CFLAGS += -DUSEASM=1
|
|
endif
|
|
SRCS = $(CSRCS) $(CPPSRCS) $(ASRCS)
|
|
CPPOBJFILES = $(notdir $(CPPSRCS:%.cpp=%.o))
|
|
COBJFILES = $(notdir $(CSRCS:%.c=%.o))
|
|
# win32/wrappers.nas should be built *only* for Visual C++ 2005 to enable execution on Windows 95
|
|
AOBJFILES = $(filter-out %/wrappers.o,$(notdir $(ASRCS:%.nas=%.o)))
|
|
RCOBJFILES = $(notdir $(RCSRCS:%.rc=%.o))
|
|
|
|
COBJS = $(addprefix $(OBJDIR)/,$(CPPOBJFILES) $(COBJFILES) $(RCOBJFILES))
|
|
DEPS = $(patsubst %.o,%.d,$(COBJS))
|
|
UNORDEREDOBJS = $(addprefix $(OBJDIR)/,$(AOBJFILES)) $(COBJS)
|
|
|
|
OBJS = $(OBJDIR)/autostart.o $(filter-out %/autostart.o %/autozend.o,$(UNORDEREDOBJS)) $(OBJDIR)/autozend.o
|
|
|
|
all: $(TARGET)
|
|
|
|
# This file needs special handling so that it actually gets compiled with SSE2 support.
|
|
$(OBJDIR)/nodebuild_classify_sse2.o: src/nodebuild_classify_sse2.cpp
|
|
$(CCDV) $(CXX) $(CXXFLAGS) -msse2 -mfpmath=sse -c -o $@ $<
|
|
|
|
# This file needs special handling because GCC misoptimizes it otherwise.
|
|
$(OBJDIR)/fmopl.o: src/oplsynth/fmopl.cpp
|
|
$(CCDV) $(CXX) $(CXXFLAGS) -fno-tree-dominator-opts -fno-tree-fre -c -o $@ $<
|
|
|
|
src/sc_man_scanner.h: src/sc_man_scanner.re
|
|
$(CCDV) $(RE2C) -s -o $@ $<
|
|
|
|
src/xlat/xlat_parser.c: src/xlat/xlat_parser.y
|
|
$(CCDV) $(LEMON) -s src/xlat/xlat_parser.y
|
|
|
|
# Dunno why make isn't picking this stuff up automatically for this file.
|
|
$(OBJDIR)/parse_xlat.o: src/xlat/parse_xlat.cpp src/xlat/xlat.h src/xlat/xlat_parser.c src/xlat/xlat_parser.h
|
|
$(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
$(OBJDIR)/%.o : %.cpp
|
|
$(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
$(OBJDIR)/%.o : %.nas
|
|
$(CCDV) nasm -o $@ -f win32 $<
|
|
@tools/fixrtext/fixrtext $@
|
|
|
|
$(OBJDIR)/%.o : %.rc
|
|
$(CCDV) windres --include-dir=src/win32 -o $@ -i $<
|
|
|
|
|
|
$(TARGET): testobjdir updaterev $(OBJS)
|
|
$(CCDV) $(CXX) -o $@ $(OBJS) $(LDFLAGS)
|
|
|
|
ifeq (1,$(WINCMD))
|
|
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
|
|
|
|
cleandep:
|
|
-del /q /f $(DEBUGOBJDIR)\*.d 2>nul
|
|
-del /q /f $(RELEASEOBJDIR)\*.d 2>nul
|
|
else
|
|
clean:
|
|
rm -f $(RELEASETARGET)
|
|
rm -f $(DEBUGTARGET)
|
|
rm -fr $(DEBUGOBJDIR)
|
|
rm -fr $(RELEASEOBJDIR)
|
|
|
|
cleandep:
|
|
rm -f $(DEBUGOBJDIR)/*.d
|
|
rm -f $(RELEASEOBJDIR)/*.d
|
|
endif
|
|
|
|
testobjdir:
|
|
ifeq (1,$(WINCMD))
|
|
-@if not exist $(OBJDIR) mkdir $(OBJDIR)
|
|
else
|
|
-@if [ ! -e $(OBJDIR) ]; then mkdir $(OBJDIR); fi
|
|
endif
|
|
|
|
updaterev: tools/updaterevision/updaterevision.exe
|
|
@tools/updaterevision/updaterevision . src/svnrevision.h
|
|
|
|
tools/updaterevision/updaterevision.exe:
|
|
$(MAKE) -C tools/updaterevision
|
|
|
|
|
|
ifeq (,$(findstring $(MAKECMDGOALS),clean cleandep updaterev))
|
|
-include $(DEPS)
|
|
endif
|
|
|
|
.PHONY: clean all updaterev testobjdir cleandep
|