hostile-takeover/game/sdl/linux/makefile
2016-08-31 23:54:48 -04:00

118 lines
3.9 KiB
Makefile

BINARY = HostileTakeover
HTROOT := ../../..
CC = gcc
CXX = g++
LD = g++
CPPFLAGS += -w -Wno-write-strings -fsigned-char \
-I../../../base -I../../../mpshared -I../../../inc \
-I../SDL2/include -I../curl/include -I../../../ -I../../ -I../ \
-D__LINUX__ -DSDL -DMULTIPLAYER -DTRACKSTATE
ifeq ($(REL),1)
OUTDIR = release
CPPFLAGS += -O2
else
CPPFLAGS += -g -O0 -DDEV_BUILD -DDEBUG_LOGGING -DDEBUG
OUTDIR = debug
endif
ifeq ($(shell uname), Darwin)
LDFLAGS += -F/System/Library/Frameworks -framework cocoa -framework foundation \
-F../SDL2/osx -framework SDL2 -fobjc-link-runtime -framework SDL2 \
-rpath ~/Games/HostileTakeover -lcurl -lpthread
CPPFLAGS += -DDARWIN
else
LDFLAGS += -lSDL2 -lcurl -lpthread
endif
# For each source directory:
# wildcard to get all the .cpp or .c files
# notdir to remove the path from the file paths
# basename to remove the suffix from the file name
# filter-out to remove any unwanted source files
GAME_FILES := $(wildcard $(HTROOT)/game/*.cpp)
GAME_FILES := $(notdir $(GAME_FILES))
GAME_FILES := $(basename $(GAME_FILES))
GAME_FILES := $(filter-out SocTransport miscgraphics \
hashtablecode filepdbreader DebugHelpers, $(GAME_FILES))
BASE_FILES := $(wildcard $(HTROOT)/base/*.cpp)
BASE_FILES := $(notdir $(BASE_FILES))
BASE_FILES := $(basename $(BASE_FILES))
BASE_FILES := $(filter-out epollserver stdindispatcher, $(BASE_FILES))
MPSHARED_FILES := $(wildcard $(HTROOT)/mpshared/*.cpp)
MPSHARED_FILES := $(notdir $(MPSHARED_FILES))
MPSHARED_FILES := $(basename $(MPSHARED_FILES))
INC_FILES := rip
YAJL_C_FILES := $(wildcard $(HTROOT)/yajl/src/*.c)
YAJL_C_FILES := $(notdir $(YAJL_C_FILES))
YAJL_C_FILES := $(basename $(YAJL_C_FILES))
YAJL_CPP_FILES := $(wildcard $(HTROOT)/yajl/wrapper/*.cpp)
YAJL_CPP_FILES := $(notdir $(YAJL_CPP_FILES))
YAJL_CPP_FILES := $(basename $(YAJL_CPP_FILES))
YAJL_CPP_FILES := $(filter-out jsonbuilder_test, $(YAJL_CPP_FILES))
SDL_FILES = $(wildcard $(HTROOT)/game/sdl/*.cpp)
SDL_FILES := $(notdir $(SDL_FILES))
SDL_FILES := $(basename $(SDL_FILES))
LINUX_FILES = $(wildcard $(HTROOT)/game/sdl/linux/*.cpp)
LINUX_FILES := $(notdir $(LINUX_FILES))
LINUX_FILES := $(basename $(LINUX_FILES))
all: before_make $(OUTDIR)/$(BINARY)
before_make:
test -d $(OUTDIR) || mkdir -p $(OUTDIR)
test -d $(OUTDIR)/game || mkdir -p $(OUTDIR)/game
test -d $(OUTDIR)/base || mkdir -p $(OUTDIR)/base
test -d $(OUTDIR)/mpshared || mkdir -p $(OUTDIR)/mpshared
test -d $(OUTDIR)/inc || mkdir -p $(OUTDIR)/inc
test -d $(OUTDIR)/yajl || mkdir -p $(OUTDIR)/yajl
test -d $(OUTDIR)/sdl || mkdir -p $(OUTDIR)/sdl
test -d $(OUTDIR)/linux || mkdir -p $(OUTDIR)/linux
clean:
rm -rf $(OUTDIR)/*
$(OUTDIR)/$(BINARY): \
$(GAME_FILES:%=$(OUTDIR)/game/%.o) \
$(BASE_FILES:%=$(OUTDIR)/base/%.o) \
$(MPSHARED_FILES:%=$(OUTDIR)/mpshared/%.o) \
$(INC_FILES:%=$(OUTDIR)/inc/%.o) \
$(YAJL_CPP_FILES:%=$(OUTDIR)/yajl/%.o) \
$(YAJL_C_FILES:%=$(OUTDIR)/yajl/%.o) \
$(SDL_FILES:%=$(OUTDIR)/sdl/%.o) \
$(LINUX_FILES:%=$(OUTDIR)/linux/%.o)
$(LD) -o $@ $^ $(LDFLAGS)
$(GAME_FILES:%=$(OUTDIR)/game/%.o): $(GAME_FILES:%=../../%.cpp)
$(CXX) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(BASE_FILES:%=$(OUTDIR)/base/%.o): $(BASE_FILES:%=../../../base/%.cpp)
$(CXX) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(MPSHARED_FILES:%=$(OUTDIR)/mpshared/%.o): $(MPSHARED_FILES:%=../../../mpshared/%.cpp)
$(CXX) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(INC_FILES:%=$(OUTDIR)/inc/%.o): $(INC_FILES:%=../../../inc/%.cpp)
$(CXX) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(YAJL_CPP_FILES:%=$(OUTDIR)/yajl/%.o): $(YAJL_CPP_FILES:%=../../../yajl/wrapper/%.cpp)
$(CXX) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(YAJL_C_FILES:%=$(OUTDIR)/yajl/%.o): $(YAJL_C_FILES:%=../../../yajl/src/%.c)
$(CC) $(CPPFLAGS) -c $(<D)/$(*F).c -o $@
$(SDL_FILES:%=$(OUTDIR)/sdl/%.o): $(SDL_FILES:%=../%.cpp)
$(CXX) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@
$(LINUX_FILES:%=$(OUTDIR)/linux/%.o): $(LINUX_FILES:%=%.cpp)
$(CXX) $(CPPFLAGS) -c $(<D)/$(*F).cpp -o $@