config.mk (1783B)
1 VERSION = 0.15.0 2 PREFIX = /usr/local 3 4 LIB_TYPE = SHARED 5 #LIB_TYPE = STATIC 6 7 BUILD_TYPE = RELEASE 8 #BUILD_TYPE = DEBUG 9 10 LIBPREFIX = $(PREFIX)/lib 11 INCPREFIX = $(PREFIX)/include 12 13 ################################################################################ 14 # Tools 15 ################################################################################ 16 CC = cc 17 AR = ar 18 LD = ld 19 OBJCOPY = objcopy 20 PKG_CONFIG = pkg-config 21 RANLIB = ranlib 22 23 # pkg-config flags 24 PCFLAGS_SHARED = 25 PCFLAGS_STATIC = --static 26 PCFLAGS = $(PCFLAGS_$(LIB_TYPE)) 27 28 ################################################################################ 29 # Compilation options 30 ################################################################################ 31 WFLAGS =\ 32 -Wall\ 33 -Wextra\ 34 -Wmissing-declarations\ 35 -Wmissing-prototypes\ 36 -Wconversion\ 37 -Wshadow 38 39 CFLAGS_HARDENED =\ 40 -D_FORTIFY_SOURCES=2\ 41 -fcf-protection=full\ 42 -fstack-clash-protection\ 43 -fstack-protector-strong 44 45 CFLAGS_COMMON =\ 46 -std=c89\ 47 -pedantic\ 48 -fvisibility=hidden\ 49 -fstrict-aliasing\ 50 $(CFLAGS_HARDENED)\ 51 $(WFLAGS) 52 53 CFLAGS_RELEASE = -O2 -DNDEBUG $(CFLAGS_COMMON) 54 CFLAGS_DEBUG = -g $(CFLAGS_COMMON) 55 CFLAGS = $(CFLAGS_$(BUILD_TYPE)) 56 CFLAGS_SO = $(CFLAGS) -fPIC 57 CFLAGS_EXE = $(CFLAGS) -fPIE 58 59 ################################################################################ 60 # Linker options 61 ################################################################################ 62 LIBS = -ldl -lpthread -lm 63 64 LDFLAGS_HARDENED = -Wl,-z,relro,-z,now 65 LDFLAGS_DEBUG = $(LDFLAGS_HARDENED) 66 LDFLAGS_RELEASE = -s $(LDFLAGS_HARDENED) 67 LDFLAGS = $(LDFLAGS_$(BUILD_TYPE)) 68 69 LDFLAGS_SO = $(LDFLAGS) -shared -Wl,--no-undefined 70 LDFLAGS_EXE = $(LDFLAGS) -pie 71 72 OCPFLAGS_DEBUG = --localize-hidden 73 OCPFLAGS_RELEASE = --localize-hidden --strip-unneeded 74 OCPFLAGS = $(OCPFLAGS_$(BUILD_TYPE))