mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-03 21:44:30 +08:00
225 lines
7.7 KiB
CMake
225 lines
7.7 KiB
CMake
cmake_minimum_required(VERSION 2.6)
|
|
project (RDKit)
|
|
|
|
IF(NOT CMAKE_BUILD_TYPE)
|
|
SET(CMAKE_BUILD_TYPE Release CACHE STRING
|
|
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
|
|
FORCE)
|
|
ENDIF(NOT CMAKE_BUILD_TYPE)
|
|
|
|
enable_testing()
|
|
|
|
set(CMAKE_MODULE_PATH
|
|
${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/Code/cmake/Modules/")
|
|
|
|
option(RDK_BUILD_SWIG_WRAPPERS "build the experimental SWIG wrappers" OFF )
|
|
option(RDK_BUILD_PYTHON_WRAPPERS "build the standard python wrappers" ON )
|
|
option(RDK_BUILD_COMPRESSED_SUPPLIERS "build in support for compressed MolSuppliers" OFF )
|
|
option(RDK_BUILD_INCHI_SUPPORT "build the rdkit inchi wrapper" OFF )
|
|
option(RDK_INSTALL_INTREE "install the rdkit in the source tree (former behavior)" ON )
|
|
option(RDK_INSTALL_STATIC_LIBS "install the rdkit static libraries" ON )
|
|
|
|
# At build time put runtime binaries in the bin subdirectory
|
|
set(RDK_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
|
|
set(RDK_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
|
|
set(RDK_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
|
|
# Also place the python extension where the source tree would expect them
|
|
set(RDK_PYTHON_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/rdkit")
|
|
|
|
#-------
|
|
# Config variables:
|
|
set(RDKit_Year "2011")
|
|
set(RDKit_Month "09")
|
|
set(RDKit_Revision "1pre")
|
|
set(RDKit_ABI "1")
|
|
|
|
set(RDKit_CodeDir "${CMAKE_SOURCE_DIR}/Code")
|
|
set(RDKit_ExternalDir "${CMAKE_SOURCE_DIR}/External")
|
|
|
|
if(RDK_INSTALL_INTREE)
|
|
set(RDKit_BinDir "${CMAKE_SOURCE_DIR}/bin")
|
|
set(RDKit_LibDir "${CMAKE_SOURCE_DIR}/lib")
|
|
set(RDKit_HdrDir "Code") # used in rdkit-config.cmake, path prefix not needed.
|
|
else(RDK_INSTALL_INTREE)
|
|
set(RDKit_BinDir "bin")
|
|
set(RDKit_LibDir "lib${LIB_SUFFIX}")
|
|
set(RDKit_HdrDir "include/rdkit")
|
|
set(RDKit_ShareDir "share/RDKit")
|
|
endif(RDK_INSTALL_INTREE)
|
|
|
|
if(RDK_BUILD_SWIG_WRAPPERS)
|
|
set(RDKit_JavaLibDir "${RDKit_ExternalDir}/java_lib")
|
|
endif(RDK_BUILD_SWIG_WRAPPERS)
|
|
|
|
|
|
# defines macros: rdkit_python_extension, rdkit_test
|
|
include(RDKitUtils)
|
|
install(EXPORT ${RDKit_EXPORTED_TARGETS} DESTINATION ${RDKit_LibDir})
|
|
|
|
# create and install package configuration and version files
|
|
configure_file (
|
|
${RDKit_SOURCE_DIR}/rdkit-config.cmake.in
|
|
${RDKit_BINARY_DIR}/rdkit-config.cmake @ONLY)
|
|
|
|
configure_file (
|
|
${RDKit_SOURCE_DIR}/rdkit-config-version.cmake.in
|
|
${RDKit_BINARY_DIR}/rdkit-config-version.cmake @ONLY)
|
|
|
|
install(FILES
|
|
${RDKit_BINARY_DIR}/rdkit-config.cmake
|
|
${RDKit_BINARY_DIR}/rdkit-config-version.cmake
|
|
DESTINATION ${RDKit_LibDir})
|
|
|
|
# extra boost versions
|
|
if(MSVC)
|
|
SET(Boost_ADDITIONAL_VERSIONS "1.45" "1.45.0" "1.44" "1.44.0" "1.43" "1.43.0" "1.42" "1.42.0" "1.41" "1.41.0" "1.40" "1.40.0")
|
|
endif(MSVC)
|
|
|
|
if(RDK_BUILD_PYTHON_WRAPPERS)
|
|
#-------
|
|
# pull in python:
|
|
find_package(PythonLibs)
|
|
if(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION EQUAL 6)
|
|
include_directories(${PYTHON_INCLUDE_PATH})
|
|
else(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION EQUAL 6)
|
|
include_directories(${PYTHON_INCLUDE_DIR})
|
|
endif(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION EQUAL 6)
|
|
link_directories(${PYTHON_LIBRARIES})
|
|
find_package(NumPy REQUIRED)
|
|
include_directories(${PYTHON_NUMPY_INCLUDE_PATH})
|
|
find_package(Boost 1.39.0 COMPONENTS python REQUIRED)
|
|
|
|
|
|
if(RDK_INSTALL_INTREE)
|
|
set(RDKit_PythonDir "${CMAKE_SOURCE_DIR}/rdkit")
|
|
else(RDK_INSTALL_INTREE)
|
|
# Determine correct installation directory for Python bindings
|
|
# From http://plplot.svn.sourceforge.net/viewvc/plplot/trunk/cmake/modules/python.cmake?revision=11014
|
|
execute_process(
|
|
COMMAND
|
|
${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}')"
|
|
OUTPUT_VARIABLE PYTHON_INSTDIR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
message("Python Install directory ${PYTHON_INSTDIR}")
|
|
install(DIRECTORY rdkit DESTINATION ${PYTHON_INSTDIR}
|
|
COMPONENT python
|
|
PATTERN ".svn" EXCLUDE
|
|
PATTERN "test_data" EXCLUDE
|
|
PATTERN "testData" EXCLUDE
|
|
PATTERN "test_list*" EXCLUDE
|
|
PATTERN "CMake*" EXCLUDE
|
|
PATTERN "Basement" EXCLUDE
|
|
PATTERN "UnitTest*" EXCLUDE
|
|
)
|
|
set(RDKit_PythonDir "${PYTHON_INSTDIR}/rdkit")
|
|
endif(RDK_INSTALL_INTREE)
|
|
|
|
else(RDK_BUILD_PYTHON_WRAPPERS)
|
|
find_package(Boost 1.39.0 REQUIRED)
|
|
endif(RDK_BUILD_PYTHON_WRAPPERS)
|
|
|
|
include_directories(${Boost_INCLUDE_DIRS})
|
|
link_directories(${Boost_LIBRARY_DIRS})
|
|
|
|
include_directories(${RDKit_CodeDir})
|
|
|
|
|
|
# Detect clang, which masquerades as gcc. CMake 2.6 doesn't know how to
|
|
# detect it.
|
|
string(REGEX MATCH "clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER}")
|
|
|
|
|
|
# setup our compiler flags:
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
ADD_DEFINITIONS("-Wno-deprecated -Wno-unused-function -fno-strict-aliasing -fPIC")
|
|
endif()
|
|
if(CMAKE_COMPILER_IS_CLANG)
|
|
ADD_DEFINITIONS("-Wno-array-bounds -fPIC")
|
|
endif()
|
|
|
|
if(NOT RDK_INSTALL_INTREE)
|
|
install(DIRECTORY Data DESTINATION
|
|
${RDKit_ShareDir}
|
|
COMPONENT data
|
|
PATTERN ".svn" EXCLUDE
|
|
)
|
|
install(DIRECTORY Docs DESTINATION
|
|
${RDKit_ShareDir}
|
|
COMPONENT docs
|
|
PATTERN ".svn" EXCLUDE
|
|
)
|
|
install(DIRECTORY Contrib DESTINATION
|
|
${RDKit_ShareDir}
|
|
COMPONENT extras
|
|
PATTERN ".svn" EXCLUDE
|
|
)
|
|
if(RDK_BUILD_PYTHON_WRAPPERS)
|
|
install(DIRECTORY Projects DESTINATION
|
|
${RDKit_ShareDir}
|
|
COMPONENT extras
|
|
PATTERN ".svn" EXCLUDE
|
|
PATTERN "test_list*" EXCLUDE
|
|
PATTERN "CMake*" EXCLUDE
|
|
)
|
|
endif(RDK_BUILD_PYTHON_WRAPPERS)
|
|
install(FILES README license.txt
|
|
DESTINATION ${RDKit_ShareDir}
|
|
COMPONENT base
|
|
)
|
|
endif(NOT RDK_INSTALL_INTREE)
|
|
|
|
add_subdirectory(External)
|
|
add_subdirectory(Code)
|
|
|
|
if(RDK_BUILD_PYTHON_WRAPPERS)
|
|
add_subdirectory(Projects)
|
|
add_subdirectory(rdkit)
|
|
endif(RDK_BUILD_PYTHON_WRAPPERS)
|
|
|
|
# Packaging
|
|
SET(CPACK_GENERATOR "TGZ;DEB;RPM")
|
|
SET(CPACK_RPM_COMPONENT_INSTALL ON)
|
|
SET(CPACK_DEB_COMPONENT_INSTALL ON)
|
|
SET(CPACK_MONOLITHIC_INSTALL OFF)
|
|
|
|
SET(CPACK_COMPONENTS_ALL headers static_libs dynamic_libs python data docs extras base)
|
|
set(CPACK_COMPONENT_DYNAMIC_LIBS_GROUP "Runtime")
|
|
set(CPACK_COMPONENT_BASE_GROUP "Runtime")
|
|
set(CPACK_COMPONENT_DATA_GROUP "Runtime")
|
|
set(CPACK_COMPONENT_DOCS_GROUP "Runtime")
|
|
set(CPACK_COMPONENT_HEADERS_GROUP "Development")
|
|
set(CPACK_COMPONENT_STATIC_LIBS_GROUP "Development")
|
|
set(CPACK_COMPONENT_PYTHON_GROUP "Python")
|
|
set(CPACK_COMPONENT_EXTRAS_GROUP "Extras")
|
|
|
|
|
|
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "RDKit")
|
|
SET(CPACK_PACKAGE_VENDOR "rdkit.org")
|
|
SET(CPACK_PACKAGE_CONTACT "greg.landrum@gmail.com")
|
|
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
|
|
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt")
|
|
SET(CPACK_PACKAGE_VERSION_MAJOR "2011")
|
|
SET(CPACK_PACKAGE_VERSION_MINOR "6")
|
|
SET(CPACK_PACKAGE_VERSION_PATCH "1")
|
|
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
|
|
#IF(WIN32 AND NOT UNIX)
|
|
# # There is a bug in NSI that does not handle full unix paths properly. Make
|
|
# # sure there is at least one set of four (4) backlasshes.
|
|
# SET(CPACK_PACKAGE_ICON "${CMake_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp")
|
|
# SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe")
|
|
# SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} My Famous Project")
|
|
# SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.my-project-home-page.org")
|
|
# SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.my-personal-home-page.com")
|
|
# SET(CPACK_NSIS_CONTACT "me@my-personal-home-page.com")
|
|
# SET(CPACK_NSIS_MODIFY_PATH ON)
|
|
#ELSE(WIN32 AND NOT UNIX)
|
|
# SET(CPACK_STRIP_FILES "bin/MyExecutable")
|
|
# SET(CPACK_SOURCE_STRIP_FILES "")
|
|
#ENDIF(WIN32 AND NOT UNIX)
|
|
#SET(CPACK_PACKAGE_EXECUTABLES "MyExecutable" "My Executable")
|
|
|
|
SET(CPACK_SET_DESTDIR ON)
|
|
|
|
INCLUDE(CPack)
|