Add additional packaging options for macOs. Add icon & Info.plist plus more

master
Melroy van den Berg 2022-02-18 17:46:03 +01:00
parent bdd303acf9
commit bfb30a94b6
No known key found for this signature in database
GPG Key ID: 71D11FF23454B9D7
4 changed files with 47 additions and 10 deletions

View File

@ -1,6 +1,6 @@
# Example 1: https://github.com/MariaDB/server/tree/10.8/cmake # Example 1: https://github.com/MariaDB/server/tree/10.8/cmake
# Example 2: https://gitlab.com/inkscape/inkscape/blob/master/CMakeScripts/ConfigCPack.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_DESCRIPTION_SUMMARY "LibreWeb Browser - Decentralized Web-Browser")
set(CPACK_PACKAGE_VENDOR "Melroy van den Berg") set(CPACK_PACKAGE_VENDOR "Melroy van den Berg")
set(CPACK_PACKAGE_CONTACT "Melroy van den Berg <info@libreweb.org>") set(CPACK_PACKAGE_CONTACT "Melroy van den Berg <info@libreweb.org>")
@ -12,6 +12,10 @@ set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_TARGET}-${CPACK_PACKAGE_VERSION}")
set(CPACK_DEBIAN_PACKAGE_SECTION "web") set(CPACK_DEBIAN_PACKAGE_SECTION "web")
set(CPACK_RPM_PACKAGE_GROUP "Applications/Internet") set(CPACK_RPM_PACKAGE_GROUP "Applications/Internet")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-v${CPACK_PACKAGE_VERSION}") # Without '-Linux' or '-Win' suffix 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) # Windows specific options - GUI Installer (NSIS generator)
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/images/browser_logo_small.bmp") set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/images/browser_logo_small.bmp")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "LibreWeb") 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) if (NOT ${DIFINE_LINUX_DISTRO_RESULT} EQUAL 0)
message (FATAL_ERROR "Linux distro identification error") message (FATAL_ERROR "Linux distro identification error")
endif () endif()
endif () endif()
# RPM section # RPM section
if(${LINUX_DISTRO} MATCHES "openSUSE") if(${LINUX_DISTRO} MATCHES "openSUSE")

Binary file not shown.

10
misc/Info.plist Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>libreweb-browser</string>
<key>CFBundleIconFile</key>
<string>libreweb-browser.icns</string>
</dict>
</plist>

View File

@ -91,7 +91,25 @@ get_property(CMARK_EXTENSIONS_BINARY_DIR GLOBAL PROPERTY COMMONMARKER_EXTENSIONS
if(NOT UNITTEST) if(NOT UNITTEST)
# LibreWeb binary # LibreWeb binary
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}) add_executable(${PROJECT_TARGET} ${GSCHEMA_RING} ${WINDOWS_RES} ${SOURCES})
endif()
## Definitions just in case ## Definitions just in case
if(WIN32) if(WIN32)
@ -134,17 +152,22 @@ if(NOT UNITTEST)
nlohmann_json::nlohmann_json nlohmann_json::nlohmann_json
) )
target_compile_options(${PROJECT_TARGET} PRIVATE ${GTKMM_CFLAGS_OTHER}) target_compile_options(${PROJECT_TARGET} PRIVATE ${GTKMM_CFLAGS_OTHER})
if (APPLE)
if(APPLE)
# Add GTK Mac Integration for macOS # Add GTK Mac Integration for macOS
target_include_directories(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_INCLUDE_DIRS}) target_include_directories(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_INCLUDE_DIRS})
target_link_directories(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_LIBRARY_DIRS}) target_link_directories(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_LIBRARY_DIRS})
target_link_libraries(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_LIBRARIES}) target_link_libraries(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_LIBRARIES})
target_compile_options(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_CFLAGS_OTHER}) target_compile_options(${PROJECT_TARGET} PRIVATE ${MAC_INTEGRATION_CFLAGS_OTHER})
# Sign target for macOS
set_target_properties(${PROJECT_TARGET} PROPERTIES set(LIB_DIRS "${MAC_INTEGRATION_LIBRARY_DIRS}")
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY} set(APP "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app")
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID} # 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() endif()
# Install browser binary # Install browser binary