summaryrefslogtreecommitdiff
path: root/src/cmake/modules
diff options
context:
space:
mode:
authorvrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-06-20 13:13:22 +0000
committervrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-06-20 13:13:22 +0000
commit1f77137e23ddb39b6c3bdd9ea26b99e2feecfd60 (patch)
tree0b4934d5e78b6daadf65dee52dd97af2243eaa5d /src/cmake/modules
parent2efd0154ec5299a175ea2633db0dd739a620762d (diff)
parentf3c41e18d5122dffd98c49412c364f0a07ee0bb6 (diff)
Merge last trunk modifications
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/Spatial_searching-Add_radius_search@2555 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 3d0a3b2988bbbd0baa19fc09ba77e4e58e330a89
Diffstat (limited to 'src/cmake/modules')
-rw-r--r--src/cmake/modules/FindCython.cmake44
-rw-r--r--src/cmake/modules/GUDHI_doxygen_target.cmake (renamed from src/cmake/modules/GUDHI_doxygen_target.txt)0
-rw-r--r--src/cmake/modules/GUDHI_modules.cmake41
-rw-r--r--src/cmake/modules/GUDHI_test_coverage.cmake14
-rw-r--r--src/cmake/modules/GUDHI_third_party_libraries.cmake (renamed from src/cmake/modules/GUDHI_third_party_libraries.txt)26
-rw-r--r--src/cmake/modules/GUDHI_user_version_target.cmake (renamed from src/cmake/modules/GUDHI_user_version_target.txt)9
6 files changed, 113 insertions, 21 deletions
diff --git a/src/cmake/modules/FindCython.cmake b/src/cmake/modules/FindCython.cmake
new file mode 100644
index 00000000..04aed1f8
--- /dev/null
+++ b/src/cmake/modules/FindCython.cmake
@@ -0,0 +1,44 @@
+# Find the Cython compiler.
+#
+# This code sets the following variables:
+#
+# CYTHON_EXECUTABLE
+#
+# See also UseCython.cmake
+
+#=============================================================================
+# Copyright 2011 Kitware, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#=============================================================================
+
+# Use the Cython executable that lives next to the Python executable
+# if it is a local installation.
+find_package( PythonInterp )
+if( PYTHONINTERP_FOUND )
+ get_filename_component( _python_path ${PYTHON_EXECUTABLE} PATH )
+ find_program( CYTHON_EXECUTABLE
+ NAMES cython cython.bat cython3
+ HINTS ${_python_path}
+ )
+else()
+ find_program( CYTHON_EXECUTABLE
+ NAMES cython cython.bat cython3
+ )
+endif()
+
+
+include( FindPackageHandleStandardArgs )
+FIND_PACKAGE_HANDLE_STANDARD_ARGS( Cython REQUIRED_VARS CYTHON_EXECUTABLE )
+
+mark_as_advanced( CYTHON_EXECUTABLE )
diff --git a/src/cmake/modules/GUDHI_doxygen_target.txt b/src/cmake/modules/GUDHI_doxygen_target.cmake
index d2cb952d..d2cb952d 100644
--- a/src/cmake/modules/GUDHI_doxygen_target.txt
+++ b/src/cmake/modules/GUDHI_doxygen_target.cmake
diff --git a/src/cmake/modules/GUDHI_modules.cmake b/src/cmake/modules/GUDHI_modules.cmake
new file mode 100644
index 00000000..f95d0c34
--- /dev/null
+++ b/src/cmake/modules/GUDHI_modules.cmake
@@ -0,0 +1,41 @@
+# A function to add a new module in GUDHI
+
+set(GUDHI_MODULES "")
+set(GUDHI_MODULES_FULL_LIST "")
+function(add_gudhi_module file_path)
+ option("WITH_MODULE_GUDHI_${file_path}" "Activate/desactivate ${file_path} compilation and installation" ON)
+ if (WITH_MODULE_GUDHI_${file_path})
+ set(GUDHI_MODULES ${GUDHI_MODULES} ${file_path} PARENT_SCOPE)
+ endif()
+ # Required by user_version
+ set(GUDHI_MODULES_FULL_LIST ${GUDHI_MODULES_FULL_LIST} ${file_path} PARENT_SCOPE)
+ # Include module headers is independant - You may ask for no Alpha complex module but Python interface i.e.
+ if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/src/${file_path}/include/)
+ include_directories(src/${file_path}/include/)
+ endif()
+
+endfunction(add_gudhi_module)
+
+option(WITH_GUDHI_BENCHMARK "Activate/desactivate benchmark compilation" OFF)
+option(WITH_GUDHI_EXAMPLE "Activate/desactivate examples compilation and installation" OFF)
+option(WITH_GUDHI_PYTHON "Activate/desactivate python module compilation and installation" ON)
+option(WITH_GUDHI_TEST "Activate/desactivate examples compilation and installation" ON)
+option(WITH_GUDHI_UTILITIES "Activate/desactivate utilities compilation and installation" ON)
+
+if (WITH_GUDHI_BENCHMARK)
+ set(GUDHI_SUB_DIRECTORIES "${GUDHI_SUB_DIRECTORIES};benchmark")
+endif()
+if (WITH_GUDHI_EXAMPLE)
+ set(GUDHI_SUB_DIRECTORIES "${GUDHI_SUB_DIRECTORIES};example")
+endif()
+if (WITH_GUDHI_TEST)
+ set(GUDHI_SUB_DIRECTORIES "${GUDHI_SUB_DIRECTORIES};test")
+endif()
+if (WITH_GUDHI_UTILITIES)
+ set(GUDHI_SUB_DIRECTORIES "${GUDHI_SUB_DIRECTORIES};utilities")
+endif()
+
+message("++ GUDHI_SUB_DIRECTORIES list is:\"${GUDHI_SUB_DIRECTORIES}\"")
+
+
+
diff --git a/src/cmake/modules/GUDHI_test_coverage.cmake b/src/cmake/modules/GUDHI_test_coverage.cmake
new file mode 100644
index 00000000..ce171a0e
--- /dev/null
+++ b/src/cmake/modules/GUDHI_test_coverage.cmake
@@ -0,0 +1,14 @@
+
+if (GCOVR_PATH)
+ # for gcovr to make coverage reports - Corbera Jenkins plugin
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+endif()
+if (GPROF_PATH)
+ # for gprof to make coverage reports - Jenkins
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
+endif()
+
+function(gudhi_add_coverage_test unitary_test)
+ add_test(NAME ${unitary_test} COMMAND $<TARGET_FILE:${unitary_test}>
+ "--log_format=XML" "--log_sink=${CMAKE_BINARY_DIR}/${unitary_test}_UT.xml" "--log_level=test_suite" "--report_level=no")
+endfunction()
diff --git a/src/cmake/modules/GUDHI_third_party_libraries.txt b/src/cmake/modules/GUDHI_third_party_libraries.cmake
index 2ddc9f1f..8cb01d3c 100644
--- a/src/cmake/modules/GUDHI_third_party_libraries.txt
+++ b/src/cmake/modules/GUDHI_third_party_libraries.cmake
@@ -121,33 +121,29 @@ endmacro( find_the_lib )
# Find the correct Python interpreter.
# Can be set with -DPYTHON_EXECUTABLE=/usr/bin/python3 or -DPython_ADDITIONAL_VERSIONS=3 for instance.
-if(PYTHON_EXECUTABLE)
- if(NOT EXISTS "${PYTHON_EXECUTABLE}")
- message(FATAL_ERROR "ERROR: ${PYTHON_EXECUTABLE} does not exist.")
- endif(NOT EXISTS "${PYTHON_EXECUTABLE}")
-endif(PYTHON_EXECUTABLE)
-find_package(PythonInterp)
+find_package(Cython)
if(NOT GUDHI_CYTHON_PATH)
message(FATAL_ERROR "ERROR: GUDHI_CYTHON_PATH is not valid.")
endif(NOT GUDHI_CYTHON_PATH)
-if(PYTHONINTERP_FOUND)
+if(PYTHONINTERP_FOUND AND CYTHON_FOUND)
+ # Unitary tests are available through py.test
+ find_program( PYTEST_PATH py.test )
# Default found version 2
if(PYTHON_VERSION_MAJOR EQUAL 2)
- FIND_PROGRAM(CYTHON_PATH cython)
- # Unitary tests are available through py.test
- find_program( PYTEST_PATH py.test )
# Documentation generation is available through sphinx
find_program( SPHINX_PATH sphinx-build )
elseif(PYTHON_VERSION_MAJOR EQUAL 3)
- FIND_PROGRAM(CYTHON_PATH cython3)
- # Unitary tests are available through py.test
- find_program( PYTEST_PATH py.test )
- # Documentation generation is available through sphinx
+ # No sphinx-build in Pyton3, just hack it
set(SPHINX_PATH "${CMAKE_SOURCE_DIR}/${GUDHI_CYTHON_PATH}/doc/python3-sphinx-build")
else()
message(FATAL_ERROR "ERROR: Try to compile the Cython interface. Python version ${PYTHON_VERSION_STRING} is not valid.")
endif(PYTHON_VERSION_MAJOR EQUAL 2)
-endif(PYTHONINTERP_FOUND)
+ # get PYTHON_SITE_PACKAGES relative path from a python command line
+ execute_process(
+ COMMAND "${PYTHON_EXECUTABLE}" -c "from distutils.sysconfig import get_python_lib; print (get_python_lib(prefix='', plat_specific=True))"
+ OUTPUT_VARIABLE PYTHON_SITE_PACKAGES
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif(PYTHONINTERP_FOUND AND CYTHON_FOUND)
diff --git a/src/cmake/modules/GUDHI_user_version_target.txt b/src/cmake/modules/GUDHI_user_version_target.cmake
index 13fccd32..cff64ad2 100644
--- a/src/cmake/modules/GUDHI_user_version_target.txt
+++ b/src/cmake/modules/GUDHI_user_version_target.cmake
@@ -35,8 +35,6 @@ if (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
copy ${CMAKE_SOURCE_DIR}/src/GUDHIConfig.cmake.in ${GUDHI_USER_VERSION_DIR}/GUDHIConfig.cmake.in)
add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
copy ${CMAKE_SOURCE_DIR}/CMakeGUDHIVersion.txt ${GUDHI_USER_VERSION_DIR}/CMakeGUDHIVersion.txt)
- add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_SOURCE_DIR}/GUDHIVersion.cmake.in ${GUDHI_USER_VERSION_DIR}/GUDHIVersion.cmake.in)
add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
copy_directory ${CMAKE_SOURCE_DIR}/biblio ${GUDHI_USER_VERSION_DIR}/biblio)
@@ -49,11 +47,10 @@ if (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
copy_directory ${CMAKE_SOURCE_DIR}/src/GudhUI ${GUDHI_USER_VERSION_DIR}/GudhUI)
- set(GUDHI_MODULES "common;Alpha_complex;Bitmap_cubical_complex;Bottleneck_distance;Contraction;Hasse_complex;Persistent_cohomology;Rips_complex;Simplex_tree;Skeleton_blocker;Spatial_searching;Subsampling;Tangential_complex;Witness_complex")
- set(GUDHI_DIRECTORIES "doc;example;concept")
+ set(GUDHI_DIRECTORIES "doc;example;concept;utilities")
set(GUDHI_INCLUDE_DIRECTORIES "include/gudhi;include/gudhi_patches")
- foreach(GUDHI_MODULE ${GUDHI_MODULES})
+ foreach(GUDHI_MODULE ${GUDHI_MODULES_FULL_LIST})
foreach(GUDHI_DIRECTORY ${GUDHI_DIRECTORIES})
# Find files
file(GLOB GUDHI_FILES ${CMAKE_SOURCE_DIR}/src/${GUDHI_MODULE}/${GUDHI_DIRECTORY}/*)
@@ -88,6 +85,6 @@ if (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
endforeach()
endforeach(GUDHI_INCLUDE_DIRECTORY ${GUDHI_INCLUDE_DIRECTORIES})
- endforeach(GUDHI_MODULE ${GUDHI_MODULES})
+ endforeach(GUDHI_MODULE ${GUDHI_MODULES_FULL_LIST})
endif()