mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-10 22:16:41 +00:00
cmake: Simplify hdf5 linkage
This commit is contained in:
committed by
Thomas Krijnen
parent
169c4392a9
commit
ccf0efffce
@@ -63,7 +63,6 @@ jobs:
|
|||||||
-DMPFR_INCLUDE_DIR=/usr/include \
|
-DMPFR_INCLUDE_DIR=/usr/include \
|
||||||
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
||||||
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
||||||
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
|
|
||||||
-DGLTF_SUPPORT=On \
|
-DGLTF_SUPPORT=On \
|
||||||
-DJSON_INCLUDE_DIR=/usr/include \
|
-DJSON_INCLUDE_DIR=/usr/include \
|
||||||
-DEIGEN_DIR=/usr/include/eigen3 \
|
-DEIGEN_DIR=/usr/include/eigen3 \
|
||||||
|
|||||||
@@ -118,6 +118,13 @@ jobs:
|
|||||||
-DUSE_MMAP=On \
|
-DUSE_MMAP=On \
|
||||||
"-DSCHEMA_VERSIONS=2x3;4;4x3_add2" \
|
"-DSCHEMA_VERSIONS=2x3;4;4x3_add2" \
|
||||||
-DGLTF_SUPPORT=On \
|
-DGLTF_SUPPORT=On \
|
||||||
|
-DJSON_INCLUDE_DIR=/usr/include \
|
||||||
|
-DCGAL_INCLUDE_DIR=/usr/include \
|
||||||
|
-DGMP_INCLUDE_DIR=/usr/include \
|
||||||
|
-DMPFR_INCLUDE_DIR=/usr/include \
|
||||||
|
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
||||||
|
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
||||||
|
-DEIGEN_DIR=/usr/include/eigen3 \
|
||||||
-DWITH_ROCKSDB=On \
|
-DWITH_ROCKSDB=On \
|
||||||
../cmake
|
../cmake
|
||||||
sudo make -j $(nproc)
|
sudo make -j $(nproc)
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ jobs:
|
|||||||
-DMPFR_INCLUDE_DIR=/usr/include \
|
-DMPFR_INCLUDE_DIR=/usr/include \
|
||||||
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
||||||
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
|
||||||
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
|
|
||||||
-DOPENCOLLADA_INCLUDE_DIR=/usr/include/opencollada \
|
-DOPENCOLLADA_INCLUDE_DIR=/usr/include/opencollada \
|
||||||
-DOPENCOLLADA_LIBRARY_DIR=/usr/lib/opencollada/ \
|
-DOPENCOLLADA_LIBRARY_DIR=/usr/lib/opencollada/ \
|
||||||
../cmake
|
../cmake
|
||||||
|
|||||||
+5
-86
@@ -104,6 +104,9 @@ endif()
|
|||||||
|
|
||||||
project(IfcOpenShell VERSION ${RELEASE_VERSION})
|
project(IfcOpenShell VERSION ${RELEASE_VERSION})
|
||||||
|
|
||||||
|
# Make sure CMake modules in this project are found first
|
||||||
|
list(PREPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
|
||||||
|
|
||||||
if(MINIMAL_BUILD)
|
if(MINIMAL_BUILD)
|
||||||
message(STATUS "Setting options for minimal build")
|
message(STATUS "Setting options for minimal build")
|
||||||
set(BUILD_GEOMSERVER OFF)
|
set(BUILD_GEOMSERVER OFF)
|
||||||
@@ -730,91 +733,7 @@ endif()
|
|||||||
|
|
||||||
|
|
||||||
if(HDF5_SUPPORT)
|
if(HDF5_SUPPORT)
|
||||||
if("${HDF5_INCLUDE_DIR}" STREQUAL "")
|
find_package(HDF5 REQUIRED COMPONENTS C CXX)
|
||||||
message(STATUS "No HDF5 include directory specified")
|
|
||||||
else()
|
|
||||||
set(HDF5_INCLUDE_DIR "${HDF5_INCLUDE_DIR}" CACHE FILEPATH "HDF5 header files")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if("${HDF5_LIBRARY_DIR}" STREQUAL "")
|
|
||||||
message(STATUS "No HDF5 library directory specified")
|
|
||||||
else()
|
|
||||||
set(HDF5_LIBRARY_DIR "${HDF5_LIBRARY_DIR}" CACHE FILEPATH "HDF5 library files")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(HDF5_LIBRARY_DIR)
|
|
||||||
# result of the HDF5 ctest package
|
|
||||||
# Find zlib using cmake find_library. How should this be implemented?
|
|
||||||
# FIND_LIBRARY(NAMES z libz libz_debug PATHS ... NO_DEFAULT_PATH)
|
|
||||||
if("$ENV{CONDA_BUILD}" STREQUAL "")
|
|
||||||
# result of the HDF5 ctest package
|
|
||||||
if(WIN32)
|
|
||||||
set(zlib_post lib)
|
|
||||||
set(lib_ext lib)
|
|
||||||
else()
|
|
||||||
set(lib_ext a)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
|
||||||
set(debug_postfix "_debug")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(HDF5_LIBRARIES
|
|
||||||
"${HDF5_LIBRARY_DIR}/libhdf5_cpp${debug_postfix}.${lib_ext}"
|
|
||||||
"${HDF5_LIBRARY_DIR}/libhdf5${debug_postfix}.${lib_ext}"
|
|
||||||
"${HDF5_LIBRARY_DIR}/libz${zlib_post}${debug_postfix}.${lib_ext}"
|
|
||||||
"${HDF5_LIBRARY_DIR}/libsz${debug_postfix}.${lib_ext}"
|
|
||||||
"${HDF5_LIBRARY_DIR}/libaec${debug_postfix}.${lib_ext}"
|
|
||||||
)
|
|
||||||
|
|
||||||
else()
|
|
||||||
message(STATUS "Packaging hdf5 and zlib for conda distribution")
|
|
||||||
|
|
||||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
||||||
# macOS
|
|
||||||
set(zlib_post libz)
|
|
||||||
set(lib_ext dylib)
|
|
||||||
set(HDF5_LIBRARIES
|
|
||||||
"${HDF5_LIBRARY_DIR}/libhdf5_cpp.${lib_ext}"
|
|
||||||
"${HDF5_LIBRARY_DIR}/libhdf5.${lib_ext}"
|
|
||||||
"${HDF5_LIBRARY_DIR}/${zlib_post}.${lib_ext}"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
# linux and windows
|
|
||||||
# Find HDF5 package
|
|
||||||
find_package(HDF5 REQUIRED COMPONENTS C CXX)
|
|
||||||
# Find ZLIB package
|
|
||||||
find_package(ZLIB REQUIRED)
|
|
||||||
# Include directories
|
|
||||||
include_directories(${HDF5_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS})
|
|
||||||
# Link libraries
|
|
||||||
set(HDF5_LIBRARIES ${HDF5_LIBRARIES} ${ZLIB_LIBRARIES})
|
|
||||||
message(STATUS "HDF5 libraries: ${HDF5_LIBRARIES}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT HDF5_INCLUDE_DIR OR NOT HDF5_LIBRARY_DIR)
|
|
||||||
# First try to find it as a config.
|
|
||||||
find_package(HDF5 CONFIG)
|
|
||||||
if(HDF5_DIR)
|
|
||||||
message(STATUS "HDF5: found config at '${HDF5_DIR}'.")
|
|
||||||
set(HDF5_LIBRARIES hdf5_cpp-static)
|
|
||||||
else()
|
|
||||||
# If it failed, still try to find as a module.
|
|
||||||
# E.g. on Ubuntu `libhdf5-dev` doesn't provie hdf5-config.cmake.
|
|
||||||
# Will automatically fill HDF5_LIBRARIES and HDF5_INCLUDE_DIR.
|
|
||||||
find_package(HDF5 COMPONENTS CXX)
|
|
||||||
if(NOT HDF5_INCLUDE_DIR)
|
|
||||||
message(
|
|
||||||
FATAL_ERROR
|
|
||||||
"HDF5_INCLUDE_DIR is not provided (current value: '${HDF5_INCLUDE_DIR}'). "
|
|
||||||
"HDF5_LIBRARY_DIR is not provided (current value: '${HDF5_LIBRARY_DIR}'). "
|
|
||||||
"Also could not find HDF5 package (neither module or config)."
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_definitions(-DWITH_HDF5)
|
add_definitions(-DWITH_HDF5)
|
||||||
set(SWIG_DEFINES ${SWIG_DEFINES} -DWITH_HDF5)
|
set(SWIG_DEFINES ${SWIG_DEFINES} -DWITH_HDF5)
|
||||||
@@ -948,7 +867,7 @@ endif()
|
|||||||
|
|
||||||
|
|
||||||
include_directories(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS}
|
include_directories(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS}
|
||||||
${Boost_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR} ${JSON_INCLUDE_DIR} ${HDF5_INCLUDE_DIR}
|
${Boost_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR} ${JSON_INCLUDE_DIR} ${HDF5_INCLUDE_DIRS}
|
||||||
${EIGEN_DIR} ${CGAL_INCLUDE_DIR} ${GMP_INCLUDE_DIR} ${MPFR_INCLUDE_DIR} ${USD_INCLUDE_DIR}
|
${EIGEN_DIR} ${CGAL_INCLUDE_DIR} ${GMP_INCLUDE_DIR} ${MPFR_INCLUDE_DIR} ${USD_INCLUDE_DIR}
|
||||||
${TBB_INCLUDE_DIR}
|
${TBB_INCLUDE_DIR}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -51,8 +51,6 @@
|
|||||||
"MPFR_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib",
|
"MPFR_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib",
|
||||||
"Boost_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib",
|
"Boost_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib",
|
||||||
"Boost_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include",
|
"Boost_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include",
|
||||||
"HDF5_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include",
|
|
||||||
"HDF5_LIBRARY_DIR": "$env{LIBRARY_PREFIX}/lib",
|
|
||||||
"ZLIB_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include"
|
"ZLIB_INCLUDE_DIR": "$env{LIBRARY_PREFIX}/include"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
# To avoid cyclic calls to this file
|
||||||
|
list(REMOVE_ITEM CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
|
||||||
|
|
||||||
|
if("${HDF5_INCLUDE_DIR}" STREQUAL "")
|
||||||
|
message(STATUS "No HDF5 include directory specified")
|
||||||
|
else()
|
||||||
|
set(HDF5_INCLUDE_DIR "${HDF5_INCLUDE_DIR}" CACHE FILEPATH "HDF5 header files")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${HDF5_LIBRARY_DIR}" STREQUAL "")
|
||||||
|
message(STATUS "No HDF5 library directory specified")
|
||||||
|
else()
|
||||||
|
set(HDF5_LIBRARY_DIR "${HDF5_LIBRARY_DIR}" CACHE FILEPATH "HDF5 library files")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(HDF5_LIBRARY_DIR)
|
||||||
|
# result of the HDF5 ctest package
|
||||||
|
# Find zlib using cmake find_library. How should this be implemented?
|
||||||
|
# FIND_LIBRARY(NAMES z libz libz_debug PATHS ... NO_DEFAULT_PATH)
|
||||||
|
if("$ENV{CONDA_BUILD}" STREQUAL "")
|
||||||
|
# result of the HDF5 ctest package
|
||||||
|
if(WIN32)
|
||||||
|
set(zlib_post lib)
|
||||||
|
set(lib_ext lib)
|
||||||
|
else()
|
||||||
|
set(lib_ext a)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
||||||
|
set(debug_postfix "_debug")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(HDF5_LIBRARIES
|
||||||
|
"${HDF5_LIBRARY_DIR}/libhdf5_cpp${debug_postfix}.${lib_ext}"
|
||||||
|
"${HDF5_LIBRARY_DIR}/libhdf5${debug_postfix}.${lib_ext}"
|
||||||
|
"${HDF5_LIBRARY_DIR}/libz${zlib_post}${debug_postfix}.${lib_ext}"
|
||||||
|
"${HDF5_LIBRARY_DIR}/libsz${debug_postfix}.${lib_ext}"
|
||||||
|
"${HDF5_LIBRARY_DIR}/libaec${debug_postfix}.${lib_ext}"
|
||||||
|
)
|
||||||
|
|
||||||
|
else()
|
||||||
|
message(STATUS "Packaging hdf5 and zlib for conda distribution")
|
||||||
|
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
|
# macOS
|
||||||
|
set(zlib_post libz)
|
||||||
|
set(lib_ext dylib)
|
||||||
|
set(HDF5_LIBRARIES
|
||||||
|
"${HDF5_LIBRARY_DIR}/libhdf5_cpp.${lib_ext}"
|
||||||
|
"${HDF5_LIBRARY_DIR}/libhdf5.${lib_ext}"
|
||||||
|
"${HDF5_LIBRARY_DIR}/${zlib_post}.${lib_ext}"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
# linux and windows
|
||||||
|
# Find HDF5 package
|
||||||
|
find_package(HDF5 REQUIRED COMPONENTS C CXX)
|
||||||
|
# Find ZLIB package
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
|
# Include directories
|
||||||
|
include_directories(${HDF5_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS})
|
||||||
|
# Link libraries
|
||||||
|
set(HDF5_LIBRARIES ${HDF5_LIBRARIES} ${ZLIB_LIBRARIES})
|
||||||
|
message(STATUS "HDF5 libraries: ${HDF5_LIBRARIES}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT HDF5_INCLUDE_DIR OR NOT HDF5_LIBRARY_DIR)
|
||||||
|
# First try to find it as a config.
|
||||||
|
find_package(HDF5 CONFIG)
|
||||||
|
if(HDF5_DIR)
|
||||||
|
message(STATUS "HDF5: found config at '${HDF5_DIR}'.")
|
||||||
|
set(HDF5_LIBRARIES hdf5_cpp-static)
|
||||||
|
else()
|
||||||
|
# If it failed, still try to find as a module.
|
||||||
|
# E.g. on Ubuntu `libhdf5-dev` doesn't provie hdf5-config.cmake.
|
||||||
|
# Will automatically fill HDF5_LIBRARIES and HDF5_INCLUDE_DIR.
|
||||||
|
find_package(HDF5 COMPONENTS CXX)
|
||||||
|
if(NOT HDF5_INCLUDE_DIR)
|
||||||
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"HDF5_INCLUDE_DIR is not provided (current value: '${HDF5_INCLUDE_DIR}'). "
|
||||||
|
"HDF5_LIBRARY_DIR is not provided (current value: '${HDF5_LIBRARY_DIR}'). "
|
||||||
|
"Also could not find HDF5 package (neither module or config)."
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
@@ -24,8 +24,6 @@ cmake -G "Ninja" ^
|
|||||||
-D MPFR_LIBRARY_DIR:FILEPATH="%LIBRARY_PREFIX%\lib" ^
|
-D MPFR_LIBRARY_DIR:FILEPATH="%LIBRARY_PREFIX%\lib" ^
|
||||||
-D COLLADA_SUPPORT=OFF ^
|
-D COLLADA_SUPPORT=OFF ^
|
||||||
-D HDF5_SUPPORT=ON ^
|
-D HDF5_SUPPORT=ON ^
|
||||||
-D HDF5_INCLUDE_DIR="%LIBRARY_PREFIX%\include" ^
|
|
||||||
-D HDF5_LIBRARY_DIR="%LIBRARY_PREFIX%\lib" ^
|
|
||||||
-D JSON_INCLUDE_DIR="%LIBRARY_PREFIX%\include" ^
|
-D JSON_INCLUDE_DIR="%LIBRARY_PREFIX%\include" ^
|
||||||
-D PYTHON_INCLUDE_DIR=%PREFIX%\include ^
|
-D PYTHON_INCLUDE_DIR=%PREFIX%\include ^
|
||||||
-D PYTHON_EXECUTABLE:FILEPATH=%PREFIX%\python.exe ^
|
-D PYTHON_EXECUTABLE:FILEPATH=%PREFIX%\python.exe ^
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ cmake ${CMAKE_ARGS} -G Ninja \
|
|||||||
-DOCC_INCLUDE_DIR=$PREFIX/include/opencascade \
|
-DOCC_INCLUDE_DIR=$PREFIX/include/opencascade \
|
||||||
-DOCC_LIBRARY_DIR=$PREFIX/lib \
|
-DOCC_LIBRARY_DIR=$PREFIX/lib \
|
||||||
-DHDF5_SUPPORT:BOOL=ON \
|
-DHDF5_SUPPORT:BOOL=ON \
|
||||||
-DHDF5_INCLUDE_DIR=$PREFIX/include \
|
|
||||||
-DHDF5_LIBRARY_DIR=$PREFIX/lib \
|
|
||||||
-DJSON_INCLUDE_DIR=$PREFIX/include \
|
-DJSON_INCLUDE_DIR=$PREFIX/include \
|
||||||
-DCGAL_INCLUDE_DIR=$PREFIX/include \
|
-DCGAL_INCLUDE_DIR=$PREFIX/include \
|
||||||
-DLIBXML2_INCLUDE_DIR=$PREFIX/include/libxml2 \
|
-DLIBXML2_INCLUDE_DIR=$PREFIX/include/libxml2 \
|
||||||
|
|||||||
Reference in New Issue
Block a user