summaryrefslogtreecommitdiffstats
path: root/tests/NoiseTest/GNUmakefile
diff options
context:
space:
mode:
authorAlexander Harkness <bearbin@gmail.com>2013-12-21 13:59:41 +0100
committerAlexander Harkness <bearbin@gmail.com>2013-12-21 13:59:41 +0100
commitd777c7efd9fa63f56291f1d77e446e17b33b0707 (patch)
treed928255c433d59b38690b2391caf83ff1c248d53 /tests/NoiseTest/GNUmakefile
parentMarked stats.cmd as executable so it can be run on linux (diff)
downloadcuberite-d777c7efd9fa63f56291f1d77e446e17b33b0707.tar
cuberite-d777c7efd9fa63f56291f1d77e446e17b33b0707.tar.gz
cuberite-d777c7efd9fa63f56291f1d77e446e17b33b0707.tar.bz2
cuberite-d777c7efd9fa63f56291f1d77e446e17b33b0707.tar.lz
cuberite-d777c7efd9fa63f56291f1d77e446e17b33b0707.tar.xz
cuberite-d777c7efd9fa63f56291f1d77e446e17b33b0707.tar.zst
cuberite-d777c7efd9fa63f56291f1d77e446e17b33b0707.zip
Diffstat (limited to 'tests/NoiseTest/GNUmakefile')
-rw-r--r--tests/NoiseTest/GNUmakefile163
1 files changed, 163 insertions, 0 deletions
diff --git a/tests/NoiseTest/GNUmakefile b/tests/NoiseTest/GNUmakefile
new file mode 100644
index 000000000..436cfdcfe
--- /dev/null
+++ b/tests/NoiseTest/GNUmakefile
@@ -0,0 +1,163 @@
+###################################################
+#
+# Makefile for NoiseTest
+# Creator: xoft
+#
+###################################################
+#
+# Usage:
+# To make a release build, call "make"
+# To make a debug build, call "make debug=1"
+#
+###################################################
+
+#
+# Macros
+#
+
+CC = /usr/bin/g++
+
+
+all: NoiseTest
+
+
+
+
+
+###################################################
+# 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
+
+LNK_LIBS = -lstdc++ -ldl
+
+ifeq ($(debug),1)
+################
+# debug build - fully traceable by gdb in C++ code, slowest
+# Since C code is used only for supporting libraries (zlib, lua), it is still O3-optimized
+################
+CC_OPTIONS = -s -ggdb -g -D_DEBUG -O3
+CXX_OPTIONS = -s -ggdb -g -D_DEBUG
+LNK_OPTIONS = -pthread -g -ggdb
+BUILDDIR = build/debug/
+
+else
+ifeq ($(profile),1)
+################
+# profile build - a release build with symbols and profiling engine built in
+################
+CC_OPTIONS = -s -g -ggdb -O3 -pg -DNDEBUG
+CXX_OPTIONS = -s -g -ggdb -O3 -pg -DNDEBUG
+LNK_OPTIONS = -pthread -ggdb -O3 -pg
+BUILDDIR = build/profile/
+
+else
+ifeq ($(pedantic),1)
+################
+# pedantic build - basically a debug build with lots of warnings
+################
+CC_OPTIONS = -s -g -ggdb -D_DEBUG -Wall -Wextra -pedantic -ansi -Wno-long-long
+CXX_OPTIONS = -s -g -ggdb -D_DEBUG -Wall -Wextra -pedantic -ansi -Wno-long-long
+LNK_OPTIONS = -pthread -ggdb
+BUILDDIR = build/pedantic/
+
+else
+################
+# release build - fastest run-time, no gdb support
+################
+CC_OPTIONS = -s -g -O3 -DNDEBUG
+CXX_OPTIONS = -s -g -O3 -DNDEBUG
+LNK_OPTIONS = -pthread -O3
+BUILDDIR = build/release/
+endif
+endif
+endif
+
+
+
+
+
+###################################################
+# INCLUDE directories
+#
+
+INCLUDE = -I.\
+ -I../../source\
+
+
+
+
+
+###################################################
+# Build NoiseTest
+#
+
+SOURCES = NoiseTest.cpp
+
+SHAREDSOURCES = \
+ source/Log.cpp \
+ source/MCLogger.cpp \
+ source/Noise.cpp \
+ source/StringUtils.cpp \
+ source/OSSupport/CriticalSection.cpp \
+ source/OSSupport/File.cpp \
+ source/OSSupport/IsThread.cpp \
+ source/OSSupport/MakeDir.cpp \
+
+OBJECTS := $(patsubst %.c,$(BUILDDIR)%.o,$(SOURCES))
+OBJECTS := $(patsubst %.cpp,$(BUILDDIR)%.o,$(OBJECTS))
+
+SHAREDOBJECTS := $(patsubst %.c,$(BUILDDIR)%.o,$(SHAREDSOURCES))
+SHAREDOBJECTS := $(patsubst %.cpp,$(BUILDDIR)%.o,$(SHAREDOBJECTS))
+
+-include $(patsubst %.o,%.d,$(OBJECTS))
+-include $(patsubst %.o,%.d,$(SHAREDOBJECTS))
+
+NoiseTest : $(OBJECTS) $(SHAREDOBJECTS)
+ $(CC) $(LNK_OPTIONS) $(OBJECTS) $(SHAREDOBJECTS) $(LNK_LIBS) -o NoiseTest
+
+clean :
+ rm -rf $(BUILDDIR) NoiseTest
+
+
+
+
+
+###################################################
+# 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
+
+$(BUILDDIR)source/%.o: ../../source/%.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