diff --git a/Cargo.toml b/Cargo.toml index a3bb143..055c07d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "ng-rocksdb" description = "Rust wrapper for Facebook's RocksDB embeddable database, fork for Nextgraph.org" -version = "0.21.0-ngpreview.7" +version = "0.21.0-ngpreview.87" edition = "2018" rust-version = "1.60" authors = ["Tyler Neely ", "David Greenberg ", "Niko PLP "] diff --git a/librocksdb-sys/rocksdb/CMakeLists.txt b/librocksdb-sys/rocksdb/CMakeLists.txt index 4e30f66..60b3674 100644 --- a/librocksdb-sys/rocksdb/CMakeLists.txt +++ b/librocksdb-sys/rocksdb/CMakeLists.txt @@ -44,6 +44,29 @@ project(rocksdb HOMEPAGE_URL https://rocksdb.org/ LANGUAGES CXX C ASM) +if(APPLE) + # On macOS Cmake, when cross-compiling, sometimes CMAKE_SYSTEM_PROCESSOR wrongfully stays + # the same as CMAKE_HOST_SYSTEM_PROCESSOR regardless the target CPU. + # The manual call to set(CMAKE_SYSTEM_PROCESSOR) has to be set after the project() call. + # because project() might reset CMAKE_SYSTEM_PROCESSOR back to the value of CMAKE_HOST_SYSTEM_PROCESSOR. + # Check if CMAKE_SYSTEM_PROCESSOR is not equal to CMAKE_OSX_ARCHITECTURES + if(NOT CMAKE_OSX_ARCHITECTURES STREQUAL "") + if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_OSX_ARCHITECTURES) + # Split CMAKE_OSX_ARCHITECTURES into a list + string(REPLACE ";" " " ARCH_LIST ${CMAKE_OSX_ARCHITECTURES}) + separate_arguments(ARCH_LIST UNIX_COMMAND ${ARCH_LIST}) + # Count the number of architectures + list(LENGTH ARCH_LIST ARCH_COUNT) + # Ensure that exactly one architecture is specified + if(NOT ARCH_COUNT EQUAL 1) + message(FATAL_ERROR "CMAKE_OSX_ARCHITECTURES must have exactly one value. Current value: ${CMAKE_OSX_ARCHITECTURES}") + endif() + set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_OSX_ARCHITECTURES}) + message(STATUS "CMAKE_SYSTEM_PROCESSOR is manually set to ${CMAKE_SYSTEM_PROCESSOR}") + endif() + endif() +endif() + if(POLICY CMP0042) cmake_policy(SET CMP0042 NEW) endif()