diff --git a/.gitattributes b/.gitattributes index 11b96d86f86..b74abb4b989 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1657,11 +1657,11 @@ HalfedgeDS/doc_tex/HalfedgeDS_ref/fig/hds_optional.pdf -text svneol=unset#applic HalfedgeDS/doc_tex/HalfedgeDS_ref/fig/hds_optional_small.gif -text svneol=unset#image/gif HalfedgeDS/examples/HalfedgeDS/hds_prog_default_with_ccb.cpp -text HalfedgeDS/examples/HalfedgeDS/hds_prog_graph_with_ccb.cpp -text -Installation/CGALConfig_binary.cmake.in -text -Installation/CGALConfig_install.cmake.fhs.in -text -Installation/CGALConfig_install.cmake.source.in -text Installation/INSTALL_via_cmake -text Installation/LICENSE.FREE_USE -text +Installation/cmake/modules/CGALConfig_binary.cmake.in -text +Installation/cmake/modules/CGALConfig_install.cmake.fhs.in -text +Installation/cmake/modules/CGALConfig_install.cmake.source.in -text Installation/cmake/modules/CGAL_CheckCXXFileRuns.cmake -text Installation/cmake/modules/CGAL_Common.cmake -text Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake -text @@ -1682,6 +1682,7 @@ Installation/cmake/modules/CGAL_UseLAPACK.cmake -text Installation/cmake/modules/CGAL_UseTAUCS.cmake -text Installation/cmake/modules/FindBLAS.cmake -text Installation/cmake/modules/FindBoost.cmake -text +Installation/cmake/modules/FindCGAL.cmake -text Installation/cmake/modules/FindCGAL_CORE.cmake -text Installation/cmake/modules/FindCORE.cmake -text Installation/cmake/modules/FindF2C.cmake -text diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 97fdd983855..30f4dc832fc 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -18,36 +18,6 @@ endif() #-------------------------------------------------------------------------------------------------- -# Where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked -set(CGAL_CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) - -set(ORIGINAL_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ) - -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CGAL_CMAKE_MODULE_PATH} ) - -# This allows else(), endif(), etc... (without repeating the expression) -set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) - -message( STATUS "CGAL_REFERENCE_CACHE_DIR=${CGAL_REFERENCE_CACHE_DIR}" ) - -if ( NOT "${CGAL_REFERENCE_CACHE_DIR}" STREQUAL "" ) - if ( EXISTS ${CGAL_REFERENCE_CACHE_DIR} ) - if ( EXISTS ${CGAL_REFERENCE_CACHE_DIR}/CMakeCache.txt ) - message( STATUS "Loading reference cache from ${CGAL_REFERENCE_CACHE_DIR}" ) - load_cache( ${CGAL_REFERENCE_CACHE_DIR} ) - endif() - endif() -endif() - -include(CGAL_Common) -include(CGAL_GeneratorSpecificSettings) -include(CGAL_CheckCXXFileRuns) - -mark_as_advanced(CMAKE_BACKWARDS_COMPATIBILITY) - -message( STATUS "USING CMake version: ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" ) -message( STATUS "System: ${CMAKE_SYSTEM_NAME}" ) - # # Read and parse CGAL version number from VERSION file # @@ -86,6 +56,42 @@ message( STATUS "CGAL_SOVERSION =${CGAL_SOVERSION}" ) set( CGAL_BUILDING_LIBS TRUE ) +set( CGAL_MODULES_REL_DIR lib/CGAL-3.4 ) +set( CGAL_MODULES_DIR ${CMAKE_SOURCE_DIR}/${CGAL_MODULES_REL_DIR} ) + +# Where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked +set(CGAL_CMAKE_MODULE_PATH ${CGAL_MODULES_DIR} ) + +set(ORIGINAL_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ) + +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CGAL_CMAKE_MODULE_PATH} ) + +# This allows else(), endif(), etc... (without repeating the expression) +set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) + +message( STATUS "CGAL_REFERENCE_CACHE_DIR=${CGAL_REFERENCE_CACHE_DIR}" ) + +if ( RUNNING_CGAL_AUTO_TEST ) + if ( NOT "${CGAL_REFERENCE_CACHE_DIR}" STREQUAL "" ) + if ( EXISTS ${CGAL_REFERENCE_CACHE_DIR} ) + if ( EXISTS ${CGAL_REFERENCE_CACHE_DIR}/CMakeCache.txt ) + message( STATUS "Loading reference cache from ${CGAL_REFERENCE_CACHE_DIR}" ) + load_cache( ${CGAL_REFERENCE_CACHE_DIR} ) + endif() + endif() + endif() +endif() + +include(CGAL_Common) +include(CGAL_GeneratorSpecificSettings) +include(CGAL_CheckCXXFileRuns) + +mark_as_advanced(CMAKE_BACKWARDS_COMPATIBILITY) + +message( STATUS "USING CMake version: ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" ) +message( STATUS "System: ${CMAKE_SYSTEM_NAME}" ) + + #-------------------------------------------------------------------------------------------------- # # -= FLAGS =- @@ -265,7 +271,7 @@ if ( CGAL_SOURCE_INSTALL ) set ( CGAL_INSTALL_BIN_DIR "script" CACHE STRING "The folder where CGAL user-side scripts will be installed, relative to CMAKE_INSTALL_PREFIX" ) - set ( CGAL_INSTALL_CMAKE_DIR "cmake/modules" + set ( CGAL_INSTALL_CMAKE_DIR "lib/CGAL-${CGAL_VERSION}" CACHE STRING "The folder where CGAL CMake modules will be installed, relative to CMAKE_INSTALL_PREFIX" ) @@ -362,51 +368,48 @@ create_CGALconfig_files() # #-------------------------------------------------------------------------------------------------- -if ( WITH_INSTALL ) +# WARNING: Use only relative paths; full paths break CPack! +# DESTINATION option is mandatory; skipping it breaks CPack! - # WARNING: Use only relative paths; full paths break CPack! - # DESTINATION option is mandatory; skipping it breaks CPack! - - install(FILES CHANGES "INSTALL" INSTALL.MacOSX INSTALL.win32.txt LICENSE LICENSE.FREE_USE LICENSE.LGPL LICENSE.QPL README "VERSION" - DESTINATION ${CGAL_INSTALL_DOC_DIR} - ) +install(FILES CHANGES "INSTALL" INSTALL.MacOSX INSTALL.win32.txt LICENSE LICENSE.FREE_USE LICENSE.LGPL LICENSE.QPL README "VERSION" + DESTINATION ${CGAL_INSTALL_DOC_DIR} + ) - install(DIRECTORY include/CGAL DESTINATION ${CGAL_INSTALL_INC_DIR} ) - install(DIRECTORY "${CMAKE_BINARY_DIR}/include/CGAL" DESTINATION ${CGAL_INSTALL_INC_DIR} ) +install(DIRECTORY include/CGAL DESTINATION ${CGAL_INSTALL_INC_DIR} ) +install(DIRECTORY "${CMAKE_BINARY_DIR}/include/CGAL" DESTINATION ${CGAL_INSTALL_INC_DIR} ) - install(DIRECTORY scripts/ DESTINATION ${CGAL_INSTALL_BIN_DIR} ) +install(DIRECTORY scripts/ DESTINATION ${CGAL_INSTALL_BIN_DIR} ) - install(DIRECTORY cmake/modules/ DESTINATION ${CGAL_INSTALL_CMAKE_DIR} ) - install(FILES cmake/modules/UseCGAL.cmake DESTINATION ${CGAL_INSTALL_CMAKE_DIR} ) +install(DIRECTORY ${CGAL_MODULES_REL_DIR}/ DESTINATION ${CGAL_INSTALL_CMAKE_DIR} ) +install(FILES ${CGAL_MODULES_REL_DIR}/UseCGAL.cmake DESTINATION ${CGAL_INSTALL_CMAKE_DIR} ) - if ( GMP_IN_AUXILIARY ) - install(DIRECTORY auxiliary/gmp/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} ) - install(DIRECTORY auxiliary/gmp/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} ) - endif() - - if ( TAUCS_IN_AUXILIARY ) - install(DIRECTORY auxiliary/taucs/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} ) - install(DIRECTORY auxiliary/tacus/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} ) - endif() - - if ( ZLIB_IN_AUXILIARY ) - install(DIRECTORY auxiliary/zlib/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} ) - install(DIRECTORY auxiliary/zlib/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} ) - endif() - - - if ( CGAL_SOURCE_INSTALL ) - install(FILES ${CMAKE_BINARY_DIR}/cmake/CGALConfig.cmake DESTINATION ${CGAL_INSTALL_ROOT_DIR} ) - install(FILES CMakeLists.txt DESTINATION ${CGAL_INSTALL_ROOT_DIR} ) - install(DIRECTORY auxiliary DESTINATION ${CGAL_INSTALL_ROOT_DIR} ) - install(DIRECTORY src DESTINATION ${CGAL_INSTALL_ROOT_DIR} ) - else() - install(FILES ${CMAKE_BINARY_DIR}/cmake/CGALConfig.cmake DESTINATION ${CGAL_INSTALL_CMAKE_DIR} ) - endif() - +if ( GMP_IN_AUXILIARY ) + install(DIRECTORY auxiliary/gmp/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} ) + install(DIRECTORY auxiliary/gmp/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} ) endif() +if ( TAUCS_IN_AUXILIARY ) + install(DIRECTORY auxiliary/taucs/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} ) + install(DIRECTORY auxiliary/tacus/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} ) +endif() + +if ( ZLIB_IN_AUXILIARY ) + install(DIRECTORY auxiliary/zlib/include/ DESTINATION ${CGAL_INSTALL_INC_DIR} ) + install(DIRECTORY auxiliary/zlib/lib/ DESTINATION ${CGAL_INSTALL_LIB_DIR} ) +endif() + + +if ( CGAL_SOURCE_INSTALL ) + install(FILES ${CMAKE_BINARY_DIR}/config/CGALConfig.cmake DESTINATION ${CGAL_INSTALL_ROOT_DIR} ) + install(FILES CMakeLists.txt DESTINATION ${CGAL_INSTALL_ROOT_DIR} ) + install(DIRECTORY auxiliary DESTINATION ${CGAL_INSTALL_ROOT_DIR} ) + install(DIRECTORY src DESTINATION ${CGAL_INSTALL_ROOT_DIR} ) +else() + install(FILES ${CMAKE_BINARY_DIR}/config/CGALConfig.cmake DESTINATION ${CGAL_INSTALL_CMAKE_DIR} ) +endif() + + #-------------------------------------------------------------------------------------------------- # diff --git a/Installation/CGALConfig_binary.cmake.in b/Installation/cmake/modules/CGALConfig_binary.cmake.in similarity index 100% rename from Installation/CGALConfig_binary.cmake.in rename to Installation/cmake/modules/CGALConfig_binary.cmake.in diff --git a/Installation/CGALConfig_install.cmake.fhs.in b/Installation/cmake/modules/CGALConfig_install.cmake.fhs.in similarity index 100% rename from Installation/CGALConfig_install.cmake.fhs.in rename to Installation/cmake/modules/CGALConfig_install.cmake.fhs.in diff --git a/Installation/CGALConfig_install.cmake.source.in b/Installation/cmake/modules/CGALConfig_install.cmake.source.in similarity index 100% rename from Installation/CGALConfig_install.cmake.source.in rename to Installation/cmake/modules/CGALConfig_install.cmake.source.in diff --git a/Installation/cmake/modules/CGAL_Macros.cmake b/Installation/cmake/modules/CGAL_Macros.cmake index 8da0296c7cd..1119a98092f 100644 --- a/Installation/cmake/modules/CGAL_Macros.cmake +++ b/Installation/cmake/modules/CGAL_Macros.cmake @@ -116,12 +116,12 @@ if( NOT CGAL_MACROS_FILE_INCLUDED ) macro( create_CGALconfig_files ) # FindCGAL and UseCGAL are platform specific so they are generated and stored in the binary folder. - configure_file(${CMAKE_SOURCE_DIR}/CGALConfig_binary.cmake.in ${CMAKE_BINARY_DIR}/CGALConfig.cmake @ONLY IMMEDIATE) + configure_file(${CGAL_MODULES_DIR}/CGALConfig_binary.cmake.in ${CMAKE_BINARY_DIR}/CGALConfig.cmake @ONLY IMMEDIATE) if ( SOURCE_INSTALL ) - configure_file(${CMAKE_SOURCE_DIR}/CGALConfig_install.cmake.source.in ${CMAKE_BINARY_DIR}/cmake/CGALConfig.cmake @ONLY IMMEDIATE) + configure_file(${CGAL_MODULES_DIR}/CGALConfig_install.cmake.source.in ${CMAKE_BINARY_DIR}/config/CGALConfig.cmake @ONLY IMMEDIATE) else() - configure_file(${CMAKE_SOURCE_DIR}/CGALConfig_install.cmake.fhs.in ${CMAKE_BINARY_DIR}/cmake/CGALConfig.cmake @ONLY IMMEDIATE) + configure_file(${CGAL_MODULES_DIR}/CGALConfig_install.cmake.fhs.in ${CMAKE_BINARY_DIR}/config/CGALConfig.cmake @ONLY IMMEDIATE) endif() endmacro() diff --git a/Installation/cmake/modules/FindCGAL.cmake b/Installation/cmake/modules/FindCGAL.cmake new file mode 100644 index 00000000000..a43ae8caefd --- /dev/null +++ b/Installation/cmake/modules/FindCGAL.cmake @@ -0,0 +1,91 @@ +# +# The following module is based on FindVTK.cmake +# + +# - Find a CGAL installation or binary tree. +# The following variables are set if CGAL is found. If CGAL is not +# found, CGAL_FOUND is set to false. +# +# CGAL_FOUND - Set to true when CGAL is found. +# CGAL_USE_FILE - CMake file to use CGAL. +# + +# Construct consitent error messages for use below. +set(CGAL_DIR_DESCRIPTION "directory containing CGALConfig.cmake. This is either the binary directory where CGAL was configured or PREFIX/lib/CGAL-3.4 for an installation.") +set(CGAL_DIR_MESSAGE "CGAL not found. Set the CGAL_DIR cmake variable or environment variable to the ${CGAL_DIR_DESCRIPTION}") + +set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) + +if ( NOT CGAL_DIR ) + + # Get the system search path as a list. + if(UNIX) + string(REGEX MATCHALL "[^:]+" CGAL_DIR_SEARCH1 "$ENV{PATH}") + else() + string(REGEX REPLACE "\\\\" "/" CGAL_DIR_SEARCH1 "$ENV{PATH}") + endif() + + string(REGEX REPLACE "/;" ";" CGAL_DIR_SEARCH2 "${CGAL_DIR_SEARCH1}") + + # Construct a set of paths relative to the system search path. + set(CGAL_DIR_SEARCH "") + + foreach(dir ${CGAL_DIR_SEARCH2}) + + set(CGAL_DIR_SEARCH ${CGAL_DIR_SEARCH} ${dir}/../lib/CGAL-3.4 ) + + endforeach() + + + # + # Look for an installation or build tree. + # + find_path(CGAL_DIR CGALConfig.cmake + + # Look for an environment variable CGAL_DIR. + $ENV{CGAL_DIR} + + # Look in places relative to the system executable search path. + ${CGAL_DIR_SEARCH} + + # Look in standard UNIX install locations. + /usr/local/lib/CGAL-3.4 + /usr/lib/CGAL-3.4 + + # Read from the CMakeSetup registry entries. It is likely that + # CGAL will have been recently built. + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild1] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild2] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild3] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild4] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild5] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild6] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild7] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild8] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild9] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild10] + + # Help the user find it if we cannot. + DOC "The ${CGAL_DIR_DESCRIPTION}" + ) + +endif() + +if ( CGAL_DIR ) + + if ( EXISTS "${CGAL_DIR}/CGALConfig.cmake" ) + include( "${CGAL_DIR}/CGALConfig.cmake" ) + set( CGAL_FOUND TRUE ) + endif() + +endif() + +if( NOT CGAL_FOUND) + if(CGAL_FIND_REQUIRED) + MESSAGE(FATAL_ERROR ${CGAL_DIR_MESSAGE}) + else() + if(NOT CGAL_FIND_QUIETLY) + MESSAGE(STATUS ${CGAL_DIR_MESSAGE}) + endif() + endif() +endif()