From dbdc91db6cc377bdd90a47731cb5d5c9d5adc771 Mon Sep 17 00:00:00 2001 From: Lucian Petrut Date: Wed, 5 Feb 2020 15:01:04 +0000 Subject: [PATCH] cmake: [win32] Fix rocksdb cross compiling In order to be able to cross compile rocksdb using mingw, we'll have to do the following: * pass on specified toolchain files * pass the CMAKE_PREFIX_PATH. We'll have to replace the ";" separator with something else (we went with "!"), otherwise CMake won't be able to properly handle the command arguments * pass on the received LZ4 lib location since it cannot be properly detected when cross compiling. Signed-off-by: Lucian Petrut --- cmake/modules/BuildRocksDB.cmake | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/cmake/modules/BuildRocksDB.cmake b/cmake/modules/BuildRocksDB.cmake index f1b68c05422f..de9748878b7c 100644 --- a/cmake/modules/BuildRocksDB.cmake +++ b/cmake/modules/BuildRocksDB.cmake @@ -2,6 +2,15 @@ function(build_rocksdb) set(rocksdb_CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON) list(APPEND rocksdb_CMAKE_ARGS -DWITH_GFLAGS=OFF) + # cmake doesn't properly handle arguments containing ";", such as + # CMAKE_PREFIX_PATH, for which reason we'll have to use some other separator. + string(REPLACE ";" "!" CMAKE_PREFIX_PATH_ALT_SEP "${CMAKE_PREFIX_PATH}") + list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}) + if(CMAKE_TOOLCHAIN_FILE) + list(APPEND rocksdb_CMAKE_ARGS + -DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE) + endif() + if(ALLOCATOR STREQUAL "jemalloc") list(APPEND rocksdb_CMAKE_ARGS -DWITH_JEMALLOC=ON) list(APPEND rocksdb_INTERFACE_LINK_LIBRARIES JeMalloc::JeMalloc) @@ -25,6 +34,9 @@ function(build_rocksdb) list(APPEND rocksdb_CMAKE_ARGS -DWITH_LZ4=${LZ4_FOUND}) if(LZ4_FOUND) list(APPEND rocksdb_INTERFACE_LINK_LIBRARIES LZ4::LZ4) + # When cross compiling, cmake may fail to locate lz4. + list(APPEND rocksdb_CMAKE_ARGS -DLZ4_INCLUDE_DIR=${LZ4_INCLUDE_DIR}) + list(APPEND rocksdb_CMAKE_ARGS -DLZ4_LIBRARIES=${LZ4_LIBRARY}) endif() list(APPEND rocksdb_CMAKE_ARGS -DWITH_ZLIB=${ZLIB_FOUND}) @@ -74,7 +86,8 @@ function(build_rocksdb) BUILD_COMMAND "${make_cmd}" BUILD_ALWAYS TRUE BUILD_BYPRODUCTS "${rocksdb_LIBRARY}" - INSTALL_COMMAND "true") + INSTALL_COMMAND "true" + LIST_SEPARATOR !) add_library(RocksDB::RocksDB STATIC IMPORTED) add_dependencies(RocksDB::RocksDB rocksdb_ext) -- 2.47.3