From 49436b18d2a77b994fe76d8c2f070000e2cdb58a Mon Sep 17 00:00:00 2001 From: Yilun Lin Date: Fri, 24 May 2019 11:18:26 +0800 Subject: Makefile: Replace flag -DX with -DX= to be supported by IS_ENABLED(). IS_ENABLED works for an empty-string-defined macro. However, -D options default to define the macro to 1. This CL forces those macros, such as BOARD_* CHIP_*, CORE_*, CHIP_VARIANT_* and CHIP_FAMILIY_*, to be defined as an empty string, so that it can be supported by IS_ENABLED macro. TEST=use if(IS_ENABLED(BOARD_KRANE)) and see compilation success. TEST=compares build directory w/ and w/o this CL, and see the .smap are the same: ls build/*/*/ec.*.smap | sed -e 's|build/||' | \ xargs -I{} diff -u -a build/{} build.new/{} BUG=none BRANCH=None Change-Id: I96e2aa1cb5f3369e5e445a674595a9234f26707a Signed-off-by: Yilun Lin Reviewed-on: https://chromium-review.googlesource.com/1627840 Commit-Ready: Yilun Lin Tested-by: Yilun Lin Legacy-Commit-Queue: Commit Bot Reviewed-by: Jett Rink Reviewed-by: Jack Rosenthal Reviewed-by: Daisuke Nojiri --- Makefile | 37 +++++++++++++++++++++---------------- Makefile.rules | 18 +++++++++--------- Makefile.toolchain | 31 ++++++++++++++++++------------- board/cr50/build.mk | 2 +- chip/mchp/build.mk | 2 +- chip/mec1322/build.mk | 2 +- common/build.mk | 2 +- cts/build.mk | 8 ++++---- util/build.mk | 6 +++--- 9 files changed, 59 insertions(+), 49 deletions(-) diff --git a/Makefile b/Makefile index 354c0bf14a..3ccef58b91 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,11 @@ endif PROJECT?=ec +# An empty string. +# "-DMACRO" leads to MACRO=1. Define an empty string "-DMACRO=" to take +# advantage of IS_ENABLED magic macro, which only allows an empty string. +EMPTY= + # Output directory for build objects ifdef CTS_MODULE # CTS builds need different directories per board per suite. @@ -98,7 +103,7 @@ endif # Baseboard directory ifneq (,$(BASEBOARD)) BASEDIR:=baseboard/$(BASEBOARD) -CFLAGS_BASEBOARD=-DHAS_BASEBOARD -DBASEBOARD_$(UC_BASEBOARD) +CFLAGS_BASEBOARD=-DHAS_BASEBOARD=$(EMPTY) -DBASEBOARD_$(UC_BASEBOARD)=$(EMPTY) include $(BASEDIR)/build.mk else # If BASEBOARD is not defined, then assign BASEDIR to BDIR. This avoids @@ -130,8 +135,8 @@ includes+=cts/$(CTS_MODULE) cts endif ifeq "$(TEST_BUILD)" "y" _tsk_lst_file:=ec.tasklist - _tsk_lst_flags:=$(if $(TEST_FUZZ),-Ifuzz,-Itest) -DTEST_BUILD -imacros \ - $(PROJECT).tasklist + _tsk_lst_flags:=$(if $(TEST_FUZZ),-Ifuzz,-Itest) -DTEST_BUILD=$(EMPTY) \ + -imacros $(PROJECT).tasklist else ifdef CTS_MODULE _tsk_lst_file:=ec.tasklist _tsk_lst_flags:=-I cts/$(CTS_MODULE) -Icts -DCTS_MODULE=$(CTS_MODULE) \ @@ -141,13 +146,13 @@ else _tsk_lst_flags:= endif -_tsk_lst_flags+=-I$(BDIR) -DBOARD_$(UC_BOARD) -I$(BASEDIR) \ - -DBASEBOARD_$(UC_BASEBOARD) -D_MAKEFILE \ - -imacros $(_tsk_lst_file) +_tsk_lst_flags+=-I$(BDIR) -DBOARD_$(UC_BOARD)=$(EMPTY) -I$(BASEDIR) \ + -DBASEBOARD_$(UC_BASEBOARD)=$(EMPTY) \ + -D_MAKEFILE=$(EMPTY) -imacros $(_tsk_lst_file) -_tsk_lst_ro:=$(shell $(CPP) -P -DSECTION_IS_RO \ +_tsk_lst_ro:=$(shell $(CPP) -P -DSECTION_IS_RO=$(EMPTY) \ $(_tsk_lst_flags) include/task_filter.h) -_tsk_lst_rw:=$(shell $(CPP) -P -DSECTION_IS_RW \ +_tsk_lst_rw:=$(shell $(CPP) -P -DSECTION_IS_RW=$(EMPTY) \ $(_tsk_lst_flags) include/task_filter.h) _tsk_cfg_ro:=$(foreach t,$(_tsk_lst_ro) ,HAS_TASK_$(t)) @@ -157,22 +162,22 @@ _tsk_cfg:= $(filter $(_tsk_cfg_ro), $(_tsk_cfg_rw)) _tsk_cfg_ro:= $(filter-out $(_tsk_cfg), $(_tsk_cfg_ro)) _tsk_cfg_rw:= $(filter-out $(_tsk_cfg), $(_tsk_cfg_rw)) -CPPFLAGS_RO+=$(foreach t,$(_tsk_cfg_ro),-D$(t)) \ - $(foreach t,$(_tsk_cfg_rw),-D$(t)_RW) -CPPFLAGS_RW+=$(foreach t,$(_tsk_cfg_rw),-D$(t)) \ - $(foreach t,$(_tsk_cfg_ro),-D$(t)_RO) -CPPFLAGS+=$(foreach t,$(_tsk_cfg),-D$(t)) +CPPFLAGS_RO+=$(foreach t,$(_tsk_cfg_ro),-D$(t)=$(EMPTY)) \ + $(foreach t,$(_tsk_cfg_rw),-D$(t)_RW=$(EMPTY)) +CPPFLAGS_RW+=$(foreach t,$(_tsk_cfg_rw),-D$(t)=$(EMPTY)) \ + $(foreach t,$(_tsk_cfg_ro),-D$(t)_RO=$(EMPTY)) +CPPFLAGS+=$(foreach t,$(_tsk_cfg),-D$(t)=$(EMPTY)) ifneq ($(ENV_VARS),) -CPPFLAGS += -DINCLUDE_ENV_CONFIG +CPPFLAGS += -DINCLUDE_ENV_CONFIG=$(EMPTY) CFLAGS += -I$(realpath $(out)) endif # Get the CONFIG_ and VARIANT_ options that are defined for this target and make # them into variables available to this build script _flag_cfg_ro:=$(shell $(CPP) $(CPPFLAGS) -P -dM -Ichip/$(CHIP) \ - -I$(BASEDIR) -I$(BDIR) -DSECTION_IS_RO include/config.h | \ + -I$(BASEDIR) -I$(BDIR) -DSECTION_IS_RO=$(EMPTY) include/config.h | \ grep -o "\#define \(CONFIG\|VARIANT\)_[A-Z0-9_]*" | cut -c9- | sort) _flag_cfg_rw:=$(_tsk_cfg_rw) $(shell $(CPP) $(CPPFLAGS) -P -dM -Ichip/$(CHIP) \ - -I$(BASEDIR) -I$(BDIR) -DSECTION_IS_RW include/config.h | \ + -I$(BASEDIR) -I$(BDIR) -DSECTION_IS_RW=$(EMPTY) include/config.h | \ grep -o "\#define \(CONFIG\|VARIANT\)_[A-Z0-9_]*" | cut -c9- | sort) _flag_cfg:= $(filter $(_flag_cfg_ro), $(_flag_cfg_rw)) diff --git a/Makefile.rules b/Makefile.rules index a86ac62869..8a894e4542 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -55,7 +55,7 @@ cmd_libec = $(LD) -r $^ -o $@.1.o && \ $(OBJCOPY) --localize-hidden $@.1.o $@.2.o && \ $(AR) scr $@ $@.2.o cmd_lds = $(CPP) -P -C -MMD -MF $@.d -MT $@ $(CPPFLAGS) $< -o $@ -cmd_lds_b = $(cmd_lds) -DRW_B_LDS +cmd_lds_b = $(cmd_lds) -DRW_B_LDS=$(EMPTY) # Allow obj_to_bin to be overridden by board or chip specific commands cmd_obj_to_bin ?= $(OBJCOPY) --gap-fill=0xff -O binary $^ $(out)/$*.bin.tmp cmd_flat_to_obj = $(CC) -Wl,-T $(out)/firmware_image.lds -nostdlib $(CPPFLAGS) \ @@ -110,8 +110,8 @@ cmd_sharedlib_elf = $(CC) $(libsharedobjs_deps) \ -o $(out)/$(SHOBJLIB)/$(SHOBJLIB).elf \ -Wl,-Map,$(out)/$(SHOBJLIB)/$(SHOBJLIB).map cmd_c_to_taskinfo = $(BUILDCC) \ - $(filter-out -DSECTION_IS_$(BLD),$(BUILD_CFLAGS)) -DSECTION_IS_$(3) \ - -MMD -MF $@.d -c $< -flto -o $@ + $(filter-out -DSECTION_IS_$(BLD)=$(EMPTY),$(BUILD_CFLAGS)) \ + -DSECTION_IS_$(3)=$(EMPTY) -MMD -MF $@.d -c $< -flto -o $@ cmd_link_taskinfo = $(BUILDCC) $(BUILD_CFLAGS) --shared -fPIC $^ \ $(BUILD_LDFLAGS) -flto -o $@ cmd_proto_to_cxx = $(PROTOC) -I. --cpp_out=$(out)/gen $^ @@ -504,7 +504,7 @@ $(out)/gen/%.pb.cc:%.proto $(out)/gen/%.pb.h:%.proto $(call quiet,proto_to_cxx,PROTOC ) -$(out)/$(SHOBJLIB)/%.o: override LATE_CFLAGS_DEFINE:=-DSHAREDLIB_IMAGE +$(out)/$(SHOBJLIB)/%.o: override LATE_CFLAGS_DEFINE:=-DSHAREDLIB_IMAGE=$(EMPTY) $(out)/$(SHOBJLIB)/%.o:%.c $(call quiet,c_to_o,CC ) @@ -571,7 +571,7 @@ $(npcx-monitor-fw-bin): -@ $(OBJCOPY) -O binary $(out)/$(npcx-monitor-fw).elf $@ $(out)/$(npcx-monitor-hdr)_ro.o:$(npcx-monitor-hdr).c - -@ $(CC) $(CFLAGS) -D SECTION_IS_RO -MMD -c $(npcx-monitor-hdr).c -o $@ + -@ $(CC) $(CFLAGS) -DSECTION_IS_RO=$(EMPTY) -MMD -c $(npcx-monitor-hdr).c -o $@ $(npcx-monitor-hdr-ro-bin):$(out)/$(npcx-monitor-hdr)_ro.o $(if $(V),,@echo ' EXTBIN ' $(subst $(out)/,,$@) ; ) @@ -627,14 +627,14 @@ print-configs: @echo "----------------------------------------------------------------" @echo "| RO Config: |" @echo "----------------------------------------------------------------" - @$(CPP) $(CPPFLAGS) -P -dM -Ichip/$(CHIP) \ - -I$(BASEDIR) -I$(BDIR) -DSECTION_IS_RO include/config.h | \ + @$(CPP) $(CPPFLAGS) -P -dM -Ichip/$(CHIP) -I$(BASEDIR) -I$(BDIR) \ + -DSECTION_IS_RO=$(EMPTY) include/config.h | \ grep "#define CONFIG_" | cut -c9- | sort @echo "----------------------------------------------------------------" @echo "| RW Config: |" @echo "----------------------------------------------------------------" - @$(CPP) $(CPPFLAGS) -P -dM -Ichip/$(CHIP) \ - -I$(BASEDIR) -I$(BDIR) -DSECTION_IS_RW include/config.h | \ + @$(CPP) $(CPPFLAGS) -P -dM -Ichip/$(CHIP) -I$(BASEDIR) -I$(BDIR) \ + -DSECTION_IS_RW=$(EMPTY) include/config.h | \ grep "#define CONFIG_" | cut -c9- | sort .PHONY: print-chip-variant diff --git a/Makefile.toolchain b/Makefile.toolchain index c7ab5ac106..857f32158d 100644 --- a/Makefile.toolchain +++ b/Makefile.toolchain @@ -61,34 +61,38 @@ CXXFLAGS_WARN = $(COMMON_WARN) CFLAGS_DEBUG= -g CFLAGS_DEBUG+=$(CFLAGS_DEBUG_CHIP) CFLAGS_INCLUDE=$(foreach i,$(includes),-I$(i) ) -I. -CFLAGS_TEST=$(if $(TEST_BUILD),-DTEST_BUILD \ +CFLAGS_TEST=$(if $(TEST_BUILD),-DTEST_BUILD=$(EMPTY) \ -DTEST_TASKFILE=$(PROJECT).tasklist,) \ $(if $(CTS_MODULE), $(CFLAGS_CTS)) \ - $(if $(EMU_BUILD),-DEMU_BUILD) \ + $(if $(EMU_BUILD),-DEMU_BUILD=$(EMPTY)) \ $(if $($(PROJECT)-scale),-DTEST_TIME_SCALE=$($(PROJECT)-scale)) \ - -DTEST_$(PROJECT) -DTEST_$(UC_PROJECT) \ + -DTEST_$(PROJECT)=$(EMPTY) -DTEST_$(UC_PROJECT)=$(EMPTY) \ $(if $(TEST_ASAN),-fsanitize=address) \ $(if $(TEST_MSAN),-fsanitize=memory) \ $(if $(TEST_UBSAN),$(UBSAN_FLAGS)) \ - $(if $(TEST_FUZZ),-fsanitize=fuzzer-no-link -DTEST_FUZZ) + $(if $(TEST_FUZZ),-fsanitize=fuzzer-no-link -DTEST_FUZZ=$(EMPTY)) CFLAGS_COVERAGE=$(if $(TEST_COVERAGE),-fprofile-arcs -ftest-coverage \ - -DTEST_COVERAGE,) + -DTEST_COVERAGE=$(EMPTY),) CFLAGS_DEFINE=-DOUTDIR=$(out)/$(BLD) -DCHIP=$(CHIP) -DBOARD_TASKFILE=$(_tsk_lst_file) \ -DBOARD=$(BOARD) -DCORE=$(CORE) -DPROJECT=$(PROJECT) \ -DCHIP_VARIANT=$(CHIP_VARIANT) -DCHIP_FAMILY=$(CHIP_FAMILY) \ - -DBOARD_$(UC_BOARD) -DCHIP_$(UC_CHIP) -DCORE_$(UC_CORE) \ - -DCHIP_VARIANT_$(UC_CHIP_VARIANT) -DCHIP_FAMILY_$(UC_CHIP_FAMILY) \ - -DFINAL_OUTDIR=$(out) -DPROTOBUF_MIN_PROTOC_VERSION=0 \ + -DBOARD_$(UC_BOARD)=$(EMPTY) \ + -DCHIP_$(UC_CHIP)=$(EMPTY) \ + -DCORE_$(UC_CORE)=$(EMPTY) \ + -DCHIP_VARIANT_$(UC_CHIP_VARIANT)=$(EMPTY) \ + -DCHIP_FAMILY_$(UC_CHIP_FAMILY)=$(EMPTY) \ + -DFINAL_OUTDIR=$(out) \ + -DPROTOBUF_MIN_PROTOC_VERSION=0 \ $(CFLAGS_BASEBOARD) CPPFLAGS=$(CFLAGS_DEFINE) $(CFLAGS_INCLUDE) $(CFLAGS_TEST) \ $(EXTRA_CFLAGS) $(CFLAGS_COVERAGE) $(LATE_CFLAGS_DEFINE) \ - -DSECTION_IS_$(BLD) -DSECTION=$(BLD) $(CPPFLAGS_$(BLD)) + -DSECTION_IS_$(BLD)=$(EMPTY) -DSECTION=$(BLD) $(CPPFLAGS_$(BLD)) BUILD_CPPFLAGS=$(CFLAGS_DEFINE) -Icore/host $(CFLAGS_INCLUDE) $(CFLAGS_TEST) \ $(EXTRA_CFLAGS) $(CFLAGS_COVERAGE) $(LATE_CFLAGS_DEFINE) \ - -DSECTION_IS_$(BLD) -DSECTION=$(BLD) $(CPPFLAGS_$(BLD)) + -DSECTION_IS_$(BLD)=$(EMPTY) -DSECTION=$(BLD) $(CPPFLAGS_$(BLD)) HOST_CPPFLAGS=$(CFLAGS_DEFINE) $(CFLAGS_INCLUDE) $(CFLAGS_TEST) \ $(EXTRA_CFLAGS) $(CFLAGS_COVERAGE) $(LATE_CFLAGS_DEFINE) \ - -DSECTION_IS_$(BLD) -DSECTION=$(BLD) $(CPPFLAGS_$(BLD)) + -DSECTION_IS_$(BLD)=$(EMPTY) -DSECTION=$(BLD) $(CPPFLAGS_$(BLD)) ifneq ($(BOARD),host) CPPFLAGS+=-ffreestanding -fno-builtin -nostdinc -nostdlib CPPFLAGS+=-Ibuiltin/ @@ -101,7 +105,7 @@ CFLAGS+= -fno-delete-null-pointer-checks ifneq ($(cc-name),clang) CFLAGS+= -fconserve-stack endif -CFLAGS+= -DCHROMIUM_EC +CFLAGS+= -DCHROMIUM_EC=$(EMPTY) CXXFLAGS+=-DPROTOBUF_INLINE_NOT_IN_HEADERS=0 FTDIVERSION:=$(shell $(PKG_CONFIG) --modversion libftdi1 2>/dev/null) @@ -126,7 +130,8 @@ endif BUILD_CFLAGS = $(LIBFTDIUSB_CFLAGS) $(BUILD_CPPFLAGS) -O3 $(CFLAGS_DEBUG) BUILD_CFLAGS += $(CFLAGS_WARN) -HOST_CFLAGS=$(HOST_CPPFLAGS) -O3 $(CFLAGS_DEBUG) $(CFLAGS_WARN) -DHOST_TOOLS_BUILD +HOST_CFLAGS=$(HOST_CPPFLAGS) -O3 $(CFLAGS_DEBUG) $(CFLAGS_WARN) \ + -DHOST_TOOLS_BUILD=$(EMPTY) HOST_CFLAGS+=$(LIBFTDIUSB_CFLAGS) ifneq (${SYSROOT},) LDFLAGS_EXTRA+=--sysroot=${SYSROOT} diff --git a/board/cr50/build.mk b/board/cr50/build.mk index 845d5ac9bf..613d716ff7 100644 --- a/board/cr50/build.mk +++ b/board/cr50/build.mk @@ -68,7 +68,7 @@ board-y += wp.o board-$(CONFIG_U2F) += u2f.o ifneq ($(H1_RED_BOARD),) -CPPFLAGS += -DH1_RED_BOARD +CPPFLAGS += -DH1_RED_BOARD=$(EMPTY) endif # Build and link with an external library diff --git a/chip/mchp/build.mk b/chip/mchp/build.mk index c3883a0e6f..60682d2ed9 100644 --- a/chip/mchp/build.mk +++ b/chip/mchp/build.mk @@ -80,7 +80,7 @@ objs_lfw += $(out)/RW/common/version.o dirs-y+=chip/$(CHIP)/lfw # objs with -lfw suffix are to include lfw's gpio -$(out)/RW/%-lfw.o: private CC+=-I$(BDIR)/lfw -DLFW +$(out)/RW/%-lfw.o: private CC+=-I$(BDIR)/lfw -DLFW=$(EMPTY) # Remove the lto flag for the loader. It actually causes it to bloat in size. ifeq ($(CONFIG_LTO),y) $(out)/RW/%-lfw.o: private CFLAGS_CPU := $(filter-out -flto, $(CFLAGS_CPU)) diff --git a/chip/mec1322/build.mk b/chip/mec1322/build.mk index 30ab8d7622..71b9d7ae0e 100644 --- a/chip/mec1322/build.mk +++ b/chip/mec1322/build.mk @@ -59,7 +59,7 @@ objs_lfw += $(out)/RW/common/version.o dirs-y+=chip/$(CHIP)/lfw # objs with -lfw suffix are to include lfw's gpio -$(out)/RW/%-lfw.o: private CC+=-I$(BDIR)/lfw -DLFW +$(out)/RW/%-lfw.o: private CC+=-I$(BDIR)/lfw -DLFW=$(EMPTY) # Remove the lto flag for the loader. It actually causes it to bloat in size. ifeq ($(CONFIG_LTO),y) $(out)/RW/%-lfw.o: private CFLAGS_CPU := $(filter-out -flto, $(CFLAGS_CPU)) diff --git a/common/build.mk b/common/build.mk index 3e08cab72d..923c284949 100644 --- a/common/build.mk +++ b/common/build.mk @@ -183,7 +183,7 @@ ifneq ($(CONFIG_BOOTBLOCK),) build-util-bin += gen_emmc_transfer_data # Bootblock is only packed in RO image. -$(out)/util/gen_emmc_transfer_data: BUILD_LDFLAGS += -DSECTION_IS_RO +$(out)/util/gen_emmc_transfer_data: BUILD_LDFLAGS += -DSECTION_IS_RO=$(EMPTY) $(out)/bootblock_data.h: $(out)/util/gen_emmc_transfer_data $(out)/.bootblock $(call quiet,emmc_bootblock,BTBLK ) diff --git a/cts/build.mk b/cts/build.mk index ddbcb1e95f..3f0cd750db 100644 --- a/cts/build.mk +++ b/cts/build.mk @@ -3,14 +3,14 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -CFLAGS_CTS=-DCTS_MODULE -DCTS_TASKFILE=cts.tasklist +CFLAGS_CTS=-DCTS_MODULE=$(EMPTY) -DCTS_TASKFILE=cts.tasklist ifeq "$(CTS_MODULE)" "gpio" -CFLAGS_CTS+=-DCTS_MODULE_GPIO +CFLAGS_CTS+=-DCTS_MODULE_GPIO=$(EMPTY) endif ifeq "$(CTS_MODULE)" "i2c" -CFLAGS_CTS+=-DCTS_MODULE_I2C +CFLAGS_CTS+=-DCTS_MODULE_I2C=$(EMPTY) CONFIG_I2C=y ifneq ($(BOARD),stm32l476g-eval) CONFIG_I2C_MASTER=y @@ -25,4 +25,4 @@ ifeq ($(BOARD),stm32l476g-eval) else cts-y+=$(CTS_MODULE)/dut.o cts-y+=common/dut_common.o -endif \ No newline at end of file +endif diff --git a/util/build.mk b/util/build.mk index 4fb6b7e1f0..3238fb749a 100644 --- a/util/build.mk +++ b/util/build.mk @@ -52,7 +52,7 @@ $(out)/util/genvif: $(genvif-pd-objs) board/$(BOARD)/board.h \ $(out)/util/genvif: BUILD_LDFLAGS+=$(genvif-pd-objs) -flto STANDALONE_FLAGS=-ffreestanding -fno-builtin -nostdinc \ - -Ibuiltin/ -D"__keep= " -DVIF_BUILD + -Ibuiltin/ -D"__keep= " -DVIF_BUILD=$(EMPTY) $(out)/util/%/usb_pd_policy.o: %/usb_pd_policy.c -@ mkdir -p $(@D) @@ -63,7 +63,7 @@ ifneq ($(CONFIG_BOOTBLOCK),) build-util-bin += gen_emmc_transfer_data # Bootblock is only packed in RO image. -$(out)/util/gen_emmc_transfer_data: BUILD_LDFLAGS += -DSECTION_IS_RO +$(out)/util/gen_emmc_transfer_data: BUILD_LDFLAGS += -DSECTION_IS_RO=$(EMPTY) endif # CONFIG_BOOTBLOCK ifneq ($(CONFIG_IPI),) @@ -78,7 +78,7 @@ ifneq ($(CONFIG_TOUCHPAD_HASH_FW),) build-util-bin += gen_touchpad_hash # Assume RW section (touchpad FW must be identical for both RO+RW) -$(out)/util/gen_touchpad_hash: BUILD_LDFLAGS += -DSECTION_IS_RW +$(out)/util/gen_touchpad_hash: BUILD_LDFLAGS += -DSECTION_IS_RW=$(EMPTY) OPENSSL_CFLAGS := $(shell $(PKG_CONFIG) --libs openssl) OPENSSL_LDFLAGS := $(shell $(PKG_CONFIG) --libs openssl) -- cgit v1.2.1