mirror of https://github.com/CGAL/cgal
135 lines
4.6 KiB
CMake
135 lines
4.6 KiB
CMake
if( NOT CGAL_MACROS_FILE_INCLUDED )
|
|
set(CGAL_MACROS_FILE_INCLUDED 1 )
|
|
|
|
macro(assert _arg )
|
|
if ( NOT ${_arg} )
|
|
message( FATAL_ERROR "Variable ${_arg} must be defined" )
|
|
endif()
|
|
endmacro()
|
|
|
|
macro( hide_variable var )
|
|
set ( ${var} ${${var}} CACHE INTERNAL "Variable hidden from user" FORCE )
|
|
endmacro()
|
|
|
|
macro( cache_set var )
|
|
if ( "${ARGC}" GREATER "1" )
|
|
set ( ${var} ${ARGN} CACHE INTERNAL "" FORCE )
|
|
endif()
|
|
endmacro()
|
|
|
|
macro( cache_get var )
|
|
set ( ${var} )
|
|
endmacro()
|
|
|
|
macro( add_to_cached_list listname )
|
|
cache_get ( ${listname} )
|
|
cache_set ( ${listname} ${${listname}} ${ARGN} )
|
|
endmacro()
|
|
|
|
macro( at list idx var )
|
|
list( LENGTH ${list} ${list}_length )
|
|
if ( ${idx} LESS ${${list}_length} )
|
|
list( GET ${list} ${idx} ${var} )
|
|
else()
|
|
set( ${var} "NOTFOUND" )
|
|
endif()
|
|
endmacro()
|
|
|
|
macro( found_in_list item_list item result )
|
|
set( ${result} "FALSE" )
|
|
foreach( element ${${item_list}} )
|
|
if ( "${element}" STREQUAL "${item}" )
|
|
set( ${result} "TRUE" )
|
|
endif()
|
|
endforeach()
|
|
endmacro()
|
|
|
|
macro( uniquely_add_flags target_var flags )
|
|
set( target_list "${${target_var}}" )
|
|
separate_arguments( target_list )
|
|
foreach( flag ${flags} )
|
|
found_in_list( target_list ${flag} ${flag}_FOUND )
|
|
if ( NOT ${flag}_FOUND )
|
|
set( ${target_var} "${${target_var}} ${flag}" CACHE STRING "User-defined flags" FORCE )
|
|
endif()
|
|
endforeach()
|
|
endmacro()
|
|
|
|
macro( get_dependency_version LIB )
|
|
|
|
if ( "${ARGC}" GREATER "1" )
|
|
set( PKG ${ARGV1} )
|
|
else()
|
|
set( PKG ${LIB} )
|
|
endif()
|
|
|
|
if ( ${PKG}_FOUND )
|
|
|
|
set ( ${LIB}_VERSION "unknown" )
|
|
|
|
try_run( ${LIB}_RUN_RES
|
|
${LIB}_COMPILE_RES
|
|
${CMAKE_BINARY_DIR}
|
|
${CGAL_SOURCE_DIR}/config/support/print_${LIB}_version.cpp
|
|
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${${PKG}_DEPENDENCY_INCLUDE_DIR};${${PKG}_INCLUDE_DIR}"
|
|
"-DLINK_LIBRARIES:STRING=${${PKG}_DEPENDENCY_LIBRARIES};${${PKG}_LIBRARIES}"
|
|
"-DLINK_DIRECTORIES:STRING=${${PKG}_DEPENDENCY_LIBRARY_DIR};${${PKG}_LIBRARY_DIR}"
|
|
OUTPUT_VARIABLE ${LIB}_OUTPUT
|
|
)
|
|
|
|
if ( ${LIB}_COMPILE_RES )
|
|
|
|
if ( ${LIB}_RUN_RES EQUAL "0" )
|
|
|
|
string( REGEX MATCH "version=.*\$" ${LIB}_VERSION_LINE ${${LIB}_OUTPUT} )
|
|
string( REPLACE "\n" "" ${LIB}_VERSION_LINE2 ${${LIB}_VERSION_LINE} )
|
|
string( REPLACE "\r" "" ${LIB}_VERSION_LINE3 ${${LIB}_VERSION_LINE2} )
|
|
string( REPLACE "version=" "" ${LIB}_VERSION ${${LIB}_VERSION_LINE3} )
|
|
|
|
else()
|
|
|
|
message( STATUS "WARNING: ${LIB} found but print_${LIB}_version.cpp exited with error condition: ${${LIB}_RUN_RES}" )
|
|
message( STATUS "${PKG}_INCLUDE_DIR=${${PKG}_INCLUDE_DIR}" )
|
|
message( STATUS "${PKG}_LIBRARIES=${${PKG}_LIBRARIES}" )
|
|
message( STATUS "${PKG}_LIBRARY_DIR=${${PKG}_LIBRARY_DIR}" )
|
|
message( STATUS "${${LIB}_OUTPUT}" )
|
|
|
|
endif()
|
|
|
|
else()
|
|
|
|
message( STATUS "WARNING: ${LIB} found but could not compile print_${LIB}_version.cpp:")
|
|
message( STATUS "${PKG}_INCLUDE_DIR=${${PKG}_INCLUDE_DIR}" )
|
|
message( STATUS "${PKG}_LIBRARIES=${${PKG}_LIBRARIES}" )
|
|
message( STATUS "${PKG}_LIBRARY_DIR=${${PKG}_LIBRARY_DIR}" )
|
|
message( STATUS "${${LIB}_OUTPUT}" )
|
|
|
|
endif()
|
|
|
|
message( STATUS "USING ${LIB}_VERSION = '${${LIB}_VERSION}'" )
|
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
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)
|
|
|
|
if ( SOURCE_INSTALL )
|
|
configure_file(${CMAKE_SOURCE_DIR}/CGALConfig_install.cmake.source.in ${CMAKE_BINARY_DIR}/cmake/CGALConfig.cmake @ONLY IMMEDIATE)
|
|
else()
|
|
configure_file(${CMAKE_SOURCE_DIR}/CGALConfig_install.cmake.fhs.in ${CMAKE_BINARY_DIR}/cmake/CGALConfig.cmake @ONLY IMMEDIATE)
|
|
endif()
|
|
endmacro()
|
|
|
|
macro ( fetch_env_var VAR )
|
|
if ( "${${VAR}}" STREQUAL "" )
|
|
set( ${VAR}_env_value "$ENV{${VAR}}" )
|
|
if ( NOT "${${VAR}_env_value}" STREQUAL "" )
|
|
set( ${VAR} ${${VAR}_env_value} )
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
|
|
endif() |