From c5d62af07d01b845293b1b792d32f4e80312a92b Mon Sep 17 00:00:00 2001 From: Szilard Pall Date: Thu, 24 Jun 2010 21:23:22 +0200 Subject: [PATCH] cmake support for user-defined binary prefixes, custom mdrun-gpu target, and make install-mdrun --- CMakeLists.txt | 5 ++++- src/gmxlib/CMakeLists.txt | 1 + src/kernel/CMakeLists.txt | 27 ++++++++++++++++++++++++++- src/ngmx/CMakeLists.txt | 3 ++- src/tools/CMakeLists.txt | 3 ++- 5 files changed, 35 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1cf3068622..e73260d731 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,9 @@ option(GMX_X86_64_ASM "Add SSE assembly files for X86_64" OFF) option(USE_VERSION_H "Generate development version string/information" ON) option(GMX_DISABLE_GCC41_CHECK "Disable check for (buggy) gcc 4.1.x" OFF) +set(GMX_BINARY_SUFFIX "" CACHE STRING "Suffix for GROMACS binaries.") + + ####################################################################### # Check for options incompatible with OpenMM build # ####################################################################### @@ -63,7 +66,7 @@ if(GMX_OPENMM) if(GMX_SOFTWARE_INVSQRT) set(GMX_SOFTWARE_INVSQRT OFF) endif(GMX_SOFTWARE_INVSQRT) - if(NOT GMX_ACCELERATION MATCHES "none") + if(NOT GMX_ACCELERATION MATCHES "none|None|NONE" OR NOT ${GMX_ACCELERATION} STREQUAL "") message(WARNING "The OpenMM build does not support other acceleration modes!") set(GMX_ACCELERATION "none") endif() diff --git a/src/gmxlib/CMakeLists.txt b/src/gmxlib/CMakeLists.txt index 62d543b7a6..bfc5c4665c 100644 --- a/src/gmxlib/CMakeLists.txt +++ b/src/gmxlib/CMakeLists.txt @@ -105,6 +105,7 @@ endif(GMX_FAHCORE) add_library(gmx ${GMXLIB_SOURCES} ${BLAS_SOURCES} ${LAPACK_SOURCES} ${GMX_MORESSE_SOURCES} ${GMX_SSE2_SOURCES} ${THREAD_MPI_SRC}) target_link_libraries(gmx ${GMX_EXTRA_LIBRARIES} ${THREAD_LIB}) add_dependencies(gmx gmx_version) +set_target_properties(gmx PROPERTIES OUTPUT_NAME "gmx${GMX_BINARY_SUFFIX}") install(TARGETS gmx DESTINATION ${LIB_INSTALL_DIR}) diff --git a/src/kernel/CMakeLists.txt b/src/kernel/CMakeLists.txt index 1178921abc..0ab4aec816 100644 --- a/src/kernel/CMakeLists.txt +++ b/src/kernel/CMakeLists.txt @@ -39,6 +39,7 @@ set(MDRUN_SOURCES add_library(gmxpreprocess ${GMXPREPROCESS_SOURCES}) target_link_libraries(gmxpreprocess md) +set_target_properties(gmxpreprocess PROPERTIES OUTPUT_NAME "gmxpreprocess${GMX_BINARY_SUFFIX}") if(GMX_OPENMM) add_subdirectory(gmx_gpu_utils) @@ -55,7 +56,6 @@ if(GMX_OPENMM) add_library(openmm_api_wrapper openmm_wrapper.cpp) # remove_definitions( -DOPENMM_PLUGIN_DIR="${OpenMM_PLUGIN_DIR}" ) # TODO where should this go?! set(GMX_OPENMM_LIBRARIES openmm_api_wrapper gmx_gpu_utils OpenMM) - install(TARGETS openmm_api_wrapper DESTINATION ${LIB_INSTALL_DIR}) endif(GMX_OPENMM) if(GMX_FAHCORE) @@ -66,30 +66,46 @@ list(APPEND GMX_EXTRA_LIBRARIES gmxpreprocess md) add_executable(grompp grompp.c) target_link_libraries(grompp ${GMX_EXTRA_LIBRARIES}) +set_target_properties(grompp PROPERTIES OUTPUT_NAME "grompp${GMX_BINARY_SUFFIX}") add_executable(tpbconv tpbconv.c) target_link_libraries(tpbconv ${GMX_EXTRA_LIBRARIES}) +set_target_properties(tpbconv PROPERTIES OUTPUT_NAME "tpbconv${GMX_BINARY_SUFFIX}") add_executable(pdb2gmx pdb2gmx.c) target_link_libraries(pdb2gmx ${GMX_EXTRA_LIBRARIES}) +set_target_properties(pdb2gmx PROPERTIES OUTPUT_NAME "pdb2gmx${GMX_BINARY_SUFFIX}") add_executable(g_protonate g_protonate.c) target_link_libraries(g_protonate ${GMX_EXTRA_LIBRARIES}) +set_target_properties(g_protonate PROPERTIES OUTPUT_NAME "g_protonate${GMX_BINARY_SUFFIX}") add_executable(g_luck g_luck.c) target_link_libraries(g_luck ${GMX_EXTRA_LIBRARIES}) +set_target_properties(g_luck PROPERTIES OUTPUT_NAME "g_luck${GMX_BINARY_SUFFIX}") add_executable(gmxdump gmxdump.c) target_link_libraries(gmxdump ${GMX_EXTRA_LIBRARIES}) +set_target_properties(gmxdump PROPERTIES OUTPUT_NAME "gmxdump${GMX_BINARY_SUFFIX}") add_executable(g_x2top g_x2top.c) target_link_libraries(g_x2top ${GMX_EXTRA_LIBRARIES}) +set_target_properties(g_x2top PROPERTIES OUTPUT_NAME "g_x2top${GMX_BINARY_SUFFIX}") add_executable(gmxcheck gmxcheck.c) target_link_libraries(gmxcheck ${GMX_EXTRA_LIBRARIES}) +set_target_properties(gmxcheck PROPERTIES OUTPUT_NAME "gmxcheck${GMX_BINARY_SUFFIX}") add_executable(mdrun ${MDRUN_SOURCES}) target_link_libraries(mdrun ${GMX_EXTRA_LIBRARIES} ${GMX_OPENMM_LIBRARIES}) +# set binary name to mdrun-gpu +if(GMX_OPENMM) + set(_mdrun_exec_name "mdrun-gpu") +else() + set(_mdrun_exec_name "mdrun${GMX_BINARY_SUFFIX}") +endif() +set_target_properties(mdrun PROPERTIES OUTPUT_NAME "${_mdrun_exec_name}") + # this is to circumvent the following MSVC error: # warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs # fatal error LNK1169: one or more multiply defined symbols found @@ -97,6 +113,7 @@ if(GMX_OPENMM AND MSVC) set_target_properties(mdrun PROPERTIES LINK_FLAGS "/NODEFAULTLIB:LIBCMT") endif() + install(TARGETS grompp tpbconv @@ -110,5 +127,13 @@ install(TARGETS gmxpreprocess DESTINATION ${LIB_INSTALL_DIR} RUNTIME DESTINATION ${BIN_INSTALL_DIR}) + +get_target_property(MDRUN_PATH mdrun LOCATION) +add_custom_target(install-mdrun + COMMAND ${CMAKE_COMMAND} -E copy "${MDRUN_PATH}" + "${CMAKE_INSTALL_PREFIX}/bin/${_mdrun_exec_name}" + DEPENDS mdrun + COMMENT "Installing mdrun") + endif(GMX_FAHCORE) diff --git a/src/ngmx/CMakeLists.txt b/src/ngmx/CMakeLists.txt index 93164ca1c4..a6fbb6d8df 100644 --- a/src/ngmx/CMakeLists.txt +++ b/src/ngmx/CMakeLists.txt @@ -20,7 +20,8 @@ set(NGMX_PROGRAMS foreach(PROG ${NGMX_PROGRAMS}) add_executable(${PROG} ${PROG}.c ${NGMX_COMMON_SOURCE}) - target_link_libraries(${PROG} gmx ${GMX_EXTRA_LIBRARIES} ${X11_LIBRARIES}) + target_link_libraries(${PROG} gmx ${GMX_EXTRA_LIBRARIES} ${X11_LIBRARIES}) + set_target_properties(${PROG} PROPERTIES OUTPUT_NAME "${PROG}${GMX_BINARY_SUFFIX}") endforeach(PROG) diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt index 5fc666c784..fbe24534ba 100644 --- a/src/tools/CMakeLists.txt +++ b/src/tools/CMakeLists.txt @@ -31,7 +31,7 @@ add_library(gmxana addconf.c calcpot.c edittop.c gmx_bar.c) target_link_libraries(gmxana md ${GMX_EXTRA_LIBRARIES}) - +set_target_properties(gmxana PROPERTIES OUTPUT_NAME "gmxana${GMX_BINARY_SUFFIX}") # List of programs with single corresponding .c source file, # used to create build rules automatically. @@ -56,6 +56,7 @@ set(GMX_TOOLS_PROGRAMS foreach(TOOL ${GMX_TOOLS_PROGRAMS}) add_executable(${TOOL} ${TOOL}.c) target_link_libraries(${TOOL} gmxana) + set_target_properties(${TOOL} PROPERTIES OUTPUT_NAME "${TOOL}${GMX_BINARY_SUFFIX}") endforeach(TOOL ${GMX_TOOLS_PROGRAMS}) -- 2.11.4.GIT