1include ../../../paths.make 2 3T := $(CURDIR) 4OUT_DIR ?= $(shell mkdir -p $(T)/build;cd $(T)/build;pwd) 5CC ?= gcc 6 7TRACE_CFLAGS := -g -O0 -std=gnu11 8TRACE_CFLAGS += -D_GNU_SOURCE 9TRACE_CFLAGS += -DNO_OPENSSL 10TRACE_CFLAGS += -m64 11TRACE_CFLAGS += -Wall -ffunction-sections 12TRACE_CFLAGS += -Werror 13TRACE_CFLAGS += -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 14TRACE_CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing 15TRACE_CFLAGS += -fpie -fpic 16TRACE_CFLAGS += -lnuma 17TRACE_CFLAGS += $(CFLAGS) 18 19GCC_MAJOR=$(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1) 20GCC_MINOR=$(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1) 21 22#enable stack overflow check 23STACK_PROTECTOR := 1 24 25ifdef STACK_PROTECTOR 26ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true)) 27TRACE_CFLAGS += -fstack-protector-strong 28else 29ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true)) 30TRACE_CFLAGS += -fstack-protector-strong 31else 32TRACE_CFLAGS += -fstack-protector 33endif 34endif 35endif 36 37TRACE_LDFLAGS := -Wl,-z,noexecstack 38TRACE_LDFLAGS += -Wl,-z,relro,-z,now 39TRACE_LDFLAGS += -pie 40TRACE_LDFLAGS += $(LDFLAGS) 41 42all: 43 $(CC) -o $(OUT_DIR)/acrntrace acrntrace.c sbuf.c -I. -lpthread -lrt $(TRACE_CFLAGS) $(TRACE_LDFLAGS) 44 45clean: 46 rm -f $(OUT_DIR)/acrntrace 47ifneq ($(OUT_DIR),.) 48 rm -rf $(OUT_DIR) 49endif 50 51install: $(OUT_DIR)/acrntrace 52 install -d $(DESTDIR)$(bindir) 53 install -t $(DESTDIR)$(bindir) $(OUT_DIR)/acrntrace 54