Add --warn-undefined-variables to MAKEFLAGS

Fix warnings where undefined vars are used.

Make Kconfig emit "FOO=" for unset bool options
To ensure make variables are always defined, even if empty.

When writing auto.conf, include symbols disabled by dependency to make sure all make variables are always defined.

Fixes espressif/esp-idf#137

Cherry-picked from https://github.com/espressif/esp-idf/pull/138
This commit is contained in:
Deomid Ryabkov
2016-12-03 22:11:22 +00:00
committed by Angus Gratton
parent 11a87ca811
commit 9903ea1c11
21 changed files with 89 additions and 49 deletions

View File

@@ -8,7 +8,7 @@ COMPONENT_ADD_INCLUDEDIRS := include
COMPONENT_ADD_LDFLAGS := -lapp_trace COMPONENT_ADD_LDFLAGS := -lapp_trace
ifdef CONFIG_SYSVIEW_ENABLE ifeq ("$(CONFIG_SYSVIEW_ENABLE)","y")
#COMPONENT_EXTRA_INCLUDES := freertos #COMPONENT_EXTRA_INCLUDES := freertos
COMPONENT_ADD_INCLUDEDIRS += \ COMPONENT_ADD_INCLUDEDIRS += \

View File

@@ -2,7 +2,7 @@
# Component Makefile # Component Makefile
# #
ifdef CONFIG_AWS_IOT_SDK ifeq ("$(CONFIG_AWS_IOT_SDK)","y")
COMPONENT_ADD_INCLUDEDIRS := include aws-iot-device-sdk-embedded-C/include COMPONENT_ADD_INCLUDEDIRS := include aws-iot-device-sdk-embedded-C/include

View File

@@ -13,6 +13,7 @@ BOOTLOADER_BUILD_DIR=$(abspath $(BUILD_DIR_BASE)/bootloader)
BOOTLOADER_BIN=$(BOOTLOADER_BUILD_DIR)/bootloader.bin BOOTLOADER_BIN=$(BOOTLOADER_BUILD_DIR)/bootloader.bin
# signing key path is resolved relative to the project directory # signing key path is resolved relative to the project directory
CONFIG_SECURE_BOOT_SIGNING_KEY ?=
SECURE_BOOT_SIGNING_KEY=$(abspath $(call dequote,$(CONFIG_SECURE_BOOT_SIGNING_KEY))) SECURE_BOOT_SIGNING_KEY=$(abspath $(call dequote,$(CONFIG_SECURE_BOOT_SIGNING_KEY)))
export SECURE_BOOT_SIGNING_KEY # used by bootloader_support component export SECURE_BOOT_SIGNING_KEY # used by bootloader_support component
@@ -107,7 +108,7 @@ $(BOOTLOADER_DIGEST_BIN): $(BOOTLOADER_BIN) $(SECURE_BOOTLOADER_KEY)
@echo "DIGEST $(notdir $@)" @echo "DIGEST $(notdir $@)"
$(Q) $(ESPSECUREPY) digest_secure_bootloader -k $(SECURE_BOOTLOADER_KEY) -o $@ $< $(Q) $(ESPSECUREPY) digest_secure_bootloader -k $(SECURE_BOOTLOADER_KEY) -o $@ $<
else else # CONFIG_SECURE_BOOT_ENABLED && !CONFIG_SECURE_BOOTLOADER_REFLASHABLE && !CONFIG_SECURE_BOOTLOADER_ONE_TIME_FLASH
bootloader: bootloader:
@echo "Invalid bootloader target: bad sdkconfig?" @echo "Invalid bootloader target: bad sdkconfig?"
@exit 1 @exit 1

View File

@@ -12,7 +12,7 @@ LINKER_SCRIPTS := \
$(IDF_PATH)/components/esp32/ld/esp32.peripherals.ld \ $(IDF_PATH)/components/esp32/ld/esp32.peripherals.ld \
esp32.bootloader.rom.ld esp32.bootloader.rom.ld
ifndef CONFIG_SPI_FLASH_ROM_DRIVER_PATCH ifneq ("$(CONFIG_SPI_FLASH_ROM_DRIVER_PATCH)","y")
LINKER_SCRIPTS += $(IDF_PATH)/components/esp32/ld/esp32.rom.spiflash.ld LINKER_SCRIPTS += $(IDF_PATH)/components/esp32/ld/esp32.rom.spiflash.ld
endif endif

