1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
cmake_minimum_required(VERSION 3.17.0)
cmake_policy(VERSION 3.17.0)
# This will install McStas or McXtrace mc/display-webgl-classic
project(python-tools-mcdisplay-webgl-classic C)
message(STATUS "Configure ${CMAKE_PROJECT_NAME} ${FLAVOR} ${PROJECT_NAME}")
# Choose between McStas or McXtrace
option(BUILD_MCSTAS "Choose the McStas flavor" off)
option(BUILD_MCXTRACE "Choose the McXtrace flavor (trumps BUILD_MCSTAS)" Off)
# Set module path
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
# Set McCode values (from mkdist or defaults)
include(MCUtil)
if (${BUILD_MCXTRACE})
set(FLAVOR "mcxtrace")
set(CPACK_PACKAGE_HOMEPAGE_URL "http://mcxtrace.org/")
elseif(${BUILD_MCSTAS})
set(FLAVOR "mcstas")
set(CPACK_PACKAGE_HOMEPAGE_URL "http://mcstas.org/")
else()
message(FATAL_ERROR "No flavor specified!\n"
"Please use either -DBUILD_MCSTAS=1 or -DBUILD_MCXTRACE=1")
endif()
setupMCCODE("${FLAVOR}")
# Select prefix
set(P "${MCCODE_PREFIX}")
set(TOOLS_NAME "Python/${P}display/webgl-classic")
# CPack configuration
set(CPACK_PACKAGE_NAME "${FLAVOR}-tools-python-${P}display-webgl-classic")
set(CPACK_RESOURCE_FilE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
set(CPACK_PACKAGE_CONTACT "pkwi@fysik.dtu.dk")
set(CPACK_PACKAGE_VERSION "${MCCODE_MAJOR}.${MCCODE_MINOR}.${MCCODE_PATCH}")
set(CPACK_PACKAGE_VERSION_MAJOR "${MCCODE_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${MCCODE_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${MCCODE_PATCH}")
# NSIS
set(NSIS_NAME "Python/webgl -based ${P}display (${P}display-webgl-classic-py), ${MCCODE_STRING}")
set(CPACK_NSIS_PACKAGE_NAME "${NSIS_NAME}")
set(CPACK_NSIS_DISPLAY_NAME "${NSIS_NAME}")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${NSIS_NAME}")
# Debian
set(CPACK_DEBIAN_PACKAGE_DEPENDS "${FLAVOR}, python3, python3-ply, python3-numpy")
set(CPACK_DEBIAN_PACKAGE_REPLACES "${FLAVOR}-tools-python-${P}display-webgl-classic-3.5.1")
# RPM
if (RPMPROFILE)
if (RPMPROFILE STREQUAL "fedora")
set(PYDEPS "python3, python3-ply, python3-numpy")
else()
set(PYDEPS "")
endif()
else()
set(PYDEPS "")
endif()
set(CPACK_RPM_PACKAGE_REQUIRES
"${FLAVOR}-${MCCODE_VERSION}, ${PYDEPS}"
)
include(CPack)
set(WORK "${PROJECT_BINARY_DIR}/work")
# Configure fallback script
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mcdisplay.in" "${WORK}/${P}display" @ONLY)
# Configure doc
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mcdisplay-webgl-classic.md.in" "${WORK}/${P}display-webgl-classic.md" @ONLY)
# Main script, including rename mc/mxdisplay
install(
PROGRAMS "${PROJECT_SOURCE_DIR}/mcdisplay.py"
DESTINATION "${DEST_TOOLDIR}/${TOOLS_NAME}"
RENAME "${P}display.py"
)
# Other .py infrastructure
foreach(NAME mcdisplay.js Lut.js OrbitControls.js template.html __init__.py)
install(
FILES "${PROJECT_SOURCE_DIR}/${NAME}"
DESTINATION "${DEST_TOOLDIR}/${TOOLS_NAME}"
)
endforeach()
# Wrapper-scripts on windows are handled via
# cmake Modules/MCUtil
if(NOT WINDOWS)
install(
PROGRAMS ${PROJECT_SOURCE_DIR}/mcdisplay.py
DESTINATION "${DEST_TOOLDIR}/${TOOLS_NAME}"
RENAME "${P}display.py"
)
install(
PROGRAMS "${WORK}/${P}display"
DESTINATION ${DEST_BINDIR}
RENAME "${P}display-webgl-classic"
)
install(
FILES "${WORK}/${P}display-webgl-classic.md"
DESTINATION "${DEST_DATADIR_DOC}"
)
endif()
|