From 4608e4143eb75e48cab81c598f37460585ce76c8 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Sun, 26 Mar 2023 09:53:32 -0600 Subject: [PATCH] Ladybird: Improve Xcode generator experience and copy helpers to bundle We had a mismatch in the GUI Identifier property, causing warnings in Xcode. It was also missing the Product Identifier Xcode property on ladybird itself, causing another warning. Copy all our helper processes to the ladybird.app bundle directory so that they can be found by ``open ladybird.app`` and the Xcode debugger. For the future, we should look in ../Resources for resources on macOS. Copying resources to that directory requires more CMake-fu. --- Ladybird/CMakeLists.txt | 17 +++++++++++++++-- Ladybird/Info.plist | 2 +- Ladybird/Utilities.cpp | 4 ++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Ladybird/CMakeLists.txt b/Ladybird/CMakeLists.txt index 939f9f237b..53495a953e 100644 --- a/Ladybird/CMakeLists.txt +++ b/Ladybird/CMakeLists.txt @@ -113,12 +113,13 @@ target_include_directories(headless-browser PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(headless-browser PRIVATE Qt::Core LibWeb LibWebView LibWebSocket LibCrypto LibFileSystem LibGemini LibHTTP LibJS LibGfx LibMain LibTLS LibIPC LibJS) set_target_properties(ladybird PROPERTIES - MACOSX_BUNDLE_GUI_IDENTIFIER org.serenityos.ladybird + MACOSX_BUNDLE_GUI_IDENTIFIER org.SerenityOS.Ladybird MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist" MACOSX_BUNDLE TRUE WIN32_EXECUTABLE TRUE + XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER org.SerenityOS.Ladybird ) if (ANDROID) @@ -141,7 +142,19 @@ qt_finalize_executable(ladybird) add_subdirectory(SQLServer) add_subdirectory(WebContent) add_subdirectory(WebDriver) -add_dependencies(ladybird SQLServer WebContent WebDriver) +add_dependencies(ladybird SQLServer WebContent WebDriver headless-browser) + +if (APPLE) + # FIXME: Create a proper app bundle for each helper process + set(app_dir "$") + set(bundle_dir "$") + add_custom_command(TARGET ladybird POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E copy_if_different "$" "${app_dir}" + COMMAND "${CMAKE_COMMAND}" -E copy_if_different "$" "${app_dir}" + COMMAND "${CMAKE_COMMAND}" -E copy_if_different "$" "${app_dir}" + COMMAND "${CMAKE_COMMAND}" -E copy_if_different "$" "${app_dir}" + ) +endif() if(NOT CMAKE_SKIP_INSTALL_RULES) include(cmake/InstallRules.cmake) diff --git a/Ladybird/Info.plist b/Ladybird/Info.plist index 00c24b3dbc..c0a3e71b23 100644 --- a/Ladybird/Info.plist +++ b/Ladybird/Info.plist @@ -13,7 +13,7 @@ CFBundleSignature CFBundleExecutable - Ladybird + ladybird CFBundleIdentifier org.SerenityOS.Ladybird NSPrincipalClass diff --git a/Ladybird/Utilities.cpp b/Ladybird/Utilities.cpp index 1c052611a6..5fb1598d27 100644 --- a/Ladybird/Utilities.cpp +++ b/Ladybird/Utilities.cpp @@ -52,7 +52,11 @@ void platform_init() if (FileSystem::is_directory(home_lagom)) return home_lagom; auto app_dir = ak_deprecated_string_from_qstring(QCoreApplication::applicationDirPath()); +# ifdef AK_OS_MACOS + return LexicalPath(app_dir).parent().append("Resources"sv).string(); +# else return LexicalPath(app_dir).parent().append("share"sv).string(); +# endif }(); #endif }