385 lines
12 KiB
CMake
385 lines
12 KiB
CMake
#-------------------------------------------------------------------------------
|
|
# _detach_debuginfo(<target> <dest>)
|
|
#
|
|
# Helper macro to detach the debug information from the target.
|
|
#
|
|
# The debug info of the given target are extracted and saved on a different file
|
|
# with the extension '.dbg', that is installed alongside the target in the .debug folder.
|
|
#-------------------------------------------------------------------------------
|
|
macro(_detach_debuginfo target dest)
|
|
set (CMAKE_OBJCOPY, objcopy)
|
|
|
|
add_custom_command (TARGET ${target} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory .debug
|
|
COMMAND objcopy --only-keep-debug $<TARGET_FILE:${target}> $<TARGET_FILE_DIR:${target}>/$<TARGET_FILE_NAME:${target}>.dbg
|
|
COMMAND objcopy --strip-debug $<TARGET_FILE:${target}>
|
|
COMMAND objcopy --add-gnu-debuglink=$<TARGET_FILE_NAME:${target}>.dbg $<TARGET_FILE:${target}>
|
|
COMMENT "Detaching debug infos for ${target}."
|
|
)
|
|
|
|
# ensure that the debug file is installed on 'make install'...
|
|
install(
|
|
FILES $<TARGET_FILE_DIR:${target}>/$<TARGET_FILE_NAME:${target}>.dbg
|
|
DESTINATION ${dest}/.debug
|
|
COMPONENT DTDebugSymbols)
|
|
|
|
# ... and removed on 'make clean'.
|
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES $<TARGET_FILE_NAME:${target}>.dbg)
|
|
endmacro()
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# _copy_required_library(<target> <library>)
|
|
#
|
|
# Helper function to copy required library (specified by target) alongside the
|
|
# target binary.
|
|
#
|
|
# This is required as Win doesn't have a RPATH
|
|
#-------------------------------------------------------------------------------
|
|
function(_copy_required_library target library)
|
|
message( STATUS "WIN32: Adding post-build step to copy required lib alongside target binary")
|
|
add_custom_command(TARGET ${target} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${library}> $<TARGET_FILE_DIR:${target}>
|
|
)
|
|
endfunction()
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# _install_translations(<catalog> <src_localedir>)
|
|
#
|
|
# Helper macro to install all available translations for a given catalog.
|
|
#-------------------------------------------------------------------------------
|
|
macro(_install_translations catalog src_localedir)
|
|
file(GLOB MO_FILES RELATIVE "${src_localedir}" "${src_localedir}/*/LC_MESSAGES/${catalog}.mo")
|
|
foreach(MO ${MO_FILES})
|
|
get_filename_component(MO_TARGET_DIR "${MO}" DIRECTORY)
|
|
install(FILES "${src_localedir}/${MO}" DESTINATION "share/locale/${MO_TARGET_DIR}" COMPONENT DTApplication)
|
|
endforeach()
|
|
endmacro()
|
|
|
|
|
|
function(InstallDependencyFiles)
|
|
|
|
if (WIN32 AND NOT BUILD_MSYS2_INSTALL)
|
|
# Dependency files (files which needs to be installed alongside the darktable binaries)
|
|
# Please note these are ONLY the files which are not geing detected by fixup_bundle()
|
|
# must be in the bin directory
|
|
message( STATUS "WIN32: Adding dependency files to install" )
|
|
get_filename_component(MINGW_PATH ${CMAKE_CXX_COMPILER} PATH )
|
|
|
|
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
|
|
file(GLOB CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS
|
|
#GTK3
|
|
${MINGW_PATH}/libgailutil*.dll
|
|
${MINGW_PATH}/libcairo-script-interpreter*.dll
|
|
${MINGW_PATH}/libgthread*.dll
|
|
${MINGW_PATH}/gdk-pixbuf-query-loaders.exe
|
|
${MINGW_PATH}/gtk-query-immodules*.exe
|
|
${MINGW_PATH}/gtk-update-icon-cache.exe
|
|
${MINGW_PATH}/gspawn-win64-helper.exe
|
|
${MINGW_PATH}/gspawn-win64-helper-console.exe
|
|
${MINGW_PATH}/gdbus.exe
|
|
#LZO2
|
|
${MINGW_PATH}/liblzo*.dll
|
|
#C-ARES
|
|
${MINGW_PATH}/libcares*.dll
|
|
#LIBMETALINK
|
|
${MINGW_PATH}/libmetalink*.dll
|
|
#JANSSON
|
|
${MINGW_PATH}/libjansson*.dll
|
|
#SPDYLAY
|
|
${MINGW_PATH}/libspdylay*.dll
|
|
#JPEG
|
|
${MINGW_PATH}/libturbojpeg*.dll
|
|
#ZLIB
|
|
${MINGW_PATH}/libminizip*.dll
|
|
#TIFF
|
|
${MINGW_PATH}/libtiffxx*.dll
|
|
#GETTEXT
|
|
${MINGW_PATH}/libasprintf*.dll
|
|
${MINGW_PATH}/libgettextlib*.dll
|
|
${MINGW_PATH}/libgettextpo*.dll
|
|
${MINGW_PATH}/libgettextsrc*.dll
|
|
#FONTCONFIG
|
|
${MINGW_PATH}/fc-cache.exe
|
|
${MINGW_PATH}/fc-cat.exe
|
|
${MINGW_PATH}/fc-list.exe
|
|
${MINGW_PATH}/fc-match.exe
|
|
${MINGW_PATH}/fc-pattern.exe
|
|
${MINGW_PATH}/fc-query.exe
|
|
${MINGW_PATH}/fc-scan.exe
|
|
${MINGW_PATH}/fc-validate.exe
|
|
#HARFBUZZ
|
|
${MINGW_PATH}/libharfbuzz-gobject*.dll
|
|
${MINGW_PATH}/libharfbuzz-icu*.dll
|
|
#LIBICONV
|
|
${MINGW_PATH}/libcharset*.dll
|
|
#WINEDITLINE
|
|
${MINGW_PATH}/edit.dll
|
|
#PCRE
|
|
${MINGW_PATH}/libpcre16*.dll
|
|
${MINGW_PATH}/libpcre32*.dll
|
|
${MINGW_PATH}/libpcrecpp*.dll
|
|
${MINGW_PATH}/libpcreposix*.dll
|
|
#GNUTLS
|
|
${MINGW_PATH}/libgnutlsxx*.dll
|
|
#GMP
|
|
${MINGW_PATH}/libgmpxx*.dll
|
|
#LIBUSB1
|
|
${MINGW_PATH}/libusb*.dll
|
|
#OPENSSL
|
|
${MINGW_PATH}/libcrypto*.dll
|
|
${MINGW_PATH}/libssl*.dll
|
|
)
|
|
|
|
if(Imath_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#IMATH
|
|
${MINGW_PATH}/libImath-*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif()
|
|
|
|
if(OpenEXR_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#OPENEXR
|
|
${MINGW_PATH}/libIex-*.dll
|
|
${MINGW_PATH}/libIlmThread-*.dll
|
|
${MINGW_PATH}/libOpenEXR-*.dll
|
|
${MINGW_PATH}/libOpenEXRCore-*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif()
|
|
|
|
if(OpenJPEG_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#OPENJPEG
|
|
${MINGW_PATH}/libopenjp2*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif()
|
|
|
|
if(GraphicsMagick_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#GRAPHICKSMAGICK
|
|
${MINGW_PATH}/libltdl*.dll
|
|
${MINGW_PATH}/libGraphicsMagick-*.dll
|
|
#CODERS
|
|
${MINGW_PATH}/libbrotli*.dll
|
|
${MINGW_PATH}/libbz2*.dll
|
|
${MINGW_PATH}/libhwy.dll
|
|
${MINGW_PATH}/libjasper.dll
|
|
${MINGW_PATH}/libjxl*.dll
|
|
${MINGW_PATH}/libsharpyuv*.dll
|
|
${MINGW_PATH}/libwebp-*.dll
|
|
${MINGW_PATH}/libwebpmux*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif()
|
|
|
|
if(ImageMagick_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#IMAGEMAGICK
|
|
${MINGW_PATH}/libltdl*.dll
|
|
${MINGW_PATH}/libMagickCore-*.dll
|
|
${MINGW_PATH}/libMagickWand-*.dll
|
|
#CODERS
|
|
${MINGW_PATH}/libbrotli*.dll
|
|
${MINGW_PATH}/libbz2*.dll
|
|
${MINGW_PATH}/libhwy.dll
|
|
${MINGW_PATH}/libjxl*.dll
|
|
${MINGW_PATH}/liblzma*.dll
|
|
${MINGW_PATH}/libopenjp2*.dll
|
|
${MINGW_PATH}/libsharpyuv*.dll
|
|
${MINGW_PATH}/libwebp-*.dll
|
|
${MINGW_PATH}/libwebpdemux*.dll
|
|
${MINGW_PATH}/libwebpmux*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif()
|
|
|
|
# workaround for msys2 gmic 2.9.0-3. Should be reviewed when gmic 2.9.3 is available
|
|
if(GMIC_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#GMIC
|
|
${MINGW_PATH}/libopencv_core*.dll
|
|
${MINGW_PATH}/libopencv_videoio*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif()
|
|
|
|
if(JXL_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#LIBJXL
|
|
${MINGW_PATH}/libjxl.dll
|
|
${MINGW_PATH}/libjxl_threads.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif()
|
|
|
|
if(WebP_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#LIBWEBP
|
|
${MINGW_PATH}/libsharpyuv*.dll
|
|
#${MINGW_PATH}/libwebpdecoder*.dll
|
|
#${MINGW_PATH}/libwebpdemux*.dll
|
|
#${MINGW_PATH}/libwebpextras*.dll
|
|
${MINGW_PATH}/libwebpmux*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif()
|
|
|
|
# Add GLib and GTK translations
|
|
_install_translations(glib20 ${MINGW_PATH}/../share/locale)
|
|
_install_translations(gtk30 ${MINGW_PATH}/../share/locale)
|
|
|
|
# TODO: Add auxiliary files for openssl?
|
|
|
|
# Add pixbuf loader libraries
|
|
# FILE(GLOB_RECURSE GDK_PIXBUF "${MINGW_PATH}/../lib/gdk-pixbuf-2.0/2.10.0/loaders/*.dll" )
|
|
install(DIRECTORY
|
|
"${MINGW_PATH}/../lib/gdk-pixbuf-2.0"
|
|
DESTINATION lib/
|
|
COMPONENT DTApplication
|
|
PATTERN "*.a" EXCLUDE)
|
|
|
|
# Add glib-networking modules
|
|
install(DIRECTORY
|
|
"${MINGW_PATH}/../lib/gio/modules/"
|
|
DESTINATION lib/gio/modules/
|
|
COMPONENT DTApplication)
|
|
|
|
# Add adwaita-icon-theme files
|
|
install(DIRECTORY
|
|
"${MINGW_PATH}/../share/icons/adwaita/"
|
|
DESTINATION share/icons/adwaita/
|
|
COMPONENT DTApplication)
|
|
|
|
# fixup hicolor theme
|
|
install(FILES
|
|
"${MINGW_PATH}/../share/icons/hicolor/index.theme"
|
|
DESTINATION share/icons/hicolor/
|
|
COMPONENT DTApplication)
|
|
|
|
# Add gtk schemas files
|
|
install(DIRECTORY
|
|
"${MINGW_PATH}/../share/glib-2.0/schemas/"
|
|
DESTINATION share/glib-2.0/schemas/
|
|
COMPONENT DTApplication)
|
|
|
|
# Add libthai files
|
|
install(DIRECTORY
|
|
"${MINGW_PATH}/../share/libthai/"
|
|
DESTINATION share/libthai/
|
|
COMPONENT DTApplication)
|
|
|
|
# Add libgphoto2 files and dependencies
|
|
if(Gphoto2_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
${MINGW_PATH}/imagequant.dll
|
|
${MINGW_PATH}/libexif*.dll
|
|
${MINGW_PATH}/libgd.dll
|
|
${MINGW_PATH}/libusb*.dll
|
|
${MINGW_PATH}/libXpm-noX*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
|
|
install(DIRECTORY
|
|
"${MINGW_PATH}/../lib/libgphoto2"
|
|
DESTINATION lib/
|
|
COMPONENT DTApplication
|
|
PATTERN "*.a" EXCLUDE)
|
|
_install_translations(libgphoto2-6 ${MINGW_PATH}/../share/locale)
|
|
|
|
install(DIRECTORY
|
|
"${MINGW_PATH}/../lib/libgphoto2_port"
|
|
DESTINATION lib/
|
|
COMPONENT DTApplication
|
|
PATTERN "*.a" EXCLUDE
|
|
PATTERN "usb.dll" EXCLUDE)
|
|
endif()
|
|
|
|
# Add GraphicsMagick libraries
|
|
if(GraphicsMagick_FOUND)
|
|
install(DIRECTORY
|
|
"${MINGW_PATH}/../lib/GraphicsMagick-${GraphicsMagick_VERSION}/modules-Q16/coders"
|
|
DESTINATION lib/GraphicsMagick-${GraphicsMagick_VERSION}/modules-Q16/
|
|
COMPONENT DTApplication
|
|
FILES_MATCHING PATTERN "*"
|
|
# For some reason *.la files must be kept alongside DLLs
|
|
PATTERN "*.a" EXCLUDE)
|
|
endif()
|
|
|
|
# Add ImageMagick libraries
|
|
if(ImageMagick_FOUND)
|
|
install(DIRECTORY
|
|
"${MINGW_PATH}/../lib/ImageMagick-${ImageMagick_VERSION}/modules-Q16HDRI/coders"
|
|
DESTINATION lib/ImageMagick-${ImageMagick_VERSION}/modules-Q16HDRI/
|
|
COMPONENT DTApplication
|
|
FILES_MATCHING PATTERN "*"
|
|
# For some reason *.la files must be kept alongside DLLs
|
|
PATTERN "*.a" EXCLUDE)
|
|
endif()
|
|
|
|
# Add lensfun libraries
|
|
if(LensFun_FOUND)
|
|
set(LENSFUN_DB_GLOBAL "${MINGW_PATH}/../share/lensfun/version_1")
|
|
set(LENSFUN_DB_UPDATES "${MINGW_PATH}/../var/lib/lensfun-updates/version_1")
|
|
set(LENSFUN_DB "${LENSFUN_DB_GLOBAL}")
|
|
if(EXISTS "${LENSFUN_DB_UPDATES}")
|
|
file(READ "${LENSFUN_DB_GLOBAL}/timestamp.txt" LENSFUN_TS)
|
|
file(READ "${LENSFUN_DB_UPDATES}/timestamp.txt" LENSFUN_TS_UPDATE)
|
|
if(LENSFUN_TS LESS LENSFUN_TS_UPDATE)
|
|
set(LENSFUN_DB "${LENSFUN_DB_UPDATES}")
|
|
endif()
|
|
endif()
|
|
message(STATUS "Installing lensfun database from ${LENSFUN_DB}")
|
|
install(DIRECTORY
|
|
"${LENSFUN_DB}"
|
|
DESTINATION share/lensfun/
|
|
COMPONENT DTApplication)
|
|
endif(LensFun_FOUND)
|
|
|
|
# Add iso-codes
|
|
if(IsoCodes_FOUND)
|
|
install(FILES
|
|
"${IsoCodes_LOCATION}/iso_639-2.json"
|
|
DESTINATION share/iso-codes/json/
|
|
COMPONENT DTApplication
|
|
)
|
|
_install_translations(iso_639-2 ${IsoCodes_LOCALEDIR})
|
|
endif(IsoCodes_FOUND)
|
|
|
|
# Add ca-cert for curl
|
|
install(FILES
|
|
"${MINGW_PATH}/../etc/ssl/certs/ca-bundle.crt"
|
|
DESTINATION share/curl/
|
|
RENAME curl-ca-bundle.crt
|
|
COMPONENT DTApplication)
|
|
|
|
# Add libavif files
|
|
if(libavif_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#LIBAVIF
|
|
${MINGW_PATH}/libavif*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif(libavif_FOUND)
|
|
|
|
# Add rsvg2 files
|
|
if(Rsvg2_FOUND)
|
|
file(GLOB TMP_SYSTEM_RUNTIME_LIBS
|
|
#RSVG2
|
|
${MINGW_PATH}/librsvg*.dll
|
|
)
|
|
list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${TMP_SYSTEM_RUNTIME_LIBS})
|
|
endif(Rsvg2_FOUND)
|
|
|
|
list(REMOVE_DUPLICATES CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
|
|
|
|
install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION bin COMPONENT DTApplication)
|
|
|
|
endif(WIN32 AND NOT BUILD_MSYS2_INSTALL)
|
|
|
|
endfunction()
|