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.
This commit is contained in:
Itamar 2022-01-07 16:31:48 +02:00 committed by Andreas Kling
parent afb4c447b4
commit f464ae84ce
Notes: sideshowbarker 2024-07-17 21:04:46 +09:00
2 changed files with 26 additions and 11 deletions

View file

@ -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 "$<TARGET_FILE:Lagom::ConfigureComponents>"
USES_TERMINAL
)
add_dependencies(configure-components Lagom::ConfigureComponents)
if (NOT HACKSTUDIO_BUILD)
add_custom_target(configure-components
COMMAND "$<TARGET_FILE:Lagom::ConfigureComponents>"
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")

View file

@ -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")