tools: respect CFLAGS and LDFLAGS from environment

The build environment might want to pass extra CFLAGS or LDFLAGS to the build of
the acrn tools. With conventional build systems like automake, Meson, etc this
is possible by just setting CFLAGS and LDFLAGS in the environment.

However as the tools are built using bare Makefiles, these environment variables
are overwritten.  Respect them by renaming the variables in the Makefiles to
e.g. LOG_CFLAGS and adding CFLAGS to that.

Tracked-On: #2316
Signed-off-by: Ross Burton <ross.burton@intel.com>
This commit is contained in:
Ross Burton 2019-01-11 11:27:50 +00:00 committed by wenlingz
parent 899c914606
commit 912be6c4dd
3 changed files with 64 additions and 58 deletions

View File

@ -2,21 +2,22 @@ T := $(CURDIR)
OUT_DIR ?= $(shell mkdir -p $(T)/build;cd $(T)/build;pwd) OUT_DIR ?= $(shell mkdir -p $(T)/build;cd $(T)/build;pwd)
CC ?= gcc CC ?= gcc
CFLAGS := -g -O0 -std=gnu11 MANAGER_CFLAGS := -g -O0 -std=gnu11
CFLAGS += -D_GNU_SOURCE MANAGER_CFLAGS += -D_GNU_SOURCE
CFLAGS += -DNO_OPENSSL MANAGER_CFLAGS += -DNO_OPENSSL
CFLAGS += -m64 MANAGER_CFLAGS += -m64
CFLAGS += -Wall -ffunction-sections MANAGER_CFLAGS += -Wall -ffunction-sections
CFLAGS += -Werror MANAGER_CFLAGS += -Werror
CFLAGS += -O2 -D_FORTIFY_SOURCE=2 MANAGER_CFLAGS += -O2 -D_FORTIFY_SOURCE=2
CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing MANAGER_CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing
CFLAGS += -fpie -fpic MANAGER_CFLAGS += -fpie -fpic
#FIXME: remove me. work-around for system() calls, which will be removed #FIXME: remove me. work-around for system() calls, which will be removed
CFLAGS += -Wno-format-truncation -Wno-unused-result MANAGER_CFLAGS += -Wno-format-truncation -Wno-unused-result
MANAGER_CFLAGS += $(CFLAGS)
CFLAGS += -I../../devicemodel/include MANAGER_CFLAGS += -I../../devicemodel/include
CFLAGS += -I../../devicemodel/include/public MANAGER_CFLAGS += -I../../devicemodel/include/public
CFLAGS += -I../../hypervisor/include MANAGER_CFLAGS += -I../../hypervisor/include
GCC_MAJOR=$(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1) 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) GCC_MINOR=$(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
@ -26,32 +27,33 @@ STACK_PROTECTOR := 1
ifdef STACK_PROTECTOR ifdef STACK_PROTECTOR
ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true)) ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true))
CFLAGS += -fstack-protector-strong MANAGER_CFLAGS += -fstack-protector-strong
else else
ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true)) ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true))
CFLAGS += -fstack-protector-strong MANAGER_CFLAGS += -fstack-protector-strong
else else
CFLAGS += -fstack-protector MANAGER_CFLAGS += -fstack-protector
endif endif
endif endif
endif endif
ifeq ($(RELEASE),0) ifeq ($(RELEASE),0)
CFLAGS += -g -DMNGR_DEBUG MANAGER_CFLAGS += -g -DMNGR_DEBUG
endif endif
LDFLAGS := -Wl,-z,noexecstack MANAGER_LDFLAGS := -Wl,-z,noexecstack
LDFLAGS += -Wl,-z,relro,-z,now MANAGER_LDFLAGS += -Wl,-z,relro,-z,now
LDFLAGS += -pie MANAGER_LDFLAGS += -pie
LDFLAGS += -L$(OUT_DIR) MANAGER_LDFLAGS += -L$(OUT_DIR)
LDFLAGS += -lpthread MANAGER_LDFLAGS += -lpthread
LDFLAGS += -lacrn-mngr MANAGER_LDFLAGS += -lacrn-mngr
MANAGER_LDFLAGS += $(LDFLAGS)
.PHONY: all .PHONY: all
all: $(OUT_DIR)/libacrn-mngr.a $(OUT_DIR)/acrn_mngr.h $(OUT_DIR)/acrnctl $(OUT_DIR)/acrnd all: $(OUT_DIR)/libacrn-mngr.a $(OUT_DIR)/acrn_mngr.h $(OUT_DIR)/acrnctl $(OUT_DIR)/acrnd
$(OUT_DIR)/libacrn-mngr.a: acrn_mngr.c acrn_mngr.h $(OUT_DIR)/libacrn-mngr.a: acrn_mngr.c acrn_mngr.h
$(CC) $(CFLAGS) -c acrn_mngr.c -o $(OUT_DIR)/acrn_mngr.o $(CC) $(MANAGER_CFLAGS) -c acrn_mngr.c -o $(OUT_DIR)/acrn_mngr.o
ar -cr $@ $(OUT_DIR)/acrn_mngr.o ar -cr $@ $(OUT_DIR)/acrn_mngr.o
ifneq ($(OUT_DIR),.) ifneq ($(OUT_DIR),.)
@ -60,10 +62,10 @@ $(OUT_DIR)/acrn_mngr.h: ./acrn_mngr.h
endif endif
$(OUT_DIR)/acrnctl: acrnctl.c acrn_mngr.h $(OUT_DIR)/libacrn-mngr.a $(OUT_DIR)/acrnctl: acrnctl.c acrn_mngr.h $(OUT_DIR)/libacrn-mngr.a
$(CC) -o $(OUT_DIR)/acrnctl acrnctl.c acrn_vm_ops.c $(CFLAGS) $(LDFLAGS) $(CC) -o $(OUT_DIR)/acrnctl acrnctl.c acrn_vm_ops.c $(MANAGER_CFLAGS) $(MANAGER_LDFLAGS)
$(OUT_DIR)/acrnd: acrnd.c $(OUT_DIR)/libacrn-mngr.a $(OUT_DIR)/acrnd: acrnd.c $(OUT_DIR)/libacrn-mngr.a
$(CC) -o $(OUT_DIR)/acrnd acrnd.c acrn_vm_ops.c $(CFLAGS) $(LDFLAGS) $(CC) -o $(OUT_DIR)/acrnd acrnd.c acrn_vm_ops.c $(MANAGER_CFLAGS) $(MANAGER_LDFLAGS)
ifneq ($(OUT_DIR),.) ifneq ($(OUT_DIR),.)
cp ./acrnd.service $(OUT_DIR)/acrnd.service cp ./acrnd.service $(OUT_DIR)/acrnd.service
endif endif

