mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-18 02:12:00 +00:00
39940fe20a
from doing prebuffering of the song. This was causing the Linux version to hang while waiting for input from the pipe, since Timidity hadn't been started yet. I tried using a select call in the FillStream() method, but it always seems to return the pipe as having nothing available. Unfortunately, the game still falls all over itself if Timidity isn't available. Instead of execvp failing nicely, X errors kill the game. I don't know why it's doing that. My advice for Linux music: Skip Timidity++ and get a DLS patch set (/WINDOWS/system32/drivers/gm.dls is probably the most common by far) and set the snd_midipatchset cvar to point to it. It's faster and also sounds a whole lot better than the crappy freepats Ubuntu wants to install with Timidity++. - GCC fixes. SVN r858 (trunk)
156 lines
4.4 KiB
Text
156 lines
4.4 KiB
Text
# created on 4/12/2006 by James Bentler
|
|
|
|
FMOD_PREFIX = /usr/local
|
|
CXX ?= g++
|
|
CC ?= gcc
|
|
NASM ?= nasm
|
|
CCDV = @./ccdv
|
|
ifdef DEBUG
|
|
CFLAGS ?= -pipe -Wall -Wno-unused -fno-strict-aliasing
|
|
else
|
|
CFLAGS ?= -pipe -Wall -Wno-unused -fno-strict-aliasing -O2 -fomit-frame-pointer
|
|
CXXFLAGS ?= -fno-rtti
|
|
endif
|
|
#ifdef GC
|
|
# CFLAGS += -ffunction-sections
|
|
# LDFLAGS += -Wl,--gc-sections
|
|
#endif
|
|
CFLAGS += -MMD -DHAVE_FILELENGTH -D__forceinline=inline `sdl-config --cflags` `pkg-config gtk+-2.0 --cflags`
|
|
CFLAGS += -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -DNEED_STRUPR
|
|
LDFLAGS += -lz -ljpeg -`sdl-config --libs` `pkg-config gtk+-2.0 --libs` $(FMOD_PREFIX)/lib/libfmodex.so
|
|
NASMFLAGS += -f elf -DM_TARGET_LINUX
|
|
|
|
SRCDIRS = src/ $(addprefix src/,g_doom/ g_heretic/ g_hexen/ g_raven/ g_shared/ g_strife/ oplsynth/ sound/ sdl/ textures/ thingdef/ xlat/)
|
|
VPATH = $(SRCDIRS)
|
|
INCLUDES = $(addprefix -I,$(SRCDIRS))
|
|
INCLUDES += -Isnes_spc/snes_spc/ -I$(FMOD_PREFIX)/include/fmodex/
|
|
CFLAGS += $(INCLUDES)
|
|
|
|
RELEASEOBJ ?= releaseobj
|
|
DEBUGOBJ ?= debugobj
|
|
|
|
CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS)))
|
|
CSRCS = $(filter-out src/xlat/xlat_parser.c, $(wildcard $(addsuffix *.c,$(SRCDIRS))))
|
|
ifdef NOASM
|
|
CFLAGS += -DNOASM
|
|
else
|
|
ASRCS = $(wildcard src/*.nas)
|
|
CFLAGS += -DUSEASM=1
|
|
endif
|
|
SRCS = $(CSRCS) $(CPPSRCS) $(ASRCS)
|
|
CPPOBJFILES = $(notdir $(patsubst %.cpp,%.o,$(CPPSRCS)))
|
|
COBJFILES = $(notdir $(patsubst %.c,%.o,$(CSRCS)))
|
|
AOBJFILES = $(notdir $(patsubst %.nas,%.o,$(ASRCS)))
|
|
|
|
ZDOOM = zdoom
|
|
ZDOOMDEBUG = zdoomd
|
|
|
|
ifdef DEBUG
|
|
OBJDIR = $(DEBUGOBJ)
|
|
CFLAGS += -D_DEBUG -g3
|
|
NASMFLAGS += -g
|
|
ZDOOMBIN = $(ZDOOMDEBUG)
|
|
else
|
|
OBJDIR = $(RELEASEOBJ)
|
|
CFLAGS += -DNDEBUG
|
|
LDFLAGS += -Wl,-Map=$(ZDOOM).map
|
|
ifndef NOSTRIP
|
|
LDFLAGS += -s
|
|
endif
|
|
ZDOOMBIN = $(ZDOOM)
|
|
endif
|
|
CXXFLAGS += $(CFLAGS)
|
|
|
|
COBJS = $(addprefix $(OBJDIR)/,$(CPPOBJFILES) $(COBJFILES))
|
|
DEPS = $(patsubst %.o,%.d,$(COBJS))
|
|
OBJS = $(addprefix $(OBJDIR)/,$(AOBJFILES)) $(COBJS)
|
|
|
|
all: $(ZDOOMBIN) toolsandpk3 zdoom.pk3
|
|
|
|
$(ZDOOMBIN): ccdv updaterev $(OBJDIR) $(OBJS) snes_spc/libsnes_spc.a
|
|
$(CCDV) $(CXX) $(LDFLAGS) $(OBJDIR)/autostart.o \
|
|
$(filter-out %/autostart.o %/autozend.o,$(OBJS)) \
|
|
snes_spc/libsnes_spc.a $(OBJDIR)/autozend.o -o $(ZDOOMBIN)
|
|
|
|
$(OBJDIR)/%.o: %.cpp
|
|
$(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
$(OBJDIR)/%.o: %.c
|
|
$(CCDV) $(CC) $(CFLAGS) -o $@ -c $<
|
|
|
|
$(OBJDIR)/%.o: %.nas
|
|
$(CCDV) $(NASM) -o $@ $(NASMFLAGS) $<
|
|
|
|
# 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 $@ $<
|
|
|
|
# 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/xlat/xlat_parser.h src/xlat/xlat_parser.c: tools/lemon/lemon src/xlat/xlat_parser.y
|
|
$(CCDV) tools/lemon/lemon -s src/xlat/xlat_parser.y
|
|
|
|
$(OBJDIR):
|
|
mkdir $(OBJDIR)
|
|
|
|
toolsandpk3: ccdv tools/makewad/makewad tools/dehsupp/dehsupp tools/lemon/lemon
|
|
$(MAKE) -C wadsrc/
|
|
|
|
zdoom.pk3: toolsandpk3
|
|
ln -sf wadsrc/zdoom.pk3 ./
|
|
|
|
snes_spc/libsnes_spc.a:
|
|
$(MAKE) -C snes_spc/
|
|
|
|
tools/makewad/makewad:
|
|
$(MAKE) -C tools/makewad/
|
|
|
|
tools/dehsupp/dehsupp:
|
|
$(MAKE) -C tools/dehsupp/
|
|
|
|
tools/lemon/lemon:
|
|
$(MAKE) -C tools/lemon/
|
|
|
|
updaterev: tools/updaterevision/updaterevision
|
|
@tools/updaterevision/updaterevision . src/svnrevision.h
|
|
|
|
tools/updaterevision/updaterevision:
|
|
$(MAKE) -C tools/updaterevision
|
|
|
|
.PHONY : clean cleandeps cleanobjs distclean toolsandpk3 cleantools updaterev
|
|
|
|
clean: cleanobjs
|
|
rm -f $(ZDOOMDEBUG) $(ZDOOM) $(ZDOOM).map
|
|
rm -f ccdv
|
|
|
|
cleantools:
|
|
@$(MAKE) -C tools/makewad clean
|
|
@$(MAKE) -C tools/dehsupp clean
|
|
@$(MAKE) -C tools/xlatcc clean
|
|
|
|
cleandebug:
|
|
rm -f $(ZDOOMDEBUG) $(DEBUGOBJ)/*.o $(DEBUGOBJ)/*.d
|
|
-rmdir $(DEBUGOBJ)
|
|
|
|
cleanrelease:
|
|
rm -f $(ZDOOM) $(ZDOOM).map $(RELEASEOBJ)/*.o $(RELEASEOBJ)/*.o
|
|
-rmdir $(RELEASEOBJ)
|
|
|
|
# I could use a recursive delete instead, but that could be dangerous...
|
|
distclean: clean cleandeps
|
|
-rmdir $(RELEASEOBJ) $(DEBUGOBJ)
|
|
|
|
cleandeps:
|
|
rm -f $(RELEASEOBJ)/*.d $(DEBUGOBJ)/*.d
|
|
|
|
cleanobjs:
|
|
rm -f $(RELEASEOBJ)/*.o $(DEBUGOBJ)/*.o
|
|
|
|
ccdv: ccdv-posix.c
|
|
@gcc -Os -s ccdv-posix.c -o ccdv
|
|
|
|
ifeq (,$(findstring $(MAKECMDGOALS),clean cleandeps cleanobjs distclean toolsandpk3 cleantools updaterev))
|
|
-include $(DEPS)
|
|
endif
|