mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-19 22:50:21 +00:00
RocksDB zstd encryption; cache tuning; readonly open mode
This commit is contained in:
+38
-5
@@ -84,6 +84,7 @@ option(USD_SUPPORT "Build IfcConvert with USD support (requires pixar's USD libr
|
||||
option(CITYJSON_SUPPORT "Build IfcConvert with CityJSON support (requires CityJSON library)." OFF)
|
||||
option(WITH_RELATIONSHIP_VALIDATION "Build IfcConvert with option to validate geometrical relationships." OFF)
|
||||
option(WITH_ROCKSDB "Support a RocksDB key-value store as a file backend in IfcOpenShell" OFF)
|
||||
option(WITH_ZSTD "Use Zstd compression in RocksDB writes" OFF)
|
||||
|
||||
option(USERSPACE_PYTHON_PREFIX "Installs IfcPython for the current user only instead of system-wide." OFF)
|
||||
option(ADD_COMMIT_SHA "Add commit sha and branch in version number, warning results in many rebuilds, requires git" OFF)
|
||||
@@ -315,6 +316,8 @@ endif(USD_SUPPORT)
|
||||
if (WITH_ROCKSDB)
|
||||
UNIFY_ENVVARS_AND_CACHE(ROCKSDB_INCLUDE_DIR)
|
||||
UNIFY_ENVVARS_AND_CACHE(ROCKSDB_LIBRARY_DIR)
|
||||
UNIFY_ENVVARS_AND_CACHE(ZSTD_INCLUDE_DIR)
|
||||
UNIFY_ENVVARS_AND_CACHE(ZSTD_LIBRARY_DIR)
|
||||
|
||||
if("${ROCKSDB_INCLUDE_DIR}" STREQUAL "")
|
||||
find_path(ROCKSDB_INCLUDE_DIR rocksdb/db.h
|
||||
@@ -342,9 +345,39 @@ if (WITH_ROCKSDB)
|
||||
message(FATAL_ERROR "Unable to find rocksdb library in: ${ROCKSDB_LIBRARY_DIR}")
|
||||
endif()
|
||||
|
||||
# @todo IFOPSH_ prefix?
|
||||
add_definitions(-DWITH_ROCKSDB)
|
||||
set(SWIG_DEFINES ${SWIG_DEFINES} -DWITH_ROCKSDB)
|
||||
add_definitions(-DIFOPSH_WITH_ROCKSDB)
|
||||
set(SWIG_DEFINES ${SWIG_DEFINES} -DIFOPSH_WITH_ROCKSDB)
|
||||
|
||||
if (WITH_ZSTD)
|
||||
if("${ZSTD_INCLUDE_DIR}" STREQUAL "")
|
||||
find_path(ZSTD_INCLUDE_DIR zstd.h
|
||||
PATHS
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
REQUIRED
|
||||
)
|
||||
if(ZSTD_INCLUDE_DIR)
|
||||
message(STATUS "Found zstd include files in: ${ZSTD_INCLUDE_DIR}")
|
||||
else()
|
||||
message(FATAL_ERROR "Unable to find zstd include directory, specify ZSTD_INCLUDE_DIR manually.")
|
||||
endif()
|
||||
else()
|
||||
set(ZSTD_INCLUDE_DIR ${ZSTD_INCLUDE_DIR} CACHE FILEPATH "zstd header files")
|
||||
message(STATUS "Looking for zstd include files in: ${ZSTD_INCLUDE_DIR}")
|
||||
endif()
|
||||
|
||||
find_library(ZSTD_LIBRARY
|
||||
NAMES zstd zstd_static
|
||||
PATHS ${ZSTD_LIBRARY_DIR})
|
||||
if(ZSTD_LIBRARY)
|
||||
message(STATUS "zstd library ${ZSTD_LIBRARY} found in: ${ZSTD_LIBRARY_DIR}")
|
||||
else()
|
||||
message(FATAL_ERROR "Unable to find rocksdb library in: ${ZSTD_LIBRARY_DIR}")
|
||||
endif()
|
||||
|
||||
add_definitions(-DIFOPSH_WITH_ROCKSDB_ZSTD)
|
||||
set(SWIG_DEFINES ${SWIG_DEFINES} -DIFOPSH_WITH_ROCKSDB_ZSTD)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(RPCRT_LIBRARIES "rpcrt4.lib" "shlwapi.lib")
|
||||
@@ -898,7 +931,7 @@ endif()
|
||||
include_directories(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS}
|
||||
${Boost_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR} ${JSON_INCLUDE_DIR} ${HDF5_INCLUDE_DIR}
|
||||
${EIGEN_DIR} ${CGAL_INCLUDE_DIR} ${GMP_INCLUDE_DIR} ${MPFR_INCLUDE_DIR} ${USD_INCLUDE_DIR}
|
||||
${TBB_INCLUDE_DIR} ${ROCKSDB_INCLUDE_DIR}
|
||||
${TBB_INCLUDE_DIR} ${ROCKSDB_INCLUDE_DIR} ${ZSTD_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
if(NOT SCHEMA_VERSIONS)
|
||||
@@ -1061,7 +1094,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
endif()
|
||||
|
||||
add_library(IfcParse ${IFCPARSE_FILES})
|
||||
target_link_libraries(IfcParse ${ROCKSDB_LIBRARY} ${RPCRT_LIBRARIES} ${STDCPPFS})
|
||||
target_link_libraries(IfcParse ${ROCKSDB_LIBRARY} ${ZSTD_LIBRARY} ${RPCRT_LIBRARIES} ${STDCPPFS})
|
||||
set_target_properties(IfcParse PROPERTIES COMPILE_FLAGS -DIFC_PARSE_EXPORTS VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
|
||||
|
||||
if(WASM_BUILD)
|
||||
|
||||
Reference in New Issue
Block a user