mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-06 07:51:47 +00:00
69 lines
2.6 KiB
CMake
69 lines
2.6 KiB
CMake
#
|
|
# Input variables:
|
|
# - `CGAL_INCLUDE_DIR`
|
|
# - `CGAL_LIBRARY_DIR`
|
|
# - `GMP_INCLUDE_DIR`
|
|
# - `GMP_LIBRARY_DIR`
|
|
# - `MPFR_INCLUDE_DIR`
|
|
# - `MPFR_LIBRARY_DIR`
|
|
# If input variables are not specified, try to find HDF5 config.
|
|
# Input variables could also be provided as environment variables.
|
|
#
|
|
# Output targets:
|
|
# - `IFCOPENSHELL_CGAL`
|
|
#
|
|
|
|
if(TARGET IFCOPENSHELL_CGAL)
|
|
return()
|
|
endif()
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(CGAL_INCLUDE_DIR)
|
|
UNIFY_ENVVARS_AND_CACHE(CGAL_LIBRARY_DIR)
|
|
UNIFY_ENVVARS_AND_CACHE(GMP_INCLUDE_DIR)
|
|
UNIFY_ENVVARS_AND_CACHE(GMP_LIBRARY_DIR)
|
|
UNIFY_ENVVARS_AND_CACHE(MPFR_INCLUDE_DIR)
|
|
UNIFY_ENVVARS_AND_CACHE(MPFR_LIBRARY_DIR)
|
|
|
|
if(CGAL_INCLUDE_DIR)
|
|
find_library(libGMP NAMES gmp mpir PATHS ${GMP_LIBRARY_DIR} NO_DEFAULT_PATH)
|
|
find_library(libMPFR NAMES mpfr PATHS ${MPFR_LIBRARY_DIR} NO_DEFAULT_PATH)
|
|
if(NOT libGMP)
|
|
message(FATAL_ERROR "Unable to find GMP library files, aborting")
|
|
endif()
|
|
if(NOT libMPFR)
|
|
message(FATAL_ERROR "Unable to find MPFR library files, aborting")
|
|
endif()
|
|
|
|
add_library(CGAL::CGAL INTERFACE IMPORTED)
|
|
target_include_directories(CGAL::CGAL INTERFACE "${CGAL_INCLUDE_DIR}")
|
|
target_include_directories(CGAL::CGAL INTERFACE "${GMP_INCLUDE_DIR}" "${MPFR_INCLUDE_DIR}")
|
|
target_link_libraries(CGAL::CGAL INTERFACE "${libMPFR}" "${libGMP}")
|
|
else()
|
|
# CGAL is not respecting default Boost_USE_STATIC_LIBS value
|
|
# and sometiems it's getting in the way.
|
|
if(NOT DEFINED Boost_USE_STATIC_LIBS)
|
|
set(CGAL_Boost_USE_STATIC_LIBS OFF)
|
|
else()
|
|
set(CGAL_Boost_USE_STATIC_LIBS "${Boost_USE_STATIC_LIBS}")
|
|
endif()
|
|
# Annoyingly this is producing CMP0167 boost warnings, because it's unsetting cmake policies
|
|
# and using FindBoost module. But there's nothing we can do about it,
|
|
# since everything happens in the scope of CGAL config. I guess it's be resolved in CGAL 6.1.0.
|
|
find_package(CGAL CONFIG)
|
|
if(NOT CGAL_FOUND)
|
|
message(
|
|
FATAL_ERROR
|
|
"CGAL_SUPPORT enabled, but CGAL_INCLUDE_DIR wasn't provided and CGAL package couldn't be found."
|
|
)
|
|
endif()
|
|
message(STATUS "CGAL: found config at '${CGAL_DIR}'.")
|
|
endif()
|
|
|
|
# Adding another `IFCOPENSHELL_CGAL` target, because we want to add compile definitions to it,
|
|
# but in `CGALconfig.cmake` `CGAL::CGAL` is an alias, so you can't add properties to it.
|
|
add_library(IFCOPENSHELL_CGAL INTERFACE)
|
|
target_link_libraries(IFCOPENSHELL_CGAL INTERFACE CGAL::CGAL)
|
|
target_compile_definitions(IFCOPENSHELL_CGAL INTERFACE IFOPSH_WITH_CGAL)
|
|
set(SWIG_DEFINES ${SWIG_DEFINES} -DIFOPSH_WITH_CGAL)
|
|
install(TARGETS IFCOPENSHELL_CGAL EXPORT ${IFCOPENSHELL_EXPORT_TARGETS})
|