View File

@@ -12,12 +12,12 @@ COMPONENT_SRCDIRS := src
# #
# Secure boot signing key support # Secure boot signing key support
# #
ifdef CONFIG_SECURE_BOOT_ENABLED ifneq ("$(CONFIG_SECURE_BOOT_ENABLED)","")
# this path is created relative to the component build directory # this path is created relative to the component build directory
SECURE_BOOT_VERIFICATION_KEY := $(abspath signature_verification_key.bin) SECURE_BOOT_VERIFICATION_KEY := $(abspath signature_verification_key.bin)
ifdef CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES ifneq ("$(CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES)","")
# verification key derived from signing key. # verification key derived from signing key.
$(SECURE_BOOT_VERIFICATION_KEY): $(SECURE_BOOT_SIGNING_KEY) $(SDKCONFIG_MAKEFILE) $(SECURE_BOOT_VERIFICATION_KEY): $(SECURE_BOOT_SIGNING_KEY) $(SDKCONFIG_MAKEFILE)
$(ESPSECUREPY) extract_public_key --keyfile $< $@ $(ESPSECUREPY) extract_public_key --keyfile $< $@

View File

@@ -1,7 +1,7 @@
# #
# Component Makefile # Component Makefile
# #
ifdef CONFIG_BT_ENABLED ifneq ("$(CONFIG_BT_ENABLED)","")
COMPONENT_SRCDIRS := . COMPONENT_SRCDIRS := .
@@ -20,7 +20,7 @@ COMPONENT_SUBMODULES += lib
endif endif
ifdef CONFIG_BLUEDROID_ENABLED ifeq ("$(CONFIG_BLUEDROID_ENABLED)","y")
COMPONENT_ADD_INCLUDEDIRS += bluedroid/bta/include \ COMPONENT_ADD_INCLUDEDIRS += bluedroid/bta/include \
bluedroid/bta/sys/include \ bluedroid/bta/sys/include \

View File

@@ -846,7 +846,7 @@ config ESP32_WIFI_NVS_ENABLED
endmenu # Wi-Fi endmenu # Wi-Fi
menu Phy menu PHY
config ESP32_PHY_CALIBRATION_AND_DATA_STORAGE config ESP32_PHY_CALIBRATION_AND_DATA_STORAGE
bool "Do phy calibration and store calibration data in NVS" bool "Do phy calibration and store calibration data in NVS"

View File

@@ -3,8 +3,9 @@
# #
COMPONENT_SRCDIRS := . hwcrypto COMPONENT_SRCDIRS := . hwcrypto
ifndef CONFIG_NO_BLOBS LIBS ?=
LIBS := core rtc net80211 pp wpa smartconfig coexist wps wpa2 phy ifneq ("$(CONFIG_NO_BLOBS)","y")
LIBS += core rtc net80211 pp wpa smartconfig coexist wps wpa2 phy
endif endif
#Linker scripts used to link the final application. #Linker scripts used to link the final application.
@@ -22,7 +23,7 @@ ifeq ("$(CONFIG_NEWLIB_NANO_FORMAT)","y")
LINKER_SCRIPTS += esp32.rom.nanofmt.ld LINKER_SCRIPTS += esp32.rom.nanofmt.ld
endif endif
ifndef CONFIG_SPI_FLASH_ROM_DRIVER_PATCH ifneq ("$(CONFIG_SPI_FLASH_ROM_DRIVER_PATCH)","y")
LINKER_SCRIPTS += esp32.rom.spiflash.ld LINKER_SCRIPTS += esp32.rom.spiflash.ld
endif endif

View File

@@ -6,6 +6,8 @@ ESPFLASHMODE ?= $(CONFIG_ESPTOOLPY_FLASHMODE)
ESPFLASHFREQ ?= $(CONFIG_ESPTOOLPY_FLASHFREQ) ESPFLASHFREQ ?= $(CONFIG_ESPTOOLPY_FLASHFREQ)
ESPFLASHSIZE ?= $(CONFIG_ESPTOOLPY_FLASHSIZE) ESPFLASHSIZE ?= $(CONFIG_ESPTOOLPY_FLASHSIZE)
CONFIG_ESPTOOLPY_COMPRESSED ?=
PYTHON ?= $(call dequote,$(CONFIG_PYTHON)) PYTHON ?= $(call dequote,$(CONFIG_PYTHON))
# two commands that can be used from other components # two commands that can be used from other components

