mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-07-30 23:16:40 +00:00
Currently, we are enforcing the _FORTIFY_SOURCE=2 without any previous detection if the macro has been already defined, e.g. by environment, or is just enabled by compiler by default on some distributions (e.g. Gentoo). This could result in the error like this: <command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror] <built-in>: note: this is the location of the previous definition Tracked-On: #2344 Signed-off-by: Tw <wei.tan@intel.com> Reviewed-by: Binbin Wu <binbin.wu@intel.com> Acked-by: Yin Fengwei <fengwei.yin@intel.com>
55 lines
1.5 KiB
Makefile
55 lines
1.5 KiB
Makefile
T := $(CURDIR)
|
|
OUT_DIR ?= $(shell mkdir -p $(T)/build;cd $(T)/build;pwd)
|
|
CC ?= gcc
|
|
|
|
LOG_CFLAGS := -g -O0 -std=gnu11
|
|
LOG_CFLAGS += -D_GNU_SOURCE
|
|
LOG_CFLAGS += -DNO_OPENSSL
|
|
LOG_CFLAGS += -m64
|
|
LOG_CFLAGS += -Wall -ffunction-sections
|
|
LOG_CFLAGS += -Werror
|
|
LOG_CFLAGS += -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
|
|
LOG_CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing
|
|
LOG_CFLAGS += -fpie -fpic
|
|
LOG_CFLAGS += $(CFLAGS)
|
|
|
|
GCC_MAJOR=$(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1)
|
|
GCC_MINOR=$(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
|
|
|
|
#enable stack overflow check
|
|
STACK_PROTECTOR := 1
|
|
|
|
ifdef STACK_PROTECTOR
|
|
ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true))
|
|
LOG_CFLAGS += -fstack-protector-strong
|
|
else
|
|
ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true))
|
|
LOG_CFLAGS += -fstack-protector-strong
|
|
else
|
|
LOG_CFLAGS += -fstack-protector
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
LOG_LDFLAGS := -Wl,-z,noexecstack
|
|
LOG_LDFLAGS += -Wl,-z,relro,-z,now
|
|
LOG_LDFLAGS += -pie
|
|
LOG_LDFLAGS += $(LDFLAGS)
|
|
|
|
all:
|
|
$(CC) -g acrnlog.c -o $(OUT_DIR)/acrnlog -lpthread $(LOG_CFLAGS) $(LOG_LDFLAGS)
|
|
cp acrnlog.service $(OUT_DIR)/acrnlog.service
|
|
|
|
clean:
|
|
rm -f $(OUT_DIR)/acrnlog
|
|
ifneq ($(OUT_DIR),.)
|
|
rm -f $(OUT_DIR)/acrnlog.service
|
|
rm -rf $(OUT_DIR)
|
|
endif
|
|
|
|
install: $(OUT_DIR)/acrnlog
|
|
install -d $(DESTDIR)/usr/bin
|
|
install -t $(DESTDIR)/usr/bin $(OUT_DIR)/acrnlog
|
|
install -d $(DESTDIR)/usr/lib/systemd/system
|
|
install -p -D -m 0644 $(OUT_DIR)/acrnlog.service $(DESTDIR)/usr/lib/systemd/system
|