From 612fd7b29cde5382fda720d76347212442ea4eec Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Sat, 28 Feb 2026 15:36:45 -0500 Subject: fix: awk -> gawk & verify defconfig exists Transitioned from awk to gawk for the time being to use gensub cross platform. Also, now verify that the defconfig specified exists and if it does not, then an error message is printed. --- CMakeLists.txt | 4 ++++ cmake/Kconfig.cmake | 6 ++++-- cmake/TC-gcc11.cmake | 6 ++++++ cmake/TC-gcc15.cmake | 6 ++++++ configs/example2_defconfig | 4 ++++ configs/example_config | 3 --- configs/example_defconfig | 3 +++ tools/make-cmake-config | 2 +- 8 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 cmake/TC-gcc11.cmake create mode 100644 cmake/TC-gcc15.cmake create mode 100644 configs/example2_defconfig delete mode 100644 configs/example_config create mode 100644 configs/example_defconfig diff --git a/CMakeLists.txt b/CMakeLists.txt index 999ea9c..ebefb7d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,10 @@ cmake_minimum_required(VERSION 3.22) project(KconfigCmake VERSION 0.0.1 LANGUAGES C) +set(C_STANDARD 23) +set(C_EXTENSIONS OFF) +set(C_STANDARD_REQUIRED ON) + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) include(Kconfig) diff --git a/cmake/Kconfig.cmake b/cmake/Kconfig.cmake index 47f8295..580867b 100644 --- a/cmake/Kconfig.cmake +++ b/cmake/Kconfig.cmake @@ -7,7 +7,7 @@ set(TOOL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tools) set(KCONFIG_DIR ${TOOL_DIR}/Kconfiglib) set(LOCAL_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/.config) -if(DEFCONFIG AND NOT EXISTS ${CMAKE_BINARY_DIR}/config.cmake) +if(DEFCONFIG AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/configs/${DEFCONFIG} AND NOT EXISTS ${CMAKE_BINARY_DIR}/config.cmake) execute_process( COMMAND ${KCONFIG_DIR}/defconfig.py ${CMAKE_CURRENT_SOURCE_DIR}/configs/${DEFCONFIG} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} @@ -28,8 +28,10 @@ if(DEFCONFIG AND NOT EXISTS ${CMAKE_BINARY_DIR}/config.cmake) ${CMAKE_BINARY_DIR}/config.cmake ) -elseif(EXISTS ${CMAKE_BINARY_DIR}/config.cmake) +elseif(DEFCONFIG AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/configs/${DEFCONFIG} AND EXISTS ${CMAKE_BINARY_DIR}/config.cmake) message("Ignoring DEFCONFIG") +elseif(DEFCONFIG AND NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/configs/${DEFCONFIG}) + message(FATAL_ERROR "${CMAKE_CURRENT_SOURCE_DIR}/configs/${DEFCONFIG} does not exist.") else() message(FATAL_ERROR "DEFCONFIG not set.") endif() diff --git a/cmake/TC-gcc11.cmake b/cmake/TC-gcc11.cmake new file mode 100644 index 0000000..a60e63a --- /dev/null +++ b/cmake/TC-gcc11.cmake @@ -0,0 +1,6 @@ +set(CMAKE_SYSTEM_NAME MacOS) +set(CMAKE_SYSTEM_PROCESSOR arm64) + +set(tools /opt/homebrew) +set(CMAKE_C_COMPILER ${tools}/bin/gcc-11) +set(CMAKE_CXX_COMPILER ${tools}/bin/g++-11) diff --git a/cmake/TC-gcc15.cmake b/cmake/TC-gcc15.cmake new file mode 100644 index 0000000..43a1a34 --- /dev/null +++ b/cmake/TC-gcc15.cmake @@ -0,0 +1,6 @@ +set(CMAKE_SYSTEM_NAME MacOS) +set(CMAKE_SYSTEM_PROCESSOR arm64) + +set(tools /opt/homebrew) +set(CMAKE_C_COMPILER ${tools}/bin/gcc-15) +set(CMAKE_CXX_COMPILER ${tools}/bin/g++-15) diff --git a/configs/example2_defconfig b/configs/example2_defconfig new file mode 100644 index 0000000..727be7f --- /dev/null +++ b/configs/example2_defconfig @@ -0,0 +1,4 @@ +CONFIG_USE_TOOLCHAIN_FILE=y +CONFIG_CMAKE_TOOLCHAIN_FILE="TC-gcc15.cmake" +CONFIG_AGE=32 +CONFIG_NAME="John Doe" diff --git a/configs/example_config b/configs/example_config deleted file mode 100644 index 0c34f1e..0000000 --- a/configs/example_config +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_USE_TOOLCHAIN_FILE=y -CONFIG_AGE=22 -CONFIG_NAME="John Smith" diff --git a/configs/example_defconfig b/configs/example_defconfig new file mode 100644 index 0000000..0c34f1e --- /dev/null +++ b/configs/example_defconfig @@ -0,0 +1,3 @@ +CONFIG_USE_TOOLCHAIN_FILE=y +CONFIG_AGE=22 +CONFIG_NAME="John Smith" diff --git a/tools/make-cmake-config b/tools/make-cmake-config index 6fa7ba4..0444767 100755 --- a/tools/make-cmake-config +++ b/tools/make-cmake-config @@ -1,3 +1,3 @@ #!/usr/bin/env bash -cat $1 | awk '{print gensub(/(.*)=(.*)/, "set(\\1 \\2)", 1)}' > "$(dirname $1)/$(basename -s .make $1).cmake" +cat $1 | gawk '{print gensub(/(.*)=(.*)/, "set(\\1 \\2)", 1)}' > "$(dirname $1)/$(basename -s .make $1).cmake" -- cgit v1.2.3