diff --git a/CMakeLists.txt b/CMakeLists.txt index be81f3b081e..06ff0cd525e 100644 --- a/CMakeLists.txt +++ b/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) diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt index 5797ce98d44..331e8928e4b 100644 --- a/Meta/Lagom/CMakeLists.txt +++ b/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) diff --git a/Meta/Lagom/Tools/CMakeLists.txt b/Meta/Lagom/Tools/CMakeLists.txt new file mode 100644 index 00000000000..821c9baaa6c --- /dev/null +++ b/Meta/Lagom/Tools/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(ConfigureComponents) +add_subdirectory(CodeGenerators) diff --git a/Meta/Lagom/Tools/CodeGenerators/CMakeLists.txt b/Meta/Lagom/Tools/CodeGenerators/CMakeLists.txt new file mode 100644 index 00000000000..f5b0b364937 --- /dev/null +++ b/Meta/Lagom/Tools/CodeGenerators/CMakeLists.txt @@ -0,0 +1,4 @@ +add_subdirectory(IPCCompiler) +add_subdirectory(LibUnicode) +add_subdirectory(LibWeb) +add_subdirectory(StateMachineGenerator) diff --git a/Userland/DevTools/IPCCompiler/CMakeLists.txt b/Meta/Lagom/Tools/CodeGenerators/IPCCompiler/CMakeLists.txt similarity index 100% rename from Userland/DevTools/IPCCompiler/CMakeLists.txt rename to Meta/Lagom/Tools/CodeGenerators/IPCCompiler/CMakeLists.txt diff --git a/Userland/DevTools/IPCCompiler/main.cpp b/Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp similarity index 100% rename from Userland/DevTools/IPCCompiler/main.cpp rename to Meta/Lagom/Tools/CodeGenerators/IPCCompiler/main.cpp diff --git a/Userland/Libraries/LibUnicode/CodeGenerators/CMakeLists.txt b/Meta/Lagom/Tools/CodeGenerators/LibUnicode/CMakeLists.txt similarity index 100% rename from Userland/Libraries/LibUnicode/CodeGenerators/CMakeLists.txt rename to Meta/Lagom/Tools/CodeGenerators/LibUnicode/CMakeLists.txt diff --git a/Userland/Libraries/LibUnicode/CodeGenerators/GenerateUnicodeData.cpp b/Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeData.cpp similarity index 100% rename from Userland/Libraries/LibUnicode/CodeGenerators/GenerateUnicodeData.cpp rename to Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeData.cpp diff --git a/Userland/Libraries/LibUnicode/CodeGenerators/GenerateUnicodeLocale.cpp b/Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeLocale.cpp similarity index 100% rename from Userland/Libraries/LibUnicode/CodeGenerators/GenerateUnicodeLocale.cpp rename to Meta/Lagom/Tools/CodeGenerators/LibUnicode/GenerateUnicodeLocale.cpp diff --git a/Userland/Libraries/LibWeb/CodeGenerators/CMakeLists.txt b/Meta/Lagom/Tools/CodeGenerators/LibWeb/CMakeLists.txt similarity index 100% rename from Userland/Libraries/LibWeb/CodeGenerators/CMakeLists.txt rename to Meta/Lagom/Tools/CodeGenerators/LibWeb/CMakeLists.txt diff --git a/Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_PropertyID_cpp.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_cpp.cpp similarity index 100% rename from Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_PropertyID_cpp.cpp rename to Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_cpp.cpp diff --git a/Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_PropertyID_h.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_h.cpp similarity index 100% rename from Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_PropertyID_h.cpp rename to Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_PropertyID_h.cpp diff --git a/Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_ValueID_cpp.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_ValueID_cpp.cpp similarity index 100% rename from Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_ValueID_cpp.cpp rename to Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_ValueID_cpp.cpp diff --git a/Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_ValueID_h.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_ValueID_h.cpp similarity index 100% rename from Userland/Libraries/LibWeb/CodeGenerators/Generate_CSS_ValueID_h.cpp rename to Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_ValueID_h.cpp diff --git a/Userland/Libraries/LibWeb/CodeGenerators/WrapperGenerator.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp similarity index 100% rename from Userland/Libraries/LibWeb/CodeGenerators/WrapperGenerator.cpp rename to Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp diff --git a/Userland/DevTools/StateMachineGenerator/CMakeLists.txt b/Meta/Lagom/Tools/CodeGenerators/StateMachineGenerator/CMakeLists.txt similarity index 100% rename from Userland/DevTools/StateMachineGenerator/CMakeLists.txt rename to Meta/Lagom/Tools/CodeGenerators/StateMachineGenerator/CMakeLists.txt diff --git a/Userland/DevTools/StateMachineGenerator/main.cpp b/Meta/Lagom/Tools/CodeGenerators/StateMachineGenerator/main.cpp similarity index 100% rename from Userland/DevTools/StateMachineGenerator/main.cpp rename to Meta/Lagom/Tools/CodeGenerators/StateMachineGenerator/main.cpp diff --git a/Meta/CMake/ConfigureComponents/CMakeLists.txt b/Meta/Lagom/Tools/ConfigureComponents/CMakeLists.txt similarity index 100% rename from Meta/CMake/ConfigureComponents/CMakeLists.txt rename to Meta/Lagom/Tools/ConfigureComponents/CMakeLists.txt diff --git a/Meta/CMake/ConfigureComponents/main.cpp b/Meta/Lagom/Tools/ConfigureComponents/main.cpp similarity index 100% rename from Meta/CMake/ConfigureComponents/main.cpp rename to Meta/Lagom/Tools/ConfigureComponents/main.cpp