mirror of
https://github.com/ZDoom/qzdoom-gpl.git
synced 2024-11-15 16:51:31 +00:00
92 lines
2.4 KiB
Text
92 lines
2.4 KiB
Text
|
# created on 4/12/2006 by James Bentler
|
||
|
CXX ?= g++
|
||
|
CPPFLAGS ?= -Wall -Wno-unused -O2 -fomit-frame-pointer
|
||
|
CXXFLAGS += -DHAVE_FILELENGTH -D__forceinline=inline -Izlib -IFLAC `sdl-config --cflags`
|
||
|
CXXFLAGS += -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp
|
||
|
LDFLAGS += -lFLAC++ -lFLAC -lz -lfmod `sdl-config --libs`
|
||
|
|
||
|
NASM ?= nasm
|
||
|
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/)
|
||
|
INCLUDES = $(addprefix -I,$(SRCDIRS))
|
||
|
CXXFLAGS += $(INCLUDES)
|
||
|
|
||
|
RELEASEOBJ ?= releaseobj
|
||
|
DEBUGOBJ ?= debugobj
|
||
|
|
||
|
CSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS)))
|
||
|
ASRCS = $(wildcard src/*.nas)
|
||
|
SRCS = $(ASRCS) $(CSRCS)
|
||
|
COBJFILES = $(notdir $(patsubst %.cpp,%.o,$(CSRCS)))
|
||
|
AOBJFILES = $(notdir $(patsubst %.nas,%.o,$(ASRCS)))
|
||
|
|
||
|
ZDOOM = zdoom
|
||
|
ZDOOMDEBUG = zdoomd
|
||
|
|
||
|
ifndef DEBUG
|
||
|
OBJDIR = $(RELEASEOBJ)
|
||
|
CXXFLAGS += -DNDEBUG
|
||
|
ZDOOMBIN = $(ZDOOM)
|
||
|
else
|
||
|
OBJDIR = $(DEBUGOBJ)
|
||
|
CXXFLAGS += -g
|
||
|
ZDOOMBIN = $(ZDOOMDEBUG)
|
||
|
endif
|
||
|
|
||
|
COBJS = $(addprefix $(OBJDIR)/,$(COBJFILES))
|
||
|
DEPS = $(patsubst %.o,%.d,$(COBJS))
|
||
|
OBJS = $(addprefix $(OBJDIR)/,$(AOBJFILES)) $(COBJS)
|
||
|
|
||
|
# rule pattern for dependencies
|
||
|
define DEPBUILD_PATTERN
|
||
|
_dep_: _src_
|
||
|
echo "_dep_: _src_"
|
||
|
$(CXX) _src_ -MM $(CXXFLAGS) -MT "$$(patsubst %.d,%.o,_dep_) _dep_" -MF _dep_
|
||
|
-include _dep_
|
||
|
|
||
|
endef
|
||
|
|
||
|
# rule pattern for assembly files
|
||
|
define ASMBUILD_PATTERN
|
||
|
_obj_: _src_
|
||
|
echo "_obj_: _src_"
|
||
|
$(NASM) -o _obj_ $(NASMFLAGS) _src_
|
||
|
|
||
|
endef
|
||
|
|
||
|
all: $(ZDOOMBIN) zdoom.wad
|
||
|
|
||
|
$(ZDOOMBIN): $(DEPS) $(OBJDIR) $(OBJS)
|
||
|
$(CXX) $(LDFLAGS) $(OBJS) -o $(ZDOOMBIN)
|
||
|
|
||
|
# textually substitute in the _obj_ and the _src_ it depends on to create rules
|
||
|
$(foreach src,$(ASRCS), $(eval $(subst _src_,$(src),$(subst \
|
||
|
_obj_,$(OBJDIR)/$(patsubst %.nas,%.o,$(notdir $$$(src))),$(ASMBUILD_PATTERN)))))
|
||
|
|
||
|
# textually substitute in the _dep_ and the _src_ it depends on to create rules
|
||
|
$(foreach src,$(CSRCS), $(eval $(subst _src_,$(src),$(subst \
|
||
|
_dep_,$(OBJDIR)/$(patsubst %.cpp,%.d,$(notdir $$$(src))),$(DEPBUILD_PATTERN)))))
|
||
|
|
||
|
$(OBJDIR)/%.o:
|
||
|
$(CXX) -c $(CXXFLAGS) -o $@ -c $<
|
||
|
|
||
|
-include $(DEPS)
|
||
|
|
||
|
$(OBJDIR):
|
||
|
mkdir -p $(OBJDIR)
|
||
|
|
||
|
zdoom.wad:
|
||
|
make -C wadsrc/ -f Makefile
|
||
|
|
||
|
.PHONY : clean cleandeps cleanobjs
|
||
|
|
||
|
clean:
|
||
|
rm -f $(RELEASEOBJ)/* $(DEBUGOBJ)/* $(ZDOOMDEBUG) $(ZDOOM)
|
||
|
|
||
|
cleandeps:
|
||
|
rm -f $(RELEASEOBJ)/*.d $(DEBUGOBJ)/*.d
|
||
|
|
||
|
cleanobjs:
|
||
|
rm -f $(RELEASEOBJ)/*.o $(DEBUGOBJ)/*.o
|