diff --git a/.gitignore b/.gitignore index 8ea5d75ab..f57939364 100644 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,7 @@ __pycache__/ /External/catch/catch/ /External/CoordGen/coordgen/ /External/CoordGen/maeparser/ +/External/Eigen/eigen/ /External/FreeSASA/freesasa-2.0.1/ /External/INCHI-API/INCHI-1-SRC/ /External/INCHI-API/src/ diff --git a/CMakeLists.txt b/CMakeLists.txt index fe97563c1..c04b1eb0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -380,20 +380,18 @@ endif(RDK_BUILD_PYTHON_WRAPPERS) string(REGEX MATCH "clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER}") find_package(Eigen3) -if(EIGEN3_FOUND) +if(RDK_BUILD_DESCRIPTORS3D) + if(NOT EIGEN3_FOUND) + add_subdirectory(External/Eigen) + endif() + target_compile_definitions(rdkit_base INTERFACE "-DRDK_BUILD_DESCRIPTORS3D") +endif() + +if(TARGET Eigen3::Eigen) target_compile_definitions(rdkit_base INTERFACE "-DRDK_HAS_EIGEN3") target_link_libraries(rdkit_base INTERFACE Eigen3::Eigen) set(RDK_HAS_EIGEN ON) -endif(EIGEN3_FOUND) - -if(RDK_BUILD_DESCRIPTORS3D) - if(EIGEN3_FOUND) - target_compile_definitions(rdkit_base INTERFACE "-DRDK_BUILD_DESCRIPTORS3D") - else(EIGEN3_FOUND) - message("Eigen3 not found, some Mol descriptors will not be built.") - set(RDK_BUILD_DESCRIPTORS3D OFF) - endif(EIGEN3_FOUND) -endif(RDK_BUILD_DESCRIPTORS3D) +endif() if(RDK_BUILD_THREADSAFE_SSS) find_package (Threads) diff --git a/External/Eigen/CMakeLists.txt b/External/Eigen/CMakeLists.txt new file mode 100644 index 000000000..1ce512c89 --- /dev/null +++ b/External/Eigen/CMakeLists.txt @@ -0,0 +1,17 @@ +include(ExternalProject) +set(EIGEN3_VERSION "3.3.9") +set(EIGEN3_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/eigen) +ExternalProject_Add(Eigen + GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git + GIT_TAG ${EIGEN3_VERSION} + GIT_SHALLOW ON + SOURCE_DIR ${EIGEN3_INCLUDE_DIR} + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" +) + +add_library(Eigen3::Eigen INTERFACE IMPORTED GLOBAL) +set_target_properties(Eigen3::Eigen PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${EIGEN3_INCLUDE_DIR}) +add_dependencies(Eigen3::Eigen Eigen)