summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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"