Remove OpenMM
[alexxy/gromacs.git] / admin / includedeps.cmake
1 function (generate_module_file_list SRCDIR OUTFILE)
2     set(PATH_LIST)
3     foreach (MODULE analysisdata commandline linearalgebra onlinehelp
4                     options selection trajectoryanalysis utility)
5         list(APPEND PATH_LIST "${SRCDIR}/src/gromacs/${MODULE}/*.cpp")
6         list(APPEND PATH_LIST "${SRCDIR}/src/gromacs/${MODULE}/*.h")
7     endforeach ()
8     list(APPEND PATH_LIST "${SRCDIR}/src/testutils/*.cpp")
9     list(APPEND PATH_LIST "${SRCDIR}/src/testutils/*.h")
10     set(FILE_LIST)
11     foreach (PATH_EXPR ${PATH_LIST})
12         file(GLOB_RECURSE FOUND_FILES ${PATH_EXPR})
13         list(APPEND FILE_LIST ${FOUND_FILES})
14     endforeach ()
15     string(REPLACE ";" "\n" FILE_LIST "${FILE_LIST}")
16     file(WRITE ${OUTFILE} "${FILE_LIST}")
17 endfunction ()
18
19 function (generate_installed_file_list SRCDIR BUILDDIR OUTFILE)
20     file(GLOB_RECURSE INSTALL_FILE_LIST "${BUILDDIR}/cmake_install.cmake")
21     set(MATCH_REGEX "${SRCDIR}/.*\\.h")
22     set(HEADER_LIST)
23     foreach (INSTALL_FILE ${INSTALL_FILE_LIST})
24         file(STRINGS ${INSTALL_FILE} HEADER_LINES REGEX "${MATCH_REGEX}")
25         foreach (HEADER_LINE ${HEADER_LINES})
26             string (REGEX MATCH "${MATCH_REGEX}" HEADER "${HEADER_LINE}")
27             list(APPEND HEADER_LIST "${HEADER}")
28         endforeach ()
29     endforeach ()
30     string(REPLACE ";" "\n" HEADER_LIST "${HEADER_LIST}")
31     file(WRITE ${OUTFILE} "${HEADER_LIST}")
32 endfunction ()
33
34 if (NOT DEFINED SRCDIR OR NOT DEFINED BUILDDIR OR NOT DEFINED OUTDIR)
35     message(FATAL_ERROR "Required input variable (SRCDIR, BUILDDIR, OUTDIR) not set")
36 endif ()
37
38 if (NOT DEFINED PYTHON_EXECUTABLE)
39     set(PYTHON_EXECUTABLE python)
40 endif ()
41
42 if (NOT DEFINED MODE OR MODE STREQUAL "CHECK")
43     set(GRAPHOPTIONS)
44 elseif (MODE STREQUAL "GRAPHS")
45     set(GRAPHOPTIONS
46         --module-graph module-deps.dot --module-file-graphs
47         -o ${OUTDIR})
48 else ()
49     message(FATAL_ERROR "Unknown mode ${MODE}")
50 endif ()
51
52 file(MAKE_DIRECTORY ${OUTDIR})
53 generate_module_file_list(${SRCDIR} ${OUTDIR}/module-files.txt)
54 generate_installed_file_list(${SRCDIR} ${BUILDDIR} ${OUTDIR}/installed-headers.txt)
55 execute_process(COMMAND ${PYTHON_EXECUTABLE} ${SRCDIR}/admin/includedeps.py
56                         -f ${OUTDIR}/module-files.txt
57                         --installed ${OUTDIR}/installed-headers.txt
58                         -R ${SRCDIR}/src -R ${BUILDDIR}/src
59                         #-I ${SRCDIR}/src/gromacs/legacyheaders
60                         -I ${BUILDDIR}/src/gromacs/utility
61                         ${GRAPHOPTIONS})
62
63 if (MODE STREQUAL "GRAPHS" AND DOT_EXECUTABLE)
64     file(GLOB DOT_INPUT_FILES ${OUTDIR}/*.dot)
65     execute_process(COMMAND ${DOT_EXECUTABLE} -Tpng -O ${DOT_INPUT_FILES})
66 endif ()