Merge branch 'release-4-6', adds the nbnxn functionality
[alexxy/gromacs.git] / src / gromacs / CMakeLists.txt
1 set(LIBGROMACS_SOURCES)
2
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)
15
16 file(GLOB LIBGROMACS_HEADERS *.h)
17 install(FILES ${LIBGROMACS_HEADERS} DESTINATION ${INCL_INSTALL_DIR}/gromacs
18         COMPONENT development)
19
20 list(APPEND LIBGROMACS_SOURCES ${GMXLIB_SOURCES} ${MDLIB_SOURCES})
21
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
28 if (USE_VERSION_H)
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)
44 endif (USE_VERSION_H)
45
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")
52 endif()
53
54 add_library(libgromacs ${LIBGROMACS_SOURCES})
55 if (USE_VERSION_H)
56     add_dependencies(libgromacs gmx_version)
57 endif (USE_VERSION_H)
58
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}")
67
68 install(TARGETS libgromacs DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries)
69
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)