Everywhere: Move all host tools into the Lagom/Tools subdirectory

This allows us to remove all the add_subdirectory calls from the top
level CMakeLists.txt that referred to targets linking LagomCore.

Segregating the host tools and Serenity targets helps us get to a place
where the main Serenity build can simply use a CMake toolchain file
rather than swapping all the compiler/sysroot variables after building
host libraries and tools.
This commit is contained in:
Andrew Kaster 2021-08-08 01:31:23 -06:00 committed by Linus Groh
parent fb15cdcc10
commit 63956b36d0
Notes: sideshowbarker 2024-07-18 05:10:33 +09:00
19 changed files with 18 additions and 22 deletions

View file

@ -45,8 +45,6 @@ option(BUILD_LAGOM "Build parts of the system targeting the host OS for fuzzing/
option(ENABLE_KERNEL_LTO "Build the kernel with link-time optimization" OFF) option(ENABLE_KERNEL_LTO "Build the kernel with link-time optimization" OFF)
option(USE_CLANG_TOOLCHAIN "Build the kernel with the experimental Clang toolchain" OFF) option(USE_CLANG_TOOLCHAIN "Build the kernel with the experimental Clang toolchain" OFF)
include(Meta/CMake/wasm_spec_tests.cmake)
add_custom_target(run add_custom_target(run
COMMAND "${CMAKE_COMMAND}" -E env "SERENITY_ARCH=${SERENITY_ARCH}" "${SerenityOS_SOURCE_DIR}/Meta/run.sh" COMMAND "${CMAKE_COMMAND}" -E env "SERENITY_ARCH=${SERENITY_ARCH}" "${SerenityOS_SOURCE_DIR}/Meta/run.sh"
USES_TERMINAL USES_TERMINAL
@ -151,16 +149,6 @@ set(write_if_different ${CMAKE_SOURCE_DIR}/Meta/write-only-on-difference.sh)
add_subdirectory(Meta/Lagom) add_subdirectory(Meta/Lagom)
if (ENABLE_UNDEFINED_SANITIZER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
endif()
add_subdirectory(Userland/DevTools/IPCCompiler)
add_subdirectory(Userland/DevTools/StateMachineGenerator)
add_subdirectory(Userland/Libraries/LibUnicode/CodeGenerators)
add_subdirectory(Userland/Libraries/LibWeb/CodeGenerators)
add_subdirectory(Meta/CMake/ConfigureComponents)
find_program(CCACHE_PROGRAM ccache) find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM) if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
@ -318,6 +306,8 @@ endif()
add_link_options(--sysroot ${CMAKE_BINARY_DIR}/Root) add_link_options(--sysroot ${CMAKE_BINARY_DIR}/Root)
add_link_options(-Wno-unused-command-line-argument) add_link_options(-Wno-unused-command-line-argument)
include_directories(.)
include_directories(Userland/Libraries)
include_directories(Userland/Libraries/LibC) include_directories(Userland/Libraries/LibC)
include_directories(Userland/Libraries/LibCrypt) include_directories(Userland/Libraries/LibCrypt)
include_directories(Userland/Libraries/LibM) include_directories(Userland/Libraries/LibM)
@ -332,13 +322,12 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}/Userland)
# FIXME: vptr sanitizing requires.. intense ABI wrangling of std::type_info # FIXME: vptr sanitizing requires.. intense ABI wrangling of std::type_info
# And would be better served by porting ubsan_type_hash_itanium.cpp from compiler-rt # And would be better served by porting ubsan_type_hash_itanium.cpp from compiler-rt
# We don't set this along with the original fsanitize=undefined because for host tools, we can rely on
# the host's libubsan to provide the ABI-specific vptr type cache.
# This is not a problem for the Kernel, because it does not have RTTI enabled :^)
if (ENABLE_UNDEFINED_SANITIZER) if (ENABLE_UNDEFINED_SANITIZER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-sanitize=vptr") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fno-sanitize=vptr")
endif() endif()
include(Meta/CMake/wasm_spec_tests.cmake)
add_custom_target(components ALL) add_custom_target(components ALL)
option(BUILD_EVERYTHING "Build all optional components" ON) option(BUILD_EVERYTHING "Build all optional components" ON)

View file

@ -220,6 +220,12 @@ if (NOT APPLE)
target_link_libraries(LagomCore crypt) # Core::Account uses crypt() but it's not in libcrypt on macOS target_link_libraries(LagomCore crypt) # Core::Account uses crypt() but it's not in libcrypt on macOS
endif() endif()
# Code Generators and other host tools
# We need to make sure not to build code generators for Fuzzer builds, as they already have their own main.cpp
if (NOT ENABLE_OSS_FUZZ AND NOT ENABLE_FUZZER_SANITIZER)
add_subdirectory(Tools)
endif()
if (BUILD_LAGOM) if (BUILD_LAGOM)
# Lagom Libraries # Lagom Libraries
@ -364,13 +370,8 @@ if (BUILD_LAGOM)
) )
# Unicode # Unicode
# We need to make sure not to build code generators for Fuzzer builds, as they already have their own main.cpp # Don't include UnicodeData for Fuzzer builds, we didn't build the CodeGenerators
if (NOT ENABLE_OSS_FUZZ AND NOT ENABLE_FUZZER_SANITIZER) if (NOT ENABLE_OSS_FUZZ AND NOT ENABLE_FUZZER_SANITIZER)
# FIXME: Make this logic smarter in 4594
if (NOT CMAKE_SOURCE_DIR STREQUAL SERENITY_PROJECT_ROOT)
set(write_if_different ${CMAKE_CURRENT_SOURCE_DIR}/../write-only-on-difference.sh)
add_subdirectory(../../Userland/Libraries/LibUnicode/CodeGenerators ${CMAKE_CURRENT_BINARY_DIR}/LibUnicode/CodeGenerators)
endif()
include(${SERENITY_PROJECT_ROOT}/Meta/CMake/unicode_data.cmake) include(${SERENITY_PROJECT_ROOT}/Meta/CMake/unicode_data.cmake)
else() else()
set(ENABLE_UNICODE_DATABASE_DOWNLOAD OFF) set(ENABLE_UNICODE_DATABASE_DOWNLOAD OFF)

View file

@ -0,0 +1,2 @@
add_subdirectory(ConfigureComponents)
add_subdirectory(CodeGenerators)

View file

@ -0,0 +1,4 @@
add_subdirectory(IPCCompiler)
add_subdirectory(LibUnicode)
add_subdirectory(LibWeb)
add_subdirectory(StateMachineGenerator)