mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
Meta: Add LibUnicode (and its tests) to Lagom
This is primarily to allow using LibUnicode within LibJS and its REPL. Note: this seems to be the first time that a Lagom dependency requires generated source files. For this to work, some of Lagom's CMakeLists.txt commands needed to be re-organized to include the CMake files that fetch and parse UnicodeData.txt. The paths required to invoke the generator also differ depending on what is currently building (SerenityOS vs. Lagom as part of the Serenity build vs. a standalone Lagom build).
This commit is contained in:
parent
4dda3edc9e
commit
98d8274040
Notes:
sideshowbarker
2024-07-18 08:18:37 +09:00
Author: https://github.com/trflynn89 Commit: https://github.com/SerenityOS/serenity/commit/98d8274040c Pull-request: https://github.com/SerenityOS/serenity/pull/9004 Reviewed-by: https://github.com/linusg ✅
3 changed files with 47 additions and 7 deletions
|
@ -134,6 +134,8 @@ include_directories(Userland/Libraries)
|
|||
include_directories(.)
|
||||
include_directories(${CMAKE_BINARY_DIR})
|
||||
|
||||
set(write_if_different ${CMAKE_SOURCE_DIR}/Meta/write-only-on-difference.sh)
|
||||
|
||||
add_subdirectory(Meta/Lagom)
|
||||
|
||||
if (ENABLE_UNDEFINED_SANITIZER)
|
||||
|
@ -146,8 +148,6 @@ add_subdirectory(Userland/Libraries/LibUnicode/CodeGenerators)
|
|||
add_subdirectory(Userland/Libraries/LibWeb/CodeGenerators)
|
||||
add_subdirectory(Meta/CMake/ConfigureComponents)
|
||||
|
||||
set(write_if_different ${CMAKE_SOURCE_DIR}/Meta/write-only-on-difference.sh)
|
||||
|
||||
find_program(CCACHE_PROGRAM ccache)
|
||||
if(CCACHE_PROGRAM)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
cmake_minimum_required (VERSION 3.0)
|
||||
project (Lagom)
|
||||
|
||||
# This is required for CMake (when invoked for a Lagom-only build) to
|
||||
# ignore any files downloading during the build, e.g. UnicodeData.txt.
|
||||
# https://cmake.org/cmake/help/latest/policy/CMP0058.html
|
||||
cmake_policy(SET CMP0058 NEW)
|
||||
|
||||
include(../CMake/wasm_spec_tests.cmake)
|
||||
|
||||
if (NOT ENABLE_OSS_FUZZ)
|
||||
|
@ -46,6 +51,21 @@ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
|||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||
|
||||
include_directories(../../)
|
||||
include_directories(../../Userland/)
|
||||
include_directories(../../Userland/Libraries/)
|
||||
include_directories(${CMAKE_BINARY_DIR})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
if (BUILD_LAGOM AND NOT ENABLE_OSS_FUZZ AND NOT ENABLE_FUZZER_SANITIZER)
|
||||
if (CMAKE_SOURCE_DIR MATCHES ".*/Lagom")
|
||||
set(write_if_different ${CMAKE_SOURCE_DIR}/../write-only-on-difference.sh)
|
||||
add_subdirectory(../../Userland/Libraries/LibUnicode/CodeGenerators ${CMAKE_CURRENT_BINARY_DIR}/LibUnicode/CodeGenerators)
|
||||
endif()
|
||||
|
||||
include(../../Userland/Libraries/LibUnicode/unicode_data.cmake)
|
||||
endif()
|
||||
|
||||
file(GLOB AK_SOURCES CONFIGURE_DEPENDS "../../AK/*.cpp")
|
||||
file(GLOB AK_TEST_SOURCES CONFIGURE_DEPENDS "../../Tests/AK/*.cpp")
|
||||
file(GLOB LIBARCHIVE_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibArchive/*.cpp")
|
||||
|
@ -92,10 +112,13 @@ list(FILTER LIBTEST_SOURCES EXCLUDE REGEX ".*Main.cpp$")
|
|||
file(GLOB LIBTEST_MAIN CONFIGURE_DEPENDS "../../Userland/Libraries/LibTest/TestMain.cpp")
|
||||
file(GLOB LIBCRYPTO_TESTS CONFIGURE_DEPENDS "../../Tests/LibCrypto/*.cpp")
|
||||
file(GLOB LIBTLS_TESTS CONFIGURE_DEPENDS "../../Tests/LibTLS/*.cpp")
|
||||
file(GLOB LIBUNICODE_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibUnicode/*.cpp")
|
||||
set(LIBUNICODE_SOURCES ${LIBUNICODE_SOURCES} ${UNICODE_DATA_SOURCES})
|
||||
file(GLOB LIBUNICODE_TEST_SOURCES CONFIGURE_DEPENDS "../../Tests/LibUnicode/*.cpp")
|
||||
|
||||
set(LAGOM_REGEX_SOURCES ${LIBREGEX_LIBC_SOURCES} ${LIBREGEX_SOURCES})
|
||||
set(LAGOM_CORE_SOURCES ${AK_SOURCES} ${LIBCORE_SOURCES})
|
||||
set(LAGOM_MORE_SOURCES ${LIBARCHIVE_SOURCES} ${LIBAUDIO_SOURCES} ${LIBELF_SOURCES} ${LIBIPC_SOURCES} ${LIBLINE_SOURCES} ${LIBJS_SOURCES} ${LIBJS_SUBDIR_SOURCES} ${LIBJS_SUBSUBDIR_SOURCES} ${LIBX86_SOURCES} ${LIBCRYPTO_SOURCES} ${LIBCOMPRESS_SOURCES} ${LIBCRYPTO_SUBDIR_SOURCES} ${LIBCRYPTO_SUBSUBDIR_SOURCES} ${LIBTLS_SOURCES} ${LIBTTF_SOURCES} ${LIBTEXTCODEC_SOURCES} ${LIBMARKDOWN_SOURCES} ${LIBGEMINI_SOURCES} ${LIBGFX_SOURCES} ${LIBGUI_GML_SOURCES} ${LIBHTTP_SOURCES} ${LAGOM_REGEX_SOURCES} ${SHELL_SOURCES} ${LIBSQL_SOURCES} ${LIBWASM_SOURCES} ${LIBIMAP_SOURCES})
|
||||
set(LAGOM_MORE_SOURCES ${LIBARCHIVE_SOURCES} ${LIBAUDIO_SOURCES} ${LIBELF_SOURCES} ${LIBIPC_SOURCES} ${LIBLINE_SOURCES} ${LIBJS_SOURCES} ${LIBJS_SUBDIR_SOURCES} ${LIBJS_SUBSUBDIR_SOURCES} ${LIBX86_SOURCES} ${LIBCRYPTO_SOURCES} ${LIBCOMPRESS_SOURCES} ${LIBCRYPTO_SUBDIR_SOURCES} ${LIBCRYPTO_SUBSUBDIR_SOURCES} ${LIBTLS_SOURCES} ${LIBTTF_SOURCES} ${LIBTEXTCODEC_SOURCES} ${LIBMARKDOWN_SOURCES} ${LIBGEMINI_SOURCES} ${LIBGFX_SOURCES} ${LIBGUI_GML_SOURCES} ${LIBHTTP_SOURCES} ${LAGOM_REGEX_SOURCES} ${SHELL_SOURCES} ${LIBSQL_SOURCES} ${LIBWASM_SOURCES} ${LIBIMAP_SOURCES} ${LIBUNICODE_SOURCES})
|
||||
set(LAGOM_TEST_SOURCES ${LIBTEST_SOURCES})
|
||||
|
||||
# FIXME: This is a hack, because the lagom stuff can be build individually or
|
||||
|
@ -104,10 +127,6 @@ set(LAGOM_TEST_SOURCES ${LIBTEST_SOURCES})
|
|||
configure_file(../../AK/Debug.h.in AK/Debug.h @ONLY)
|
||||
configure_file(../../Kernel/Debug.h.in Kernel/Debug.h @ONLY)
|
||||
|
||||
include_directories(../../)
|
||||
include_directories(../../Userland/)
|
||||
include_directories(../../Userland/Libraries/)
|
||||
include_directories(${CMAKE_BINARY_DIR})
|
||||
add_library(LagomCore ${LAGOM_CORE_SOURCES})
|
||||
find_package(Threads REQUIRED)
|
||||
target_link_libraries(LagomCore Threads::Threads)
|
||||
|
@ -293,6 +312,17 @@ if (BUILD_LAGOM)
|
|||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
endforeach()
|
||||
|
||||
foreach(source ${LIBUNICODE_TEST_SOURCES})
|
||||
get_filename_component(name ${source} NAME_WE)
|
||||
add_executable(${name}_lagom ${source} ${LIBUNICODE_SOURCES} ${LIBTEST_MAIN})
|
||||
target_link_libraries(${name}_lagom LagomTest)
|
||||
add_test(
|
||||
NAME ${name}_lagom
|
||||
COMMAND ${name}_lagom
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
install(TARGETS Lagom LagomCore)
|
||||
|
|
|
@ -13,6 +13,16 @@ if (ENABLE_UNICODE_DATABASE_DOWNLOAD)
|
|||
set(UNICODE_DATA_HEADER UnicodeData.h)
|
||||
set(UNICODE_DATA_IMPLEMENTATION UnicodeData.cpp)
|
||||
|
||||
if (CMAKE_SOURCE_DIR MATCHES ".*/Lagom") # Lagom-only build.
|
||||
set(UNICODE_GENERATOR LibUnicode/CodeGenerators/GenerateUnicodeData)
|
||||
set(UNICODE_DATA_HEADER LibUnicode/UnicodeData.h)
|
||||
set(UNICODE_DATA_IMPLEMENTATION LibUnicode/UnicodeData.cpp)
|
||||
elseif (CMAKE_CURRENT_BINARY_DIR MATCHES ".*/Lagom") # Lagom build within the main SerenityOS build.
|
||||
set(UNICODE_GENERATOR ../../Userland/Libraries/LibUnicode/CodeGenerators/GenerateUnicodeData)
|
||||
set(UNICODE_DATA_HEADER LibUnicode/UnicodeData.h)
|
||||
set(UNICODE_DATA_IMPLEMENTATION LibUnicode/UnicodeData.cpp)
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${UNICODE_DATA_HEADER}
|
||||
COMMAND ${write_if_different} ${UNICODE_DATA_HEADER} ${UNICODE_GENERATOR} -h -u ${UNICODE_DATA_PATH}
|
||||
|
|
Loading…
Reference in a new issue