View File

@@ -6,6 +6,6 @@ COMPONENT_ADD_LDFLAGS += -Wl,--undefined=uxTopUsedPriority
COMPONENT_ADD_INCLUDEDIRS := include COMPONENT_ADD_INCLUDEDIRS := include
COMPONENT_PRIV_INCLUDEDIRS := include/freertos COMPONENT_PRIV_INCLUDEDIRS := include/freertos
#ifdef CONFIG_SYSVIEW_ENABLE #ifeq ("$(CONFIG_SYSVIEW_ENABLE)","y")
#COMPONENT_ADD_INCLUDEDIRS += app_trace #COMPONENT_ADD_INCLUDEDIRS += app_trace
#endif #endif

View File

@@ -8,8 +8,10 @@ COMPONENT_ADD_INCLUDEDIRS := \
include/lwip/posix \ include/lwip/posix \
apps/ping apps/ping
ifdef CONFIG_PPP_SUPPORT ifeq ("$(CONFIG_PPP_SUPPORT)","y")
LWIP_PPP_DIRS := netif/ppp/polarssl netif/ppp LWIP_PPP_DIRS := netif/ppp/polarssl netif/ppp
else
LWIP_PPP_DIRS :=
endif endif
COMPONENT_SRCDIRS := \ COMPONENT_SRCDIRS := \

View File

@@ -1,5 +1,4 @@
ifeq ("$(CONFIG_SPIRAM_CACHE_WORKAROUND)","y") ifeq ("$(CONFIG_SPIRAM_CACHE_WORKAROUND)","y")
LIBC_PATH := $(COMPONENT_PATH)/lib/libc-psram-workaround.a LIBC_PATH := $(COMPONENT_PATH)/lib/libc-psram-workaround.a
LIBM_PATH := $(COMPONENT_PATH)/lib/libm-psram-workaround.a LIBM_PATH := $(COMPONENT_PATH)/lib/libm-psram-workaround.a
@@ -14,7 +13,7 @@ endif
LIBM_PATH := $(COMPONENT_PATH)/lib/libm.a LIBM_PATH := $(COMPONENT_PATH)/lib/libm.a
endif endif # CONFIG_SPIRAM_CACHE_WORKAROUND
COMPONENT_ADD_LDFLAGS := $(LIBC_PATH) $(LIBM_PATH) -lnewlib COMPONENT_ADD_LDFLAGS := $(LIBC_PATH) $(LIBM_PATH) -lnewlib

View File

@@ -2,7 +2,7 @@
# Main Makefile. This is basically the same as a component makefile. # Main Makefile. This is basically the same as a component makefile.
# #
ifdef CONFIG_EXAMPLE_EMBEDDED_CERTS ifeq ("$(CONFIG_EXAMPLE_EMBEDDED_CERTS)","y")
# Certificate files. certificate.pem.crt & private.pem.key must be downloaded # Certificate files. certificate.pem.crt & private.pem.key must be downloaded
# from AWS, see README for details. # from AWS, see README for details.
COMPONENT_EMBED_TXTFILES := certs/aws-root-ca.pem certs/certificate.pem.crt certs/private.pem.key COMPONENT_EMBED_TXTFILES := certs/aws-root-ca.pem certs/certificate.pem.crt certs/private.pem.key

View File

@@ -2,7 +2,7 @@
# Main Makefile. This is basically the same as a component makefile. # Main Makefile. This is basically the same as a component makefile.
# #
ifdef CONFIG_EXAMPLE_EMBEDDED_CERTS ifeq ("$(CONFIG_EXAMPLE_EMBEDDED_CERTS)","y")
# Certificate files. certificate.pem.crt & private.pem.key must be downloaded # Certificate files. certificate.pem.crt & private.pem.key must be downloaded
# from AWS, see README for details. # from AWS, see README for details.
COMPONENT_EMBED_TXTFILES := certs/aws-root-ca.pem certs/certificate.pem.crt certs/private.pem.key COMPONENT_EMBED_TXTFILES := certs/aws-root-ca.pem certs/certificate.pem.crt certs/private.pem.key

