浏览代码

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.
Andrew Kaster 4 年之前
父节点
当前提交
63956b36d0

+ 5 - 16
CMakeLists.txt

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

+ 7 - 6
Meta/Lagom/CMakeLists.txt

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

+ 2 - 0
Meta/Lagom/Tools/CMakeLists.txt

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

+ 4 - 0
Meta/Lagom/Tools/CodeGenerators/CMakeLists.txt

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

+ 0 - 0
Userland/DevTools/IPCCompiler/CMakeLists.txt → Meta/Lagom/Tools/CodeGenerators/IPCCompiler/CMakeLists.txt


+ 0 - 0
Userland/DevTools/IPCCompiler/main.cpp → Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp


+ 0 - 0
Userland/Libraries/LibUnicode/CodeGenerators/CMakeLists.txt → Meta/Lagom/Tools/CodeGenerators/LibUnicode/CMakeLists.txt


+ 0 - 0
Userland/Libraries/LibUnicode/CodeGenerators/GenerateUnicodeData.cpp → Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeData.cpp


+ 0 - 0
Userland/Libraries/LibUnicode/CodeGenerators/GenerateUnicodeLocale.cpp → Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeLocale.cpp


+ 0 - 0
Userland/Libraries/LibWeb/CodeGenerators/CMakeLists.txt → Meta/Lagom/Tools/CodeGenerators/LibWeb/CMakeLists.txt


+ 0 - 0
Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_PropertyID_cpp.cpp → Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_cpp.cpp


+ 0 - 0
Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_PropertyID_h.cpp → Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_h.cpp


+ 0 - 0
Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_ValueID_cpp.cpp → Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_ValueID_cpp.cpp


+ 0 - 0
Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_ValueID_h.cpp → Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_ValueID_h.cpp


+ 0 - 0
Userland/Libraries/LibWeb/CodeGenerators/WrapperGenerator.cpp → Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp


+ 0 - 0
Userland/DevTools/StateMachineGenerator/CMakeLists.txt → Meta/Lagom/Tools/CodeGenerators/StateMachineGenerator/CMakeLists.txt


+ 0 - 0
Userland/DevTools/StateMachineGenerator/main.cpp → Meta/Lagom/Tools/CodeGenerators/StateMachineGenerator/main.cpp


+ 0 - 0
Meta/CMake/ConfigureComponents/CMakeLists.txt → Meta/Lagom/Tools/ConfigureComponents/CMakeLists.txt


+ 0 - 0
Meta/CMake/ConfigureComponents/main.cpp → Meta/Lagom/Tools/ConfigureComponents/main.cpp