summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeGUDHIVersion.txt6
-rw-r--r--CMakeLists.txt4
-rw-r--r--GUDHIVersion.cmake.in1
-rw-r--r--Version.txt1
-rwxr-xr-xscripts/generate_version.sh6
-rw-r--r--src/CMakeLists.txt72
-rw-r--r--src/GUDHIConfig.cmake.in15
7 files changed, 93 insertions, 12 deletions
diff --git a/CMakeGUDHIVersion.txt b/CMakeGUDHIVersion.txt
new file mode 100644
index 00000000..19d10535
--- /dev/null
+++ b/CMakeGUDHIVersion.txt
@@ -0,0 +1,6 @@
+set (GUDHI_MAJOR_VERSION 1)
+set (GUDHI_MINOR_VERSION 2)
+set (GUDHI_PATCH_VERSION 0)
+set(GUDHI_VERSION ${GUDHI_MAJOR_VERSION}.${GUDHI_MINOR_VERSION}.${GUDHI_PATCH_VERSION})
+
+message(STATUS "GUDHI version : ${GUDHI_VERSION}")
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6bea06e2..91030185 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,10 @@
cmake_minimum_required(VERSION 2.6)
project(GUDHIdev)
+include(CMakeGUDHIVersion.txt)
+# Generate GUDHI official version file
+configure_file(GUDHIVersion.cmake.in "${PROJECT_BINARY_DIR}/GUDHIVersion.cmake" @ONLY)
+
find_package(Boost REQUIRED COMPONENTS system filesystem unit_test_framework chrono timer program_options thread REQUIRED)
set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/src/cmake/modules/")
diff --git a/GUDHIVersion.cmake.in b/GUDHIVersion.cmake.in
new file mode 100644
index 00000000..2f433c1c
--- /dev/null
+++ b/GUDHIVersion.cmake.in
@@ -0,0 +1 @@
+@GUDHI_VERSION@
diff --git a/Version.txt b/Version.txt
deleted file mode 100644
index 9084fa2f..00000000
--- a/Version.txt
+++ /dev/null
@@ -1 +0,0 @@
-1.1.0
diff --git a/scripts/generate_version.sh b/scripts/generate_version.sh
index e7575282..b1657754 100755
--- a/scripts/generate_version.sh
+++ b/scripts/generate_version.sh
@@ -4,12 +4,13 @@
#usage bash generate_version.sh -f DIR : generate even if svn is empty and save library in dir
#
# 23/06/2015 - Remove source, add biblio, and doc
+# 06/10/2015 - Replace static Version.txt with generated GUDHIVersion.cmake file
# VERSION CHECK
ROOT_DIR=..
-VERSION_FILE="$ROOT_DIR/Version.txt"
+VERSION_FILE="$ROOT_DIR/GUDHIVersion.cmake"
if [ ! -f $VERSION_FILE ]; then
- echo "File not found! : $VERSION_FILE"
+ echo "File not found! : $VERSION_FILE - Please launch cmake first to generate file"
exit 1
fi
@@ -44,6 +45,7 @@ mkdir "$VERSION_DIR"
# TOP LEVEL FILE COPY
cp $VERSION_FILE $VERSION_DIR
+cp $ROOT_DIR/CMakeGUDHIVersion.txt $VERSION_DIR
cp $ROOT_DIR/README $VERSION_DIR
cp $ROOT_DIR/Conventions.txt $VERSION_DIR
cp $ROOT_DIR/COPYING $VERSION_DIR
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3e21870f..e8297aa8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,16 +1,12 @@
cmake_minimum_required(VERSION 2.6)
project(GUDHI)
-# Do not forget to version number.
-set (GUDHI_MAJOR_VERSION 1)
-set (GUDHI_MINOR_VERSION 2)
-set (GUDHI_PATCH_VERSION 0)
+include("CMakeGUDHIVersion.txt")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/")
find_package(Boost REQUIRED COMPONENTS system filesystem program_options chrono timer REQUIRED)
-
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif()
@@ -40,9 +36,35 @@ else()
add_definitions(-DBOOST_ALL_NO_LIB)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
- LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
- include_directories(include/)
-
+ LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
+
+ #---------------------------------------------------------------------------------------
+ # GUDHIConfig.cmake 1st part
+
+ # Offer the user the choice of overriding the installation directories - i.e. "cmake -DGUDHI_DIR=~/gudhi/GUDHI_1.2.0 ."
+ set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries")
+ set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
+ set(INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
+ if(WIN32 AND NOT CYGWIN)
+ set(DEF_INSTALL_CMAKE_DIR CMake)
+ else()
+ set(DEF_INSTALL_CMAKE_DIR lib/CMake/GUDHI)
+ endif()
+ set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
+
+ # Make relative paths absolute (needed later on)
+ foreach(p LIB BIN INCLUDE CMAKE)
+ set(var INSTALL_${p}_DIR)
+ if(NOT IS_ABSOLUTE "${${var}}")
+ set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+ endif()
+ endforeach()
+ #---------------------------------------------------------------------------------------
+
+ #---------------------------------------------------------------------------------------
+ # Gudhi compilation part
+ include_directories(include)
+
add_subdirectory(example/Simplex_tree)
add_subdirectory(example/Persistent_cohomology)
add_subdirectory(example/Skeleton_blocker)
@@ -55,7 +77,39 @@ else()
# data points generator
add_subdirectory(data/points/generator)
+ #---------------------------------------------------------------------------------------
+
+ #---------------------------------------------------------------------------------------
+ # GUDHIConfig.cmake 2nd part
+ # Export the package for use from the build-tree
+ # (this registers the build-tree with a global CMake-registry)
+ export(PACKAGE GUDHI)
+
+ # Create the GUDHIConfig.cmake and GUDHIConfigVersion files
+ file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}")
+ # ... for the build tree
+ set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/include")
+ configure_file(GUDHIConfig.cmake.in "${PROJECT_BINARY_DIR}/GUDHIConfig.cmake" @ONLY)
+ # ... for the install tree
+ set(CONF_INCLUDE_DIRS "\${GUDHI_CMAKE_DIR}/${REL_INCLUDE_DIR}")
+ configure_file(GUDHIConfig.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/GUDHIConfig.cmake" @ONLY)
+ # ... for both
+ configure_file(GUDHIConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/GUDHIConfigVersion.cmake" @ONLY)
+
+ configure_file(GUDHIVersion.cmake.in "${PROJECT_BINARY_DIR}/GUDHIVersion.cmake" @ONLY)
+
+ # Install the GUDHIConfig.cmake and GUDHIConfigVersion.cmake
+ install(FILES
+ "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/GUDHIConfig.cmake"
+ "${PROJECT_BINARY_DIR}/GUDHIConfigVersion.cmake"
+ DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
+ #---------------------------------------------------------------------------------------
+
+ #---------------------------------------------------------------------------------------
+ # Gudhi installation part
- install (DIRECTORY include/gudhi DESTINATION include)
+ # install the include file on "make install"
+ install(DIRECTORY include/gudhi DESTINATION include)
+ #---------------------------------------------------------------------------------------
endif()
diff --git a/src/GUDHIConfig.cmake.in b/src/GUDHIConfig.cmake.in
new file mode 100644
index 00000000..83aa61e7
--- /dev/null
+++ b/src/GUDHIConfig.cmake.in
@@ -0,0 +1,15 @@
+# - Config file for the GUDHI package
+# It defines the following variables
+# GUDHI_INCLUDE_DIRS - include directories for GUDHI
+# GUDHI_LIBRARIES - libraries to link against
+# GUDHI_EXECUTABLE - the executables
+
+# Compute paths
+get_filename_component(GUDHI_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+set(GUDHI_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
+
+# Our library dependencies (contains definitions for IMPORTED targets)
+include("${GUDHI_CMAKE_DIR}/GUDHITargets.cmake")
+
+# These are IMPORTED targets created by GUDHITargets.cmake
+set(GUDHI_EXECUTABLE mini_simplex_tree)