From 4c44ddc4e67e409a25d20f96e76c2cf7f8e5060a Mon Sep 17 00:00:00 2001 From: Chris Beall Date: Thu, 21 Jan 2016 01:13:22 -0500 Subject: [PATCH] Print all python-related dependency warnings at the end of cmake output with all the other warnings. Don't automatically toggle GTSAM_BUILD_PYTHON option to OFF - this is more consistent with how other options are handled. --- CMakeLists.txt | 11 ++++++++-- python/CMakeLists.txt | 51 ++++++++++++++++++++++++------------------- 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a886f2702..b7e30253b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -355,7 +355,6 @@ if (GTSAM_BUILD_PYTHON) # comments on the next lines # wrap_and_install_python(gtsampy.h "${GTSAM_ADDITIONAL_LIBRARIES}" "") - add_subdirectory(python) endif() @@ -478,7 +477,12 @@ print_config_flag(${GTSAM_INSTALL_MATLAB_TOOLBOX} "Install matlab toolbox print_config_flag(${GTSAM_BUILD_WRAP} "Build Wrap ") message(STATUS "Python module flags ") -print_config_flag(${GTSAM_BUILD_PYTHON} "Build python module ") + +if(GTSAM_PYTHON_WARNINGS) + message(STATUS " Build python module : No - dependencies missing") +else() + print_config_flag(${GTSAM_BUILD_PYTHON} "Build python module ") +endif() if(GTSAM_BUILD_PYTHON) message(STATUS " Python version : ${GTSAM_PYTHON_VERSION}") endif() @@ -494,6 +498,9 @@ endif() if(GTSAM_WITH_EIGEN_MKL_OPENMP AND NOT OPENMP_FOUND AND MKL_FOUND) message(WARNING "Your compiler does not support OpenMP - this is ok, but performance may be improved with OpenMP. Set GTSAM_WITH_EIGEN_MKL_OPENMP to 'Off' to avoid this warning.") endif() +if(GTSAM_BUILD_PYTHON AND GTSAM_PYTHON_WARNINGS) + message(WARNING "${GTSAM_PYTHON_WARNINGS}") +endif() # Include CPack *after* all flags include(CPack) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 4d3d0237d..f21bb1a76 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -31,9 +31,6 @@ endif() # Find NumPy C-API -- this is part of the numpy package find_package(NumPy) -if(NUMPY_FOUND) - include_directories(${NUMPY_INCLUDE_DIRS}) -endif() # Find Python # First, be sure that python version can be found by FindPythonLibs.cmake @@ -52,6 +49,9 @@ find_package(Boost COMPONENTS python${BOOST_PYTHON_VERSION_SUFFIX}) # Build python module library and setup the module inside build if(Boost_PYTHON${BOOST_PYTHON_VERSION_SUFFIX_UPPERCASE}_FOUND AND PYTHONLIBS_FOUND AND NUMPY_FOUND) + + include_directories(${NUMPY_INCLUDE_DIRS}) + include_directories(${PYTHON_INCLUDE_DIRS}) include_directories(${Boost_INCLUDE_DIRS}) include_directories(${CMAKE_SOURCE_DIR}/gtsam/3rdparty/numpy_eigen/include/) @@ -74,28 +74,33 @@ if(Boost_PYTHON${BOOST_PYTHON_VERSION_SUFFIX_UPPERCASE}_FOUND AND PYTHONLIBS_FOU add_dependencies(gtsam_python copy_${PY_SRC_TARGET_SUFFIX}) endforeach() -# Disable python module if we didn't find required lybraries +# Disable python module if we didn't find required libraries else() - set(GTSAM_BUILD_PYTHON OFF CACHE BOOL "Build Python wrapper statically (increases build time)" FORCE) -endif() -# Print warnings (useful for ccmake) -if(NOT NUMPY_FOUND) - message(WARNING "Numpy not found -- Python module cannot be built.") -endif() - -if(NOT PYTHONLIBS_FOUND) - if(GTSAM_PYTHON_VERSION STREQUAL "Default") - message(WARNING "Default PythonLibs was not found -- Python module cannot be built. Option GTSAM_BUILD_PYTHON disabled.") - else() - message(WARNING "PythonLibs version ${GTSAM_PYTHON_VERSION} was not found -- Python module cannot be built. Option GTSAM_BUILD_PYTHON disabled.") + # message will print at end of main CMakeLists.txt + SET(GTSAM_PYTHON_WARNINGS "Python dependencies not found - Python module will not be built. Set GTSAM_BUILD_PYTHON to 'Off' to disable this warning. Details:") + + if(NOT PYTHONLIBS_FOUND) + if(GTSAM_PYTHON_VERSION STREQUAL "Default") + SET(GTSAM_PYTHON_WARNINGS "${GTSAM_PYTHON_WARNINGS}\n -- Default PythonLibs not found") + else() + SET(GTSAM_PYTHON_WARNINGS "${GTSAM_PYTHON_WARNINGS}\n -- PythonLibs version ${GTSAM_PYTHON_VERSION} not found") + endif() endif() -endif() - -if(NOT Boost_PYTHON${BOOST_PYTHON_VERSION_SUFFIX_UPPERCASE}_FOUND) - if(GTSAM_PYTHON_VERSION STREQUAL "Default") - message(WARNING "Default Boost python was not found -- Python module cannot be built. Option GTSAM_BUILD_PYTHON disabled.") - else() - message(WARNING "Boost Python for python ${GTSAM_PYTHON_VERSION} was not found -- Python module cannot be built. Option GTSAM_BUILD_PYTHON disabled.") + + if(NOT NUMPY_FOUND) + SET(GTSAM_PYTHON_WARNINGS "${GTSAM_PYTHON_WARNINGS}\n -- Numpy not found") endif() + + if(NOT Boost_PYTHON${BOOST_PYTHON_VERSION_SUFFIX_UPPERCASE}_FOUND) + if(GTSAM_PYTHON_VERSION STREQUAL "Default") + SET(GTSAM_PYTHON_WARNINGS "${GTSAM_PYTHON_WARNINGS}\n -- Default Boost python not found") + else() + SET(GTSAM_PYTHON_WARNINGS "${GTSAM_PYTHON_WARNINGS}\n -- Boost Python for python ${GTSAM_PYTHON_VERSION} not found") + endif() + endif() + + # make available at top-level + SET(GTSAM_PYTHON_WARNINGS ${GTSAM_PYTHON_WARNINGS} PARENT_SCOPE) + endif()