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 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 <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_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")

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)
# 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