summaryrefslogtreecommitdiff
path: root/Meta/CMake/utils.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'Meta/CMake/utils.cmake')
-rw-r--r--Meta/CMake/utils.cmake83
1 files changed, 3 insertions, 80 deletions
diff --git a/Meta/CMake/utils.cmake b/Meta/CMake/utils.cmake
index 9243304f71..e2a88b2375 100644
--- a/Meta/CMake/utils.cmake
+++ b/Meta/CMake/utils.cmake
@@ -1,3 +1,6 @@
+
+include(${CMAKE_CURRENT_LIST_DIR}/serenity_components.cmake)
+
function(serenity_install_headers target_name)
file(GLOB_RECURSE headers RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.h")
foreach(header ${headers})
@@ -134,86 +137,6 @@ function(serenity_app target_name)
endif()
endfunction()
-define_property(TARGET PROPERTY SERENITY_COMPONENT_NAME BRIEF_DOCS "SerenityOS component name" FULL_DOCS "-")
-define_property(TARGET PROPERTY SERENITY_COMPONENT_DESCRIPTION BRIEF_DOCS "SerenityOS component description" FULL_DOCS "-")
-define_property(TARGET PROPERTY SERENITY_COMPONENT_RECOMMENDED BRIEF_DOCS "SerenityOS component recommended (flag)" FULL_DOCS "-")
-define_property(TARGET PROPERTY SERENITY_COMPONENT_REQUIRED BRIEF_DOCS "SerenityOS component required (flag)" FULL_DOCS "-")
-define_property(TARGET PROPERTY SERENITY_COMPONENT_DEPENDS BRIEF_DOCS "SerenityOS component dependencies" FULL_DOCS "-")
-
-function(serenity_component name)
- cmake_parse_arguments(SERENITY_COMPONENT "RECOMMENDED;REQUIRED" "DESCRIPTION" "TARGETS;DEPENDS" ${ARGN})
- string(TOUPPER "${name}" NAME_UPPER)
- option("BUILD_${NAME_UPPER}" "Build ${name}" ${SERENITY_COMPONENT_RECOMMENDED})
- add_custom_target("Component${name}")
- set_property(TARGET "Component${name}" PROPERTY SERENITY_COMPONENT_NAME ${name})
- set_property(TARGET "Component${name}" PROPERTY SERENITY_COMPONENT_DESCRIPTION ${SERENITY_COMPONENT_DESCRIPTION})
- set_property(TARGET "Component${name}" PROPERTY SERENITY_COMPONENT_RECOMMENDED ${SERENITY_COMPONENT_RECOMMENDED})
- set_property(TARGET "Component${name}" PROPERTY SERENITY_COMPONENT_REQUIRED ${SERENITY_COMPONENT_REQUIRED})
- set_property(TARGET "Component${name}" PROPERTY SERENITY_COMPONENT_DEPENDS ${SERENITY_COMPONENT_DEPENDS})
- if(NOT "${SERENITY_COMPONENT_TARGETS}" STREQUAL "")
- foreach(target IN LISTS SERENITY_COMPONENT_TARGETS)
- add_dependencies("Component${name}" "${target}")
- endforeach()
- endif()
- if(BUILD_EVERYTHING OR BUILD_${NAME_UPPER} OR SERENITY_COMPONENT_REQUIRED)
- add_dependencies(components "Component${name}")
- endif()
- foreach(dependency ${SERENITY_COMPONENT_DEPENDS})
- add_dependencies("Component${name}" "Component${dependency}")
- endforeach()
-endfunction()
-
-macro(export_components_helper file_name current_dir)
- get_property(sub_dirs DIRECTORY ${current_dir} PROPERTY SUBDIRECTORIES)
- foreach(sub_dir ${sub_dirs})
- export_components_helper(${file_name} ${sub_dir})
- endforeach()
-
- get_property(targets DIRECTORY ${current_dir} PROPERTY BUILDSYSTEM_TARGETS)
- foreach(target ${targets})
- get_property(component_name TARGET ${target} PROPERTY SERENITY_COMPONENT_NAME)
- if(NOT "${component_name}" STREQUAL "")
- get_property(component_name TARGET ${target} PROPERTY SERENITY_COMPONENT_NAME)
- get_property(component_description TARGET ${target} PROPERTY SERENITY_COMPONENT_DESCRIPTION)
- get_property(component_recommended TARGET ${target} PROPERTY SERENITY_COMPONENT_RECOMMENDED)
- get_property(component_required TARGET ${target} PROPERTY SERENITY_COMPONENT_REQUIRED)
- get_property(component_depends TARGET ${target} PROPERTY SERENITY_COMPONENT_DEPENDS)
- file(APPEND ${file_name} "[${component_name}]\n")
- file(APPEND ${file_name} "description=${component_description}\n")
- if(component_recommended)
- file(APPEND ${file_name} "recommended=1\n")
- else()
- file(APPEND ${file_name} "recommended=0\n")
- endif()
- if(component_required)
- file(APPEND ${file_name} "required=1\n")
- else()
- file(APPEND ${file_name} "required=0\n")
- endif()
- string(TOUPPER "${component_name}" component_name_upper)
- if(BUILD_${component_name_upper})
- file(APPEND ${file_name} "user_selected=1\n")
- else()
- file(APPEND ${file_name} "user_selected=0\n")
- endif()
-
- file(APPEND ${file_name} "depends=${component_depends}\n")
- file(APPEND ${file_name} "\n")
- endif()
- endforeach()
-endmacro()
-
-function(export_components file_name)
- file(WRITE ${file_name} "[Global]\n")
- if(BUILD_EVERYTHING)
- file(APPEND ${file_name} "build_everything=1\n")
- else()
- file(APPEND ${file_name} "build_everything=0\n")
- endif()
- file(APPEND ${file_name} "\n")
- export_components_helper(${file_name} ${CMAKE_CURRENT_SOURCE_DIR})
-endfunction()
-
function(compile_gml source output string_name)
set(source ${CMAKE_CURRENT_SOURCE_DIR}/${source})
add_custom_command(