An error occurred while loading the file. Please try again.
-
Benjamin Morgan authored
Color variables will be empty strings if color isn't available, so message() calls can use them directly and not worry about this.
Benjamin Morgan authoredColor variables will be empty strings if color isn't available, so message() calls can use them directly and not worry about this.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
SetupCoin3D.cmake 5.57 KiB
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
#
# This module is used to set up Coin3D for the project. Either by looking for
# it on the build machine, or by downloading it during the build itself.
#
# Make sure that this file is only included once.
get_property( _coinSetUp GLOBAL PROPERTY GEOMODEL_COIN3D_SET_UP SET )
if( _coinSetUp )
unset( _coinSetUp )
return()
endif()
set_property( GLOBAL PROPERTY GEOMODEL_COIN3D_SET_UP TRUE )
# Configuration option for how XercesC should be used.
option( GEOMODEL_USE_BUILTIN_COIN3D
"Download/build a version of Coin3D during the build" FALSE )
# Now do what was requested.
if( GEOMODEL_USE_BUILTIN_COIN3D )
# Tell the user what's happening.
message( STATUS "${BoldMagenta}'GEOMODEL_USE_BUILTIN_COIN3D' was set to 'true' ==> Building Coin and SoQt as part of the project${ColourReset}" )
# External(s) required for the build.
find_package( Boost REQUIRED )
# The include directory and library that will be produced.
set( COIN3D_INCLUDE_DIR
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Coin3DInstall/${CMAKE_INSTALL_INCLUDEDIR}" )
set( COIN3D_INCLUDE_DIRS "${COIN3D_INCLUDE_DIR}" )
set( COIN3D_LIBRARY
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Coin3DInstall/${CMAKE_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}Coin${CMAKE_SHARED_LIBRARY_SUFFIX}" )
set( COIN3D_LIBRARIES "${COIN3D_LIBRARY}" )
# Create the include directory already, otherwise CMake refuses to
# create the imported target.
file( MAKE_DIRECTORY "${COIN3D_INCLUDE_DIR}" )
# Build/install Coin3D using ExternalProject_Add(...).
include( ExternalProject )
ExternalProject_Add( Coin3DBuiltIn
PREFIX "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Coin3DBuild"
INSTALL_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Coin3DInstall"
URL "https://github.com/coin3d/coin/releases/download/Coin-4.0.0/coin-4.0.0-src.tar.gz"
URL_MD5 "2377d11b38c8eddd92d8bb240f5bf4ee"
CMAKE_CACHE_ARGS
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Coin3DInstall
-DCMAKE_INSTALL_BINDIR:PATH=${CMAKE_INSTALL_BINDIR}
-DCMAKE_INSTALL_LIBDIR:PATH=${CMAKE_INSTALL_LIBDIR}
-DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-DCOIN_BUILD_TESTS:BOOL=FALSE
-DCOIN_BUILD_DOCUMENTATION:BOOL=FALSE
-DCMAKE_CXX_FLAGS:STRING=-Wno-deprecated-declarations
BUILD_BYPRODUCTS "${COIN3D_INCLUDE_DIR}" "${COIN3D_LIBRARY}" )
install( DIRECTORY
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Coin3DInstall/"
DESTINATION .
COMPONENT Runtime
USE_SOURCE_PERMISSIONS )
# Set up Coin3D's imported target.
add_library( Coin::Coin UNKNOWN IMPORTED )
set_target_properties( Coin::Coin PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${COIN3D_INCLUDE_DIR}"
IMPORTED_LOCATION "${COIN3D_LIBRARY}" )
# The include directory and library that will be produced.
set( SoQt_INCLUDE_DIR
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/SoQtInstall/${CMAKE_INSTALL_INCLUDEDIR}" )
set( SoQt_INCLUDE_DIRS "${SoQt_INCLUDE_DIR}" )
set( SoQt_LIBRARY
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/SoQtInstall/${CMAKE_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}SoQt${CMAKE_SHARED_LIBRARY_SUFFIX}" )
set( SoQt_LIBRARIES "${SoQt_LIBRARY}" )
# Create the include directory already, otherwise CMake refuses to
# create the imported target.
file( MAKE_DIRECTORY "${SoQt_INCLUDE_DIR}" )
# Build/install SoQt using ExternalProject_Add(...).
ExternalProject_Add( SoQtBuiltIn
PREFIX "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/SoQtBuild"
INSTALL_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/SoQtInstall"
URL "https://github.com/coin3d/soqt/releases/download/SoQt-1.6.0/soqt-1.6.0-src.tar.gz"
URL_MD5 "724996aedad2a33760dc36f08ceeda22"
CMAKE_CACHE_ARGS
-DCMAKE_PREFIX_PATH:PATH=${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Coin3DInstall
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/SoQtInstall
-DCMAKE_INSTALL_BINDIR:PATH=${CMAKE_INSTALL_BINDIR}
-DCMAKE_INSTALL_LIBDIR:PATH=${CMAKE_INSTALL_LIBDIR}
-DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-DSOQT_BUILD_DOCUMENTATION:BOOL=FALSE
-DCMAKE_CXX_FLAGS:STRING=-Wno-deprecated-declarations
BUILD_BYPRODUCTS "${SoQt_INCLUDE_DIR}" "${SoQt_LIBRARY}"
DEPENDS Coin3DBuiltIn )
install( DIRECTORY
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/SoQtInstall/"
DESTINATION .
COMPONENT Runtime
USE_SOURCE_PERMISSIONS )
# Set up SoQt's imported target.
add_library( SoQt::SoQt UNKNOWN IMPORTED )
set_target_properties( SoQt::SoQt PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${SoQt_INCLUDE_DIR}"
IMPORTED_LOCATION "${SoQt_LIBRARY}" )
else()
# Just find an existing installation of Coin3D.
find_package( Coin REQUIRED )
find_package( SoQt REQUIRED )
if( Coin_FOUND )
# If it was found, tell the user about it.
get_target_property( _incPaths Coin::Coin
INTERFACE_INCLUDE_DIRECTORIES )
list( GET _incPaths 0 _incPath )
message( STATUS "Found Coin: ${_incPath}" )
unset( _incPaths )
unset( _incPath )
endif()
if( SoQt_FOUND )
# If it was found, tell the user about it.
get_target_property( _incPaths SoQt::SoQt
INTERFACE_INCLUDE_DIRECTORIES )
list( GET _incPaths 0 _incPath )
message( STATUS "Found SoQt: ${_incPath}" )
unset( _incPaths )
unset( _incPath )
endif()
endif()