xtc/cmake/Install.cmake

46 lines
2.7 KiB
CMake
Raw Permalink Normal View History

2026-11-06 19:05:14 +01:00
# Retain the audited owned-file inventory and symlink-safe staging implementation.
set(XTC_INSTALL_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE PATH "Directory containing built install inputs")
option(XTC_INSTALL_GUI "Include the GUI in installation" ${XTC_GUI_AVAILABLE})
set(XTC_INSTALL_LICENSEDIR "${CMAKE_INSTALL_DATAROOTDIR}/licenses/xtc" CACHE STRING "License install directory")
set(XTC_INSTALL_EXAMPLESDIR "${CMAKE_INSTALL_DATAROOTDIR}/xtc/examples" CACHE STRING "Example install directory")
set(XTC_INSTALL_DESKTOPDIR "${CMAKE_INSTALL_DATAROOTDIR}/applications" CACHE STRING "Desktop entry directory")
set(XTC_INSTALL_PKGCONFIGDIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig" CACHE STRING "pkg-config directory")
configure_file(cmake/InstallDriver.cmake.in xtc-install.cmake @ONLY)
install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/xtc-install.cmake")
add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -DXTC_UNINSTALL=ON -P "${CMAKE_CURRENT_BINARY_DIR}/xtc-install.cmake" VERBATIM)
add_custom_target(dist COMMAND ${Python3_EXECUTABLE} tools/dist.py --output "${CMAKE_CURRENT_BINARY_DIR}/xtc-${PROJECT_VERSION}.tar.gz"
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" VERBATIM)
set(gui_arg)
if(XTC_GUI_AVAILABLE)
set(gui_arg --gui)
endif()
if(BUILD_TESTING)
foreach(layout "" "-layout")
set(extra)
if(layout)
set(extra --custom-layout)
endif()
add_custom_target(test-install${layout} COMMAND ${Python3_EXECUTABLE} tests/integration/test_install.py
--build-dir "${CMAKE_CURRENT_BINARY_DIR}" ${gui_arg} ${extra}
DEPENDS xtc-core xtc-check
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" VERBATIM)
if(XTC_GUI_AVAILABLE)
add_dependencies(test-install${layout} xtc)
endif()
endforeach()
add_custom_target(test-release COMMAND ${Python3_EXECUTABLE} tests/integration/test_release.py
"${CMAKE_CURRENT_BINARY_DIR}/xtc-${PROJECT_VERSION}.tar.gz" --generator "${CMAKE_GENERATOR}" ${gui_arg}
DEPENDS dist WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" VERBATIM)
endif()
set(package_file "${CMAKE_CURRENT_BINARY_DIR}/xtc-${PROJECT_VERSION}-linux-${CMAKE_SYSTEM_PROCESSOR}.tar.gz")
add_custom_target(package-binary COMMAND ${Python3_EXECUTABLE} tools/package.py
--build-dir "${CMAKE_CURRENT_BINARY_DIR}" --output "${package_file}" ${gui_arg}
DEPENDS xtc-core xtc-check WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" VERBATIM)
if(XTC_GUI_AVAILABLE)
add_dependencies(package-binary xtc)
endif()
add_custom_target(test-package COMMAND ${Python3_EXECUTABLE} tests/integration/test_package.py
"${package_file}" --build-dir "${CMAKE_CURRENT_BINARY_DIR}"
DEPENDS package-binary WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" VERBATIM)
add_custom_target(package DEPENDS package-binary)