Merge branch 'feature/build_warn_undefined_vars' into 'master'
Add --warn-undefined-variables to MAKEFLAGS (github #138) See merge request !1214
This commit is contained in:
commit
74d5f85c53
17 changed files with 120 additions and 51 deletions
14
Kconfig
14
Kconfig
|
@ -19,7 +19,19 @@ config PYTHON
|
||||||
help
|
help
|
||||||
The executable name/path that is used to run python. On some systems Python 2.x
|
The executable name/path that is used to run python. On some systems Python 2.x
|
||||||
may need to be invoked as python2.
|
may need to be invoked as python2.
|
||||||
endmenu
|
|
||||||
|
config MAKE_WARN_UNDEFINED_VARIABLES
|
||||||
|
bool "'make' warns on undefined variables"
|
||||||
|
default "y"
|
||||||
|
help
|
||||||
|
Adds --warn-undefined-variables to MAKEFLAGS. This causes make to
|
||||||
|
print a warning any time an undefined variable is referenced.
|
||||||
|
|
||||||
|
This option helps find places where a variable reference is misspelled
|
||||||
|
or otherwise missing, but it can be unwanted if you have Makefiles which
|
||||||
|
depend on undefined variables expanding to an empty string.
|
||||||
|
|
||||||
|
endmenu # SDK tool configuration
|
||||||
|
|
||||||
source "$COMPONENT_KCONFIGS_PROJBUILD"
|
source "$COMPONENT_KCONFIGS_PROJBUILD"
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -3,8 +3,9 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
COMPONENT_SRCDIRS := . hwcrypto
|
COMPONENT_SRCDIRS := . hwcrypto
|
||||||
|
LIBS ?=
|
||||||
ifndef CONFIG_NO_BLOBS
|
ifndef CONFIG_NO_BLOBS
|
||||||
LIBS := core rtc net80211 pp wpa smartconfig coexist wps wpa2 phy
|
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.
|
||||||
|
@ -18,7 +19,7 @@ ifndef CONFIG_SPIRAM_CACHE_WORKAROUND
|
||||||
LINKER_SCRIPTS += esp32.rom.spiram_incompatible_fns.ld
|
LINKER_SCRIPTS += esp32.rom.spiram_incompatible_fns.ld
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ("$(CONFIG_NEWLIB_NANO_FORMAT)","y")
|
ifdef CONFIG_NEWLIB_NANO_FORMAT
|
||||||
LINKER_SCRIPTS += esp32.rom.nanofmt.ld
|
LINKER_SCRIPTS += esp32.rom.nanofmt.ld
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -5,7 +5,3 @@
|
||||||
COMPONENT_ADD_LDFLAGS += -Wl,--undefined=uxTopUsedPriority
|
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
|
|
||||||
#COMPONENT_ADD_INCLUDEDIRS += app_trace
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -9,7 +9,9 @@ COMPONENT_ADD_INCLUDEDIRS := \
|
||||||
apps/ping
|
apps/ping
|
||||||
|
|
||||||
ifdef CONFIG_PPP_SUPPORT
|
ifdef CONFIG_PPP_SUPPORT
|
||||||
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 := \
|
||||||
|
|
|
@ -1,20 +1,19 @@
|
||||||
|
|
||||||
|
ifdef CONFIG_SPIRAM_CACHE_WORKAROUND
|
||||||
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
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
ifeq ("$(CONFIG_NEWLIB_NANO_FORMAT)","y")
|
ifdef CONFIG_NEWLIB_NANO_FORMAT
|
||||||
LIBC_PATH := $(COMPONENT_PATH)/lib/libc_nano.a
|
LIBC_PATH := $(COMPONENT_PATH)/lib/libc_nano.a
|
||||||
else
|
else
|
||||||
LIBC_PATH := $(COMPONENT_PATH)/lib/libc.a
|
LIBC_PATH := $(COMPONENT_PATH)/lib/libc.a
|
||||||
endif
|
endif # CONFIG_NEWLIB_NANO_FORMAT
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
|
|
@ -351,6 +351,17 @@ Some tips for debugging the esp-idf build system:
|
||||||
|
|
||||||
For more debugging tips and general make information, see the `GNU Make Manual`.
|
For more debugging tips and general make information, see the `GNU Make Manual`.
|
||||||
|
|
||||||
|
.. _warn-undefined-variables:
|
||||||
|
|
||||||
|
Warning On Undefined Variables
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
By default, the build process will print a warning if an undefined variable is referenced (like ``$(DOES_NOT_EXIST)``). This can be useful to find errors in variable names.
|
||||||
|
|
||||||
|
If you don't want this behaviour, it can be disabled by disabling :ref:`CONFIG_MAKE_WARN_UNDEFINED_VARIABLES`.
|
||||||
|
|
||||||
|
Note that this option doesn't trigger a warning if ``ifdef`` or ``ifndef`` are used in Makefiles.
|
||||||
|
|
||||||
Overriding Parts of the Project
|
Overriding Parts of the Project
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
|
|
|
@ -25,4 +25,13 @@ By convention, all option names are upper case with underscores. When Kconfig ge
|
||||||
|
|
||||||
.. include:: /_build/inc/kconfig.inc
|
.. include:: /_build/inc/kconfig.inc
|
||||||
|
|
||||||
.. _Kconfig: https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt
|
Customisations
|
||||||
|
==============
|
||||||
|
|
||||||
|
Because IDF builds by default with :ref:`warn-undefined-variables`, when the Kconfig tool generates Makefiles (the ``auto.conf`` file) its behaviour has been customised. In normal Kconfig, a variable which is set to "no" is undefined. In IDF's version of Kconfig, this variable is defined in the Makefile but has an empty value.
|
||||||
|
|
||||||
|
(Note that ``ifdef`` and ``ifndef`` can still be used in Makefiles, because they test if a variable is defined *and has a non-empty value*.)
|
||||||
|
|
||||||
|
When generating header files for C & C++, the behaviour is not customised - so ``#ifdef`` can be used to test if a boolean config item is set or not.
|
||||||
|
|
||||||
|
.. _Kconfig: https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt
|
||||||
|
|
|
@ -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
|
||||||
|
@ -26,9 +27,13 @@ details := @echo
|
||||||
else
|
else
|
||||||
summary := @echo
|
summary := @echo
|
||||||
details := @true
|
details := @true
|
||||||
|
endif
|
||||||
|
|
||||||
# disable echoing of commands, directory names
|
# disable echoing of commands, directory names
|
||||||
MAKEFLAGS += --silent
|
MAKEFLAGS += --silent
|
||||||
|
|
||||||
|
ifdef CONFIG_MAKE_WARN_UNDEFINED_VARIABLES
|
||||||
|
MAKEFLAGS += --warn-undefined-variables
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# General make utilities
|
# General make utilities
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
@ -266,10 +276,6 @@ $(foreach binfile,$(COMPONENT_EMBED_FILES), $(eval $(call GenerateEmbedTarget,$(
|
||||||
|
|
||||||
$(foreach txtfile,$(COMPONENT_EMBED_TXTFILES), $(eval $(call GenerateEmbedTarget,$(txtfile),txt)))
|
$(foreach txtfile,$(COMPONENT_EMBED_TXTFILES), $(eval $(call GenerateEmbedTarget,$(txtfile),txt)))
|
||||||
|
|
||||||
# generate targets to create binary embed directories
|
|
||||||
$(foreach bindir,$(sort $(dir $(COMPONENT_EMBED_FILES))), $(eval $(call GenerateBuildDirTarget,$(bindir))))
|
|
||||||
|
|
||||||
|
|
||||||
else # COMPONENT_CONFIG_ONLY is set
|
else # COMPONENT_CONFIG_ONLY is set
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
|
|
@ -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 # TESTS_ALL not empty and not 1
|
||||||
# otherwise, use TEST_COMPONENTS
|
# otherwise, use TEST_COMPONENTS
|
||||||
TEST_COMPONENTS_LIST := $(TEST_COMPONENTS)
|
TEST_COMPONENTS_LIST := $(TEST_COMPONENTS)
|
||||||
endif
|
endif
|
||||||
|
else # TESTS_ALL unset
|
||||||
|
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.
|
||||||
|
@ -166,6 +171,7 @@ TEST_COMPONENT_NAMES := $(foreach comp,$(TEST_COMPONENT_PATHS),$(lastword $(sub
|
||||||
COMPONENT_INCLUDES :=
|
COMPONENT_INCLUDES :=
|
||||||
COMPONENT_LDFLAGS :=
|
COMPONENT_LDFLAGS :=
|
||||||
COMPONENT_SUBMODULES :=
|
COMPONENT_SUBMODULES :=
|
||||||
|
COMPONENT_LIBRARIES :=
|
||||||
|
|
||||||
# COMPONENT_PROJECT_VARS is the list of component_project_vars.mk generated makefiles
|
# COMPONENT_PROJECT_VARS is the list of component_project_vars.mk generated makefiles
|
||||||
# for each component.
|
# for each component.
|
||||||
|
@ -206,6 +212,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 +235,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++
|
||||||
|
@ -247,13 +256,13 @@ COMMON_FLAGS = \
|
||||||
-nostdlib
|
-nostdlib
|
||||||
|
|
||||||
# Optimization flags are set based on menuconfig choice
|
# Optimization flags are set based on menuconfig choice
|
||||||
ifneq ("$(CONFIG_OPTIMIZATION_LEVEL_RELEASE)","")
|
ifdef CONFIG_OPTIMIZATION_LEVEL_RELEASE
|
||||||
OPTIMIZATION_FLAGS = -Os
|
OPTIMIZATION_FLAGS = -Os
|
||||||
else
|
else
|
||||||
OPTIMIZATION_FLAGS = -Og
|
OPTIMIZATION_FLAGS = -Og
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ("$(CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED)", "y")
|
ifdef CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED
|
||||||
CPPFLAGS += -DNDEBUG
|
CPPFLAGS += -DNDEBUG
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -263,6 +272,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 +284,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 +302,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 +354,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 +456,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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
1
tools/kconfig/.gitignore
vendored
1
tools/kconfig/.gitignore
vendored
|
@ -2,6 +2,7 @@
|
||||||
# Generated files
|
# Generated files
|
||||||
#
|
#
|
||||||
config*
|
config*
|
||||||
|
*.d
|
||||||
*.lex.c
|
*.lex.c
|
||||||
*.tab.c
|
*.tab.c
|
||||||
*.tab.h
|
*.tab.h
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue