diff --git a/Libraries/LibGC/CMakeLists.txt b/Libraries/LibGC/CMakeLists.txt index f50b953ebe..65259fe8e6 100644 --- a/Libraries/LibGC/CMakeLists.txt +++ b/Libraries/LibGC/CMakeLists.txt @@ -20,6 +20,6 @@ if(cpptrace_FOUND AND LADYBIRD_ENABLE_CPPTRACE) target_compile_definitions(LibGC PRIVATE LIBGC_HAS_CPPTRACE=1) endif() -# TODO: Use lagom_generate_export_header and annotate entire LibGC with export macros +# TODO: Use ladybird_generate_export_header and annotate entire LibGC with export macros include(GenerateExportHeader) generate_export_header(LibGC EXPORT_MACRO_NAME GC_API EXPORT_FILE_NAME "Export.h") diff --git a/Libraries/LibTest/CMakeLists.txt b/Libraries/LibTest/CMakeLists.txt index b9552be5c8..400b41d7f6 100644 --- a/Libraries/LibTest/CMakeLists.txt +++ b/Libraries/LibTest/CMakeLists.txt @@ -8,6 +8,6 @@ set(SOURCES ) add_library(LibTest ${SOURCES}) -lagom_generate_export_header(LibTest test) +ladybird_generate_export_header(LibTest test) target_link_libraries(LibTest PRIVATE AK LibCore LibFileSystem) set_target_properties(LibTest PROPERTIES OUTPUT_NAME lagom-test) diff --git a/Meta/CMake/targets.cmake b/Meta/CMake/targets.cmake index 8a0f1d45f4..f7495ba210 100644 --- a/Meta/CMake/targets.cmake +++ b/Meta/CMake/targets.cmake @@ -1,6 +1,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/utils.cmake) -function(lagom_generate_export_header name fs_name) +function(ladybird_generate_export_header name fs_name) # Temporary helper to allow libraries to opt-in to using X_API macros # to export symbols required by external consumers. This allows the codebase # to gradually slowly migrate instead of an all-or-nothing approach. @@ -18,7 +18,7 @@ function(lagom_generate_export_header name fs_name) generate_export_header(${name} EXPORT_MACRO_NAME ${fs_name_upper}_API EXPORT_FILE_NAME "Export.h") endfunction() -function(lagom_generate_dsym target_name) +function(ladybird_generate_dsym target_name) if (APPLE AND LADYBIRD_GENERATE_DSYM) add_custom_command(TARGET ${target_name} POST_BUILD COMMAND dsymutil -o "$.dSYM" "$" @@ -27,7 +27,7 @@ function(lagom_generate_dsym target_name) endif() endfunction() -function(lagom_copy_runtime_dlls target_name) +function(ladybird_copy_runtime_dlls target_name) if (WIN32 AND BUILD_SHARED_LIBS) add_custom_command(TARGET ${target_name} POST_BUILD COMMAND ${CMAKE_COMMAND} @@ -41,7 +41,7 @@ endfunction() # https://learn.microsoft.com/en-us/cpp/build/reference/subsystem-specify-subsystem?view=msvc-170 # Add /SUBSYSTEM:WINDOWS linker flag and defines the default WinMain. This makes the executable target not launch with a console -function(lagom_subsystem_windows target_name) +function(ladybird_subsystem_windows target_name) if(WIN32) set_target_properties(${target_name} PROPERTIES WIN32_EXECUTABLE TRUE @@ -50,11 +50,11 @@ function(lagom_subsystem_windows target_name) endif() endfunction() -function(lagom_windows_bin target_name) +function(ladybird_windows_bin target_name) cmake_parse_arguments(LAGOM_WINDOWS_BIN "CONSOLE" "" "" ${ARGN}) - lagom_copy_runtime_dlls(${target_name}) + ladybird_copy_runtime_dlls(${target_name}) if (NOT LAGOM_WINDOWS_BIN_CONSOLE) - lagom_subsystem_windows(${target_name}) + ladybird_subsystem_windows(${target_name}) else() set_target_properties(${target_name} PROPERTIES WIN32_EXECUTABLE FALSE @@ -62,114 +62,12 @@ function(lagom_windows_bin target_name) endif() endfunction() -function(lagom_lib target_name fs_name) - cmake_parse_arguments(LAGOM_LIBRARY "EXPLICIT_SYMBOL_EXPORT" "LIBRARY_TYPE" "SOURCES;LIBS" ${ARGN}) - string(REPLACE "Lib" "" library ${target_name}) - if (NOT LAGOM_LIBRARY_LIBRARY_TYPE) - set(LAGOM_LIBRARY_LIBRARY_TYPE "") - endif() - add_library(${target_name} ${LAGOM_LIBRARY_LIBRARY_TYPE} ${LAGOM_LIBRARY_SOURCES}) - set_target_properties( - ${target_name} PROPERTIES - VERSION "${PROJECT_VERSION}" - SOVERSION "${PROJECT_VERSION_MAJOR}" - EXPORT_NAME ${library} - OUTPUT_NAME lagom-${fs_name} - ) - target_link_libraries(${target_name} PRIVATE ${LAGOM_LIBRARY_LIBS}) - target_link_libraries(${target_name} PUBLIC GenericClangPlugin) - - if (NOT "${target_name}" STREQUAL "AK") - target_link_libraries(${target_name} PRIVATE AK) - endif() - - if (WIN32) - target_include_directories(${target_name} PRIVATE ${PTHREAD_INCLUDE_DIR}) - target_link_libraries(${target_name} PRIVATE ${PTHREAD_LIBRARY}) - - target_include_directories(${target_name} PRIVATE ${MMAN_INCLUDE_DIR}) - target_link_libraries(${target_name} PRIVATE ${MMAN_LIBRARY}) - endif() - - if (NOT LAGOM_LIBRARY_LIBRARY_TYPE STREQUAL "STATIC") - lagom_generate_dsym(${target_name}) - endif() - - # FIXME: Clean these up so that we don't need so many include dirs - if (ENABLE_INSTALL_HEADERS) - target_include_directories(${target_name} INTERFACE - $ - $ - $ - ) - endif() - add_lagom_library_install_rules(${target_name} ALIAS_NAME ${library}) - if (ENABLE_INSTALL_HEADERS) - install( - DIRECTORY "${LADYBIRD_SOURCE_DIR}/Libraries/Lib${library}" - COMPONENT Lagom_Development - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - FILES_MATCHING PATTERN "*.h" - ) - endif() - ladybird_generated_sources(${target_name}) - if (LAGOM_LIBRARY_EXPLICIT_SYMBOL_EXPORT) - lagom_generate_export_header(${target_name} ${fs_name}) - endif() -endfunction() - -function(lagom_test source) - cmake_parse_arguments(PARSE_ARGV 1 LAGOM_TEST "" "CUSTOM_MAIN;NAME;WORKING_DIRECTORY" "LIBS") - if (NOT LAGOM_TEST_NAME) - get_filename_component(LAGOM_TEST_NAME ${source} NAME_WE) - endif() - if (NOT LAGOM_TEST_CUSTOM_MAIN) - set(LAGOM_TEST_CUSTOM_MAIN "$") - endif() - add_executable(${LAGOM_TEST_NAME} ${source}) - target_link_libraries(${LAGOM_TEST_NAME} PRIVATE AK LibCore LibFileSystem LibTest ${LAGOM_TEST_CUSTOM_MAIN} ${LAGOM_TEST_LIBS}) - lagom_windows_bin(${LAGOM_TEST_NAME} CONSOLE) - lagom_generate_dsym(${LAGOM_TEST_NAME}) - - if (WIN32) - target_include_directories(${LAGOM_TEST_NAME} PRIVATE ${PTHREAD_INCLUDE_DIR}) - target_link_libraries(${LAGOM_TEST_NAME} PRIVATE ${PTHREAD_LIBRARY}) - - target_include_directories(${LAGOM_TEST_NAME} PRIVATE ${MMAN_INCLUDE_DIR}) - target_link_libraries(${LAGOM_TEST_NAME} PRIVATE ${MMAN_LIBRARY}) - endif() - - add_test( - NAME ${LAGOM_TEST_NAME} - COMMAND ${LAGOM_TEST_NAME} - WORKING_DIRECTORY ${LAGOM_TEST_WORKING_DIRECTORY} - ) -endfunction() - -function(lagom_utility name) - cmake_parse_arguments(LAGOM_UTILITY "" "" "SOURCES;LIBS" ${ARGN}) - - add_executable("${name}" ${LAGOM_UTILITY_SOURCES}) - target_link_libraries("${name}" PRIVATE AK LibCore ${LAGOM_UTILITY_LIBS}) - lagom_generate_dsym(${name}) -endfunction() - -function(ladybird_test test_src sub_dir) - cmake_parse_arguments(PARSE_ARGV 2 LADYBIRD_TEST "" "CUSTOM_MAIN;NAME" "LIBS") - lagom_test(${test_src} - LIBS ${LADYBIRD_TEST_LIBS} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - NAME ${LADYBIRD_TEST_NAME} - CUSTOM_MAIN ${LADYBIRD_TEST_CUSTOM_MAIN} - ) -endfunction() - function(ladybird_bin name) add_executable(${name} ${SOURCES} ${GENERATED_SOURCES}) add_executable(Lagom::${name} ALIAS ${name}) target_link_libraries(${name} PUBLIC GenericClangPlugin) - lagom_windows_bin(${name}) - lagom_generate_dsym(${name}) + ladybird_windows_bin(${name}) + ladybird_generate_dsym(${name}) install( TARGETS ${target_name} EXPORT LagomTargets @@ -188,11 +86,95 @@ endfunction() function(ladybird_lib name fs_name) cmake_parse_arguments(PARSE_ARGV 2 LADYBIRD_LIB "EXPLICIT_SYMBOL_EXPORT" "TYPE" "") - set(EXPLICIT_SYMBOL_EXPORT "") - if (LADYBIRD_LIB_EXPLICIT_SYMBOL_EXPORT) - set(EXPLICIT_SYMBOL_EXPORT "EXPLICIT_SYMBOL_EXPORT") + string(REPLACE "Lib" "" library ${name}) + if (NOT LADYBIRD_LIB_TYPE) + set(LADYBIRD_LIB_TYPE "") endif() - lagom_lib(${name} ${fs_name} LIBRARY_TYPE ${LADYBIRD_LIB_TYPE} ${EXPLICIT_SYMBOL_EXPORT} SOURCES ${SOURCES} ${GENERATED_SOURCES}) + + add_library(${name} ${LADYBIRD_LIB_TYPE} ${SOURCES} ${GENERATED_SOURCES}) + set_target_properties( + ${name} PROPERTIES + VERSION "${PROJECT_VERSION}" + SOVERSION "${PROJECT_VERSION_MAJOR}" + EXPORT_NAME ${library} + OUTPUT_NAME lagom-${fs_name} + ) + target_link_libraries(${name} PRIVATE ${LIBS}) + target_link_libraries(${name} PUBLIC GenericClangPlugin) + + if (NOT "${name}" STREQUAL "AK") + target_link_libraries(${name} PRIVATE AK) + endif() + + if (WIN32) + target_include_directories(${name} PRIVATE ${PTHREAD_INCLUDE_DIR}) + target_link_libraries(${name} PRIVATE ${PTHREAD_LIBRARY}) + + target_include_directories(${name} PRIVATE ${MMAN_INCLUDE_DIR}) + target_link_libraries(${name} PRIVATE ${MMAN_LIBRARY}) + endif() + + if (NOT LADYBIRD_LIB_TYPE STREQUAL "STATIC") + ladybird_generate_dsym(${name}) + endif() + + # FIXME: Clean these up so that we don't need so many include dirs + if (ENABLE_INSTALL_HEADERS) + target_include_directories(${name} INTERFACE + $ + $ + $ + ) + endif() + add_lagom_library_install_rules(${name} ALIAS_NAME ${library}) + if (ENABLE_INSTALL_HEADERS) + install( + DIRECTORY "${LADYBIRD_SOURCE_DIR}/Libraries/Lib${library}" + COMPONENT Lagom_Development + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILES_MATCHING PATTERN "*.h" + ) + endif() + ladybird_generated_sources(${name}) + if (LADYBIRD_LIB_EXPLICIT_SYMBOL_EXPORT) + ladybird_generate_export_header(${name} ${fs_name}) + endif() +endfunction() + +function(ladybird_test test_src sub_dir) + cmake_parse_arguments(PARSE_ARGV 2 LADYBIRD_TEST "" "CUSTOM_MAIN;NAME" "LIBS") + if (NOT LADYBIRD_TEST_NAME) + get_filename_component(LADYBIRD_TEST_NAME ${test_src} NAME_WE) + endif() + if (NOT LADYBIRD_TEST_CUSTOM_MAIN) + set(LADYBIRD_TEST_CUSTOM_MAIN "$") + endif() + add_executable(${LADYBIRD_TEST_NAME} ${test_src}) + target_link_libraries(${LADYBIRD_TEST_NAME} PRIVATE AK LibCore LibFileSystem LibTest ${LADYBIRD_TEST_CUSTOM_MAIN} ${LADYBIRD_TEST_LIBS}) + ladybird_windows_bin(${LADYBIRD_TEST_NAME} CONSOLE) + ladybird_generate_dsym(${LADYBIRD_TEST_NAME}) + + if (WIN32) + target_include_directories(${LADYBIRD_TEST_NAME} PRIVATE ${PTHREAD_INCLUDE_DIR}) + target_link_libraries(${LADYBIRD_TEST_NAME} PRIVATE ${PTHREAD_LIBRARY}) + + target_include_directories(${LADYBIRD_TEST_NAME} PRIVATE ${MMAN_INCLUDE_DIR}) + target_link_libraries(${LADYBIRD_TEST_NAME} PRIVATE ${MMAN_LIBRARY}) + endif() + + add_test( + NAME ${LADYBIRD_TEST_NAME} + COMMAND ${LADYBIRD_TEST_NAME} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) +endfunction() + +function(ladybird_utility name) + cmake_parse_arguments(LADYBIRD_UTILITY "" "" "SOURCES;LIBS" ${ARGN}) + + add_executable("${name}" ${LADYBIRD_UTILITY_SOURCES}) + target_link_libraries("${name}" PRIVATE AK LibCore ${LADYBIRD_UTILITY_LIBS}) + ladybird_generate_dsym(${name}) endfunction() if (NOT TARGET ladybird_codegen_accumulator) diff --git a/Services/ImageDecoder/CMakeLists.txt b/Services/ImageDecoder/CMakeLists.txt index 7bb37f5e13..5a3375b5a9 100644 --- a/Services/ImageDecoder/CMakeLists.txt +++ b/Services/ImageDecoder/CMakeLists.txt @@ -26,5 +26,5 @@ target_link_libraries(ImageDecoder PRIVATE imagedecoderservice LibCore LibMain L target_link_libraries(imagedecoderservice PRIVATE LibCore LibGfx LibIPC LibImageDecoderClient LibMain LibThreading) if (WIN32) - lagom_windows_bin(ImageDecoder CONSOLE) + ladybird_windows_bin(ImageDecoder CONSOLE) endif() diff --git a/Services/RequestServer/CMakeLists.txt b/Services/RequestServer/CMakeLists.txt index cc420cef6f..0a532ac224 100644 --- a/Services/RequestServer/CMakeLists.txt +++ b/Services/RequestServer/CMakeLists.txt @@ -35,7 +35,7 @@ target_link_libraries(requestserverservice PUBLIC LibCore LibDNS LibHTTP LibIPC target_link_libraries(requestserverservice PRIVATE OpenSSL::Crypto OpenSSL::SSL) if (WIN32) - lagom_windows_bin(RequestServer CONSOLE) + ladybird_windows_bin(RequestServer CONSOLE) endif() if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") diff --git a/Services/WebContent/CMakeLists.txt b/Services/WebContent/CMakeLists.txt index 17e69a20b2..17bd9ddef7 100644 --- a/Services/WebContent/CMakeLists.txt +++ b/Services/WebContent/CMakeLists.txt @@ -38,7 +38,7 @@ add_executable(WebContent main.cpp) target_link_libraries(WebContent PRIVATE webcontentservice LibURL) if(WIN32) - lagom_windows_bin(WebContent CONSOLE) + ladybird_windows_bin(WebContent CONSOLE) endif() diff --git a/Services/WebDriver/CMakeLists.txt b/Services/WebDriver/CMakeLists.txt index 8aa8709c76..7eaa567236 100644 --- a/Services/WebDriver/CMakeLists.txt +++ b/Services/WebDriver/CMakeLists.txt @@ -16,5 +16,5 @@ target_link_libraries(WebDriver PRIVATE LibCore LibFileSystem LibGfx LibIPC LibJ target_link_libraries(WebDriver PRIVATE OpenSSL::Crypto OpenSSL::SSL) if (WIN32) - lagom_windows_bin(WebDriver) + ladybird_windows_bin(WebDriver) endif() diff --git a/Services/WebWorker/CMakeLists.txt b/Services/WebWorker/CMakeLists.txt index 5453e342ca..6b24cd1c23 100644 --- a/Services/WebWorker/CMakeLists.txt +++ b/Services/WebWorker/CMakeLists.txt @@ -23,5 +23,5 @@ target_link_libraries(WebWorker PRIVATE webworkerservice OpenSSL::Crypto OpenSSL if(WIN32) target_include_directories(WebWorker PRIVATE $) - lagom_windows_bin(WebWorker CONSOLE) + ladybird_windows_bin(WebWorker CONSOLE) endif() diff --git a/Tests/LibMedia/CMakeLists.txt b/Tests/LibMedia/CMakeLists.txt index e6d6b117d9..9c1d6a5b46 100644 --- a/Tests/LibMedia/CMakeLists.txt +++ b/Tests/LibMedia/CMakeLists.txt @@ -18,7 +18,7 @@ set(TEST_SOURCES ) foreach(source IN LISTS TEST_SOURCES) - lagom_test("${source}" LibMedia LIBS LibMedia LibFileSystem WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") + ladybird_test("${source}" LibMedia LIBS LibMedia LibFileSystem) endforeach() target_link_libraries(TestFFmpegDemuxer PRIVATE LibThreading) diff --git a/Tests/LibTLS/CMakeLists.txt b/Tests/LibTLS/CMakeLists.txt index 0904d81f77..a015101a61 100644 --- a/Tests/LibTLS/CMakeLists.txt +++ b/Tests/LibTLS/CMakeLists.txt @@ -4,5 +4,5 @@ set(TEST_SOURCES ) foreach(source IN LISTS TEST_SOURCES) - lagom_test("${source}" LibTLS LIBS LibTLS LibCrypto WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + ladybird_test("${source}" LibTLS LIBS LibTLS LibCrypto) endforeach() diff --git a/Tests/LibWeb/CMakeLists.txt b/Tests/LibWeb/CMakeLists.txt index b894e2a887..57651fbb0b 100644 --- a/Tests/LibWeb/CMakeLists.txt +++ b/Tests/LibWeb/CMakeLists.txt @@ -20,7 +20,7 @@ foreach(source IN LISTS TEST_SOURCES) ladybird_test("${source}" LibWeb LIBS LibWeb) endforeach() -lagom_utility(css-tokenizer SOURCES css-tokenizer.cpp LIBS LibFileSystem LibMain LibWeb) +ladybird_utility(css-tokenizer SOURCES css-tokenizer.cpp LIBS LibFileSystem LibMain LibWeb) target_link_libraries(TestContentFilter PRIVATE LibURL) target_link_libraries(TestFetchURL PRIVATE LibURL) diff --git a/Tests/LibWeb/test-web/CMakeLists.txt b/Tests/LibWeb/test-web/CMakeLists.txt index 5796528a6d..76fdd14650 100644 --- a/Tests/LibWeb/test-web/CMakeLists.txt +++ b/Tests/LibWeb/test-web/CMakeLists.txt @@ -19,7 +19,7 @@ if (APPLE) elseif (WIN32) target_link_libraries(test-web PRIVATE LibDevTools) target_include_directories(test-web PRIVATE $) - lagom_windows_bin(test-web CONSOLE) + ladybird_windows_bin(test-web CONSOLE) endif() # FIXME: Add support for running test-web on Windows diff --git a/UI/Qt/CMakeLists.txt b/UI/Qt/CMakeLists.txt index 8cae2daa4a..2ed0a38a0b 100644 --- a/UI/Qt/CMakeLists.txt +++ b/UI/Qt/CMakeLists.txt @@ -27,7 +27,7 @@ target_link_libraries(ladybird PRIVATE Qt::Core Qt::Gui Qt::Widgets) create_ladybird_bundle(ladybird) if (WIN32) - lagom_windows_bin(ladybird CONSOLE) + ladybird_windows_bin(ladybird CONSOLE) qt_generate_deploy_script( TARGET ladybird OUTPUT_SCRIPT ladybird_deploy_script diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt index 0cf3746f19..a600054758 100644 --- a/Utilities/CMakeLists.txt +++ b/Utilities/CMakeLists.txt @@ -1,17 +1,17 @@ if(WIN32) # FIXME: Add support for LibLine on Windows - lagom_utility(js SOURCES js.cpp LIBS LibCrypto LibJS LibUnicode LibMain LibTextCodec LibGC Threads::Threads) - lagom_utility(wasm SOURCES wasm.cpp LIBS LibFileSystem LibWasm LibMain LibJS LibCrypto LibGC) + ladybird_utility(js SOURCES js.cpp LIBS LibCrypto LibJS LibUnicode LibMain LibTextCodec LibGC Threads::Threads) + ladybird_utility(wasm SOURCES wasm.cpp LIBS LibFileSystem LibWasm LibMain LibJS LibCrypto LibGC) else() - lagom_utility(js SOURCES js.cpp LIBS LibCrypto LibJS LibLine LibUnicode LibMain LibTextCodec LibGC Threads::Threads) - lagom_utility(wasm SOURCES wasm.cpp LIBS LibFileSystem LibWasm LibLine LibMain LibJS LibCrypto LibGC) + ladybird_utility(js SOURCES js.cpp LIBS LibCrypto LibJS LibLine LibUnicode LibMain LibTextCodec LibGC Threads::Threads) + ladybird_utility(wasm SOURCES wasm.cpp LIBS LibFileSystem LibWasm LibLine LibMain LibJS LibCrypto LibGC) endif() -lagom_utility(xml SOURCES xml.cpp LIBS LibFileSystem LibMain LibXML LibURL) -lagom_utility(dns SOURCES dns.cpp LIBS LibDNS LibMain LibTLS LibCrypto) +ladybird_utility(xml SOURCES xml.cpp LIBS LibFileSystem LibMain LibXML LibURL) +ladybird_utility(dns SOURCES dns.cpp LIBS LibDNS LibMain LibTLS LibCrypto) if (ENABLE_GUI_TARGETS) - lagom_utility(image SOURCES image.cpp LIBS LibGfx LibMain) + ladybird_utility(image SOURCES image.cpp LIBS LibGfx LibMain) endif() # FIXME: Increase support for building targets on Windows @@ -19,8 +19,7 @@ if (WIN32) return() endif() - -lagom_utility(test262-runner SOURCES test262-runner.cpp LIBS LibJS LibFileSystem LibGC) +ladybird_utility(test262-runner SOURCES test262-runner.cpp LIBS LibJS LibFileSystem LibGC) if (CMAKE_SYSTEM_NAME STREQUAL "Linux") include(CheckCSourceCompiles)