From 00b0092fc11d144274e229aff4038a192b5ba4cd Mon Sep 17 00:00:00 2001 From: Mihai Tudor Panu Date: Fri, 25 Mar 2016 11:57:13 -0700 Subject: [PATCH] cmake: fixed flow for finding libs & include dirs Signed-off-by: Mihai Tudor Panu --- CMakeLists.txt | 6 ++---- src/CMakeLists.txt | 33 ++++++++++++++++++++++----------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 073281fb..ee15829c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,7 +122,7 @@ if (BUILDDOC) find_package (Sphinx) if(SPHINX_FOUND AND BUILDSWIG AND BUILDSWIGPYTHON) # Python required for Sphinx build - find_package (PythonLibs) + find_package (PythonLibs ${PYTHONBUILD_VERSION} REQUIRED) string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING}) list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR) list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR) @@ -238,12 +238,10 @@ if (BUILDSWIGPYTHON OR BUILDTESTS) else () set (PYTHONBUILD_VERSION 2.7) endif () - find_package (PythonInterp ${PYTHONBUILD_VERSION} REQUIRED) - find_package (PythonLibs ${PYTHONBUILD_VERSION} REQUIRED) - include_directories(${PYTHON_INCLUDE_PATH}) endif () if (BUILDTESTS) + find_package (PythonInterp ${PYTHONBUILD_VERSION} REQUIRED) enable_testing () add_subdirectory (tests) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 18b2b2f5..3f587f08 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,6 +28,7 @@ endmacro (upm_CREATE_INSTALL_PKGCONFIG) macro(upm_SWIG_PYTHON) if (BUILDSWIGPYTHON AND BUILDSWIG) + set_source_files_properties (pyupm_${libname}.i PROPERTIES CPLUSPLUS ON) set_source_files_properties (pyupm_${libname}.i PROPERTIES SWIG_FLAGS "-I${CMAKE_CURRENT_BINARY_DIR}/..") swig_add_module (pyupm_${libname} python pyupm_${libname}.i ${module_src}) @@ -56,6 +57,8 @@ macro(upm_SWIG_NODE) set (V8_VERSION_HEX "${V8_VERSION_HEX}0") string (LENGTH "${V8_VERSION_HEX}" V8_VERSION_HEX_length) endwhile () + +# include_directories (${NODE_INCLUDE_DIRS}) set_property (SOURCE jsupm_${libname}.i PROPERTY SWIG_FLAGS "-node" "-DV8_VERSION=${V8_VERSION_HEX}") set_source_files_properties (jsupm_${libname}.i PROPERTIES CPLUSPLUS ON) @@ -77,19 +80,22 @@ macro(upm_SWIG_NODE) message(FATAL_ERROR " **ERROR** GCC 4.7 or above is required to compile jsupm_${libname} ") endif() endif() - set_property (TARGET jsupm_${libname} PROPERTY CXX_STANDARD 11) - set_property (TARGET jsupm_${libname} PROPERTY CXX_STANDARD_REQUIRED ON) + + if (NOT ENABLECXX11) + set_property (TARGET jsupm_${libname} PROPERTY CXX_STANDARD 11) + set_property (TARGET jsupm_${libname} PROPERTY CXX_STANDARD_REQUIRED ON) - if (CMAKE_VERSION VERSION_LESS "3.1") - if (CMAKE_COMPILER_IS_GNUCXX) - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7") - message (FATAL_ERROR " FATAL ERROR: GNU gcc compiler is also too old (need 4.7+, but ${CMAKE_CXX_COMPILER_VERSION}) and does not support C++11 standard.") + if (CMAKE_VERSION VERSION_LESS "3.1") + if (CMAKE_COMPILER_IS_GNUCXX) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7") + message (FATAL_ERROR " FATAL ERROR: GNU gcc compiler is also too old (need 4.7+, but ${CMAKE_CXX_COMPILER_VERSION}) and does not support C++11 standard.") + endif () + set (UPM_CXX11_WORKAROUND_OPTION "-std=gnu++11") + else () + set (UPM_CXX11_WORKAROUND_OPTION "-std=c++11") + endif () + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${UPM_CXX11_WORKAROUND_OPTION} ") endif () - set (UPM_CXX11_WORKAROUND_OPTION "-std=gnu++11") - else () - set (UPM_CXX11_WORKAROUND_OPTION "-std=c++11") - endif () - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${UPM_CXX11_WORKAROUND_OPTION} ") endif () endif() @@ -165,6 +171,11 @@ macro(upm_doxygen) endmacro() if (SWIG_FOUND) + if (BUILDSWIGPYTHON) + if(NOT PYTHONLIBS_FOUND) + find_package (PythonLibs ${PYTHONBUILD_VERSION} REQUIRED) + endif() + endif() if (BUILDSWIGNODE) if(NOT NODE_FOUND) find_package(Node)