Commit 2b5402dc authored by Mark Friedrichs's avatar Mark Friedrichs
Browse files

Mods for preprocessor flags for shared/static libs

parent d9de3c8a
...@@ -45,13 +45,10 @@ IF(${CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT}) ...@@ -45,13 +45,10 @@ IF(${CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT})
SET(CMAKE_INSTALL_PREFIX ${OPENMM_INSTALL_PREFIX} CACHE PATH "Where to install OpenMM" FORCE) SET(CMAKE_INSTALL_PREFIX ${OPENMM_INSTALL_PREFIX} CACHE PATH "Where to install OpenMM" FORCE)
ENDIF(${CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT}) ENDIF(${CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT})
INCLUDE(Dart) INCLUDE(Dart)
# SUBDIRS (platforms/reference/tests platforms/cuda) # SUBDIRS (platforms/reference/tests platforms/cuda)
ADD_DEFINITIONS(-DOPENMM_BUILDING_SHARED_LIBRARY)
# The source is organized into subdirectories, but we handle them all from # The source is organized into subdirectories, but we handle them all from
# this CMakeLists file rather than letting CMake visit them as SUBDIRS. # this CMakeLists file rather than letting CMake visit them as SUBDIRS.
SET(OPENMM_SOURCE_SUBDIRS . openmmapi olla platforms/reference) SET(OPENMM_SOURCE_SUBDIRS . openmmapi olla platforms/reference)
...@@ -239,7 +236,10 @@ ENDFOREACH(subdir) ...@@ -239,7 +236,10 @@ ENDFOREACH(subdir)
INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/src) INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/src)
ADD_LIBRARY(${SHARED_TARGET} SHARED ${SOURCE_FILES} ${SOURCE_INCLUDE_FILES} ${API_ABS_INCLUDE_FILES}) ADD_LIBRARY(${SHARED_TARGET} SHARED ${SOURCE_FILES} ${SOURCE_INCLUDE_FILES} ${API_ABS_INCLUDE_FILES})
SET_TARGET_PROPERTIES(${SHARED_TARGET} PROPERTIES COMPILE_FLAGS "-DOPENMM_BUILDING_SHARED_LIBRARY")
ADD_LIBRARY(${STATIC_TARGET} STATIC ${SOURCE_FILES} ${SOURCE_INCLUDE_FILES} ${API_ABS_INCLUDE_FILES}) ADD_LIBRARY(${STATIC_TARGET} STATIC ${SOURCE_FILES} ${SOURCE_INCLUDE_FILES} ${API_ABS_INCLUDE_FILES})
SET_TARGET_PROPERTIES(${STATIC_TARGET} PROPERTIES COMPILE_FLAGS "-DOPENMM_USE_STATIC_LIBRARIES -DOPENMM_BUILDING_STATIC_LIBRARY")
# On Linux need to link to libdl # On Linux need to link to libdl
FIND_LIBRARY(DL_LIBRARY dl) FIND_LIBRARY(DL_LIBRARY dl)
...@@ -270,6 +270,74 @@ FILE(GLOB INTERNAL_HEADERS include/internal/*.h */include/internal/*.h) ...@@ -270,6 +270,74 @@ FILE(GLOB INTERNAL_HEADERS include/internal/*.h */include/internal/*.h)
INSTALL_FILES(/include/ FILES ${CORE_HEADERS}) INSTALL_FILES(/include/ FILES ${CORE_HEADERS})
INSTALL_FILES(/include/internal FILES ${INTERNAL_HEADERS}) INSTALL_FILES(/include/internal FILES ${INTERNAL_HEADERS})
# Set the build flags to link statically to the microsoft runtime library, unless
# the user tells us otherwise, via the variable "USE_MSVC_RUNTIME_DLL"
# It is a sore defect of cmake that makes these gymnastics necessary
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
IF (CMAKE_BUILD_TYPE MATCHES Debug)
# STRING_APPEND( CMAKE_EXE_LINKER_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT.lib\"")
# STRING_APPEND( CMAKE_EXE_LINKER_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT.lib\"")
SET(CMAKE_EXE_LINKER_FLAGS /NODEFAULTLIB:LIBCMT)
ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)
# First notice whether the user wants static or dll linkage to runtime library
SET(USE_MSVC_RUNTIME_DLL 0 CACHE BOOL "Link to DLL version of microsoft runtime library")
IF (USE_MSVC_RUNTIME_DLL)
# The same replacement strings will be used to replace "/MD" with "/MT", and "/MDd" with "/MTd"
SET(RT_FLAG_WE_WANT "/MD")
SET(RT_FLAG_WE_HATE "/MT")
IF (CMAKE_BUILD_TYPE MATCHES Debug)
SET(RT_FLAG_WE_WANT "/MDd")
SET(RT_FLAG_WE_HATE "/MTd")
ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)
ELSE (USE_MSVC_RUNTIME_DLL)
SET(RT_FLAG_WE_WANT "/MT")
SET(RT_FLAG_WE_HATE "/MD")
IF (CMAKE_BUILD_TYPE MATCHES Debug)
SET(RT_FLAG_WE_WANT "/MTd")
SET(RT_FLAG_WE_HATE "/MDd")
ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)
ENDIF(USE_MSVC_RUNTIME_DLL)
# Next, set the compiler flags using the "FORCE" option, which seems to be required for setting these
# C flags
STRING(REPLACE ${RT_FLAG_WE_HATE} ${RT_FLAG_WE_WANT} CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
SET(CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE} CACHE STRING "" FORCE)
STRING(REPLACE ${RT_FLAG_WE_HATE} ${RT_FLAG_WE_WANT} CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
SET(CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} CACHE STRING "" FORCE)
STRING(REPLACE ${RT_FLAG_WE_HATE} ${RT_FLAG_WE_WANT} CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO})
SET(CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO} CACHE STRING "" FORCE)
STRING(REPLACE ${RT_FLAG_WE_HATE} ${RT_FLAG_WE_WANT} CMAKE_C_FLAGS_MINSIZEREL ${CMAKE_C_FLAGS_MINSIZEREL})
SET(CMAKE_C_FLAGS_MINSIZEREL ${CMAKE_C_FLAGS_MINSIZEREL} CACHE STRING "" FORCE)
# C++ flags
STRING(REPLACE ${RT_FLAG_WE_HATE} ${RT_FLAG_WE_WANT} CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
SET(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} CACHE STRING "" FORCE)
STRING(REPLACE ${RT_FLAG_WE_HATE} ${RT_FLAG_WE_WANT} CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
SET(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} CACHE STRING "" FORCE)
STRING(REPLACE ${RT_FLAG_WE_HATE} ${RT_FLAG_WE_WANT} CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} CACHE STRING "" FORCE)
STRING(REPLACE ${RT_FLAG_WE_HATE} ${RT_FLAG_WE_WANT} CMAKE_CXX_FLAGS_MINSIZEREL ${CMAKE_CXX_FLAGS_MINSIZEREL})
SET(CMAKE_CXX_FLAGS_MINSIZEREL ${CMAKE_CXX_FLAGS_MINSIZEREL} CACHE STRING "" FORCE)
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio")
# #
# Allow automated build and dashboard. # Allow automated build and dashboard.
# #
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment