From 2639d5b6c37ea0f4103f47b9cbf4916329c09459 Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Mon, 1 Jul 2019 14:43:58 +1000 Subject: [PATCH] cmake: Fix some bugs building mconf-idf from scratch - Makefile didn't quite work with out-of-tree build unless there was already an in-tree build done. - CMake needs to delete some of the in-tree build artifacts or they're used instead of the correct files. --- tools/cmake/kconfig.cmake | 15 +++++++++++---- tools/kconfig/Makefile | 2 ++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/tools/cmake/kconfig.cmake b/tools/cmake/kconfig.cmake index f865c804e..561c95ccd 100644 --- a/tools/cmake/kconfig.cmake +++ b/tools/cmake/kconfig.cmake @@ -39,23 +39,30 @@ function(__kconfig_init) # Use the existing Makefile to build mconf (out of tree) when needed # set(MCONF ${CMAKE_BINARY_DIR}/kconfig_bin/mconf-idf) + set(src_path ${idf_path}/tools/kconfig) + # note: we preemptively remove any build files from the src dir + # as we're building out of tree, but don't want build system to + # #include any from there that were previously build with/for make externalproject_add(mconf-idf - SOURCE_DIR ${idf_path}/tools/kconfig + SOURCE_DIR ${src_path} CONFIGURE_COMMAND "" BINARY_DIR "kconfig_bin" - BUILD_COMMAND make -f ${idf_path}/tools/kconfig/Makefile mconf-idf + BUILD_COMMAND rm -f ${src_path}/zconf.lex.c ${src_path}/zconf.hash.c + COMMAND make -f ${src_path}/Makefile mconf-idf BUILD_BYPRODUCTS ${MCONF} INSTALL_COMMAND "" EXCLUDE_FROM_ALL 1 ) - file(GLOB mconf_srcfiles ${idf_path}/tools/kconfig/*.c) + file(GLOB mconf_srcfiles ${src_path}/*.c) + list(REMOVE_ITEM mconf_srcfiles "${src_path}/zconf.lex.c" "${src_path}/zconf.hash.c") externalproject_add_stepdependencies(mconf-idf build ${mconf_srcfiles} - ${idf_path}/tools/kconfig/Makefile + ${src_path}/Makefile ${CMAKE_CURRENT_LIST_FILE}) unset(mconf_srcfiles) + unset(src_path) set(menuconfig_depends DEPENDS mconf-idf) endif() diff --git a/tools/kconfig/Makefile b/tools/kconfig/Makefile index c9488d8cd..b91cbc282 100644 --- a/tools/kconfig/Makefile +++ b/tools/kconfig/Makefile @@ -167,6 +167,8 @@ check-lxdialog := $(SRCDIR)/lxdialog/check-lxdialog.sh CFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ -DLOCALE -MMD +CFLAGS += -I "." -I "${SRCDIR}" + %.o: $(SRCDIR)/%.c $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@