hostile-takeover/server/Makefile
2016-01-01 23:09:50 -08:00

89 lines
2.2 KiB
Makefile

# Compiler command line
# Add warning check for implicit data type resolution loss, otherwise
# gcc is silent.
UNAME := $(shell uname)
ifeq ($(UNAME), Darwin)
PRE_CC=g++
CC=$(PRE_CC) -DOSX
endif
ifeq ($(UNAME), Linux)
PRE_CC=g++
CC=$(PRE_CC) -DLINUX
endif
LD=$(CC)
CPP_INCS=-I..
OUTDIR=
BINARY=hts
LDFLAGS=-lpthread
# Choose socketserver type
ifeq ($(shell uname -s),Darwin)
SOCKETSERVER=selectserver
endif
ifeq ($(shell uname -s),Linux)
SOCKETSERVER=epollserver
endif
# Debug is default
ifdef REL
CPP_FLAGS=-DRELEASE_LOGGING -g -Wno-write-strings
OUTDIR=release
OPTFLAGS=-O2
else
CPP_FLAGS=-DDEBUG_LOGGING -DDEBUG -DDEV_BUILD -g -Wno-write-strings
OUTDIR=debug
OPTFLAGS=-O0
endif
ifdef DEV_BUILD
CPP_FLAGS=-DDEV_BUILD $(CPP_FLAGS)
endif
CPPFLAGS=$(OPTFLAGS) $(CPP_FLAGS) $(CPP_INCS) -fsigned-char
MAINFILES=main server endpoint room lobby game levelinfo levelinfocache \
ncpackfile ncpdbreader playermgr player tokenauth statsposter httppost \
serverinfoupdater chatlimiter filewatcher tracker badwords tokenbucket \
logger secrets
BASEFILES=deletetracker socket socketaddress socketserver $(SOCKETSERVER) \
bytebuffer eventer md5c messagequeue messagehandler tick format base64 thread
YAJLFILESCPP=jsonbuilder jsontypes
YAJLFILESC=yajl yajl_buf yajl_encode yajl_lex yajl_parser yajl_gen
MPSHAREDFILES=messages netmessage misc xpump ini packfile decompress \
packmanager indexloader xmsglog
INCFILES=rip
ALLFILES=$(INCFILES) $(MAINFILES) $(BASEFILES) $(MPSHAREDFILES) $(YAJLFILESC) \
$(YAJLFILESCPP)
all: $(OUTDIR)/$(BINARY)
clean:
rm -f $(OUTDIR)/*
$(OUTDIR)/$(BINARY): $(ALLFILES:%=$(OUTDIR)/%.o)
$(LD) -o $@ $^ $(LDFLAGS)
$(MAINFILES:%=$(OUTDIR)/%.o): $(MAINFILES:%=%.cpp)
$(CC) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(BASEFILES:%=$(OUTDIR)/%.o): $(BASEFILES:%=../base/%.cpp)
$(CC) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(MPSHAREDFILES:%=$(OUTDIR)/%.o): $(MPSHAREDFILES:%=../mpshared/%.cpp)
$(CC) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(INCFILES:%=$(OUTDIR)/%.o): $(INCFILES:%=../inc/%.cpp)
$(CC) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(YAJLFILESCPP:%=$(OUTDIR)/%.o): $(YAJLFILESCPP:%=../yajl/wrapper/%.cpp)
$(CC) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(YAJLFILESC:%=$(OUTDIR)/%.o): $(YAJLFILESC:%=../yajl/src/%.c)
$(CC) $(CPPFLAGS) -x c -c $(<D)/$(*F).c -o $@