View File

@@ -19,6 +19,7 @@ endif
# #
# if V=1, $(summary) does nothing and $(details) will echo extra details # if V=1, $(summary) does nothing and $(details) will echo extra details
# if V is unset or not 1, $(summary) echoes a summary and $(details) does nothing # if V is unset or not 1, $(summary) echoes a summary and $(details) does nothing
VERBOSE ?=
V ?= $(VERBOSE) V ?= $(VERBOSE)
ifeq ("$(V)","1") ifeq ("$(V)","1")
summary := @true summary := @true
@@ -28,7 +29,7 @@ summary := @echo
details := @true details := @true
# disable echoing of commands, directory names # disable echoing of commands, directory names
MAKEFLAGS += --silent MAKEFLAGS += --silent --warn-undefined-variables
endif endif
# General make utilities # General make utilities

View File

@@ -63,6 +63,13 @@ define compile_only_if_not
$(eval $(if $(1), $(call compile_exclude, $(2)), $(call compile_include, $(2)))) $(eval $(if $(1), $(call compile_exclude, $(2)), $(call compile_include, $(2))))
endef endef
COMPONENT_ADD_LINKER_DEPS ?=
COMPONENT_DEPENDS ?=
COMPONENT_EXTRA_CLEAN ?=
COMPONENT_EXTRA_INCLUDES ?=
COMPONENT_OBJEXCLUDE ?=
COMPONENT_OBJINCLUDE ?=
COMPONENT_SUBMODULES ?=
################################################################################ ################################################################################
# 2) Include the component.mk for the specific component (COMPONENT_MAKEFILE) to # 2) Include the component.mk for the specific component (COMPONENT_MAKEFILE) to
@@ -105,6 +112,7 @@ COMPONENT_EMBED_OBJS ?= $(addsuffix .bin.o,$(notdir $(COMPONENT_EMBED_FILES))) $
# variable with all the include dirs from all the components in random order. This # variable with all the include dirs from all the components in random order. This
# means we can accidentally grab a header from another component before grabbing our own. # means we can accidentally grab a header from another component before grabbing our own.
# To make sure that does not happen, re-order the includes so ours come first. # To make sure that does not happen, re-order the includes so ours come first.
COMPONENT_PRIV_INCLUDEDIRS ?=
OWN_INCLUDES:=$(abspath $(addprefix $(COMPONENT_PATH)/,$(COMPONENT_PRIV_INCLUDEDIRS) $(COMPONENT_ADD_INCLUDEDIRS))) OWN_INCLUDES:=$(abspath $(addprefix $(COMPONENT_PATH)/,$(COMPONENT_PRIV_INCLUDEDIRS) $(COMPONENT_ADD_INCLUDEDIRS)))
COMPONENT_INCLUDES := $(OWN_INCLUDES) $(filter-out $(OWN_INCLUDES),$(COMPONENT_INCLUDES)) COMPONENT_INCLUDES := $(OWN_INCLUDES) $(filter-out $(OWN_INCLUDES),$(COMPONENT_INCLUDES))
@@ -139,7 +147,7 @@ endef
# component-specific feature, please don't! What you want is a # component-specific feature, please don't! What you want is a
# Makefile.projbuild for your component (see docs/build-system.rst for # Makefile.projbuild for your component (see docs/build-system.rst for
# more.) # more.)
component_project_vars.mk:: component_project_vars.mk:
$(details) "Building component project variables list $(abspath $@)" $(details) "Building component project variables list $(abspath $@)"
@echo '# Automatically generated build file. Do not edit.' > $@ @echo '# Automatically generated build file. Do not edit.' > $@
@echo 'COMPONENT_INCLUDES += $(call MakeVariablePath,$(addprefix $(COMPONENT_PATH)/,$(COMPONENT_ADD_INCLUDEDIRS)))' >> $@ @echo 'COMPONENT_INCLUDES += $(call MakeVariablePath,$(addprefix $(COMPONENT_PATH)/,$(COMPONENT_ADD_INCLUDEDIRS)))' >> $@
@@ -178,6 +186,8 @@ clean:
rm -f $(CLEAN_FILES) rm -f $(CLEAN_FILES)
endif endif
DEBUG_FLAGS ?= -ggdb
# Include all dependency files already generated # Include all dependency files already generated
-include $(COMPONENT_OBJS:.o=.d) -include $(COMPONENT_OBJS:.o=.d)