View File

@ -2,15 +2,16 @@ T := $(CURDIR)
OUT_DIR ?= $(shell mkdir -p $(T)/build;cd $(T)/build;pwd) OUT_DIR ?= $(shell mkdir -p $(T)/build;cd $(T)/build;pwd)
CC ?= gcc CC ?= gcc
CFLAGS := -g -O0 -std=gnu11 LOG_CFLAGS := -g -O0 -std=gnu11
CFLAGS += -D_GNU_SOURCE LOG_CFLAGS += -D_GNU_SOURCE
CFLAGS += -DNO_OPENSSL LOG_CFLAGS += -DNO_OPENSSL
CFLAGS += -m64 LOG_CFLAGS += -m64
CFLAGS += -Wall -ffunction-sections LOG_CFLAGS += -Wall -ffunction-sections
CFLAGS += -Werror LOG_CFLAGS += -Werror
CFLAGS += -O2 -D_FORTIFY_SOURCE=2 LOG_CFLAGS += -O2 -D_FORTIFY_SOURCE=2
CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing LOG_CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing
CFLAGS += -fpie -fpic LOG_CFLAGS += -fpie -fpic
LOG_CFLAGS += $(CFLAGS)
GCC_MAJOR=$(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1) 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) GCC_MINOR=$(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
@ -20,22 +21,23 @@ STACK_PROTECTOR := 1
ifdef STACK_PROTECTOR ifdef STACK_PROTECTOR
ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true)) ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true))
CFLAGS += -fstack-protector-strong LOG_CFLAGS += -fstack-protector-strong
else else
ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true)) ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true))
CFLAGS += -fstack-protector-strong LOG_CFLAGS += -fstack-protector-strong
else else
CFLAGS += -fstack-protector LOG_CFLAGS += -fstack-protector
endif endif
endif endif
endif endif
LDFLAGS := -Wl,-z,noexecstack LOG_LDFLAGS := -Wl,-z,noexecstack
LDFLAGS += -Wl,-z,relro,-z,now LOG_LDFLAGS += -Wl,-z,relro,-z,now
LDFLAGS += -pie LOG_LDFLAGS += -pie
LOG_LDFLAGS += $(LDFLAGS)
all: all:
$(CC) -g acrnlog.c -o $(OUT_DIR)/acrnlog -lpthread $(CFLAGS) $(LDFLAGS) $(CC) -g acrnlog.c -o $(OUT_DIR)/acrnlog -lpthread $(LOG_CFLAGS) $(LOG_LDFLAGS)
cp acrnlog.service $(OUT_DIR)/acrnlog.service cp acrnlog.service $(OUT_DIR)/acrnlog.service
clean: clean:

