config.mk (2106B)
1 VERSION = 0.0.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 BINPREFIX = $(PREFIX)/bin 11 LIBPREFIX = $(PREFIX)/lib 12 INCPREFIX = $(PREFIX)/include 13 MANPREFIX = $(PREFIX)/share/man 14 15 ################################################################################ 16 # Tools 17 ################################################################################ 18 AR = ar 19 CC = cc 20 LD = ld 21 OBJCOPY = objcopy 22 PKG_CONFIG = pkg-config 23 RANLIB = ranlib 24 25 ################################################################################ 26 # Dependencies 27 ################################################################################ 28 PCFLAGS_SHARED = 29 PCFLAGS_STATIC = --static 30 PCFLAGS = $(PCFLAGS_$(LIB_TYPE)) 31 32 RSYS_VERSION = 0.14 33 INCS = $$($(PKG_CONFIG) $(PCFLAGS) --cflags rsys) 34 LIBS = $$($(PKG_CONFIG) $(PCFLAGS) --libs rsys) 35 36 ################################################################################ 37 # Compilation options 38 ################################################################################ 39 WFLAGS =\ 40 -Wall\ 41 -Wcast-align\ 42 -Wconversion\ 43 -Wextra\ 44 -Wmissing-declarations\ 45 -Wmissing-prototypes\ 46 -Wshadow 47 48 CFLAGS_HARDENED =\ 49 -D_FORTIFY_SOURCES=2\ 50 -fcf-protection=full\ 51 -fstack-clash-protection\ 52 -fstack-protector-strong 53 54 CFLAGS_COMMON =\ 55 -std=c89\ 56 -pedantic\ 57 -fvisibility=hidden\ 58 -fstrict-aliasing\ 59 $(CFLAGS_HARDENED)\ 60 $(WFLAGS) 61 62 CFLAGS_DEBUG = -g $(CFLAGS_COMMON) 63 CFLAGS_RELEASE = -O2 -DNDEBUG $(CFLAGS_COMMON) 64 CFLAGS = $(CFLAGS_$(BUILD_TYPE)) 65 66 CFLAGS_SO = $(CFLAGS) -fPIC 67 CFLAGS_EXE = $(CFLAGS) -fPIE 68 69 ################################################################################ 70 # Linker options 71 ################################################################################ 72 LDFLAGS_HARDENED = -Wl,-z,relro,-z,now 73 LDFLAGS_DEBUG = $(LDFLAGS_HARDENED) 74 LDFLAGS_RELEASE = -s $(LDFLAGS_HARDENED) 75 LDFLAGS = $(LDFLAGS_$(BUILD_TYPE)) 76 77 LDFLAGS_SO = $(LDFLAGS) -shared -Wl,--no-undefined 78 LDFLAGS_EXE = $(LDFLAGS) -pie 79 80 OCPFLAGS_DEBUG = --localize-hidden 81 OCPFLAGS_RELEASE = --localize-hidden --strip-unneeded 82 OCPFLAGS = $(OCPFLAGS_$(BUILD_TYPE))