1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-09 09:34:57 +09:00

CMake: Handle CMP0174 in Lagom CMake functions, and support CUSTOM_MAIN

This commit is contained in:
Andrew Kaster 2025-05-19 13:39:17 -06:00 committed by Tim Flynn
parent bf01470732
commit 72ca813b6b
Notes: github-actions[bot] 2025-05-19 22:38:50 +00:00
2 changed files with 20 additions and 7 deletions

View file

@ -28,6 +28,12 @@ cmake_policy(SET CMP0058 NEW)
# take effect in `check_linker_flag` checks.
cmake_policy(SET CMP0056 NEW)
# Ensure that when single-value arguments are passed to `cmake_parse_arguments()`
# with no or empty string arguments, they are still defined.
if (POLICY CMP0174)
cmake_policy(SET CMP0174 NEW)
endif()
get_filename_component(
SERENITY_PROJECT_ROOT "${PROJECT_SOURCE_DIR}/../.."
ABSOLUTE CACHE
@ -239,12 +245,15 @@ function(lagom_lib target_name fs_name)
endfunction()
function(lagom_test source)
cmake_parse_arguments(LAGOM_TEST "" "NAME;WORKING_DIRECTORY" "LIBS" ${ARGN})
if (NOT DEFINED LAGOM_TEST_NAME)
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 "$<TARGET_OBJECTS:LibTestMain>")
endif()
add_executable(${LAGOM_TEST_NAME} ${source})
target_link_libraries(${LAGOM_TEST_NAME} PRIVATE AK LibCore LibFileSystem LibTest LibTestMain ${LAGOM_TEST_LIBS})
target_link_libraries(${LAGOM_TEST_NAME} PRIVATE AK LibCore LibFileSystem LibTest ${LAGOM_TEST_CUSTOM_MAIN} ${LAGOM_TEST_LIBS})
add_test(
NAME ${LAGOM_TEST_NAME}
COMMAND ${LAGOM_TEST_NAME}
@ -260,9 +269,13 @@ function(lagom_utility name)
endfunction()
function(serenity_test test_src sub_dir)
cmake_parse_arguments(PARSE_ARGV 2 SERENITY_TEST "MAIN_ALREADY_DEFINED" "CUSTOM_MAIN;NAME" "LIBS")
# FIXME: Pass MAIN_ALREADY_DEFINED and CUSTOM_MAIN to support tests that use them.
lagom_test(${test_src} LIBS ${SERENITY_TEST_LIBS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} NAME ${SERENITY_TEST_NAME})
cmake_parse_arguments(PARSE_ARGV 2 SERENITY_TEST "" "CUSTOM_MAIN;NAME" "LIBS")
lagom_test(${test_src}
LIBS ${SERENITY_TEST_LIBS}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
NAME ${SERENITY_TEST_NAME}
CUSTOM_MAIN ${SERENITY_TEST_CUSTOM_MAIN}
)
endfunction()
function(serenity_bin name)

View file

@ -4,7 +4,7 @@ function(lagom_tool tool)
# alias for parity with exports
add_executable(Lagom::${tool} ALIAS ${tool})
target_link_libraries(${tool} AK LibCoreMinimal LibFileSystem GenericClangPlugin ${LAGOM_TOOL_LIBS})
if (NOT DEFINED LAGOM_TOOL_INSTALL)
if (NOT LAGOM_TOOL_INSTALL)
set(LAGOM_TOOL_INSTALL ${INSTALL_LAGOM_TOOLS})
endif()
if (DEFINED LAGOM_TOOL_INSTALL AND LAGOM_TOOL_INSTALL)