2008-02-10 01:21:45 +00:00
|
|
|
# This makefile makes zdoom(d).exe only.
|
|
|
|
# Makefile.mgw builds this plus everything else.
|
|
|
|
|
2006-02-24 04:48:15 +00:00
|
|
|
# Sub-makefile autogenerated by premake
|
|
|
|
# And then tweaked by hand
|
|
|
|
|
2006-05-25 04:32:20 +00:00
|
|
|
# Where did you install the FMOD API to? Change this line so that the build process can find it.
|
VERY IMPORTANT NOTE FOR ANYBODY BUILDING FROM THE TRUNK: This commit adds support
for FMOD Ex while at the same time removing support for FMOD 3. Be sure to update
your SDKs. GCC users, be sure to do a "make cleandep && make clean" before
building, or you will likely get inexplicable errors.
- Fixed: If you wanted to make cleandep with MinGW, you had to specifically
specify Makefile.mingw as the makefile to use.
- Added a normalizer to the OPL synth. It helped bring up the volume a little,
but not nearly as much as I would have liked.
- Removed MIDI Mapper references. It doesn't work with the stream API, and
it doesn't really exist on NT kernels, either.
- Reworked music volume: Except for MIDI, all music volume is controlled
through GSnd and not at the individual song level.
- Removed the mididevice global variable.
- Removed snd_midivolume. Now that all music uses a linear volume scale,
there's no need for two separate music volume controls.
- Increased snd_samplerate default up to 48000.
- Added snd_format, defaulting to "PCM-16".
- Added snd_speakermode, defaulting to "Auto".
- Replaced snd_fpu with snd_resampler, defaulting to "Linear".
- Bumped the snd_channels default up from a pitiful 12 to 32.
- Changed snd_3d default to true. The new cvar snd_hw3d determines if
hardware 3D support is used and default to false.
- Removed the libFLAC source, since FMOD Ex has native FLAC support.
- Removed the altsound code, since it was terribly gimped in comparison to
the FMOD code. It's original purpose was to have been as a springboard for
writing a non-FMOD sound system for Unix-y systems, but that never
happened.
- Finished preliminary FMOD Ex support.
SVN r789 (trunk)
2008-03-09 03:13:49 +00:00
|
|
|
FMODDIR = "e:/program files (x86)/FMOD SoundSystem/FMOD Programmers API Win32"
|
2006-05-25 04:32:20 +00:00
|
|
|
|
2008-02-27 03:11:35 +00:00
|
|
|
ifeq ($(findstring msys,$(shell sh --version 2>nul)),msys)
|
2006-08-11 03:07:32 +00:00
|
|
|
WINCMD=0
|
|
|
|
else
|
|
|
|
WINCMD=1
|
|
|
|
endif
|
|
|
|
|
2006-06-20 20:30:39 +00:00
|
|
|
CC ?= gcc
|
|
|
|
CXX ?= g++
|
|
|
|
|
|
|
|
CONFIG ?= Release
|
|
|
|
OPTLEVEL ?= 2
|
|
|
|
ARCH_TYPE ?= pentium
|
|
|
|
TUNE_TYPE ?= i686
|
|
|
|
RELEASETARGET ?= zdoomgcc.exe
|
|
|
|
DEBUGTARGET ?= zdoomgccd.exe
|
|
|
|
DEBUGOBJDIR ?= debugobj
|
|
|
|
RELEASEOBJDIR ?= releaseobj
|
2006-02-24 04:48:15 +00:00
|
|
|
|
2008-05-29 23:33:07 +00:00
|
|
|
# Can be libdumbd.a, if you really need to debug DUMB
|
|
|
|
DUMBLIB ?= libdumb.a
|
|
|
|
|
2006-09-19 23:25:51 +00:00
|
|
|
CCDV ?= @ccdv
|
2006-06-20 20:30:39 +00:00
|
|
|
RE2C = tools/re2c/re2c
|
2008-03-19 23:03:14 +00:00
|
|
|
LEMON = tools/lemon/lemon
|
2006-02-24 04:48:15 +00:00
|
|
|
|
2008-03-11 22:17:57 +00:00
|
|
|
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
|
2006-02-24 04:48:15 +00:00
|
|
|
ifdef FMODDIR
|
|
|
|
CPPFLAGS += -I$(FMODDIR)/api/inc
|
|
|
|
LDFLAGS += -L$(FMODDIR)/api/lib
|
|
|
|
endif
|
|
|
|
|
2008-05-29 23:33:07 +00:00
|
|
|
LDFLAGS += zlib/libz.a jpeg-6b/libjpeg.a snes_spc/libsnes_spc.a dumb/lib/$(DUMBLIB) -lfmodex -lwsock32 -lwinmm -lddraw -ldsound -ldxguid -ldinput8 -lole32 -luser32 -lgdi32 -lcomctl32 -lcomdlg32
|
|
|
|
LDFLAGS += -lsetupapi -Wl,--subsystem,windows -lws2_32
|
|
|
|
|
2006-05-26 04:38:22 +00:00
|
|
|
CFLAGS += -fno-strict-aliasing
|
|
|
|
|
2006-02-24 04:48:15 +00:00
|
|
|
ifeq ($(CONFIG),Debug)
|
|
|
|
OBJDIR = $(DEBUGOBJDIR)
|
|
|
|
CFLAGS += $(CPPFLAGS) -Wall -Wno-unused -g3
|
|
|
|
CPPFLAGS += -D_DEBUG
|
|
|
|
CXXFLAGS = $(CFLAGS)
|
|
|
|
TARGET = $(DEBUGTARGET)
|
|
|
|
endif
|
|
|
|
ifeq ($(CONFIG),Release)
|
|
|
|
OBJDIR = $(RELEASEOBJDIR)
|
2006-05-25 04:32:20 +00:00
|
|
|
CFLAGS += $(CPPFLAGS) -march=$(ARCH_TYPE) -mtune=$(TUNE_TYPE) -Wall -Wno-unused -O$(OPTLEVEL) -fomit-frame-pointer -pipe
|
|
|
|
CFLAGS += -ffunction-sections -fno-rtti
|
2006-02-24 04:48:15 +00:00
|
|
|
CPPFLAGS += -DNDEBUG
|
|
|
|
CXXFLAGS = $(CFLAGS)
|
2006-05-25 04:32:20 +00:00
|
|
|
LDFLAGS += -s -Wl,-Map=zdoomgcc.map -Wl,--gc-sections
|
2006-02-24 04:48:15 +00:00
|
|
|
TARGET = $(RELEASETARGET)
|
|
|
|
endif
|
|
|
|
|
2008-04-11 04:59:23 +00:00
|
|
|
SRCDIRS = src/ $(addprefix src/,g_doom/ g_heretic/ g_hexen/ g_raven/ g_shared/ g_strife/ oplsynth/ sound/ win32/ textures/ thingdef/ timidity/)
|
2006-06-20 20:30:39 +00:00
|
|
|
VPATH = $(SRCDIRS)
|
2006-02-24 04:48:15 +00:00
|
|
|
|
2008-03-19 23:03:14 +00:00
|
|
|
CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS))) src/xlat/parse_xlat.cpp
|
2006-06-20 20:30:39 +00:00
|
|
|
CSRCS = $(wildcard $(addsuffix *.c,$(SRCDIRS)))
|
|
|
|
RCSRCS = $(wildcard $(addsuffix *.rc,$(SRCDIRS)))
|
|
|
|
ifdef NOASM
|
|
|
|
CFLAGS += -DNOASM
|
2006-02-24 04:48:15 +00:00
|
|
|
else
|
2006-06-20 20:30:39 +00:00
|
|
|
ASRCS = $(wildcard src/*.nas)
|
|
|
|
CFLAGS += -DUSEASM=1
|
2006-02-24 04:48:15 +00:00
|
|
|
endif
|
2006-06-20 20:30:39 +00:00
|
|
|
SRCS = $(CSRCS) $(CPPSRCS) $(ASRCS)
|
|
|
|
CPPOBJFILES = $(notdir $(CPPSRCS:%.cpp=%.o))
|
|
|
|
COBJFILES = $(notdir $(CSRCS:%.c=%.o))
|
2006-08-02 04:57:36 +00:00
|
|
|
# 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)))
|
2006-06-20 20:30:39 +00:00
|
|
|
RCOBJFILES = $(notdir $(RCSRCS:%.rc=%.o))
|
2006-02-24 04:48:15 +00:00
|
|
|
|
2006-06-20 20:30:39 +00:00
|
|
|
COBJS = $(addprefix $(OBJDIR)/,$(CPPOBJFILES) $(COBJFILES) $(RCOBJFILES))
|
|
|
|
DEPS = $(patsubst %.o,%.d,$(COBJS))
|
|
|
|
UNORDEREDOBJS = $(addprefix $(OBJDIR)/,$(AOBJFILES)) $(COBJS)
|
2006-02-24 04:48:15 +00:00
|
|
|
|
2006-06-20 20:30:39 +00:00
|
|
|
OBJS = $(OBJDIR)/autostart.o $(filter-out %/autostart.o %/autozend.o,$(UNORDEREDOBJS)) $(OBJDIR)/autozend.o
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
all: $(TARGET)
|
|
|
|
|
2006-06-20 20:30:39 +00:00
|
|
|
# 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 $@ $<
|
|
|
|
|
2008-02-06 00:12:08 +00:00
|
|
|
# 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 $@ $<
|
|
|
|
|
2006-06-20 20:30:39 +00:00
|
|
|
src/sc_man_scanner.h: src/sc_man_scanner.re
|
|
|
|
$(CCDV) $(RE2C) -s -o $@ $<
|
2006-02-24 04:48:15 +00:00
|
|
|
|
2008-03-19 23:03:14 +00:00
|
|
|
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 $<
|
|
|
|
|
2006-02-24 04:48:15 +00:00
|
|
|
$(OBJDIR)/%.o : %.cpp
|
|
|
|
$(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
|
|
|
|
$(OBJDIR)/%.o : %.nas
|
2007-12-11 02:38:38 +00:00
|
|
|
$(CCDV) nasm -o $@ -f win32 $<
|
2007-02-03 02:51:13 +00:00
|
|
|
@tools/fixrtext/fixrtext $@
|
2006-02-24 04:48:15 +00:00
|
|
|
|
|
|
|
$(OBJDIR)/%.o : %.rc
|
|
|
|
$(CCDV) windres --include-dir=src/win32 -o $@ -i $<
|
|
|
|
|
|
|
|
|
2006-06-20 20:30:39 +00:00
|
|
|
$(TARGET): testobjdir updaterev $(OBJS)
|
|
|
|
$(CCDV) $(CXX) -o $@ $(OBJS) $(LDFLAGS)
|
2006-02-24 04:48:15 +00:00
|
|
|
|
2006-08-11 03:07:32 +00:00
|
|
|
ifeq (1,$(WINCMD))
|
2006-02-24 04:48:15 +00:00
|
|
|
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
|
|
|
|
|
2006-06-20 20:30:39 +00:00
|
|
|
cleandep:
|
|
|
|
-del /q /f $(DEBUGOBJDIR)\*.d 2>nul
|
|
|
|
-del /q /f $(RELEASEOBJDIR)\*.d 2>nul
|
2006-08-11 03:07:32 +00:00
|
|
|
else
|
|
|
|
clean:
|
|
|
|
rm -f $(RELEASETARGET)
|
|
|
|
rm -f $(DEBUGTARGET)
|
|
|
|
rm -fr $(DEBUGOBJDIR)
|
|
|
|
rm -fr $(RELEASEOBJDIR)
|
|
|
|
|
|
|
|
cleandep:
|
VERY IMPORTANT NOTE FOR ANYBODY BUILDING FROM THE TRUNK: This commit adds support
for FMOD Ex while at the same time removing support for FMOD 3. Be sure to update
your SDKs. GCC users, be sure to do a "make cleandep && make clean" before
building, or you will likely get inexplicable errors.
- Fixed: If you wanted to make cleandep with MinGW, you had to specifically
specify Makefile.mingw as the makefile to use.
- Added a normalizer to the OPL synth. It helped bring up the volume a little,
but not nearly as much as I would have liked.
- Removed MIDI Mapper references. It doesn't work with the stream API, and
it doesn't really exist on NT kernels, either.
- Reworked music volume: Except for MIDI, all music volume is controlled
through GSnd and not at the individual song level.
- Removed the mididevice global variable.
- Removed snd_midivolume. Now that all music uses a linear volume scale,
there's no need for two separate music volume controls.
- Increased snd_samplerate default up to 48000.
- Added snd_format, defaulting to "PCM-16".
- Added snd_speakermode, defaulting to "Auto".
- Replaced snd_fpu with snd_resampler, defaulting to "Linear".
- Bumped the snd_channels default up from a pitiful 12 to 32.
- Changed snd_3d default to true. The new cvar snd_hw3d determines if
hardware 3D support is used and default to false.
- Removed the libFLAC source, since FMOD Ex has native FLAC support.
- Removed the altsound code, since it was terribly gimped in comparison to
the FMOD code. It's original purpose was to have been as a springboard for
writing a non-FMOD sound system for Unix-y systems, but that never
happened.
- Finished preliminary FMOD Ex support.
SVN r789 (trunk)
2008-03-09 03:13:49 +00:00
|
|
|
rm -f $(DEBUGOBJDIR)/*.d
|
|
|
|
rm -f $(RELEASEOBJDIR)/*.d
|
2006-08-11 03:07:32 +00:00
|
|
|
endif
|
2006-06-20 20:30:39 +00:00
|
|
|
|
2006-02-24 04:48:15 +00:00
|
|
|
testobjdir:
|
2006-08-11 03:07:32 +00:00
|
|
|
ifeq (1,$(WINCMD))
|
2006-02-24 04:48:15 +00:00
|
|
|
-@if not exist $(OBJDIR) mkdir $(OBJDIR)
|
2006-08-11 03:07:32 +00:00
|
|
|
else
|
|
|
|
-@if [ ! -e $(OBJDIR) ]; then mkdir $(OBJDIR); fi
|
|
|
|
endif
|
2006-02-24 04:48:15 +00:00
|
|
|
|
2006-06-20 20:30:39 +00:00
|
|
|
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)
|
2006-02-24 04:48:15 +00:00
|
|
|
endif
|
2006-06-20 20:30:39 +00:00
|
|
|
|
|
|
|
.PHONY: clean all updaterev testobjdir cleandep
|