Skip to content

Commit

Permalink
Everywhere: Move all host tools into the Lagom/Tools subdirectory
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
ADKaster authored and linusg committed Aug 28, 2021
1 parent fb15cdc commit 63956b3
Show file tree
Hide file tree
Showing 19 changed files with 18 additions and 22 deletions.
21 changes: 5 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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(USE_CLANG_TOOLCHAIN "Build the kernel with the experimental Clang toolchain" OFF)

include(Meta/CMake/wasm_spec_tests.cmake)

add_custom_target(run
COMMAND "${CMAKE_COMMAND}" -E env "SERENITY_ARCH=${SERENITY_ARCH}" "${SerenityOS_SOURCE_DIR}/Meta/run.sh"
USES_TERMINAL
Expand Down Expand Up @@ -151,16 +149,6 @@ set(write_if_different ${CMAKE_SOURCE_DIR}/Meta/write-only-on-difference.sh)

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)
if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
Expand Down Expand Up @@ -318,6 +306,8 @@ endif()
add_link_options(--sysroot ${CMAKE_BINARY_DIR}/Root)
add_link_options(-Wno-unused-command-line-argument)

include_directories(.)
include_directories(Userland/Libraries)
include_directories(Userland/Libraries/LibC)
include_directories(Userland/Libraries/LibCrypt)
include_directories(Userland/Libraries/LibM)
Expand All @@ -332,13 +322,12 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}/Userland)

# 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
# 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)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-sanitize=vptr")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fno-sanitize=vptr")
endif()

include(Meta/CMake/wasm_spec_tests.cmake)

add_custom_target(components ALL)
option(BUILD_EVERYTHING "Build all optional components" ON)

Expand Down
13 changes: 7 additions & 6 deletions Meta/Lagom/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,12 @@ if (NOT APPLE)
target_link_libraries(LagomCore crypt) # Core::Account uses crypt() but it's not in libcrypt on macOS
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)
# Lagom Libraries

Expand Down Expand Up @@ -364,13 +370,8 @@ if (BUILD_LAGOM)
)

# 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)
# 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)
else()
set(ENABLE_UNICODE_DATABASE_DOWNLOAD OFF)
Expand Down
2 changes: 2 additions & 0 deletions Meta/Lagom/Tools/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
add_subdirectory(ConfigureComponents)
add_subdirectory(CodeGenerators)
4 changes: 4 additions & 0 deletions Meta/Lagom/Tools/CodeGenerators/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
add_subdirectory(IPCCompiler)
add_subdirectory(LibUnicode)
add_subdirectory(LibWeb)
add_subdirectory(StateMachineGenerator)
File renamed without changes.
File renamed without changes.

0 comments on commit 63956b3

Please sign in to comment.