mitsuba/data/cmake/packaging/CMakeLists.txt

126 lines
4.2 KiB
CMake

# Dependencies installation, bundle fixup and CPack
if (NOT MTS_VERSION)
message(FATAL_ERROR "Use the top level configuration file")
endif()
include (CMakeDependentOption)
# Offer an option to automatically bundle qt4image through BundleUtilities
include(CMakeDependentOption)
if(APPLE OR WIN32)
set(MTS_FIXUP_BUNDLE_DEFAULT ON)
else()
set(MTS_FIXUP_BUNDLE_DEFAULT OFF)
endif()
option(MTS_FIXUP_BUNDLE "Automatically bundle all mitsuba dependencies."
${MTS_FIXUP_BUNDLE_DEFAULT})
if (APPLE)
set(MTS_QT_PLUGIN_DEST "${MTS_BUNDLE_NAME}/Contents/qt4plugins")
set(MTS_QTCONF_DEST "${MTS_BUNDLE_RESOURCES}")
elseif (WIN32)
set(MTS_QT_PLUGIN_DEST "qt4plugins")
set(MTS_QTCONF_DEST ".")
else ()
set(MTS_QT_PLUGIN_DEST "bin/qt4plugins")
set(MTS_QTCONF_DEST "bin")
endif()
# Install the needed Qt plugins
if (MTS_FIXUP_BUNDLE AND QT4_FOUND AND BUILD_GUI AND
NOT(QT_CONFIG MATCHES "static"))
set (MTS_BUNDLE_QTPLUGINS TRUE)
else ()
set (MTS_BUNDLE_QTPLUGINS FALSE)
endif ()
# Imageformats, excluding svg,mng and gif (most likely not actually used by mitsuba)
if(MTS_BUNDLE_QTPLUGINS AND EXISTS "${QT_PLUGINS_DIR}/imageformats")
if(NOT WIN32 OR NOT (QT_QTGUI_LIBRARY_RELEASE AND QT_QTGUI_LIBRARY_DEBUG))
install(DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
DESTINATION "${MTS_QT_PLUGIN_DEST}"
COMPONENT "Runtime"
REGEX ".+(d4\\.dll|_debug\\.(dylib|so))$" EXCLUDE
REGEX "svg|mng|gif" EXCLUDE)
else()
# There are different plugins for release and debug
install(DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
DESTINATION "${MTS_QT_PLUGIN_DEST}"
COMPONENT "Runtime" CONFIGURATIONS Debug
FILES_MATCHING
REGEX ".+(d4\\.dll|_debug\\.(dylib|so))$"
REGEX "svg|mng|gif|\\.pdb$|\\.lib$" EXCLUDE)
install(DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
DESTINATION "${MTS_QT_PLUGIN_DEST}"
COMPONENT "Runtime" CONFIGURATIONS Release MinSizeRel RelWithDebInfo
REGEX ".+(d4\\.dll|_debug\\.(dylib|so))$" EXCLUDE
REGEX "svg|mng|gif|\\.pdb$|\\.lib$" EXCLUDE)
endif()
endif()
# Bearer management (introduced with Qt 4.7)
if(MTS_BUNDLE_QTPLUGINS AND EXISTS "${QT_PLUGINS_DIR}/bearer")
if(NOT WIN32 OR NOT (QT_QTNETWORK_LIBRARY_RELEASE AND QT_QTNETWORK_LIBRARY_DEBUG))
install(DIRECTORY "${QT_PLUGINS_DIR}/bearer"
DESTINATION "${MTS_QT_PLUGIN_DEST}"
COMPONENT "Runtime"
REGEX ".+(d4\\.dll|_debug\\.(dylib|so))$" EXCLUDE)
else()
# There are different plugins for release and debug
install(DIRECTORY "${QT_PLUGINS_DIR}/bearer"
DESTINATION "${MTS_QT_PLUGIN_DEST}"
COMPONENT "Runtime" CONFIGURATIONS Debug
FILES_MATCHING
REGEX ".+(d4\\.dll|_debug\\.(dylib|so))$"
REGEX "\\.pdb$|\\.lib$" EXCLUDE)
install(DIRECTORY "${QT_PLUGINS_DIR}/bearer"
DESTINATION "${MTS_QT_PLUGIN_DEST}"
COMPONENT "Runtime" CONFIGURATIONS Release MinSizeRel RelWithDebInfo
REGEX ".+(d4\\.dll|_debug\\.(dylib|so))$" EXCLUDE
REGEX "\\.pdb$|\\.lib$" EXCLUDE)
endif()
endif()
# The Cocoa version needs extra resources
set(QTCOCOA_MENU_NIB "${QT_QTGUI_LIBRARY}/Resources/qt_menu.nib")
if(MTS_FIXUP_BUNDLE AND QT4_FOUND AND QT_MAC_USE_COCOA
AND EXISTS "${QTCOCOA_MENU_NIB}")
install(CODE "
message(STATUS \"Copying qt_menu.nib into the Bundle resources\")
file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/${MTS_BUNDLE_RESOURCES}/qt_menu.nib\")
execute_process(COMMAND \${CMAKE_COMMAND} -E copy_directory
\"${QTCOCOA_MENU_NIB}\"
\"\${CMAKE_INSTALL_PREFIX}/${MTS_BUNDLE_RESOURCES}/qt_menu.nib\")
" COMPONENT "Runtime")
endif()
if (MTS_BUNDLE_QTPLUGINS)
install(CODE "
message(STATUS \"Writing qt.conf\")
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${MTS_QTCONF_DEST}/qt.conf\"
\"[Paths]
Plugins = qt4plugins
\")
" COMPONENT "Runtime")
endif ()
if (MTS_FIXUP_BUNDLE)
# Construct the list of directories with the currently set up libraries as
# a way to automate "fixup_bundle" as much as possible
mts_library_paths (MTS_LIBPATHS)
configure_file ("MtsFixupBundle.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/MtsFixupBundle.cmake" @ONLY)
install (SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/MtsFixupBundle.cmake"
COMPONENT Runtime)
endif () # MTS_FIXUP_BUNDLE