mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-06 07:51:47 +00:00
147 lines
5.4 KiB
CMake
147 lines
5.4 KiB
CMake
#
|
|
# Input variables:
|
|
# - `OPENCOLLADA_INCLUDE_DIR`
|
|
# - `OPENCOLLADA_LIBRARY_DIR`
|
|
# - `PCRE_LIBRARY_DIR`
|
|
# If input variables are not specified, try to find OpenCOLLADA config.
|
|
# Input variables could also be provided as environment variables.
|
|
#
|
|
# Output variables:
|
|
# - `OPENCOLLADA_INCLUDE_DIR`
|
|
# - `OPENCOLLADA_LIBRARY_DIR`
|
|
# - `OPENCOLLADA_LIBRARIES`
|
|
#
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(OPENCOLLADA_INCLUDE_DIR)
|
|
UNIFY_ENVVARS_AND_CACHE(OPENCOLLADA_LIBRARY_DIR)
|
|
UNIFY_ENVVARS_AND_CACHE(PCRE_LIBRARY_DIR)
|
|
|
|
if(NOT OPENCOLLADA_INCLUDE_DIR AND NOT OPENCOLLADA_LIBRARY_DIR)
|
|
# If package is found, automatically sets
|
|
# OPENCOLLADA_INCLUDE_DIRS and OPENCOLLADA_LIBRARIES (list of targets, not paths).
|
|
find_package(OpenCOLLADA CONFIG)
|
|
mark_as_advanced(OpenCOLLADA_DIR)
|
|
if(OpenCOLLADA_DIR)
|
|
message(STATUS "Found OpenCOLLADA: '${OpenCOLLADA_DIR}'.")
|
|
set(OPENCOLLADA_FOUND TRUE)
|
|
else()
|
|
message(STATUS "OpenCOLLADA package not found, falling back to manual search.")
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT OpenCOLLADA_DIR)
|
|
# Find OpenCOLLADA
|
|
if("${OPENCOLLADA_INCLUDE_DIR}" STREQUAL "")
|
|
message(STATUS "No OpenCOLLADA include directory specified")
|
|
set(OPENCOLLADA_INCLUDE_DIR "/usr/include/opencollada" CACHE FILEPATH "OpenCOLLADA header files")
|
|
else()
|
|
set(OPENCOLLADA_INCLUDE_DIR "${OPENCOLLADA_INCLUDE_DIR}" CACHE FILEPATH "OpenCOLLADA header files")
|
|
endif()
|
|
|
|
if("${OPENCOLLADA_LIBRARY_DIR}" STREQUAL "")
|
|
message(STATUS "No OpenCOLLADA library directory specified")
|
|
find_library(
|
|
OPENCOLLADA_FRAMEWORK_LIB
|
|
NAMES OpenCOLLADAFramework
|
|
PATHS /usr/lib64/opencollada /usr/lib/opencollada /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib
|
|
)
|
|
get_filename_component(OPENCOLLADA_LIBRARY_DIR ${OPENCOLLADA_FRAMEWORK_LIB} PATH)
|
|
endif()
|
|
|
|
find_library(
|
|
OpenCOLLADAFramework
|
|
NAMES OpenCOLLADAFramework OpenCOLLADAFrameworkd
|
|
PATHS ${OPENCOLLADA_LIBRARY_DIR}
|
|
NO_DEFAULT_PATH
|
|
)
|
|
|
|
if(OpenCOLLADAFramework)
|
|
message(STATUS "OpenCOLLADA library files found")
|
|
else()
|
|
message(
|
|
FATAL_ERROR
|
|
"COLLADA_SUPPORT enabled, but unable to find OpenCOLLADA libraries. "
|
|
"Disable COLLADA_SUPPORT or fix OpenCOLLADA paths to proceed."
|
|
)
|
|
endif()
|
|
|
|
set(OPENCOLLADA_LIBRARY_DIR "${OPENCOLLADA_LIBRARY_DIR}" CACHE FILEPATH "OpenCOLLADA library files")
|
|
|
|
set(OPENCOLLADA_INCLUDE_DIRS
|
|
"${OPENCOLLADA_INCLUDE_DIR}/COLLADABaseUtils"
|
|
"${OPENCOLLADA_INCLUDE_DIR}/COLLADAStreamWriter"
|
|
)
|
|
|
|
find_file(COLLADASWStreamWriter_h "COLLADASWStreamWriter.h" ${OPENCOLLADA_INCLUDE_DIRS})
|
|
|
|
if(COLLADASWStreamWriter_h)
|
|
message(STATUS "OpenCOLLADA header files found")
|
|
set(OPENCOLLADA_FOUND TRUE)
|
|
|
|
set(OPENCOLLADA_LIBRARY_NAMES
|
|
GeneratedSaxParser
|
|
MathMLSolver
|
|
OpenCOLLADABaseUtils
|
|
OpenCOLLADAFramework
|
|
OpenCOLLADASaxFrameworkLoader
|
|
OpenCOLLADAStreamWriter
|
|
UTF
|
|
buffer
|
|
ftoa
|
|
)
|
|
|
|
# Use the found OpenCOLLADAFramework as a template for all other OpenCOLLADA libraries
|
|
foreach(lib ${OPENCOLLADA_LIBRARY_NAMES})
|
|
# Make sure we'll handle the Windows/MSVC debug postfix convention too.
|
|
string(REPLACE OpenCOLLADAFrameworkd "${lib}" lib_path "${OpenCOLLADAFramework}")
|
|
string(REPLACE OpenCOLLADAFramework "${lib}" lib_path "${lib_path}")
|
|
list(APPEND OPENCOLLADA_LIBRARIES "${lib_path}")
|
|
endforeach()
|
|
|
|
if("${PCRE_LIBRARY_DIR}" STREQUAL "")
|
|
if(WIN32)
|
|
find_library(pcre_library NAMES pcre pcred PATHS ${OPENCOLLADA_LIBRARY_DIR} NO_DEFAULT_PATH)
|
|
else()
|
|
find_library(pcre_library NAMES pcre PATHS ${OPENCOLLADA_LIBRARY_DIR})
|
|
endif()
|
|
|
|
get_filename_component(PCRE_LIBRARY_DIR ${pcre_library} PATH)
|
|
else()
|
|
find_library(pcre_library NAMES pcre pcred PATHS ${PCRE_LIBRARY_DIR} NO_DEFAULT_PATH)
|
|
endif()
|
|
|
|
if(pcre_library)
|
|
set(OPENCOLLADA_LIBRARY_DIR ${OPENCOLLADA_LIBRARY_DIR} ${PCRE_LIBRARY_DIR})
|
|
|
|
if(MSVC)
|
|
# Add release lib regardless whether release or debug found. Debug version will be appended below.
|
|
list(APPEND OPENCOLLADA_LIBRARIES "${PCRE_LIBRARY_DIR}/pcre.lib")
|
|
else()
|
|
list(APPEND OPENCOLLADA_LIBRARIES "${pcre_library}")
|
|
endif()
|
|
else()
|
|
message(
|
|
FATAL_ERROR
|
|
"COLLADA_SUPPORT enabled, but unable to find PCRE. "
|
|
"Disable COLLADA_SUPPORT or fix PCRE_LIBRARY_DIR path to proceed."
|
|
)
|
|
endif()
|
|
|
|
if(MSVC)
|
|
add_debug_variants(OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES}" d)
|
|
endif()
|
|
else()
|
|
message(
|
|
FATAL_ERROR
|
|
"COLLADA_SUPPORT enabled, but unable to find OpenCOLLADA headers. "
|
|
"Disable COLLADA_SUPPORT or fix OpenCOLLADA paths to proceed."
|
|
)
|
|
endif()
|
|
endif(NOT OpenCOLLADA_DIR)
|
|
|
|
if(OPENCOLLADA_FOUND AND NOT TARGET OpenCOLLADA::OpenCOLLADA)
|
|
add_library(OpenCOLLADA::OpenCOLLADA INTERFACE IMPORTED)
|
|
target_include_directories(OpenCOLLADA::OpenCOLLADA INTERFACE ${OPENCOLLADA_INCLUDE_DIRS})
|
|
target_link_libraries(OpenCOLLADA::OpenCOLLADA INTERFACE ${OPENCOLLADA_LIBRARIES})
|
|
endif()
|