Install binaries to MacOS. And gsetting schema files to Resources

master
Melroy van den Berg 2022-02-19 23:24:58 +01:00
parent 7ea5cbd2c3
commit 96df781172
No known key found for this signature in database
GPG Key ID: 71D11FF23454B9D7
10 changed files with 39 additions and 30 deletions

View File

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

View File

@ -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})")