File: CMakeLists.txt

package info (click to toggle)
votca 2025.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 132,420 kB
  • sloc: xml: 345,964; cpp: 80,067; python: 15,957; sh: 4,580; perl: 2,169; javascript: 202; makefile: 34
file content (62 lines) | stat: -rw-r--r-- 3,031 bytes parent folder | download | duplicates (2)
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
set(XTP_RST_FILES)
set(XTP_SCRIPTS)
foreach(_pkg lxml h5py rdkit)
  if(NOT PY${_pkg}_FOUND)
    execute_process(COMMAND ${Python_EXECUTABLE} -c "import ${_pkg}" RESULT_VARIABLE IMPORT_py${_pkg})
    if(IMPORT_py${_pkg} EQUAL 0)
      set(PY${_pkg}_FOUND TRUE CACHE INTERNAL "")
      message(STATUS "Found python module ${_pkg}")
    endif()
  endif()
endforeach()
if(PYlxml_FOUND)
  list(APPEND XTP_SCRIPTS xtp_basisset xtp_update_mapfile xtp_modify_jobfile)
endif()
if(PYrdkit_FOUND)
  list(APPEND XTP_SCRIPTS xtp_autogen_mapping)
endif()
if(PYh5py_FOUND)
  list(APPEND XTP_SCRIPTS xtp_qmmm2qm)
endif()

if(SPHINX_FOUND)
  set(XTP_REFERENCE "${VOTCA_SPHINX_DIR}/xtp/reference.rst")
  file(WRITE ${XTP_REFERENCE} "Reference\n=========\n\nPrograms\n--------\n\n")
endif()

foreach(SCRIPT ${XTP_SCRIPTS}) 
  configure_file(${SCRIPT} ${CMAKE_CURRENT_BINARY_DIR}/${SCRIPT}.in2 @ONLY)
  add_custom_target(${SCRIPT}_build ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${SCRIPT}.install)
  add_custom_command(OUTPUT ${SCRIPT}.install COMMAND ${CMAKE_COMMAND}
    -DINPUT="${SCRIPT}.in2" -DOUTPUT="${SCRIPT}.install"
    -DGIT_EXECUTABLE="${GIT_EXECUTABLE}"
    -DTOP_SOURCE_DIR="${PROJECT_SOURCE_DIR}" -P ${PROJECT_SOURCE_DIR}/CMakeModules/gitscript.cmake
    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${SCRIPT}.in2 ${PROJECT_SOURCE_DIR}/CMakeModules/gitscript.cmake
    COMMENT "Generating ${SCRIPT}")
  set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${SCRIPT}.install)
  install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${SCRIPT}.install RENAME ${SCRIPT} DESTINATION ${CMAKE_INSTALL_BINDIR})
  # use the source script for man and rst as the version string gets removed
  if (BUILD_MANPAGES)
    add_custom_command(OUTPUT ${SCRIPT}.man
      COMMAND ${Python_EXECUTABLE} $<TARGET_FILE:VOTCA::votca_help2doc> --name ${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT} --format groff --out ${SCRIPT}.man
      COMMENT "Building ${SCRIPT} manpage"
      DEPENDS VOTCA::votca_help2doc)
    add_custom_target(${SCRIPT}_manpage DEPENDS ${SCRIPT}.man ${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT})
    add_dependencies(manpages ${SCRIPT}_manpage)
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SCRIPT}.man DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME ${SCRIPT}.1)
  endif()
  if(SPHINX_FOUND)
    add_custom_command(OUTPUT ${VOTCA_SPHINX_DIR}/xtp/${SCRIPT}.rst
      COMMAND ${Python_EXECUTABLE} $<TARGET_FILE:VOTCA::votca_help2doc> --name ${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT} --format rst --out ${VOTCA_SPHINX_DIR}/xtp/${SCRIPT}.rst
      COMMENT "Building ${SCRIPT} rst doc"
      DEPENDS VOTCA::votca_help2doc ${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT})
    list(APPEND TOOLS_RST_FILES ${VOTCA_SPHINX_DIR}/xtp/${SCRIPT}.rst)
    string(REGEX REPLACE "." "^" _SCRIPT_UNDERLINE "${SCRIPT}")
    file(APPEND ${XTP_REFERENCE} "${SCRIPT}\n${_SCRIPT_UNDERLINE}\n\n.. include:: ${SCRIPT}.rst\n\n")
  endif()
endforeach(SCRIPT)

if(SPHINX_FOUND)
  add_custom_target(xtp-scripts-rst DEPENDS ${TOOLS_RST_FILES})
  add_dependencies(sphinx-deps xtp-scripts-rst)
endif()