#- cmake on windows doesn't support linker flags passed to target_link_libraries
# (cmake treats /openmp as \openmp library file) and no openmp linker flags are needed
if(NOT (WIN32 AND NOT CYGWIN))
- if(CMAKE_COMPILER_IS_GNUCC AND GMX_PREFER_STATIC_OPENMP)
+ if(CMAKE_COMPILER_IS_GNUCC AND GMX_PREFER_STATIC_OPENMP AND NOT APPLE)
set(OpenMP_LINKER_FLAGS "-Wl,-static -lgomp -lrt -Wl,-Bdynamic -lpthread")
set(OpenMP_SHARED_LINKER_FLAGS "")
else()
#or because it was only partially detected (e.g. only for C but not C++ compiler)
unset(OpenMP_C_FLAGS CACHE)
unset(OpenMP_CXX_FLAGS CACHE)
- unset(OpenMP_LINKER_FLAGS CACHE)
- unset(OpenMP_SHARED_LINKER_FLAGS)
+else()
+ set(GMX_EXE_LINKER_FLAGS ${GMX_EXE_LINKER_FLAGS} ${OpenMP_LINKER_FLAGS})
+ set(GMX_SHARED_LINKER_FLAGS ${GMX_SHARED_LINKER_FLAGS} ${OpenMP_SHARED_LINKER_FLAGS})
endif()
######################################
# Output compiler and CFLAGS used
set(GMXLIBDIR ${DATA_INSTALL_DIR}/top)
##################################################################
-# Shared library settings - Darwin uses INSTALL_NAME_DIR instead!
+# Shared library settings
##################################################################
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(CMAKE_INSTALL_RPATH "\\\$ORIGIN/../${GMXLIB}")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+else()
+ if(CMAKE_SYSTEM_VERSION VERSION_GREATER 8.0) #rpath supported for >10.4
+ set(CMAKE_INSTALL_NAME_DIR "@rpath")
+ set(GMX_EXE_LINKER_FLAGS ${GMX_EXE_LINKER_FLAGS} "-Wl,-rpath,@executable_path/../lib")
+ else()
+ set(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}")
+ endif()
endif()
#COPYING file: Only necessary for binary distributions.
target_link_libraries(libgromacs ${GMX_GPU_LIBRARIES}
${GMX_EXTRA_LIBRARIES} ${FFT_LIBRARIES} ${XML_LIBRARIES}
- ${THREAD_LIB} ${OpenMP_SHARED_LINKER_FLAGS})
+ ${THREAD_LIB} ${GMX_SHARED_LINKER_FLAGS})
set_target_properties(libgromacs PROPERTIES
OUTPUT_NAME "gromacs${GMX_LIBS_SUFFIX}"
SOVERSION ${SOVERSION}
- INSTALL_NAME_DIR "${LIB_INSTALL_DIR}"
COMPILE_FLAGS "${OpenMP_C_FLAGS}")
install(TARGETS libgromacs DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries)
add_executable(g_ana g_ana.cpp)
-target_link_libraries(g_ana libgromacs)
+target_link_libraries(g_ana libgromacs ${GMX_EXE_LINKER_FLAGS})
set_target_properties(g_ana PROPERTIES OUTPUT_NAME "g_ana${GMX_BINARY_SUFFIX}")
install(TARGETS g_ana
add_executable(g_protonate ${PROTONATE_SOURCES})
gmx_add_man_page(g_protonate)
-target_link_libraries(g_protonate ${GMX_EXTRA_LIBRARIES} libgromacs)
+target_link_libraries(g_protonate ${GMX_EXTRA_LIBRARIES} libgromacs ${GMX_EXE_LINKER_FLAGS})
set_target_properties(g_protonate PROPERTIES OUTPUT_NAME "g_protonate${GMX_BINARY_SUFFIX}")
install(TARGETS g_protonate DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
add_executable(g_x2top ${X2TOP_SOURCES})
gmx_add_man_page(g_x2top)
-target_link_libraries(g_x2top ${GMX_EXTRA_LIBRARIES} libgromacs)
+target_link_libraries(g_x2top ${GMX_EXTRA_LIBRARIES} libgromacs ${GMX_EXE_LINKER_FLAGS})
set_target_properties(g_x2top PROPERTIES OUTPUT_NAME "g_x2top${GMX_BINARY_SUFFIX}")
install(TARGETS g_x2top DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
add_executable(gmxcheck ${GMXCHECK_SOURCES})
gmx_add_man_page(gmxcheck)
-target_link_libraries(gmxcheck ${GMX_EXTRA_LIBRARIES} libgromacs)
+target_link_libraries(gmxcheck ${GMX_EXTRA_LIBRARIES} libgromacs ${GMX_EXE_LINKER_FLAGS})
set_target_properties(gmxcheck PROPERTIES OUTPUT_NAME "gmxcheck${GMX_BINARY_SUFFIX}")
install(TARGETS gmxcheck DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
add_executable(gmxdump ${GMXDUMP_SOURCES})
gmx_add_man_page(gmxdump)
-target_link_libraries(gmxdump ${GMX_EXTRA_LIBRARIES} libgromacs)
+target_link_libraries(gmxdump ${GMX_EXTRA_LIBRARIES} libgromacs ${GMX_EXE_LINKER_FLAGS})
set_target_properties(gmxdump PROPERTIES OUTPUT_NAME "gmxdump${GMX_BINARY_SUFFIX}")
install(TARGETS gmxdump DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
add_executable(grompp ${GROMPP_SOURCES})
gmx_add_man_page(grompp)
-target_link_libraries(grompp ${GMX_EXTRA_LIBRARIES} libgromacs)
+target_link_libraries(grompp ${GMX_EXTRA_LIBRARIES} libgromacs ${GMX_EXE_LINKER_FLAGS})
set_target_properties(grompp PROPERTIES OUTPUT_NAME "grompp${GMX_BINARY_SUFFIX}")
install(TARGETS grompp DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
add_executable(mdrun ${MDRUN_SOURCES})
gmx_add_man_page(mdrun)
target_link_libraries(mdrun ${GMX_EXTRA_LIBRARIES} libgromacs ${GMX_OPENMM_LIBRARIES}
- ${OpenMP_LINKER_FLAGS})
+ ${GMX_EXE_LINKER_FLAGS})
set_target_properties(mdrun PROPERTIES OUTPUT_NAME "mdrun${GMX_BINARY_SUFFIX}"
COMPILE_FLAGS "${OpenMP_C_FLAGS}")
install(TARGETS mdrun DESTINATION ${BIN_INSTALL_DIR} COMPONENT mdrun)
add_executable(pdb2gmx ${PDB2GMX_SOURCES})
gmx_add_man_page(pdb2gmx)
-target_link_libraries(pdb2gmx ${GMX_EXTRA_LIBRARIES} libgromacs)
+target_link_libraries(pdb2gmx ${GMX_EXTRA_LIBRARIES} libgromacs ${GMX_EXE_LINKER_FLAGS})
set_target_properties(pdb2gmx PROPERTIES OUTPUT_NAME "pdb2gmx${GMX_BINARY_SUFFIX}")
install(TARGETS pdb2gmx DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
add_executable(tpbconv ${TPBCONV_SOURCES})
gmx_add_man_page(tpbconv)
-target_link_libraries(tpbconv ${GMX_EXTRA_LIBRARIES} libgromacs)
+target_link_libraries(tpbconv ${GMX_EXTRA_LIBRARIES} libgromacs ${GMX_EXE_LINKER_FLAGS})
set_target_properties(tpbconv PROPERTIES OUTPUT_NAME "tpbconv${GMX_BINARY_SUFFIX}")
install(TARGETS tpbconv DESTINATION ${BIN_INSTALL_DIR} COMPONENT runtime)
)
-target_link_libraries(gmxana libgromacs ${GSL_LIBRARIES})
-set_target_properties(gmxana PROPERTIES OUTPUT_NAME "gmxana${GMX_LIBS_SUFFIX}" SOVERSION ${SOVERSION} INSTALL_NAME_DIR "${LIB_INSTALL_DIR}"
+target_link_libraries(gmxana libgromacs ${GSL_LIBRARIES} ${GMX_SHARED_LINKER_FLAGS})
+set_target_properties(gmxana PROPERTIES OUTPUT_NAME "gmxana${GMX_LIBS_SUFFIX}" SOVERSION ${SOVERSION}
COMPILE_FLAGS "${OpenMP_C_FLAGS}")
# List of programs with single corresponding .c source file,
if (NOT ${TOOL} STREQUAL "g_options")
gmx_add_man_page(${TOOL})
endif()
- target_link_libraries(${TOOL} gmxana ${OpenMP_LINKER_FLAGS})
+ target_link_libraries(${TOOL} gmxana ${GMX_EXE_LINKER_FLAGS})
set_target_properties(${TOOL} PROPERTIES OUTPUT_NAME "${TOOL}${GMX_BINARY_SUFFIX}")
endforeach(TOOL ${GMX_TOOLS_PROGRAMS})