diff options
Diffstat (limited to 'GNUmakefile')
-rw-r--r-- | GNUmakefile | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/GNUmakefile b/GNUmakefile deleted file mode 100644 index d729268e7..000000000 --- a/GNUmakefile +++ /dev/null @@ -1,194 +0,0 @@ -################################################### -# -# Makefile for MCServer -# Creator: tedik -# -################################################### -# -# Info: -# This makefile is gnu-make spacific, other make systems needn't understand it -# This makefile generates include-file dependencies into *.d files in each build and then reuses these dependencies in the following builds -# -# Usage: -# To make a release build, call "make release=1" -# To make a debug build, call "make" -# To make a 32-bit build on 64-bit OS, pass the addm32=1 flag -# To build with clang, you need to add disableasm=1 flag -# -################################################### - -# -# Macros -# - -# allow user to override compiler -# if no compiler is specified make specifies cc -ifeq ($(CC),cc) -CC = /usr/bin/g++ -endif - -all: MCServer/MCServer - - - - - -################################################### -# Set the variables used for compiling, based on the build mode requested: -# CC_OPTIONS ... options for the C code compiler -# CXX_OPTIONS ... options for the C++ code compiler -# LNK_OPTIONS ... options for the linker -# LNK_LIBS ... libraries to link in -# -- according to http://stackoverflow.com/questions/6183899/undefined-reference-to-dlopen, libs must come after all sources -# BUILDDIR ... folder where the intermediate object files are built - -ifeq ($(release),1) -################ -# release build - fastest run-time, no gdb support -################ - -CC_OPTIONS = -O3 -DNDEBUG -DLUA_USE_DLOPEN -CXX_OPTIONS = -O3 -DNDEBUG -DLUA_USE_DLOPEN -LNK_OPTIONS = -pthread -O3 - -BUILDDIR = build/release/ - -else -ifeq ($(profile),1) -################ -# profile build - a release build with symbols and profiling engine built in -################ - -CC_OPTIONS = -g -ggdb -O3 -pg -DNDEBUG -DLUA_USE_DLOPEN -CXX_OPTIONS = -g -ggdb -O3 -pg -DNDEBUG -DLUA_USE_DLOPEN -LNK_OPTIONS = -pthread -ggdb -O3 -pg - -BUILDDIR = build/profile/ - -else -################ -# debug build - fully traceable by gdb in C++ code, slowest -# Since C code is used only for supporting libraries (zlib, lua), it is still Ofast-optimized -################ - -CC_OPTIONS = -ggdb -g -D_DEBUG -O3 -DLUA_USE_DLOPEN -CXX_OPTIONS = -ggdb -g -D_DEBUG -O1 -DLUA_USE_DLOPEN -LNK_OPTIONS = -pthread -g -ggdb -O1 - -BUILDDIR = build/debug/ - -endif -endif - -################################################## -# Always be warning. - -CXX_OPTIONS += -Wall - -################################################### -# Fix Crypto++ warnings in clang - -ifeq ($(shell $(CXX) --version 2>&1 | grep -i -c "clang"),1) -CC_OPTIONS += -DCRYPTOPP_DISABLE_ASM -CXX_OPTIONS += -DCRYPTOPP_DISABLE_ASM -endif - - -################################################### -# Set the link libraries based on the OS -# Linux uses libdl -# FreeBSD uses libltdl -# TODO: other OSs? - -UNAME := $(shell uname -s) -ifeq ($(UNAME),Linux) - LNK_LIBS = -lstdc++ -ldl -lm -else - LNK_LIBS = -lstdc++ -lltdl -endif - - - - - -################################################### -# Export all symbols from the executable, so that LuaRocks may bind to Lua routines: -LNK_OPTIONS += -rdynamic - - - - - -################################################### -# 32-bit build override in 64-bit build environments - -ifeq ($(addm32),1) -CC_OPTIONS += -m32 -CXX_OPTIONS += -m32 -LNK_OPTIONS += -m32 -endif - - - - - - -################################################### -# INCLUDE directories for MCServer - -INCLUDE = -Isrc\ - -Ilib\ - -Ilib/jsoncpp/include - - - - - -################################################### -# Build MCServer - -SOURCES := $(shell find src lib '(' -name '*.cpp' -o -name '*.c' ')') -SOURCES := $(filter-out %minigzip.c %lua.c %tolua.c %toluabind.c %LeakFinder.cpp %StackWalker.cpp %example.c,$(SOURCES)) -OBJECTS := $(patsubst %.c,$(BUILDDIR)%.o,$(SOURCES)) -OBJECTS := $(patsubst %.cpp,$(BUILDDIR)%.o,$(OBJECTS)) - --include $(patsubst %.o,%.d,$(OBJECTS)) - -MCServer/MCServer : $(OBJECTS) - $(CC) $(LNK_OPTIONS) $(OBJECTS) $(LNK_LIBS) -o MCServer/MCServer - -clean : - rm -rf $(BUILDDIR) MCServer/MCServer - -install : MCServer - cp MCServer MCServer - - - - - -################################################### -# Build the parts of MCServer -# -# options used: -# -x c ... compile as C code -# -c ... compile but do not link -# -MM ... generate a list of includes - -$(BUILDDIR)%.o: %.c - @mkdir -p $(dir $@) - $(CC) $(CC_OPTIONS) -x c -c $(INCLUDE) $< -o $@ - @$(CC) $(CC_OPTIONS) -x c -MM $(INCLUDE) $< > $(patsubst %.o,%.d,$@) - @mv -f $(patsubst %.o,%.d,$@) $(patsubst %.o,%.d,$@).tmp - @sed -e "s|.*:|$(BUILDDIR)$*.o:|" < $(patsubst %.o,%.d,$@).tmp > $(patsubst %.o,%.d,$@) - @sed -e 's/.*://' -e 's/\\$$//' < $(patsubst %.o,%.d,$@).tmp | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $(patsubst %.o,%.d,$@) - @rm -f $(patsubst %.o,%.d,$@).tmp - -$(BUILDDIR)%.o: %.cpp - @mkdir -p $(dir $@) - $(CC) $(CXX_OPTIONS) -c $(INCLUDE) $< -o $@ - @$(CC) $(CXX_OPTIONS) -MM $(INCLUDE) $< > $(patsubst %.o,%.d,$@) - @mv -f $(patsubst %.o,%.d,$@) $(patsubst %.o,%.d,$@).tmp - @sed -e "s|.*:|$(BUILDDIR)$*.o:|" < $(patsubst %.o,%.d,$@).tmp > $(patsubst %.o,%.d,$@) - @sed -e 's/.*://' -e 's/\\$$//' < $(patsubst %.o,%.d,$@).tmp | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $(patsubst %.o,%.d,$@) - @rm -f $(patsubst %.o,%.d,$@).tmp |