mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
Meta: Build select Services in Lagom
Add overrides for serenity_bin and serenity_lib to allow the actual CMakeLists.txt from Userland to be used to build as many services as possible without adding more clutter to Meta/Lagom/CMakeLists.txt
This commit is contained in:
parent
2b29e611fe
commit
0a62fcfbdf
Notes:
sideshowbarker
2024-07-17 09:40:01 +09:00
Author: https://github.com/ADKaster Commit: https://github.com/SerenityOS/serenity/commit/0a62fcfbdf Pull-request: https://github.com/SerenityOS/serenity/pull/14481
3 changed files with 93 additions and 44 deletions
|
@ -33,27 +33,31 @@ function(serenity_generated_sources target_name)
|
|||
endif()
|
||||
endfunction()
|
||||
|
||||
function(serenity_lib target_name fs_name)
|
||||
serenity_install_headers(${target_name})
|
||||
serenity_install_sources()
|
||||
add_library(${target_name} SHARED ${SOURCES} ${GENERATED_SOURCES})
|
||||
set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
set_target_properties(${target_name} PROPERTIES VERSION "serenity")
|
||||
install(TARGETS ${target_name} DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL)
|
||||
set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${fs_name})
|
||||
serenity_generated_sources(${target_name})
|
||||
endfunction()
|
||||
if (NOT COMMAND serenity_lib)
|
||||
function(serenity_lib target_name fs_name)
|
||||
serenity_install_headers(${target_name})
|
||||
serenity_install_sources()
|
||||
add_library(${target_name} SHARED ${SOURCES} ${GENERATED_SOURCES})
|
||||
set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
set_target_properties(${target_name} PROPERTIES VERSION "serenity")
|
||||
install(TARGETS ${target_name} DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL)
|
||||
set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${fs_name})
|
||||
serenity_generated_sources(${target_name})
|
||||
endfunction()
|
||||
endif()
|
||||
|
||||
function(serenity_lib_static target_name fs_name)
|
||||
serenity_install_headers(${target_name})
|
||||
serenity_install_sources()
|
||||
add_library(${target_name} STATIC ${SOURCES} ${GENERATED_SOURCES})
|
||||
set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
set_target_properties(${target_name} PROPERTIES VERSION "serenity")
|
||||
install(TARGETS ${target_name} DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL)
|
||||
set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${fs_name})
|
||||
serenity_generated_sources(${target_name})
|
||||
endfunction()
|
||||
if (NOT COMMAND serenity_lib_static)
|
||||
function(serenity_lib_static target_name fs_name)
|
||||
serenity_install_headers(${target_name})
|
||||
serenity_install_sources()
|
||||
add_library(${target_name} STATIC ${SOURCES} ${GENERATED_SOURCES})
|
||||
set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
set_target_properties(${target_name} PROPERTIES VERSION "serenity")
|
||||
install(TARGETS ${target_name} DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL)
|
||||
set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${fs_name})
|
||||
serenity_generated_sources(${target_name})
|
||||
endfunction()
|
||||
endif()
|
||||
|
||||
function(serenity_libc target_name fs_name)
|
||||
serenity_install_headers("")
|
||||
|
@ -81,13 +85,15 @@ function(serenity_libc target_name fs_name)
|
|||
serenity_generated_sources(${target_name})
|
||||
endfunction()
|
||||
|
||||
function(serenity_bin target_name)
|
||||
serenity_install_sources()
|
||||
add_executable(${target_name} ${SOURCES})
|
||||
set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
install(TARGETS ${target_name} RUNTIME DESTINATION bin OPTIONAL)
|
||||
serenity_generated_sources(${target_name})
|
||||
endfunction()
|
||||
if (NOT COMMAND serenity_bin)
|
||||
function(serenity_bin target_name)
|
||||
serenity_install_sources()
|
||||
add_executable(${target_name} ${SOURCES})
|
||||
set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
install(TARGETS ${target_name} RUNTIME DESTINATION bin OPTIONAL)
|
||||
serenity_generated_sources(${target_name})
|
||||
endfunction()
|
||||
endif()
|
||||
|
||||
function(serenity_test test_src sub_dir)
|
||||
cmake_parse_arguments(PARSE_ARGV 2 SERENITY_TEST "MAIN_ALREADY_DEFINED" "CUSTOM_MAIN" "LIBS")
|
||||
|
|
|
@ -23,6 +23,7 @@ get_filename_component(
|
|||
SERENITY_PROJECT_ROOT "${PROJECT_SOURCE_DIR}/../.."
|
||||
ABSOLUTE CACHE
|
||||
)
|
||||
set(SerenityOS_SOURCE_DIR "${SERENITY_PROJECT_ROOT}" CACHE STRING "")
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${SERENITY_PROJECT_ROOT}/Meta/CMake")
|
||||
|
||||
|
@ -137,8 +138,11 @@ configure_file(../../AK/Debug.h.in AK/Debug.h @ONLY)
|
|||
include_directories(../../)
|
||||
include_directories(../../Userland/)
|
||||
include_directories(../../Userland/Libraries/)
|
||||
include_directories(../../Userland/Services)
|
||||
include_directories(${CMAKE_BINARY_DIR})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories(${CMAKE_BINARY_DIR}/Libraries)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Services)
|
||||
|
||||
# install rules, think about moving to its own helper cmake file
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
@ -222,6 +226,31 @@ function(lagom_test source)
|
|||
)
|
||||
endfunction()
|
||||
|
||||
function(serenity_bin name)
|
||||
add_executable(${name} ${SOURCES} ${GENERATED_SOURCES})
|
||||
add_executable(Lagom::${name} ALIAS ${name})
|
||||
install(
|
||||
TARGETS ${target_name}
|
||||
EXPORT LagomTargets
|
||||
RUNTIME #
|
||||
COMPONENT Lagom_Runtime
|
||||
LIBRARY #
|
||||
COMPONENT Lagom_Runtime
|
||||
NAMELINK_COMPONENT Lagom_Development
|
||||
ARCHIVE #
|
||||
COMPONENT Lagom_Development
|
||||
INCLUDES #
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(serenity_lib name fs_name)
|
||||
lagom_lib(name fs_name SOURCES ${SOURCES} ${GENERATED_SOURCES})
|
||||
endfunction()
|
||||
|
||||
add_custom_target(components ALL)
|
||||
option(BUILD_EVERYTHING "Build all optional components" ON)
|
||||
|
||||
if (NOT TARGET all_generated)
|
||||
# Meta target to run all code-gen steps in the build.
|
||||
add_custom_target(all_generated)
|
||||
|
@ -306,6 +335,12 @@ if (BUILD_LAGOM)
|
|||
SOURCES ${LIBCRYPTO_SOURCES} ${LIBCRYPTO_SUBDIR_SOURCES} ${LIBCRYPTO_SUBSUBDIR_SOURCES}
|
||||
)
|
||||
|
||||
file(GLOB LIBDNS_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibDNS/*.cpp")
|
||||
lagom_lib(DNS dns
|
||||
SOURCES ${LIBDNS_SOURCES}
|
||||
LIBS LibIPC
|
||||
)
|
||||
|
||||
# ELF
|
||||
# FIXME: Excluding arm64 is a temporary hack to circumvent a build problem
|
||||
# for Lagom on Apple M1
|
||||
|
@ -525,6 +560,9 @@ if (BUILD_LAGOM)
|
|||
SOURCES ${LIBXML_SOURCES})
|
||||
|
||||
if (NOT ENABLE_FUZZERS AND NOT ENABLE_COMPILER_EXPLORER_BUILD)
|
||||
# Lagom Services
|
||||
add_subdirectory("${SERENITY_PROJECT_ROOT}/Userland/Services" "${CMAKE_CURRENT_BINARY_DIR}/Services")
|
||||
|
||||
# Lagom Examples
|
||||
add_executable(TestApp TestApp.cpp)
|
||||
target_link_libraries(TestApp LibCore)
|
||||
|
@ -766,4 +804,6 @@ endif()
|
|||
|
||||
if (ENABLE_FUZZERS)
|
||||
add_subdirectory(Fuzzers)
|
||||
else()
|
||||
export_components("${CMAKE_BINARY_DIR}/components.ini")
|
||||
endif()
|
||||
|
|
|
@ -1,27 +1,30 @@
|
|||
add_subdirectory(AudioServer)
|
||||
add_subdirectory(ChessEngine)
|
||||
add_subdirectory(Clipboard)
|
||||
add_subdirectory(ConfigServer)
|
||||
add_subdirectory(CrashDaemon)
|
||||
add_subdirectory(DHCPClient)
|
||||
add_subdirectory(EchoServer)
|
||||
add_subdirectory(FileSystemAccessServer)
|
||||
add_subdirectory(FileOperation)
|
||||
add_subdirectory(ImageDecoder)
|
||||
add_subdirectory(InspectorServer)
|
||||
add_subdirectory(KeyboardPreferenceLoader)
|
||||
add_subdirectory(LaunchServer)
|
||||
add_subdirectory(LoginServer)
|
||||
add_subdirectory(LookupServer)
|
||||
add_subdirectory(NetworkServer)
|
||||
add_subdirectory(NotificationServer)
|
||||
add_subdirectory(RequestServer)
|
||||
add_subdirectory(SQLServer)
|
||||
add_subdirectory(SpiceAgent)
|
||||
add_subdirectory(SystemServer)
|
||||
add_subdirectory(Taskbar)
|
||||
add_subdirectory(TelnetServer)
|
||||
add_subdirectory(WebContent)
|
||||
add_subdirectory(WebServer)
|
||||
add_subdirectory(WebSocket)
|
||||
add_subdirectory(WindowServer)
|
||||
|
||||
if (SERENITYOS)
|
||||
add_subdirectory(AudioServer)
|
||||
add_subdirectory(ChessEngine)
|
||||
add_subdirectory(Clipboard)
|
||||
add_subdirectory(CrashDaemon)
|
||||
add_subdirectory(DHCPClient)
|
||||
add_subdirectory(FileSystemAccessServer)
|
||||
add_subdirectory(KeyboardPreferenceLoader)
|
||||
add_subdirectory(LaunchServer)
|
||||
add_subdirectory(LoginServer)
|
||||
add_subdirectory(NetworkServer)
|
||||
add_subdirectory(NotificationServer)
|
||||
add_subdirectory(SpiceAgent)
|
||||
add_subdirectory(SystemServer)
|
||||
add_subdirectory(Taskbar)
|
||||
add_subdirectory(TelnetServer)
|
||||
add_subdirectory(WebContent)
|
||||
add_subdirectory(WindowServer)
|
||||
endif()
|
||||
|
|
Loading…
Reference in a new issue