diff --git a/CMakeLists.txt b/CMakeLists.txt index 362b422b..5f7aacd3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,10 @@ configure_file ( set(CMAKE_CXX_STANDARD 14) set(CMAKE_CUDA_STANDARD 14) +if(${BUILD_CONTAINED_PYTHON}) + set(BUILD_STATIC ON) +endif() + if(CMAKE_CXX_COMPILER_ID MATCHES GNU) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -Werror") set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3") diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index ad16d462..9f9ebcfd 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -5,13 +5,17 @@ if (NOT PYTHONLIBS_FOUND) message(STATUS "Python libraries NOT found") endif() +if(BUILD_CONTAINED_PYTHON) + # create a python library with as few runtime dependencies as possible + set(Boost_USE_STATIC_LIBS ON) +endif() + if(${CMAKE_VERSION} VERSION_LESS "3.13.0") find_package( Boost COMPONENTS system filesystem python${PYTHON_VERSION_MAJOR} REQUIRED ) else() #minor version numbers requires newer (3.13?) version of cmake find_package( Boost COMPONENTS system filesystem python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR} REQUIRED ) endif() -#find_package( Boost COMPONENTS system filesystem python REQUIRED ) find_package( NumPy ) @@ -40,18 +44,28 @@ set( PYMOLGRID_PY torch_bindings.py ) -# create the lib -add_library(molgrid SHARED ${PYMOLGRID_SOURCES}) + file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/molgrid/") + +# link +if(BUILD_CONTAINED_PYTHON) + # create a python library with as few runtime dependencies as possible + add_library(molgrid SHARED ${PYMOLGRID_SOURCES}) + SET_TARGET_PROPERTIES(molgrid PROPERTIES CUDA_SEPARABLE_COMPILATION OFF) + target_link_libraries(molgrid ${Boost_LIBRARIES} ${CUDA_LIBRARIES} libmolgrid_static ) +else() +# create the lib + add_library(molgrid SHARED ${PYMOLGRID_SOURCES}) + target_link_libraries(molgrid ${Boost_LIBRARIES} ${CUDA_LIBRARIES} libmolgrid_shared) +endif() + # Suppress prefix "lib" because Python does not allow this prefix set_target_properties(molgrid PROPERTIES PREFIX "" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/molgrid/") -# link -target_link_libraries(molgrid ${Boost_LIBRARIES} ${CUDA_LIBRARIES} libmolgrid_shared) - + # copy module code foreach(file ${PYMOLGRID_PY}) configure_file(${file} ${CMAKE_CURRENT_BINARY_DIR}/molgrid/) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9cd83059..c40954ae 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -48,7 +48,7 @@ endif() if(BUILD_STATIC) add_library(libmolgrid_static STATIC ${LIBMOLGRID_HEADERS} ${LIBMOLGRID_SOURCES}) - SET_TARGET_PROPERTIES(libmolgrid_static PROPERTIES OUTPUT_NAME molgrid CUDA_SEPARABLE_COMPILATION OFF) + SET_TARGET_PROPERTIES(libmolgrid_static PROPERTIES OUTPUT_NAME molgrid CUDA_SEPARABLE_COMPILATION OFF POSITION_INDEPENDENT_CODE ON ) target_link_libraries(libmolgrid_static ${OPENBABEL3_LIBRARIES} ${Boost_LIBRARIES}) #install libs install(TARGETS libmolgrid_static DESTINATION lib)