Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
abb19052
Commit
abb19052
authored
Feb 23, 2011
by
Peter Eastman
Browse files
Build universal binaries on OS X
parent
ccbdeddc
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
100 additions
and
19 deletions
+100
-19
CMakeLists.txt
CMakeLists.txt
+2
-5
platforms/cuda/sharedTarget/CMakeLists.txt
platforms/cuda/sharedTarget/CMakeLists.txt
+30
-4
plugins/amoeba/platforms/cuda/sharedTarget/CMakeLists.txt
plugins/amoeba/platforms/cuda/sharedTarget/CMakeLists.txt
+34
-5
plugins/freeEnergy/platforms/cuda/sharedTarget/CMakeLists.txt
...ins/freeEnergy/platforms/cuda/sharedTarget/CMakeLists.txt
+34
-5
No files found.
CMakeLists.txt
View file @
abb19052
...
...
@@ -93,9 +93,9 @@ ELSE( CMAKE_SIZEOF_VOID_P EQUAL 8 )
SET
(
LIB64
)
ENDIF
(
CMAKE_SIZEOF_VOID_P EQUAL 8
)
# Build
32 bit binaries, since CUDA doesn't currently work with 64 bit
# Build
universal binaries compatible with OS X 10.5
IF
(
APPLE AND NOT CMAKE_OSX_DEPLOYMENT_TARGET
)
SET
(
CMAKE_OSX_ARCHITECTURES
"i386"
CACHE STRING
"The processor architectures to build for"
FORCE
)
SET
(
CMAKE_OSX_ARCHITECTURES
"i386
;x86_64
"
CACHE STRING
"The processor architectures to build for"
FORCE
)
SET
(
CMAKE_OSX_DEPLOYMENT_TARGET
"10.5"
CACHE STRING
"The minimum version of OS X to support"
FORCE
)
SET
(
CMAKE_OSX_SYSROOT
"/Developer/SDKs/MacOSX10.5.sdk"
CACHE STRING
"The SDK to build against"
FORCE
)
ENDIF
(
APPLE AND NOT CMAKE_OSX_DEPLOYMENT_TARGET
)
...
...
@@ -333,9 +333,6 @@ IF(CUDA_FOUND)
SET
(
FLAGS
${
FLAGS
}
-gencode arch=compute_13,code=sm_13
)
SET
(
FLAGS
${
FLAGS
}
-gencode arch=compute_20,code=sm_20
)
SET
(
FLAGS
${
FLAGS
}
-use_fast_math
)
IF
(
APPLE
)
SET
(
FLAGS
${
FLAGS
}
-m32
)
ENDIF
(
APPLE
)
IF
(
MSVC
)
# Unfortunately the variables CUDA_NVCC_FLAGS_RELEASE and CUDA_NVCC_FLAGS_DEBUG
# appear to be unused, at least in CMake 2.6
...
...
platforms/cuda/sharedTarget/CMakeLists.txt
View file @
abb19052
...
...
@@ -12,14 +12,40 @@ FOREACH(subdir ${OPENMM_SOURCE_SUBDIRS})
ENDFOREACH
(
subdir
)
CUDA_INCLUDE_DIRECTORIES
(
BEFORE
${
CMAKE_SOURCE_DIR
}
/jama/include
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
IF
(
UNIX AND CMAKE_BUILD_TYPE MATCHES Debug
)
SET
(
MAIN_OPENMM_LIB
${
OPENMM_LIBRARY_NAME
}
_d
)
ELSE
(
UNIX AND CMAKE_BUILD_TYPE MATCHES Debug
)
SET
(
MAIN_OPENMM_LIB
${
OPENMM_LIBRARY_NAME
}
)
ENDIF
(
UNIX AND CMAKE_BUILD_TYPE MATCHES Debug
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
${
MAIN_OPENMM_LIB
}
${
CUFFT_TARGET_LINK
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDA_BUILDING_SHARED_LIBRARY"
)
IF
(
APPLE AND CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES MATCHES .*i386.* AND CMAKE_OSX_ARCHITECTURES MATCHES .*x86_64.*
)
# NVCC doesn't know how to build universal binaries, so we need to build two separate versions.
SET
(
BASE_FLAGS
${
CUDA_NVCC_FLAGS
}
)
SET
(
CMAKE_OSX_ARCHITECTURES i386
)
SET
(
CUDA_NVCC_FLAGS
${
BASE_FLAGS
}
-m32
)
CUDA_ADD_LIBRARY
(
"
${
SHARED_TARGET
}
32"
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
32
${
MAIN_OPENMM_LIB
}
${
CUFFT_TARGET_LINK
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
32 PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDA_BUILDING_SHARED_LIBRARY"
)
SET
(
CMAKE_OSX_ARCHITECTURES x86_64
)
SET
(
CUDA_NVCC_FLAGS
${
BASE_FLAGS
}
-m64
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
${
MAIN_OPENMM_LIB
}
${
CUFFT_TARGET_LINK
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDA_BUILDING_SHARED_LIBRARY"
)
ADD_DEPENDENCIES
(
${
SHARED_TARGET
}
"{SHARED_TARGET}32"
)
# Join them into a single universal binary.
ADD_CUSTOM_COMMAND
(
TARGET
${
SHARED_TARGET
}
POST_BUILD
COMMAND /usr/bin/lipo lib
${
SHARED_TARGET
}
.dylib lib
${
SHARED_TARGET
}
32.dylib -create -output lib
${
SHARED_TARGET
}
.dylib
WORKING_DIRECTORY
${
CMAKE_BINARY_DIR
}
COMMENT
"Creating universal binary"
)
ELSE
(
APPLE AND CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES MATCHES .*i386.* AND CMAKE_OSX_ARCHITECTURES MATCHES .*x86_64.*
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
${
MAIN_OPENMM_LIB
}
${
CUFFT_TARGET_LINK
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDA_BUILDING_SHARED_LIBRARY"
)
ENDIF
(
APPLE AND CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES MATCHES .*i386.* AND CMAKE_OSX_ARCHITECTURES MATCHES .*x86_64.*
)
INSTALL_TARGETS
(
/lib/plugins RUNTIME_DIRECTORY /lib/plugins
${
SHARED_TARGET
}
)
plugins/amoeba/platforms/cuda/sharedTarget/CMakeLists.txt
View file @
abb19052
...
...
@@ -67,11 +67,40 @@ CUDA_INCLUDE_DIRECTORIES(${OPENMM_BUILD_AMOEBA_PATH}/platforms/cuda/../src
${
OPENMM_DIR
}
/openmmapi/include
${
OPENMM_DIR
}
/olla/include
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
IF
(
APPLE AND CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES MATCHES .*i386.* AND CMAKE_OSX_ARCHITECTURES MATCHES .*x86_64.*
)
# NVCC doesn't know how to build universal binaries, so we need to build two separate versions.
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
_d optimized
${
OPENMM_LIBRARY_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
Cuda_d optimized
${
OPENMM_LIBRARY_NAME
}
Cuda
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_AMOEBA_LIBRARY_NAME
}
_d optimized
${
OPENMM_AMOEBA_LIBRARY_NAME
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDA_BUILDING_SHARED_LIBRARY -DOPENMMCUDAAMOEBA_BUILDING_SHARED_LIBRARY"
)
SET
(
BASE_FLAGS
${
CUDA_NVCC_FLAGS
}
)
SET
(
CMAKE_OSX_ARCHITECTURES i386
)
SET
(
CUDA_NVCC_FLAGS
${
BASE_FLAGS
}
-m32
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
32 SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
32 debug
${
OPENMM_LIBRARY_NAME
}
_d optimized
${
OPENMM_LIBRARY_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
32 debug
${
OPENMM_LIBRARY_NAME
}
Cuda_d optimized
${
OPENMM_LIBRARY_NAME
}
Cuda
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
32 debug
${
OPENMM_AMOEBA_LIBRARY_NAME
}
_d optimized
${
OPENMM_AMOEBA_LIBRARY_NAME
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
32 PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDA_BUILDING_SHARED_LIBRARY -DOPENMMCUDAAMOEBA_BUILDING_SHARED_LIBRARY"
)
SET
(
CMAKE_OSX_ARCHITECTURES x86_64
)
SET
(
CUDA_NVCC_FLAGS
${
BASE_FLAGS
}
-m64
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
_d optimized
${
OPENMM_LIBRARY_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
Cuda_d optimized
${
OPENMM_LIBRARY_NAME
}
Cuda
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_AMOEBA_LIBRARY_NAME
}
_d optimized
${
OPENMM_AMOEBA_LIBRARY_NAME
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDA_BUILDING_SHARED_LIBRARY -DOPENMMCUDAAMOEBA_BUILDING_SHARED_LIBRARY"
)
ADD_DEPENDENCIES
(
${
SHARED_TARGET
}
"{SHARED_TARGET}32"
)
# Join them into a single universal binary.
ADD_CUSTOM_COMMAND
(
TARGET
${
SHARED_TARGET
}
POST_BUILD
COMMAND /usr/bin/lipo lib
${
SHARED_TARGET
}
.dylib lib
${
SHARED_TARGET
}
32.dylib -create -output lib
${
SHARED_TARGET
}
.dylib
WORKING_DIRECTORY
${
CMAKE_BINARY_DIR
}
COMMENT
"Creating universal binary"
)
ELSE
(
APPLE AND CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES MATCHES .*i386.* AND CMAKE_OSX_ARCHITECTURES MATCHES .*x86_64.*
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
_d optimized
${
OPENMM_LIBRARY_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
Cuda_d optimized
${
OPENMM_LIBRARY_NAME
}
Cuda
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_AMOEBA_LIBRARY_NAME
}
_d optimized
${
OPENMM_AMOEBA_LIBRARY_NAME
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDA_BUILDING_SHARED_LIBRARY -DOPENMMCUDAAMOEBA_BUILDING_SHARED_LIBRARY"
)
ENDIF
(
APPLE AND CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES MATCHES .*i386.* AND CMAKE_OSX_ARCHITECTURES MATCHES .*x86_64.*
)
INSTALL_TARGETS
(
/lib/plugins RUNTIME_DIRECTORY /lib/plugins
${
SHARED_TARGET
}
)
plugins/freeEnergy/platforms/cuda/sharedTarget/CMakeLists.txt
View file @
abb19052
...
...
@@ -24,11 +24,40 @@ CUDA_INCLUDE_DIRECTORIES(${OPENMM_BUILD_FREE_ENERGY_PATH}/platforms/cuda/../src
${
OPENMM_DIR
}
/platforms/cuda/src/kernels
${
OPENMM_DIR
}
/openmmapi/include
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
IF
(
APPLE AND CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES MATCHES .*i386.* AND CMAKE_OSX_ARCHITECTURES MATCHES .*x86_64.*
)
# NVCC doesn't know how to build universal binaries, so we need to build two separate versions.
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
_d optimized
${
OPENMM_LIBRARY_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
Cuda_d optimized
${
OPENMM_LIBRARY_NAME
}
Cuda
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_FREE_ENERGY_LIBRARY_NAME
}
_d optimized
${
OPENMM_FREE_ENERGY_LIBRARY_NAME
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDAFREEENERGY_BUILDING_SHARED_LIBRARY"
)
SET
(
BASE_FLAGS
${
CUDA_NVCC_FLAGS
}
)
SET
(
CMAKE_OSX_ARCHITECTURES i386
)
SET
(
CUDA_NVCC_FLAGS
${
BASE_FLAGS
}
-m32
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
32 SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
32 debug
${
OPENMM_LIBRARY_NAME
}
_d optimized
${
OPENMM_LIBRARY_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
32 debug
${
OPENMM_LIBRARY_NAME
}
Cuda_d optimized
${
OPENMM_LIBRARY_NAME
}
Cuda
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
32 debug
${
OPENMM_FREE_ENERGY_LIBRARY_NAME
}
_d optimized
${
OPENMM_FREE_ENERGY_LIBRARY_NAME
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
32 PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDAFREEENERGY_BUILDING_SHARED_LIBRARY"
)
SET
(
CMAKE_OSX_ARCHITECTURES x86_64
)
SET
(
CUDA_NVCC_FLAGS
${
BASE_FLAGS
}
-m64
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
_d optimized
${
OPENMM_LIBRARY_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
Cuda_d optimized
${
OPENMM_LIBRARY_NAME
}
Cuda
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_FREE_ENERGY_LIBRARY_NAME
}
_d optimized
${
OPENMM_FREE_ENERGY_LIBRARY_NAME
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDAFREEENERGY_BUILDING_SHARED_LIBRARY"
)
ADD_DEPENDENCIES
(
${
SHARED_TARGET
}
"{SHARED_TARGET}32"
)
# Join them into a single universal binary.
ADD_CUSTOM_COMMAND
(
TARGET
${
SHARED_TARGET
}
POST_BUILD
COMMAND /usr/bin/lipo lib
${
SHARED_TARGET
}
.dylib lib
${
SHARED_TARGET
}
32.dylib -create -output lib
${
SHARED_TARGET
}
.dylib
WORKING_DIRECTORY
${
CMAKE_BINARY_DIR
}
COMMENT
"Creating universal binary"
)
ELSE
(
APPLE AND CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES MATCHES .*i386.* AND CMAKE_OSX_ARCHITECTURES MATCHES .*x86_64.*
)
CUDA_ADD_LIBRARY
(
${
SHARED_TARGET
}
SHARED
${
SOURCE_FILES
}
${
SOURCE_INCLUDE_FILES
}
${
API_ABS_INCLUDE_FILES
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
_d optimized
${
OPENMM_LIBRARY_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_LIBRARY_NAME
}
Cuda_d optimized
${
OPENMM_LIBRARY_NAME
}
Cuda
)
TARGET_LINK_LIBRARIES
(
${
SHARED_TARGET
}
debug
${
OPENMM_FREE_ENERGY_LIBRARY_NAME
}
_d optimized
${
OPENMM_FREE_ENERGY_LIBRARY_NAME
}
)
SET_TARGET_PROPERTIES
(
${
SHARED_TARGET
}
PROPERTIES COMPILE_FLAGS
"-DOPENMMCUDAFREEENERGY_BUILDING_SHARED_LIBRARY"
)
ENDIF
(
APPLE AND CMAKE_OSX_ARCHITECTURES AND CMAKE_OSX_ARCHITECTURES MATCHES .*i386.* AND CMAKE_OSX_ARCHITECTURES MATCHES .*x86_64.*
)
INSTALL_TARGETS
(
/lib/plugins RUNTIME_DIRECTORY /lib/plugins
${
SHARED_TARGET
}
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment