summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-02-28 15:36:45 -0500
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-02-28 15:36:45 -0500
commit612fd7b29cde5382fda720d76347212442ea4eec (patch)
treecbaccd60d7eb64ab9aca4c217e67be5afeba05b5
parent8edb6adb91191ef329b6044ea298d74b11c7835d (diff)
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.
-rw-r--r--CMakeLists.txt4
-rw-r--r--cmake/Kconfig.cmake6
-rw-r--r--cmake/TC-gcc11.cmake6
-rw-r--r--cmake/TC-gcc15.cmake6
-rw-r--r--configs/example2_defconfig4
-rw-r--r--configs/example_defconfig (renamed from configs/example_config)0
-rwxr-xr-xtools/make-cmake-config2
7 files changed, 25 insertions, 3 deletions
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_defconfig
index 0c34f1e..0c34f1e 100644
--- a/configs/example_config
+++ b/configs/example_defconfig
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"