diff options
-rw-r--r-- | Makefile | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1b15304 --- /dev/null +++ b/Makefile @@ -0,0 +1,113 @@ +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. + + +# The package path prefix, if you want to install to another root, set DESTDIR to that root +PREFIX ?= /usr +# The library path excluding prefix +LIB ?= /lib +# The resource path excluding prefix +DATA ?= /share +# The library path including prefix +LIBDIR ?= $(PREFIX)$(LIB) +# The resource path including prefix +DATADIR ?= $(PREFIX)$(DATA) +# The generic documentation path including prefix +DOCDIR ?= $(DATADIR)/doc +# The info manual documentation path including prefix +INFODIR ?= $(DATADIR)/info +# The license base path including prefix +LICENSEDIR ?= $(DATADIR)/licenses + +# The name of the package as it should be installed +PKGNAME = libgammamm + + + +# The version of the library. +LIB_MAJOR = 1 +LIB_MINOR = 0 +LIB_VERSION = $(LIB_MAJOR).$(LIB_MINOR) + +# The so in libgammamm.so as the library file is named on Linux +ifeq ($(PLATFORM),w32) +SO = dll +else +ifeq ($(PLATFORM),osx) +SO = dylib +else +SO = so +endif +endif + +# Platform dependent flags +ifeq ($(PLATFORM),w32) +SHARED = -mdll +LDSO = -Wl,-soname,libgammamm.$(SO).$(LIB_MAJOR) +PIC = +else +ifeq ($(PLATFORM),osx) +SHARED = -dynamiclib +LDSO = +PIC = -fPIC +else +SHARED = -shared +LDSO = -Wl,-soname,libgammamm.$(SO).$(LIB_MAJOR) +PIC = -fPIC +endif +endif + +# The C standard for C code compilation +STD = c++11 +# Optimisation settings for C code compilation +OPTIMISE ?= -Og -g +# Definitions for CPP, remove __GCC__ if you are not using g++ +DEFS = __GCC__ + +# Warning flags, set to empty if you are not using GCC +WARN = -Wall -Wextra -pedantic -Wdouble-promotion -Wformat=2 -Winit-self \ + -Wmissing-include-dirs -Wtrampolines -Wfloat-equal \ + -Wmissing-declarations -Wredundant-decls -Winline -Wno-variadic-macros \ + -Weffc++ -Wc++11-compat -Wzero-as-null-pointer-constant -Wuseless-cast \ + -Wsync-nand -Wunsafe-loop-optimizations -Wcast-align -Wstrict-overflow \ + -Wundef -Wcast-qual -Wwrite-strings -Wlogical-op \ + -Wpacked -Wvector-operation-performance -Wsuggest-attribute=const \ + -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \ + -Wsuggest-attribute=format -Wnormalized=nfkc -Wconversion \ + -fstrict-aliasing -fstrict-overflow -fipa-pure-const -ftree-vrp \ + -fstack-usage -funsafe-loop-optimizations +# ignored: -Waggregate-return -Wshadow + + + +# Flags to use when compiling +CXX_FLAGS = $(foreach D,$(DEFS),-D$(D)) -std=$(STD) \ + $(OPTIMISE) $(CXXFLAGS) $(PIC) $(CPPFLAGS) $(WARN) + +# Flags to use when linking +LD_FLAGS = -lgamma -std=$(STD) $(OPTIMISE) $(LDFLAGS) $(WARN) + + + +.PHONY: all +all: bin/libgammamm.so bin/test + +bin/libgammamm.so: obj/libgamma-error.o obj/libgamma-facade.o obj/libgamma-method.o + @mkdir -p bin + $(CXX) $(LD_FLAGS) $(SHARED) $(LDSO) -o $@ $^ + +bin/test: obj/test.o obj/libgamma-error.o obj/libgamma-facade.o obj/libgamma-method.o + $(CXX) $(LD_FLAGS) -o $@ $^ + +obj/%.o: src/%.cc src/*.hh + @mkdir -p obj + $(CXX) $(CXX_FLAGS) -c -o $@ $< + + + +.PHONY: clean +clean: + -rm -r obj bin + |