diff --git a/cmake/Packaging.cmake b/cmake/Packaging.cmake index 0d3fe41..f7470e3 100644 --- a/cmake/Packaging.cmake +++ b/cmake/Packaging.cmake @@ -1,6 +1,6 @@ # Example 1: https://github.com/MariaDB/server/tree/10.8/cmake # Example 2: https://gitlab.com/inkscape/inkscape/blob/master/CMakeScripts/ConfigCPack.cmake -#set(CPACK_PACKAGE_NAME "LibreWeb Browser") +# Example 3: https://github.com/rcaelers/workrave/blob/main/ui/app/toolkits/gtkmm/dist/macos/CMakeLists.txt set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LibreWeb Browser - Decentralized Web-Browser") set(CPACK_PACKAGE_VENDOR "Melroy van den Berg") set(CPACK_PACKAGE_CONTACT "Melroy van den Berg ") @@ -12,6 +12,10 @@ set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_TARGET}-${CPACK_PACKAGE_VERSION}") set(CPACK_DEBIAN_PACKAGE_SECTION "web") set(CPACK_RPM_PACKAGE_GROUP "Applications/Internet") set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-v${CPACK_PACKAGE_VERSION}") # Without '-Linux' or '-Win' suffix +# macOS specific options - Used for DragNDrop bundle generator +set(CPACK_BUNDLE_NAME "${PROJECT_NAME}-v${CPACK_PACKAGE_VERSION}") +set(CPACK_BUNDLE_PLIST "${CMAKE_SOURCE_DIR}/misc/Info.plist") +set(CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/images/icons/libreweb-browser.icns") # Windows specific options - GUI Installer (NSIS generator) set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/images/browser_logo_small.bmp") set(CPACK_PACKAGE_INSTALL_DIRECTORY "LibreWeb") @@ -41,8 +45,8 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux" AND EXISTS "/etc/os-release") ) if (NOT ${DIFINE_LINUX_DISTRO_RESULT} EQUAL 0) message (FATAL_ERROR "Linux distro identification error") - endif () -endif () + endif() +endif() # RPM section if(${LINUX_DISTRO} MATCHES "openSUSE") diff --git a/images/icons/libreweb-browser.icns b/images/icons/libreweb-browser.icns new file mode 100644 index 0000000..2c019b2 Binary files /dev/null and b/images/icons/libreweb-browser.icns differ diff --git a/misc/Info.plist b/misc/Info.plist new file mode 100644 index 0000000..389b2c9 --- /dev/null +++ b/misc/Info.plist @@ -0,0 +1,10 @@ + + + + + CFBundleExecutable + libreweb-browser + CFBundleIconFile + libreweb-browser.icns + + \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e8268d6..b3767b4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -91,7 +91,25 @@ get_property(CMARK_EXTENSIONS_BINARY_DIR GLOBAL PROPERTY COMMONMARKER_EXTENSIONS if(NOT UNITTEST) # LibreWeb binary - add_executable(${PROJECT_TARGET} ${GSCHEMA_RING} ${WINDOWS_RES} ${SOURCES}) + if(APPLE) + # Set MacOSX bundle & XCode props + set_target_properties(${PROJECT_TARGET} + PROPERTIES + MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}-v${PROJECT_VERSION}" + MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/misc/Info.plist" + MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}" + MACOSX_BUNDLE_ICON_FILE libreweb-browser.icns + MACOSX_BUNDLE_GUI_IDENTIFIER "${PROJECT_NAME}" + MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_VERSION}" + MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION}}" + MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${CODE_SIGN_IDENTITY}" + XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${DEVELOPMENT_TEAM_ID}" + ) + add_executable(${PROJECT_TARGET} MACOSX_BUNDLE ${GSCHEMA_RING} ${SOURCES}) + else() + add_executable(${PROJECT_TARGET} ${GSCHEMA_RING} ${WINDOWS_RES} ${SOURCES}) + endif() ## Definitions just in case if(WIN32) @@ -134,17 +152,22 @@ if(NOT UNITTEST) nlohmann_json::nlohmann_json ) target_compile_options(${PROJECT_TARGET} PRIVATE ${GTKMM_CFLAGS_OTHER}) - if (APPLE) + + if(APPLE) # Add GTK Mac Integration for macOS target_include_directories(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_INCLUDE_DIRS}) target_link_directories(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_LIBRARY_DIRS}) target_link_libraries(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_LIBRARIES}) target_compile_options(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_CFLAGS_OTHER}) - # Sign target for macOS - set_target_properties(${PROJECT_TARGET} PROPERTIES - XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY} - XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID} - ) + + set(LIB_DIRS "${MAC_INTEGRATION_LIBRARY_DIRS}") + set(APP "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app") + # Fix-up bundle & verify if app is standalone + # https://cmake.org/cmake/help/latest/module/BundleUtilities.html + install(CODE " + include(BundleUtilities) + fixup_bundle(\"${APP}\" \"\" \"${LIB_DIRS}\") + verify_app(${APP})") endif() # Install browser binary