From bfb30a94b64f17a0392a8ee15ab2dc862f3afdea Mon Sep 17 00:00:00 2001 From: Melroy van den Berg Date: Fri, 18 Feb 2022 17:46:03 +0100 Subject: [PATCH] Add additional packaging options for macOs. Add icon & Info.plist plus more --- cmake/Packaging.cmake | 10 +++++--- images/icons/libreweb-browser.icns | Bin 0 -> 6737 bytes misc/Info.plist | 10 ++++++++ src/CMakeLists.txt | 37 +++++++++++++++++++++++------ 4 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 images/icons/libreweb-browser.icns create mode 100644 misc/Info.plist 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 0000000000000000000000000000000000000000..2c019b2f3ec04246673cc3266fed43917879c4a0 GIT binary patch literal 6737 zcmeH}OKeov8OQIvGk%fA2}u@dSIMfXvTHZpR_Xy0d!Bb@yr+tkM~NXRRg_TY-mx8s zF;-PVf(`hE$B%ix$Mb&K27(C$aJFnB71X9ulogxn{=ak2Frdmwy=YfhUfA>f&j0++ zcfRjC^VT2UeP5D(;d<-M-~3vV_W$l%X_k#k8tZ&_cxYh2HsH5ucHJR6ox02FcE6_$ zY3wAz^3b2Oeg$#eX0h8HcFo~;DlWH6b6ZsPgQFT7lN8o>LhsiGG@EXh9S+?&f~cli zJ)Yq{HY#;7cA~$3pdUNPb`#N@Jua8qjbGKR`aQ}pV}8lP*igSdAd?k|@1sLUS9Ooo z>pjMpE?F5nK7frz5cgvr4ROEP?eTa$UhjuQSlGM$0Q@#9tlA(V;W!rB$gj#CkKe2K zhJYz-7(3~ApuHD7~yG!+`DlpjxazyOOAPK!R#*G(?yIIwoIy%QT`nc4at`szotNEELypcCXJj&IJ_aK*@IUdLxAnc;2wAdRPJKB?qMKFWKAeV}_JT&Ogt`6f`Qh$ws-U|t;c@NT&k*hQ7SA7oV%~(8{!q!0Zg+j4ZK1&CF zjj=y-T`~|@UReo-$fs$5!=M3Isv|T%UtXp8dFvc94%|9mAFi6&BM@{!Bu3#D?oQmNG& z%~ilXYzE3mZeUqkkyiaXFB?nI1lSyMQ7Dv3l}fc*Z#0@kz`cx890)AoCW5QW=#`g^ znNUJxqgX1HVFJSI8=EG5nbOP;xVpmW>0lylrVcR9SA%kkHqQs;P$)>+FBwz8REFmn zmf?acYnwEYyO~f9>LHn=UoxtLX(25vuX1=gl+J-ImT)@L zv4DFC#*N_ma3ev$`;80X^cq-r;JWMUBV4zanMVT}i$y~~pEoW=GkM%Ikub2nF)BzZ z$zV84l^Y9laweL^O&|s4u>{$}%o0cKXmL3Lve%f2G9bYtVBz|b#z*MydoW59j}EYIyx;!g=G6pEPLqNU_GsAr71WP!X9^r<+*qk_() z(**4^=2J!5Zhd`YTnJHbCX(n)Eh8tv^cV}N5@dj!7Bajmc;#j@DInd(<#f45#Doxu zwc1h3$!QQ>#$vimz!?s7v$!aI-Hdk{fov5&D&+!}TK}1>w4+=Vg^U}h6nQjJZa%7|c&o~*wQ7l?-=&~D zvMHC*7|*kLK9CK6T!Yf(H(=h7A0OOroZz8z4If-;AV>AT!F?PO!E~UDk+El)v!QageouyXf zpIkh|XTMd?;Q#ZR^4b^;{|?3uXmh1=n;oSU9pn7*@&5{9A1yZS+`0Yrty?#5+_--I z%WGG!Y;LSKn~i$48aapOg1$b#`j^r-+joh&`PElMU42B=DwT4n7SFw#;4n8pHm||v z25dI!wQ8kYE}C#QJtW3|aT_j#^cK!!+HKTvs7KOhk69BxvCR*6lZFd|7H0$tC)9NqQUN4!DVyLP1x`ekD| zi`pu47g_S0N+vKoBPLCm=J3@GqF*us=^`b%KRZd?{ zVfGf0jNBvm5smBKA{)4tW*PJg#zGSB8^JtvWZ5s2Z^DCFXzPs<*!{+QB3Ga+o4P

tzmt?b1%LT^>DpsVuf}MvX!Nu|L}%2f z5Hdizjj0vPd?af^5WKumx48Yh`2 za|y&djPpx)sQuxV&30$zvIJO+bC*}gLUK6V${V#VMgrAHhTc1?@weHXS#X)KANN=7L9j|*_vikfA=hFec1 z!aO=1Xh*};nPxf0&FDp}9f`=ZXpQ~sEObT3#3O-=pMQ4hY{zGxPtUJ}MkDe#kmuM@ z>ZvU6zj!1Vn7C{StdPF^4iB>hYKt^4kw_#o5mfMPV>F^%pn-%Z;7ATpvo<1;Nu)zL zBA$Q|{xNQ9Dx#b)pMbuPO%k7ce9(LXj$8t9J|a&a5#RscJ~?|XqRgIpyY>D5&EFn* zN0NHFrT@=Q*Wu8;on3$Kg${Q;;p2_%hxZ>EyYU8s+i$cNyfC@*U{}}_F&^wpzR+4R z`TY;ONw+`$;rmI!zp?XQ;5&d!OI_O!+A2Tx*Mn_-=)=1o^vTu6!^7k#bpOeZcmMBx zi1>RCcPE~VJiJHz&QGMWy~fz#eEWl+{Oc+I<0*QYpQrhGJOfYb;qh$z=ifX(dz@E$ rorim!w|kxEdwnmYJ-$bhw8!^O+Ut8NNqc**acg`0K0x>Uzxnw$O;J?) literal 0 HcmV?d00001 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