View File

@@ -56,6 +56,7 @@ $(error esp-idf build system doesn't support running 'clean' targets along with
endif endif
endif endif
OS ?=
# make IDF_PATH a "real" absolute path # make IDF_PATH a "real" absolute path
# * works around the case where a shell character is embedded in the environment variable value. # * works around the case where a shell character is embedded in the environment variable value.
@@ -113,6 +114,7 @@ export BUILD_DIR_BASE
# or the directory contains subdirectories which are components.) # or the directory contains subdirectories which are components.)
# The project Makefile can override these component dirs, or add extras via EXTRA_COMPONENT_DIRS # The project Makefile can override these component dirs, or add extras via EXTRA_COMPONENT_DIRS
ifndef COMPONENT_DIRS ifndef COMPONENT_DIRS
EXTRA_COMPONENT_DIRS ?=
COMPONENT_DIRS := $(PROJECT_PATH)/components $(EXTRA_COMPONENT_DIRS) $(IDF_PATH)/components $(PROJECT_PATH)/main COMPONENT_DIRS := $(PROJECT_PATH)/components $(EXTRA_COMPONENT_DIRS) $(IDF_PATH)/components $(PROJECT_PATH)/main
endif endif
export COMPONENT_DIRS export COMPONENT_DIRS
@@ -146,15 +148,18 @@ export COMPONENTS
COMPONENT_PATHS := $(foreach comp,$(COMPONENTS),$(firstword $(foreach cd,$(COMPONENT_DIRS),$(wildcard $(dir $(cd))$(comp) $(cd)/$(comp))))) COMPONENT_PATHS := $(foreach comp,$(COMPONENTS),$(firstword $(foreach cd,$(COMPONENT_DIRS),$(wildcard $(dir $(cd))$(comp) $(cd)/$(comp)))))
# If TESTS_ALL set to 1, set TEST_COMPONENTS_LIST to all components # If TESTS_ALL set to 1, set TEST_COMPONENTS_LIST to all components
ifdef TESTS_ALL
ifeq ($(TESTS_ALL),1) ifeq ($(TESTS_ALL),1)
TEST_COMPONENTS_LIST := $(COMPONENTS) TEST_COMPONENTS_LIST := $(COMPONENTS)
else else
# otherwise, use TEST_COMPONENTS # otherwise, use TEST_COMPONENTS
TEST_COMPONENTS_LIST := $(TEST_COMPONENTS) TEST_COMPONENTS_LIST := $(TEST_COMPONENTS)
endif endif
else
TEST_COMPONENTS_LIST :=
endif
TEST_COMPONENT_PATHS := $(foreach comp,$(TEST_COMPONENTS_LIST),$(firstword $(foreach dir,$(COMPONENT_DIRS),$(wildcard $(dir)/$(comp)/test)))) TEST_COMPONENT_PATHS := $(foreach comp,$(TEST_COMPONENTS_LIST),$(firstword $(foreach dir,$(COMPONENT_DIRS),$(wildcard $(dir)/$(comp)/test))))
TEST_COMPONENT_NAMES := $(foreach comp,$(TEST_COMPONENT_PATHS),$(lastword $(subst /, ,$(dir $(comp))))_test) TEST_COMPONENT_NAMES := $(foreach comp,$(TEST_COMPONENT_PATHS),$(lastword $(subst /, ,$(dir $(comp))))_test)
# Initialise project-wide variables which can be added to by # Initialise project-wide variables which can be added to by
# each component. # each component.
@@ -189,9 +194,9 @@ export COMPONENT_INCLUDES
include $(IDF_PATH)/make/common.mk include $(IDF_PATH)/make/common.mk
all: all:
ifdef CONFIG_SECURE_BOOT_ENABLED ifneq ("$(CONFIG_SECURE_BOOT_ENABLED)","")
@echo "(Secure boot enabled, so bootloader not flashed automatically. See 'make bootloader' output)" @echo "(Secure boot enabled, so bootloader not flashed automatically. See 'make bootloader' output)"
ifndef CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES ifeq ("$(CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES)","")
@echo "App built but not signed. Sign app & partition data before flashing, via espsecure.py:" @echo "App built but not signed. Sign app & partition data before flashing, via espsecure.py:"
@echo "espsecure.py sign_data --keyfile KEYFILE $(APP_BIN)" @echo "espsecure.py sign_data --keyfile KEYFILE $(APP_BIN)"
@echo "espsecure.py sign_data --keyfile KEYFILE $(PARTITION_TABLE_BIN)" @echo "espsecure.py sign_data --keyfile KEYFILE $(PARTITION_TABLE_BIN)"
@@ -206,6 +211,7 @@ endif
IDF_VER := $(shell cd ${IDF_PATH} && git describe --always --tags --dirty) IDF_VER := $(shell cd ${IDF_PATH} && git describe --always --tags --dirty)
# Set default LDFLAGS # Set default LDFLAGS
EXTRA_LDFLAGS ?=
LDFLAGS ?= -nostdlib \ LDFLAGS ?= -nostdlib \
-u call_user_start_cpu0 \ -u call_user_start_cpu0 \
$(EXTRA_LDFLAGS) \ $(EXTRA_LDFLAGS) \
@@ -228,6 +234,8 @@ LDFLAGS ?= -nostdlib \
# CPPFLAGS used by C preprocessor # CPPFLAGS used by C preprocessor
# If any flags are defined in application Makefile, add them at the end. # If any flags are defined in application Makefile, add them at the end.
CPPFLAGS ?=
EXTRA_CPPFLAGS ?=
CPPFLAGS := -DESP_PLATFORM -D IDF_VER=\"$(IDF_VER)\" -MMD -MP $(CPPFLAGS) $(EXTRA_CPPFLAGS) CPPFLAGS := -DESP_PLATFORM -D IDF_VER=\"$(IDF_VER)\" -MMD -MP $(CPPFLAGS) $(EXTRA_CPPFLAGS)
# Warnings-related flags relevant both for C and C++ # Warnings-related flags relevant both for C and C++
@@ -263,6 +271,8 @@ DEBUG_FLAGS ?= -ggdb
# List of flags to pass to C compiler # List of flags to pass to C compiler
# If any flags are defined in application Makefile, add them at the end. # If any flags are defined in application Makefile, add them at the end.
CFLAGS ?=
EXTRA_CFLAGS ?=
CFLAGS := $(strip \ CFLAGS := $(strip \
-std=gnu99 \ -std=gnu99 \
$(OPTIMIZATION_FLAGS) $(DEBUG_FLAGS) \ $(OPTIMIZATION_FLAGS) $(DEBUG_FLAGS) \
@@ -273,6 +283,8 @@ CFLAGS := $(strip \
# List of flags to pass to C++ compiler # List of flags to pass to C++ compiler
# If any flags are defined in application Makefile, add them at the end. # If any flags are defined in application Makefile, add them at the end.
CXXFLAGS ?=
EXTRA_CXXFLAGS ?=
CXXFLAGS := $(strip \ CXXFLAGS := $(strip \
-std=gnu++11 \ -std=gnu++11 \
-fno-exceptions \ -fno-exceptions \
@@ -289,8 +301,16 @@ export CFLAGS CPPFLAGS CXXFLAGS
HOSTCC := $(CC) HOSTCC := $(CC)
HOSTLD := $(LD) HOSTLD := $(LD)
HOSTAR := $(AR) HOSTAR := $(AR)
ifdef OBJCOPY
HOSTOBJCOPY := $(OBJCOPY) HOSTOBJCOPY := $(OBJCOPY)
else
HOSTOBJCOPY := objcopy
endif
ifdef SIZE
HOSTSIZE := $(SIZE) HOSTSIZE := $(SIZE)
else
HOSTSIZE := size
endif
export HOSTCC HOSTLD HOSTAR HOSTOBJCOPY SIZE export HOSTCC HOSTLD HOSTAR HOSTOBJCOPY SIZE
# Set target compiler. Defaults to whatever the user has # Set target compiler. Defaults to whatever the user has
@@ -333,6 +353,7 @@ endif
# #
# also depends on additional dependencies (linker scripts & binary libraries) # also depends on additional dependencies (linker scripts & binary libraries)
# stored in COMPONENT_LINKER_DEPS, built via component.mk files' COMPONENT_ADD_LINKER_DEPS variable # stored in COMPONENT_LINKER_DEPS, built via component.mk files' COMPONENT_ADD_LINKER_DEPS variable
COMPONENT_LINKER_DEPS ?=
$(APP_ELF): $(foreach libcomp,$(COMPONENT_LIBRARIES),$(BUILD_DIR_BASE)/$(libcomp)/lib$(libcomp).a) $(COMPONENT_LINKER_DEPS) $(COMPONENT_PROJECT_VARS) $(APP_ELF): $(foreach libcomp,$(COMPONENT_LIBRARIES),$(BUILD_DIR_BASE)/$(libcomp)/lib$(libcomp).a) $(COMPONENT_LINKER_DEPS) $(COMPONENT_PROJECT_VARS)
$(summary) LD $(patsubst $(PWD)/%,%,$@) $(summary) LD $(patsubst $(PWD)/%,%,$@)
$(CC) $(LDFLAGS) -o $@ -Wl,-Map=$(APP_MAP) $(CC) $(LDFLAGS) -o $@ -Wl,-Map=$(APP_MAP)
@@ -434,7 +455,7 @@ check-submodules: $(IDF_PATH)/$(1)/.git
$(IDF_PATH)/$(1)/.git: $(IDF_PATH)/$(1)/.git:
@echo "WARNING: Missing submodule $(1)..." @echo "WARNING: Missing submodule $(1)..."
[ -e ${IDF_PATH}/.git ] || ( echo "ERROR: esp-idf must be cloned from git to work."; exit 1) [ -e ${IDF_PATH}/.git ] || ( echo "ERROR: esp-idf must be cloned from git to work."; exit 1)
[ -x $(which git) ] || ( echo "ERROR: Need to run 'git submodule init $(1)' in esp-idf root directory."; exit 1) [ -x $$(which git) ] || ( echo "ERROR: Need to run 'git submodule init $(1)' in esp-idf root directory."; exit 1)
@echo "Attempting 'git submodule update --init $(1)' in esp-idf root directory..." @echo "Attempting 'git submodule update --init $(1)' in esp-idf root directory..."
cd ${IDF_PATH} && git submodule update --init $(1) cd ${IDF_PATH} && git submodule update --init $(1)

View File

@@ -16,8 +16,8 @@ SDKCONFIG ?= $(PROJECT_PATH)/sdkconfig
SDKCONFIG_DEFAULTS ?= $(PROJECT_PATH)/sdkconfig.defaults SDKCONFIG_DEFAULTS ?= $(PROJECT_PATH)/sdkconfig.defaults
# reset MAKEFLAGS as the menuconfig makefile uses implicit compile rules # reset MAKEFLAGS as the menuconfig makefile uses implicit compile rules
$(KCONFIG_TOOL_DIR)/mconf $(KCONFIG_TOOL_DIR)/conf: $(KCONFIG_TOOL_DIR)/mconf $(KCONFIG_TOOL_DIR)/conf: $(wildcard $(KCONFIG_TOOL_DIR)/*.c)
MAKEFLAGS=$(ORIGINAL_MAKEFLAGS) CC=$(HOSTCC) LD=$(HOSTLD) \ MAKEFLAGS="" CC=$(HOSTCC) LD=$(HOSTLD) \
$(MAKE) -C $(KCONFIG_TOOL_DIR) $(MAKE) -C $(KCONFIG_TOOL_DIR)
ifeq ("$(wildcard $(SDKCONFIG))","") ifeq ("$(wildcard $(SDKCONFIG))","")
@@ -42,7 +42,7 @@ define RunConf
$(KCONFIG_TOOL_DIR)/$1 $(IDF_PATH)/Kconfig $(KCONFIG_TOOL_DIR)/$1 $(IDF_PATH)/Kconfig
endef endef
ifeq ("$(MAKE_RESTARTS)","") ifndef MAKE_RESTARTS
# menuconfig, defconfig and "GENCONFIG" configuration generation only # menuconfig, defconfig and "GENCONFIG" configuration generation only
# ever run on the first make pass, subsequent passes don't run these # ever run on the first make pass, subsequent passes don't run these
# (make often wants to re-run them as the conf tool can regenerate the # (make often wants to re-run them as the conf tool can regenerate the
@@ -92,6 +92,6 @@ endif
.PHONY: config-clean defconfig menuconfig .PHONY: config-clean defconfig menuconfig
config-clean: config-clean:
$(summary RM CONFIG) $(summary) RM CONFIG
$(MAKE) -C $(KCONFIG_TOOL_DIR) clean MAKEFLAGS="" $(MAKE) -C $(KCONFIG_TOOL_DIR) clean
rm -rf $(BUILD_DIR_BASE)/include/config $(BUILD_DIR_BASE)/include/sdkconfig.h rm -rf $(BUILD_DIR_BASE)/include/config $(BUILD_DIR_BASE)/include/sdkconfig.h

View File

@@ -2,6 +2,7 @@
# Generated files # Generated files
# #
config* config*
*.d
*.lex.c *.lex.c
*.tab.c *.tab.c
*.tab.h *.tab.h

View File

@@ -145,7 +145,7 @@ check-lxdialog := lxdialog/check-lxdialog.sh
# Use recursively expanded variables so we do not call gcc unless # Use recursively expanded variables so we do not call gcc unless
# we really need to do so. (Do not call gcc as part of make mrproper) # we really need to do so. (Do not call gcc as part of make mrproper)
CFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ CFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \
-DLOCALE -DLOCALE -MD
# =========================================================================== # ===========================================================================
# Shared Makefile for the various kconfig executables: # Shared Makefile for the various kconfig executables:
@@ -173,7 +173,7 @@ gconf-objs := gconf.o zconf.tab.o
hostprogs-y := conf nconf mconf kxgettext qconf gconf hostprogs-y := conf nconf mconf kxgettext qconf gconf
clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck *.d
clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h
clean-files += $(conf-objs) $(mconf-objs) conf mconf $(lxdialog) clean-files += $(conf-objs) $(mconf-objs) conf mconf $(lxdialog)
@@ -309,3 +309,6 @@ zconf.tab.c: zconf.y
clean: clean:
rm -f $(clean-files) rm -f $(clean-files)
-include $(wildcard *.d)
-include $(wildcard lxdialog/*.d)

View File

@@ -141,7 +141,7 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
sym->flags |= def_flags; sym->flags |= def_flags;
break; break;
} }
if (p[0] == 'n') { if (p[0] == 'n' || p[0] == '\0') {
sym->def[def].tri = no; sym->def[def].tri = no;
sym->flags |= def_flags; sym->flags |= def_flags;
break; break;
@@ -490,12 +490,7 @@ kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
case S_BOOLEAN: case S_BOOLEAN:
case S_TRISTATE: case S_TRISTATE:
if (*value == 'n') { if (*value == 'n') {
bool skip_unset = (arg != NULL); value = "";
if (!skip_unset)
fprintf(fp, "# %s%s is not set\n",
CONFIG_, sym->name);
return;
} }
break; break;
default: default:
@@ -986,17 +981,21 @@ int conf_write_autoconf(void)
conf_write_heading(out_h, &header_printer_cb, NULL); conf_write_heading(out_h, &header_printer_cb, NULL);
/* write symbols to auto.conf, tristate and header files */
for_all_symbols(i, sym) { for_all_symbols(i, sym) {
sym_calc_value(sym); if (!sym->name) continue;
if (!(sym->flags & SYMBOL_WRITE) || !sym->name) if ((sym->flags & SYMBOL_WRITE) ||
continue; /*
* If the symbol is disabled by dependency we still want it in auto.conf
/* write symbol to auto.conf, tristate and header files */ * so that all possible variables are always defined.
conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); */
(sym->dir_dep.expr != NULL && sym->dir_dep.tri == no)) {
conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
}
conf_write_symbol(out_h, sym, &header_printer_cb, NULL); if (sym->flags & SYMBOL_WRITE) {
conf_write_symbol(tristate, sym, &tristate_printer_cb, NULL);
conf_write_symbol(out_h, sym, &header_printer_cb, NULL);
}
} }
fclose(out); fclose(out);
fclose(tristate); fclose(tristate);