diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e65d08d --- /dev/null +++ b/Makefile @@ -0,0 +1,123 @@ +# Check the OS type +OSTYPE := $(shell uname -s) + +# Some plattforms call it "amd64" and some "x86_64" +ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/amd64/x86_64/) + +# Refuse all other plattforms as a firewall against PEBKAC +# (You'll need some #ifdef for your unsupported plattform!) +ifneq ($(ARCH),i386) +ifneq ($(ARCH),x86_64) +$(error arch $(ARCH) is currently not supported) +endif +endif + +# ---------- + +# The compiler +CC := gcc + +# ---------- + +# Base CFLAGS. +# +# -O2 are enough optimizations. +# +# -fno-strict-aliasing since the source doesn't comply +# with strict aliasing rules and it's next to impossible +# to get it there... +# +# -fomit-frame-pointer since the framepointer is mostly +# useless for debugging Quake II and slows things down. +# +# -g to build allways with debug symbols. Please do not +# change this, since it's our only chance to debug this +# crap when random crashes happen! +# +# -MMD to generate header dependencies. +CFLAGS := -O2 -fno-strict-aliasing -fomit-frame-pointer \ + -Wall -pipe -g -MMD + +# ---------- + +# Base include path. +ifeq ($(OSTYPE),Linux) +INCLUDE := -I/usr/include -I./common +else ifeq ($(OSTYPE),FreeBSD) +INCLUDE := -I/usr/local/include -I./common +endif + +# ---------- + +# When make is invoked by "make VERBOSE=1" print +# the compiler and linker commands. + +ifdef VERBOSE +Q := +else +Q := @ +endif + +# ---------- + +# Builds everything +all: qdata1 + +# ---------- + +# Cleanup +clean: + @echo "===> CLEAN" + ${Q}rm -Rf build release + +# ---------- + +# qdata +qdata1: + @echo '===> Building qdata' + ${Q}mkdir -p release + $(MAKE) release/qdata + +build/qdata/%.o: %.c + @echo '===> CC $<' + ${Q}mkdir -p $(@D) + ${Q}$(CC) -c $(CFLAGS) $(INCLUDE) -o $@ $< + +# ---------- + +# Used by qdata +QDATA_OBJS_ = \ + common/cmdlib.o \ + common/scriplib.o \ + common/lbmlib.o \ + common/mathlib.o \ + common/trilib.o \ + common/l3dslib.o \ + common/threads.o \ + qdata/qdata.o \ + qdata/models.o \ + qdata/sprites.o \ + qdata/images.o \ + qdata/tables.o + +# ---------- + +# Rewrite pathes to our object directory +QDATA_OBJS = $(patsubst %,build/qdata/%,$(QDATA_OBJS_)) + +# ---------- + +# Generate header dependencies +QDATA_DEPS= $(QDATA_OBJS:.o=.d) + +# ---------- + +-include $(QDATA_DEPS) + +# ---------- + +# release/qdata +release/qdata : $(QDATA_OBJS) + @echo '===> LD $@' + ${Q}$(CC) $(QDATA_OBJS) $(LDFLAGS) -o $@ +