View File

@ -2,15 +2,16 @@ T := $(CURDIR)
OUT_DIR ?= $(shell mkdir -p $(T)/build;cd $(T)/build;pwd) OUT_DIR ?= $(shell mkdir -p $(T)/build;cd $(T)/build;pwd)
CC ?= gcc CC ?= gcc
CFLAGS := -g -O0 -std=gnu11 TRACE_CFLAGS := -g -O0 -std=gnu11
CFLAGS += -D_GNU_SOURCE TRACE_CFLAGS += -D_GNU_SOURCE
CFLAGS += -DNO_OPENSSL TRACE_CFLAGS += -DNO_OPENSSL
CFLAGS += -m64 TRACE_CFLAGS += -m64
CFLAGS += -Wall -ffunction-sections TRACE_CFLAGS += -Wall -ffunction-sections
CFLAGS += -Werror TRACE_CFLAGS += -Werror
CFLAGS += -O2 -D_FORTIFY_SOURCE=2 TRACE_CFLAGS += -O2 -D_FORTIFY_SOURCE=2
CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing TRACE_CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing
CFLAGS += -fpie -fpic TRACE_CFLAGS += -fpie -fpic
TRACE_CFLAGS += $(CFLAGS)
GCC_MAJOR=$(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1) 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) GCC_MINOR=$(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
@ -20,22 +21,23 @@ STACK_PROTECTOR := 1
ifdef STACK_PROTECTOR ifdef STACK_PROTECTOR
ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true)) ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true))
CFLAGS += -fstack-protector-strong TRACE_CFLAGS += -fstack-protector-strong
else else
ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true)) ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true))
CFLAGS += -fstack-protector-strong TRACE_CFLAGS += -fstack-protector-strong
else else
CFLAGS += -fstack-protector TRACE_CFLAGS += -fstack-protector
endif endif
endif endif
endif endif
LDFLAGS := -Wl,-z,noexecstack TRACE_LDFLAGS := -Wl,-z,noexecstack
LDFLAGS += -Wl,-z,relro,-z,now TRACE_LDFLAGS += -Wl,-z,relro,-z,now
LDFLAGS += -pie TRACE_LDFLAGS += -pie
TRACE_LDFLAGS += $(LDFLAGS)
all: all:
$(CC) -o $(OUT_DIR)/acrntrace acrntrace.c sbuf.c -I. -lpthread -lrt $(CFLAGS) $(LDFLAGS) $(CC) -o $(OUT_DIR)/acrntrace acrntrace.c sbuf.c -I. -lpthread -lrt $(TRACE_CFLAGS) $(TRACE_LDFLAGS)
clean: clean:
rm -f $(OUT_DIR)/acrntrace rm -f $(OUT_DIR)/acrntrace