From 8a380ea69a73a05a40f923385b7abe4537fadee6 Mon Sep 17 00:00:00 2001 From: valeros Date: Mon, 16 Mar 2020 16:05:27 +0200 Subject: [PATCH] Improvements for ESP-IDF build script Skip header files when collecting sources for default CMakeLists.txt Add warning about obsolete project structure Use ElfToBin builder from bootloader env --- builder/frameworks/espidf.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index 64e9a6c..ae9e74d 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -119,7 +119,11 @@ def is_proper_idf_project(): def collect_src_files(): - return env.MatchSourceFiles("$PROJECT_SRC_DIR", env.get("SRC_FILTER")) + return [ + f + for f in env.MatchSourceFiles("$PROJECT_SRC_DIR", env.get("SRC_FILTER")) + if not f.endswith((".h", ".hpp")) + ] def create_default_project_files(): @@ -320,7 +324,7 @@ def filter_args(args, allowed, ignore=None): result.append(args[i]) if i + 1 < length and not args[i + 1].startswith("-"): i += 1 - result.append(args[i]) + result.append(args[i]) i += 1 return result @@ -618,11 +622,13 @@ def build_bootloader(): bootloader_libs = find_lib_deps(components_map, elf_config, link_args) bootloader_env.Prepend(__RPATH="-Wl,--start-group ") - bootloader_env.Append(_LIBDIRFLAGS=" -Wl,--end-group") + bootloader_env.Append( + CPPDEFINES=["__BOOTLOADER_BUILD"], _LIBDIRFLAGS=" -Wl,--end-group" + ) - return bootloader_env.Program( - join("$BUILD_DIR", "bootloader.elf"), - bootloader_libs, + return bootloader_env.ElfToBin( + join("$BUILD_DIR", "bootloader"), + bootloader_env.Program(join("$BUILD_DIR", "bootloader.elf"), bootloader_libs), ) @@ -733,6 +739,12 @@ if env.subst("$SRC_FILTER"): ) env.Exit(1) +if isfile(join(env.subst("$PROJECT_SRC_DIR"), "sdkconfig.h")): + print( + "Warning! Starting with ESP-IDF v4.0, new project structure is required: \n" + "https://docs.platformio.org/en/latest/frameworks/espidf.html#project-structure" + ) + # # Initial targets loading # @@ -808,10 +820,7 @@ app_includes = get_app_includes(elf_config) # Compile bootloader # -env.Depends( - "$BUILD_DIR/$PROGNAME$PROGSUFFIX", - env.ElfToBin(join("$BUILD_DIR", "bootloader"), build_bootloader()), -) +env.Depends("$BUILD_DIR/$PROGNAME$PROGSUFFIX", build_bootloader()) # # Target: ESP-IDF menuconfig