FindIPE defines IPE_VERSION

This commit is contained in:
Laurent Rineau 2016-09-26 15:57:15 +02:00
parent 1aefb3b0f3
commit 67e9da4770
2 changed files with 39 additions and 30 deletions

View File

@ -22,40 +22,31 @@ find_package(CGAL QUIET COMPONENTS Core)
if ( CGAL_FOUND )
include( ${CGAL_USE_FILE} )
find_package(IPE)
find_package(IPE 6)
if ( IPE_FOUND )
include_directories(BEFORE ${IPE_INCLUDE_DIR})
#check IPE version
FILE(READ "${IPE_INCLUDE_DIR}/ipebase.h" IPEBASE_H)
STRING(REGEX MATCH "IPELIB_VERSION[ ]*=[ ]*([67])([0-9][0-9])([0-9][0-9]);" FOUND_IPE_VERSION "${IPEBASE_H}")
if (FOUND_IPE_VERSION)
set(IPE_VERSION ${CMAKE_MATCH_1})
set(IPE_MINOR_VERSION_1 ${CMAKE_MATCH_2})
set(IPE_MINOR_VERSION_2 ${CMAKE_MATCH_3})
if (${IPE_VERSION} EQUAL "7")
set(WITH_IPE_7 ON)
elseif(${IPE_VERSION} EQUAL "6")
set(WITH_IPE_7 OFF)
else()
message("-- Error: ${IPE_VERSION} is not a supported version of IPE (only 6 and 7 are).")
set(IPE_FOUND FALSE)
endif()
# starting ipe 7.2.1, a compiler with c++11 must be used to compile ipelets
if (${IPE_VERSION} EQUAL "7" AND
${IPE_MINOR_VERSION_1} GREATER "1" AND
${IPE_MINOR_VERSION_2} GREATER "0")
message(STATUS "Starting from Ipe 7.2.1 a compiler with c++11 support must be used")
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
endif()
if (${IPE_VERSION} EQUAL "7")
set(WITH_IPE_7 ON)
elseif(${IPE_VERSION} EQUAL "6")
set(WITH_IPE_7 OFF)
else()
message("-- Error: ${IPE_VERSION} is not a supported version of IPE (only 6 and 7 are).")
set(IPE_FOUND FALSE)
endif()
# starting ipe 7.2.1, a compiler with c++11 must be used to compile ipelets
if (${IPE_VERSION} EQUAL "7" AND
${IPE_MINOR_VERSION_1} GREATER "1" AND
${IPE_MINOR_VERSION_2} GREATER "0")
message(STATUS "Starting from Ipe 7.2.1 a compiler with c++11 support must be used")
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
endif()
endif()
endif()

View File

@ -24,11 +24,29 @@ else()
/usr/lib64
)
if(IPE_INCLUDE_DIR)
file(READ "${IPE_INCLUDE_DIR}/ipebase.h" IPEBASE_H)
string(REGEX MATCH "IPELIB_VERSION[ ]*=[ ]*([67])([0-9][0-9])([0-9][0-9]);" FOUND_IPE_VERSION "${IPEBASE_H}")
if (FOUND_IPE_VERSION)
set(IPE_VERSION ${CMAKE_MATCH_1} CACHE INTERNAL "Ipe version major number")
set(IPE_MINOR_VERSION_1 ${CMAKE_MATCH_2} CACHE INTERNAL "Ipe version minor number")
set(IPE_MINOR_VERSION_2 ${CMAKE_MATCH_3} CACHE INTERNAL "Ipe version patch number")
set(IPE_FULL_VERSION "${IPE_VERSION}.${IPE_MINOR_VERSION_1}.${IPE_MINOR_VERSION_2}" CACHE INTERNAL "Ipe version x.y.z")
endif()
endif()
if(IPE_INCLUDE_DIR AND IPE_LIBRARIES)
set(IPE_FOUND TRUE)
endif()
endif()
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(IPE
REQUIRED_VARS IPE_INCLUDE_DIR IPE_LIBRARIES
FOUND_VAR IPE_FOUND
VERSION_VAR IPE_FULL_VERSION)
if(IPE_FOUND)
message(STATUS "Found Ipe: ${IPE_INCLUDE_DIR} ${IPE_LIBRARIES}")
endif()