From f464ae84ce5b1acd355a43b37156fcab476ac3e7 Mon Sep 17 00:00:00 2001 From: Itamar Date: Fri, 7 Jan 2022 16:31:48 +0200 Subject: [PATCH] CMake: Add HACKSTUDIO_BUILD option for building from Hack Studio If this option is set, we will not build all components. Instead, we include an external CMake file passed in via a variable named HACKSTUDIO_BUILD_CMAKE_FILE. This will be used to build serenity components from Hack Studio. --- CMakeLists.txt | 35 ++++++++++++++++++++++----------- Meta/CMake/common_options.cmake | 2 ++ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 728b1d69edd..db125297306 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,13 +47,17 @@ if(CCACHE_PROGRAM) set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}" CACHE FILEPATH "Path to a compiler launcher program, e.g. ccache") endif() -# FIXME: With cmake 3.18, we can change unzip/untar steps to use -# file(ARCHIVE_EXTRACT) instead -find_program(UNZIP unzip REQUIRED) -find_program(TAR tar REQUIRED) +if (NOT HACKSTUDIO_BUILD) -# Host tools, required to generate files for the build -find_package(Lagom CONFIG REQUIRED) + # FIXME: With cmake 3.18, we can change unzip/untar steps to use + # file( ARCHIVE_EXTRACT) instead + find_program(UNZIP unzip REQUIRED) + find_program(TAR tar REQUIRED) + + # Host tools, required to generate files for the build + find_package(Lagom CONFIG REQUIRED) + +endif() # Meta target to run all code-gen steps in the build. add_custom_target(all_generated) @@ -109,11 +113,15 @@ add_custom_target(install-ports USES_TERMINAL ) -add_custom_target(configure-components - COMMAND "$" - USES_TERMINAL -) -add_dependencies(configure-components Lagom::ConfigureComponents) +if (NOT HACKSTUDIO_BUILD) + + add_custom_target(configure-components + COMMAND "$" + USES_TERMINAL + ) + add_dependencies(configure-components Lagom::ConfigureComponents) + +endif() set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -251,6 +259,11 @@ serenity_component( RECOMMENDED ) +if (HACKSTUDIO_BUILD) + include(${HACKSTUDIO_BUILD_CMAKE_FILE}) + return() +endif() + add_subdirectory(AK) add_subdirectory(Kernel) if(NOT "${SERENITY_ARCH}" STREQUAL "aarch64") diff --git a/Meta/CMake/common_options.cmake b/Meta/CMake/common_options.cmake index 3a1f9ef409a..eb516be7fc9 100644 --- a/Meta/CMake/common_options.cmake +++ b/Meta/CMake/common_options.cmake @@ -12,3 +12,5 @@ serenity_option(ENABLE_COMPILETIME_HEADER_CHECK OFF CACHE BOOL "Enable compileti serenity_option(ENABLE_TIME_ZONE_DATABASE_DOWNLOAD ON CACHE BOOL "Enable download of the IANA Time Zone Database at build time") serenity_option(ENABLE_UNICODE_DATABASE_DOWNLOAD ON CACHE BOOL "Enable download of Unicode UCD and CLDR files at build time") serenity_option(INCLUDE_WASM_SPEC_TESTS OFF CACHE BOOL "Download and include the WebAssembly spec testsuite") + +serenity_option(HACKSTUDIO_BUILD OFF CACHE BOOL "Automatically enabled when building from HackStudio")