From 96df78117207c54bf8ae7c92cf7e7c0004f02b3c Mon Sep 17 00:00:00 2001 From: Melroy van den Berg Date: Sat, 19 Feb 2022 23:24:58 +0100 Subject: [PATCH] Install binaries to MacOS. And gsetting schema files to Resources --- CMakeLists.txt | 30 +++++++------- cmake/GSettings.cmake | 39 +++++++++++------- .../{bin => }/dbus-cleanup-sockets | Bin misc/packaging_macos/{bin => }/dbus-daemon | Bin misc/packaging_macos/{bin => }/dbus-launch | Bin misc/packaging_macos/{bin => }/dbus-monitor | Bin .../{bin => }/dbus-run-session | Bin misc/packaging_macos/{bin => }/dbus-send | Bin misc/packaging_macos/{bin => }/dbus-uuidgen | Bin misc/packaging_macos/{bin => }/gdbus | Bin 10 files changed, 39 insertions(+), 30 deletions(-) rename misc/packaging_macos/{bin => }/dbus-cleanup-sockets (100%) rename misc/packaging_macos/{bin => }/dbus-daemon (100%) rename misc/packaging_macos/{bin => }/dbus-launch (100%) rename misc/packaging_macos/{bin => }/dbus-monitor (100%) rename misc/packaging_macos/{bin => }/dbus-run-session (100%) rename misc/packaging_macos/{bin => }/dbus-send (100%) rename misc/packaging_macos/{bin => }/dbus-uuidgen (100%) rename misc/packaging_macos/{bin => }/gdbus (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0722445..479e4ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,19 @@ if(DOXYGEN) include(Doxygen) endif() +# Install location +if(WIN32) + set(DATADIR share CACHE PATH "datadir") +elseif(APPLE) + set(BUNDLEDIR ${PROJECT_NAME}.app/Contents/) + set(RESOURCESDIR ${BUNDLEDIR}/Resources) + set(MACOSDIR ${BUNDLEDIR}/MacOS CACHE PATH "macosdir") + set(DATADIR ${RESOURCESDIR}/share CACHE PATH "datadir") + set(LIBDIR ${RESOURCESDIR}/lib CACHE PATH "libadir") +elseif(UNIX) + set (DATADIR share CACHE PATH "datadir") +endif() + # Production build, let's include the CPack settings if("${CMAKE_BUILD_TYPE}" STREQUAL "Release") include(Packaging) @@ -58,23 +71,10 @@ add_subdirectory (lib/commonmarker/extensions) add_subdirectory (lib/ipfs-http-client) add_subdirectory (lib/whereami) add_subdirectory (src) - if(UNITTEST) add_subdirectory(tst) endif() -# Install location -if(WIN32) - set(DATADIR share CACHE PATH "datadir") -elseif(APPLE) - set(BUNDLEDIR ${PROJECT_NAME}.app/Contents/) - set(RESOURCESDIR ${BUNDLEDIR}/Resources) - set(DATADIR ${RESOURCESDIR}/share CACHE PATH "datadir") - set(LIBDIR ${RESOURCESDIR}/lib CACHE PATH "libadir") -elseif(UNIX) - set (DATADIR share CACHE PATH "datadir") -endif() - # Additional install files if(WIN32) # Microsoft Windows specific @@ -84,8 +84,8 @@ if(WIN32) elseif(APPLE) # Apple macOS specific install(DIRECTORY misc/packaging_icons/ DESTINATION ${DATADIR}/icons) - install(DIRECTORY misc/packaging_macos/ DESTINATION .) - install(PROGRAMS go-ipfs/ipfs-darwin DESTINATION bin) + install(DIRECTORY misc/packaging_macos/ DESTINATION ${MACOSDIR}) + install(PROGRAMS go-ipfs/ipfs-darwin DESTINATION ${MACOSDIR}) elseif(UNIX) # UNIX specific install(FILES misc/libreweb-browser.desktop DESTINATION ${DATADIR}/applications) diff --git a/cmake/GSettings.cmake b/cmake/GSettings.cmake index e610ffa..23ce0d3 100644 --- a/cmake/GSettings.cmake +++ b/cmake/GSettings.cmake @@ -14,7 +14,11 @@ else() endif() if(GSETTINGS_COMPILE) - message (STATUS "GSettings shemas will be compiled after install.") + if (UNIX AND NOT APPLE) + message (STATUS "GSettings shemas will be compiled after install.") + else() + set(GSETTINGS_COMPILE OFF CACHE BOOL "Disable schema compile after installation" FORCE) + endif() endif() macro(add_schema SCHEMA_NAME OUTPUT) @@ -22,10 +26,19 @@ macro(add_schema SCHEMA_NAME OUTPUT) set(PKG_CONFIG_EXECUTABLE pkg-config) if(GSETTINGS_PREFIXINSTALL) - set (GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas/") + if(WIN32 OR APPLE) + set(GSETTINGS_DIR "${DATADIR}/glib-2.0/schemas/") + elseif(UNIX) + # $DATADIR is relative, using GNU/Linux we want to have gsettings installed in the obsolute path + set(GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/${DATADIR}/glib-2.0/schemas/") + endif() else() - execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} glib-2.0 --variable prefix OUTPUT_VARIABLE _glib_prefix OUTPUT_STRIP_TRAILING_WHITESPACE) - set (GSETTINGS_DIR "${_glib_prefix}/share/glib-2.0/schemas/") + if(WIN32 OR APPLE) + set(GSETTINGS_DIR "${DATADIR}/glib-2.0/schemas/") + elseif(UNIX) + execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} glib-2.0 --variable prefix OUTPUT_VARIABLE _glib_prefix OUTPUT_STRIP_TRAILING_WHITESPACE) + set(GSETTINGS_DIR "${_glib_prefix}/${DATADIR}/glib-2.0/schemas/") + endif() endif() # Validate the schema @@ -36,7 +49,6 @@ macro(add_schema SCHEMA_NAME OUTPUT) message(SEND_ERROR "Schema validation error: ${_schemas_invalid}") endif(_schemas_invalid) - if(GSETTINGS_LOCALCOMPILE) # compile locally during build to not force the user to 'make install' # when running from the build dir @@ -57,18 +69,15 @@ macro(add_schema SCHEMA_NAME OUTPUT) endif(GSETTINGS_LOCALCOMPILE) # Install - if(WIN32) - message (STATUS "GSettings schema ${SCHEMA_NAME} will be installed into share/glib-2.0/schemas") - # For Windows the destination should always be relative - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/schema/${SCHEMA_NAME} DESTINATION share/glib-2.0/schemas) - # Also we want to ship the compiled binary to Windows - install(FILES ${PROJECT_BINARY_DIR}/gschemas.compiled DESTINATION share/glib-2.0/schemas) - else() - message (STATUS "GSettings schema ${SCHEMA_NAME} will be installed into ${GSETTINGS_DIR}") - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/schema/${SCHEMA_NAME} DESTINATION ${GSETTINGS_DIR}) + message (STATUS "GSettings schema ${SCHEMA_NAME} will be installed into ${GSETTINGS_DIR}") + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/schema/${SCHEMA_NAME} DESTINATION ${GSETTINGS_DIR}) + if(WIN32 OR APPLE) + # Also we want to ship the compiled binary to Windows and macOS + message (STATUS "GSettings gschemas.compiled will be installed into ${GSETTINGS_DIR}") + install(FILES ${PROJECT_BINARY_DIR}/gschemas.compiled DESTINATION ${GSETTINGS_DIR}) endif() - # Compile + # Compile after installation (UNIX only) if(GSETTINGS_COMPILE) install(CODE "message (STATUS \"Compiling GSettings schemas\")") install(CODE "execute_process (COMMAND ${_glib_comple_schemas} ${GSETTINGS_DIR})") diff --git a/misc/packaging_macos/bin/dbus-cleanup-sockets b/misc/packaging_macos/dbus-cleanup-sockets similarity index 100% rename from misc/packaging_macos/bin/dbus-cleanup-sockets rename to misc/packaging_macos/dbus-cleanup-sockets diff --git a/misc/packaging_macos/bin/dbus-daemon b/misc/packaging_macos/dbus-daemon similarity index 100% rename from misc/packaging_macos/bin/dbus-daemon rename to misc/packaging_macos/dbus-daemon diff --git a/misc/packaging_macos/bin/dbus-launch b/misc/packaging_macos/dbus-launch similarity index 100% rename from misc/packaging_macos/bin/dbus-launch rename to misc/packaging_macos/dbus-launch diff --git a/misc/packaging_macos/bin/dbus-monitor b/misc/packaging_macos/dbus-monitor similarity index 100% rename from misc/packaging_macos/bin/dbus-monitor rename to misc/packaging_macos/dbus-monitor diff --git a/misc/packaging_macos/bin/dbus-run-session b/misc/packaging_macos/dbus-run-session similarity index 100% rename from misc/packaging_macos/bin/dbus-run-session rename to misc/packaging_macos/dbus-run-session diff --git a/misc/packaging_macos/bin/dbus-send b/misc/packaging_macos/dbus-send similarity index 100% rename from misc/packaging_macos/bin/dbus-send rename to misc/packaging_macos/dbus-send diff --git a/misc/packaging_macos/bin/dbus-uuidgen b/misc/packaging_macos/dbus-uuidgen similarity index 100% rename from misc/packaging_macos/bin/dbus-uuidgen rename to misc/packaging_macos/dbus-uuidgen diff --git a/misc/packaging_macos/bin/gdbus b/misc/packaging_macos/gdbus similarity index 100% rename from misc/packaging_macos/bin/gdbus rename to misc/packaging_macos/gdbus