1 set(LIBGROMACS_SOURCES)
3 add_subdirectory(legacyheaders)
4 add_subdirectory(gmxlib)
5 add_subdirectory(mdlib)
6 add_subdirectory(gmxpreprocess)
7 add_subdirectory(analysisdata)
8 add_subdirectory(commandline)
9 add_subdirectory(linearalgebra)
10 add_subdirectory(onlinehelp)
11 add_subdirectory(options)
12 add_subdirectory(selection)
13 add_subdirectory(trajectoryanalysis)
14 add_subdirectory(utility)
16 file(GLOB LIBGROMACS_HEADERS *.h)
17 install(FILES ${LIBGROMACS_HEADERS} DESTINATION ${INCL_INSTALL_DIR}/gromacs
18 COMPONENT development)
20 list(APPEND LIBGROMACS_SOURCES ${GMXLIB_SOURCES} ${MDLIB_SOURCES})
22 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.cmakein ${CMAKE_CURRENT_BINARY_DIR}/version.h)
23 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/version.h
24 DESTINATION ${INCL_INSTALL_DIR}/gromacs
25 COMPONENT development)
26 # add target that generates version.c every time a make is run
27 # only do this if we generate the version
29 add_custom_target(gmx_version ALL
30 COMMAND ${CMAKE_COMMAND}
31 -D GIT_EXECUTABLE="${GIT_EXECUTABLE}"
32 -D GIT_VERSION="${GIT_VERSION}"
33 -D PROJECT_VERSION="${PROJECT_VERSION}"
34 -D PROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}"
35 -D VERSION_C_CMAKEIN="${CMAKE_CURRENT_SOURCE_DIR}/version.c.cmakein"
36 -D VERSION_C_OUT="${CMAKE_CURRENT_BINARY_DIR}/version.c"
37 -P ${CMAKE_SOURCE_DIR}/cmake/gmxGenerateVersionInfo.cmake
38 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/gmxlib
39 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/version.c.cmakein
40 COMMENT "Generating version information")
41 list(APPEND LIBGROMACS_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/version.c) # auto-generated
42 set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/version.c
43 PROPERTIES GENERATED true)
46 # apply gcc 4.4.x bug workaround
47 if(GMX_USE_GCC44_BUG_WORKAROUND)
48 include(gmxGCC44O3BugWorkaround)
49 gmx_apply_gcc44_bug_workaround("gmxlib/bondfree.c")
50 gmx_apply_gcc44_bug_workaround("mdlib/force.c")
51 gmx_apply_gcc44_bug_workaround("mdlib/constr.c")
54 add_library(libgromacs ${LIBGROMACS_SOURCES})
56 add_dependencies(libgromacs gmx_version)
59 target_link_libraries(libgromacs ${GMX_GPU_LIBRARIES}
60 ${GMX_EXTRA_LIBRARIES} ${FFT_LIBRARIES} ${XML_LIBRARIES}
61 ${THREAD_LIB} ${OpenMP_SHARED_LINKER_FLAGS})
62 set_target_properties(libgromacs PROPERTIES
63 OUTPUT_NAME "gromacs${GMX_LIBS_SUFFIX}"
64 SOVERSION ${SOVERSION}
65 INSTALL_NAME_DIR "${LIB_INSTALL_DIR}"
66 COMPILE_FLAGS "${OpenMP_C_FLAGS}")
68 install(TARGETS libgromacs DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries)
70 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libgromacs.pc.cmakein
71 ${CMAKE_CURRENT_BINARY_DIR}/libgromacs.pc @ONLY)
72 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgromacs.pc
73 DESTINATION ${LIB_INSTALL_DIR}/pkgconfig
74 RENAME "libgromacs${GMX_LIBS_SUFFIX}.pc"
75 COMPONENT development)