summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt18
-rw-r--r--cmake/module/feature.cmake28
-rw-r--r--cmake/module/metadata.cmake8
-rw-r--r--cmake/module/runfile.cmake8
4 files changed, 39 insertions, 23 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4a6d701..0fa2c03 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -58,7 +58,9 @@ list(APPEND CMAKE_MODULE_PATH
"${ObjectiveProject_SOURCE_DIR}/cmake/module"
)
+include(feature)
include(metadata)
+include(runfile)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -137,17 +139,5 @@ target_link_libraries(Objective PRIVATE
# Set cxx linker options
target_link_libraries(Objective PRIVATE CXX_LINKER_REQUIREMENTS)
-# Targets to show output of generator expression
-add_custom_target(options
- COMMENT "Toolset passed options"
- COMMAND ${CMAKE_COMMAND} -E echo
- "CXX compiler options: "
- "$<JOIN:$<TARGET_PROPERTY:CXX_COMPILER_REQUIREMENTS,INTERFACE_COMPILE_OPTIONS>, >"
- COMMAND ${CMAKE_COMMAND} -E echo
- "NASM compiler options: "
- "$<JOIN:$<TARGET_PROPERTY:ASM_NASM_COMPILER_REQUIREMENTS,INTERFACE_COMPILE_OPTIONS>, >"
- COMMAND ${CMAKE_COMMAND} -E echo
- "Linker options: "
- "$<JOIN:$<TARGET_PROPERTY:CXX_LINKER_REQUIREMENTS,INTERFACE_LINK_OPTIONS>, >"
- VERBATIM
-)
+outFeaturesToFile()
+writerunfile()
diff --git a/cmake/module/feature.cmake b/cmake/module/feature.cmake
index d350227..193df46 100644
--- a/cmake/module/feature.cmake
+++ b/cmake/module/feature.cmake
@@ -174,12 +174,29 @@ endfunction()
# <FEATURE_PROPERTY> = "<VARIABLE>"
]]
function(outFeaturesToFile)
+ get_directory_property(cacheVars CACHE_VARIABLES)
get_property(FEATURES_LIST GLOBAL PROPERTY FEATURES_LIST)
set(OUT_FILE "${CMAKE_BINARY_DIR}/${FEATURE_OUT_FILE}")
file(WRITE "${OUT_FILE}"
"# This file contains list of kernel configurable objects\n\n")
+ file(APPEND "${OUT_FILE}" "# Toolset variables\n")
+ if("CMAKE_TOOLCHAIN_FILE" IN_LIST cacheVars
+ AND NOT "${CMAKE_TOOLCHAIN_FILE}" STREQUAL "")
+ cmake_path(GET CMAKE_TOOLCHAIN_FILE FILENAME TOOLCHAIN_FILE_NAME)
+ file(APPEND "${OUT_FILE}"
+ " -DCMAKE_TOOLCHAIN_FILE="
+ "${ObjectiveProject_SOURCE_DIR}/cmake/toolchain/${TOOLCHAIN_FILE_NAME}")
+ else()
+ cmake_path(GET CMAKE_CXX_COMPILER FILENAME CXX_COMPILER_EXECUTABLE)
+ file(APPEND "${OUT_FILE}"
+ "CMAKE_CXX_COMPILER = \"${CXX_COMPILER_EXECUTABLE}\"\n")
+ file(APPEND "${OUT_FILE}"
+ "ObjectiveProject_ARCHITECTURE = "
+ "\"${ObjectiveProject_ARCHITECTURE}\"\n")
+ endif()
+ file(APPEND "${OUT_FILE}" "\n\n")
foreach(feature IN LISTS FEATURES_LIST)
get_property(FEATURE_DEPENDENCIES TARGET ${feature} PROPERTY
FEATURE_DEPENDENCIES)
@@ -194,7 +211,16 @@ function(outFeaturesToFile)
"FEATURE_${feature}_${FIELD_NAME} = \"${FEATURE_${FIELD_NAME}}\"\n")
endforeach()
+ # Check if feature is enable, and push them to file
+ if("FEATURE_${feature}" IN_LIST cacheVars
+ AND NOT "${FEATURE_${feature}}" STREQUAL "")
+ file(APPEND "${OUT_FILE}"
+ "FEATURE_${feature}_IS_ENABLING = "
+ "\"TRUE\"\n")
+ endif()
+
file(APPEND "${OUT_FILE}"
- "FEATURE_${feature}_${FIELD_NAME} = \"${FEATURE_DEPENDENCIES}\"\n\n\n")
+ "FEATURE_${feature}_DEPENDENCIES = \"${FEATURE_DEPENDENCIES}\"\n\n\n")
+
endforeach()
endfunction()
diff --git a/cmake/module/metadata.cmake b/cmake/module/metadata.cmake
index 00f7ad4..de3a65f 100644
--- a/cmake/module/metadata.cmake
+++ b/cmake/module/metadata.cmake
@@ -17,10 +17,10 @@
]]
# FIX: get elements from ObjectiveProject_ROOT/arch directory
-set(OBJECTIVE_SUPPORTED_PROCESSORS x86;arm CACHE STRING "Supported
-processors by Objective kernel")
+set(OBJECTIVE_SUPPORTED_PROCESSORS x86;arm CACHE STRING
+ "Supported processors by Objective kernel")
# FIX: get apps from docs
-set(OBJECTIVE_SUPPORTED_ISO_CREATION_APPS grub-mkrescue CACHE STRING "Supported
-apps to create an ISO image")
+set(OBJECTIVE_SUPPORTED_ISO_CREATION_APPS grub-mkrescue CACHE STRING
+ "Supported apps to create an ISO image")
diff --git a/cmake/module/runfile.cmake b/cmake/module/runfile.cmake
index af196aa..f9d1640 100644
--- a/cmake/module/runfile.cmake
+++ b/cmake/module/runfile.cmake
@@ -24,25 +24,25 @@ macro(parseFeatures vars outfile)
endmacro()
macro(parseToolset vars outfile)
+ convertCacheVarIntoArg(CMAKE_BUILD_TYPE ${vars} ${outfile})
if("CMAKE_TOOLCHAIN_FILE" IN_LIST ${vars} AND NOT ${CMAKE_TOOLCHAIN_FILE})
cmake_path(GET CMAKE_TOOLCHAIN_FILE FILENAME TOOLCHAIN_FILE_NAME)
file(APPEND ${${outfile}}
" -DCMAKE_TOOLCHAIN_FILE="
"${ObjectiveProject_SOURCE_DIR}/cmake/toolchain/${TOOLCHAIN_FILE_NAME}")
else()
- # If toolchain file isn't specifies, there are three things to pass
- # in cmake: architecture, c++ compiler and build type
+ # If toolchain file isn't specifies, there are two things to pass
+ # in cmake: architecture and c++ compiler
convertCacheVarIntoArg(ObjectiveProject_ARCHITECTURE ${vars} ${outfile})
cmake_path(GET CMAKE_CXX_COMPILER FILENAME COMPILER_EXECUTABLE)
if(NOT "${COMPILER_EXECUTABLE}" STREQUAL "")
file(APPEND ${${outfile}}
" -DCMAKE_CXX_COMPILER=${COMPILER_EXECUTABLE}")
endif()
- convertCacheVarIntoArg(CMAKE_BUILD_TYPE ${vars} ${outfile})
endif()
endmacro()
-function(confwrite)
+function(writerunfile)
set(OUT_FILE "${CMAKE_BINARY_DIR}/${CONFFILE_NAME}")
get_directory_property(cacheVars CACHE_VARIABLES)