aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-07-06 02:16:53 -0700
committerGitHub <noreply@github.com>2017-07-06 02:16:53 -0700
commit7a87e919256fac941a1509b9c67b41c5298f26ac (patch)
tree4a2407dcd7c14edea03a321e28975b1c4c121e7b
parent92a12501f1ae652968ff462a864735df66ba2a26 (diff)
parentb1461da8c6adb5c51a5c12bffd628c7bbf9d68dd (diff)
downloadvcpkg-7a87e919256fac941a1509b9c67b41c5298f26ac.tar.gz
vcpkg-7a87e919256fac941a1509b9c67b41c5298f26ac.zip
Merge pull request #1368 from atkawa7/rocksdb
[rocksdb] init port #1057
-rw-r--r--ports/rocksdb/CONTROL4
-rw-r--r--ports/rocksdb/fix-building-both-static-and-shared.patch91
-rw-r--r--ports/rocksdb/fix-third-party-deps.patch64
-rw-r--r--ports/rocksdb/portfile.cmake51
4 files changed, 210 insertions, 0 deletions
diff --git a/ports/rocksdb/CONTROL b/ports/rocksdb/CONTROL
new file mode 100644
index 000000000..2efbda7c3
--- /dev/null
+++ b/ports/rocksdb/CONTROL
@@ -0,0 +1,4 @@
+Source: rocksdb
+Version: 2017-06-28-18c63af6ef2b9f014c404b88488ae52e6fead03c
+Description: A library that provides an embeddable, persistent key-value store for fast storage
+Build-Depends: snappy, lz4, gflags, zlib, gtest
diff --git a/ports/rocksdb/fix-building-both-static-and-shared.patch b/ports/rocksdb/fix-building-both-static-and-shared.patch
new file mode 100644
index 000000000..c9742450b
--- /dev/null
+++ b/ports/rocksdb/fix-building-both-static-and-shared.patch
@@ -0,0 +1,91 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index cbbde8e..cb19649 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -315,10 +315,13 @@ endif()
+
+ include_directories(${PROJECT_SOURCE_DIR})
+ include_directories(${PROJECT_SOURCE_DIR}/include)
+-include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/third-party/gtest-1.7.0/fused-src)
++
+ find_package(Threads REQUIRED)
+
+-add_subdirectory(third-party/gtest-1.7.0/fused-src/gtest)
++if(BUILD_TEST)
++ include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/third-party/gtest-1.7.0/fused-src)
++ add_subdirectory(third-party/gtest-1.7.0/fused-src/gtest)
++endif()
+
+ # Main library source code
+
+@@ -574,22 +577,28 @@ if(WITH_LIBRADOS)
+ list(APPEND THIRDPARTY_LIBS rados)
+ endif()
+
+-add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES})
+-target_link_libraries(${ROCKSDB_STATIC_LIB}
++if(NOT BUILD_SHARED_LIBS)
++ add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES})
++ target_link_libraries(${ROCKSDB_STATIC_LIB}
+ ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
+-
+-if(WIN32)
+- add_library(${ROCKSDB_IMPORT_LIB} SHARED ${SOURCES})
+- target_link_libraries(${ROCKSDB_IMPORT_LIB}
+- ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
+- set_target_properties(${ROCKSDB_IMPORT_LIB} PROPERTIES
+- COMPILE_DEFINITIONS "ROCKSDB_DLL;ROCKSDB_LIBRARY_EXPORTS")
+ if(MSVC)
+ set_target_properties(${ROCKSDB_STATIC_LIB} PROPERTIES
+- COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${ROCKSDB_STATIC_LIB}.pdb")
++ COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${ROCKSDB_STATIC_LIB}.pdb")
++ endif()
++ set(INSTALL_TARGETS ${INSTALL_TARGETS} ${ROCKSDB_STATIC_LIB})
++else()
++ if(WIN32)
++ add_library(${ROCKSDB_IMPORT_LIB} SHARED ${SOURCES})
++ target_link_libraries(${ROCKSDB_IMPORT_LIB}
++ ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
+ set_target_properties(${ROCKSDB_IMPORT_LIB} PROPERTIES
++ COMPILE_DEFINITIONS "ROCKSDB_DLL;ROCKSDB_LIBRARY_EXPORTS")
++ if(MSVC)
++ set_target_properties(${ROCKSDB_IMPORT_LIB} PROPERTIES
+ COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${ROCKSDB_IMPORT_LIB}.pdb")
++ endif()
+ endif()
++ set(INSTALL_TARGETS ${INSTALL_TARGETS} ${ROCKSDB_IMPORT_LIB})
+ endif()
+
+ option(WITH_JNI "build with JNI" OFF)
+@@ -600,6 +609,7 @@ else()
+ message(STATUS "JNI library is disabled")
+ endif()
+
++if(BUILD_TEST)
+ set(TESTS
+ cache/cache_test.cc
+ cache/lru_cache_test.cc
+@@ -810,6 +820,7 @@ foreach(sourcefile ${C_TEST_EXES})
+ add_dependencies(check ${exename}${ARTIFACT_SUFFIX})
+ endforeach(sourcefile ${C_TEST_EXES})
+ add_subdirectory(tools)
++endif()
+
+ # Installation and packaging for Linux
+ if(NOT WIN32)
+@@ -819,4 +830,15 @@ install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/rocksdb/"
+ COMPONENT devel
+ DESTINATION include/rocksdb)
+ set(CMAKE_INSTALL_PREFIX /usr)
++else()
++ install(
++ TARGETS ${INSTALL_TARGETS}
++ RUNTIME DESTINATION bin
++ LIBRARY DESTINATION lib
++ ARCHIVE DESTINATION lib
++ )
++endif()
++
++if(NOT DISABLE_INSTALL_HEADERS)
++ install(DIRECTORY "include/rocksdb/" DESTINATION include/rocksdb)
+ endif()
diff --git a/ports/rocksdb/fix-third-party-deps.patch b/ports/rocksdb/fix-third-party-deps.patch
new file mode 100644
index 000000000..7f832d158
--- /dev/null
+++ b/ports/rocksdb/fix-third-party-deps.patch
@@ -0,0 +1,64 @@
+diff --git a/thirdparty.inc b/thirdparty.inc
+index 9fffd9b..2e1ea9d 100644
+--- a/thirdparty.inc
++++ b/thirdparty.inc
+@@ -21,10 +21,10 @@ set (THIRDPARTY_LIBS "") # Initialization, don't touch
+ #
+ # Edit these 4 lines to define paths to GFLAGS
+ #
+-set(GFLAGS_HOME $ENV{THIRDPARTY_HOME}/Gflags.Library)
+-set(GFLAGS_INCLUDE ${GFLAGS_HOME}/inc/include)
+-set(GFLAGS_LIB_DEBUG ${GFLAGS_HOME}/bin/debug/amd64/gflags.lib)
+-set(GFLAGS_LIB_RELEASE ${GFLAGS_HOME}/bin/retail/amd64/gflags.lib)
++set(GFLAGS_HOME ${CURRENT_INSTALLED_DIR})
++set(GFLAGS_INCLUDE ${GFLAGS_HOME}/include)
++set(GFLAGS_LIB_DEBUG ${GFLAGS_HOME}/debug/lib/gflags.lib)
++set(GFLAGS_LIB_RELEASE ${GFLAGS_HOME}/lib/gflags.lib)
+
+ # ================================================== GFLAGS ==================================================
+ #
+@@ -65,10 +65,10 @@ endif ()
+ #
+ # Edit these 4 lines to define paths to Snappy
+ #
+-set(SNAPPY_HOME $ENV{THIRDPARTY_HOME}/Snappy.Library)
+-set(SNAPPY_INCLUDE ${SNAPPY_HOME}/inc/inc)
+-set(SNAPPY_LIB_DEBUG ${SNAPPY_HOME}/bin/debug/amd64/snappy.lib)
+-set(SNAPPY_LIB_RELEASE ${SNAPPY_HOME}/bin/retail/amd64/snappy.lib)
++set(SNAPPY_HOME ${CURRENT_INSTALLED_DIR})
++set(SNAPPY_INCLUDE ${SNAPPY_HOME}/include)
++set(SNAPPY_LIB_DEBUG ${SNAPPY_HOME}/debug/lib/snappy.lib)
++set(SNAPPY_LIB_RELEASE ${SNAPPY_HOME}/lib/snappy.lib)
+
+ #
+ # Don't touch these lines
+@@ -108,10 +108,10 @@ endif ()
+ #
+ # Edit these 4 lines to define paths to LZ4
+ #
+-set(LZ4_HOME $ENV{THIRDPARTY_HOME}/LZ4.Library)
+-set(LZ4_INCLUDE ${LZ4_HOME}/inc/include)
+-set(LZ4_LIB_DEBUG ${LZ4_HOME}/bin/debug/amd64/lz4.lib)
+-set(LZ4_LIB_RELEASE ${LZ4_HOME}/bin/retail/amd64/lz4.lib)
++set(LZ4_HOME ${CURRENT_INSTALLED_DIR})
++set(LZ4_INCLUDE ${LZ4_HOME}/include)
++set(LZ4_LIB_DEBUG ${LZ4_HOME}/debug/lib/lz4.lib)
++set(LZ4_LIB_RELEASE ${LZ4_HOME}/lib/lz4.lib)
+
+ #
+ # Don't touch these lines
+@@ -151,10 +151,10 @@ endif ()
+ #
+ # Edit these 4 lines to define paths to ZLIB
+ #
+-set(ZLIB_HOME $ENV{THIRDPARTY_HOME}/ZLIB.Library)
+-set(ZLIB_INCLUDE ${ZLIB_HOME}/inc/include)
+-set(ZLIB_LIB_DEBUG ${ZLIB_HOME}/bin/debug/amd64/zlib.lib)
+-set(ZLIB_LIB_RELEASE ${ZLIB_HOME}/bin/retail/amd64/zlib.lib)
++set(ZLIB_HOME ${CURRENT_INSTALLED_DIR})
++set(ZLIB_INCLUDE ${ZLIB_HOME}/include)
++set(ZLIB_LIB_DEBUG ${ZLIB_HOME}/debug/lib/zlibd.lib)
++set(ZLIB_LIB_RELEASE ${ZLIB_HOME}/lib/zlib.lib)
+
+ #
+ # Don't touch these lines
diff --git a/ports/rocksdb/portfile.cmake b/ports/rocksdb/portfile.cmake
new file mode 100644
index 000000000..a12ba4ca5
--- /dev/null
+++ b/ports/rocksdb/portfile.cmake
@@ -0,0 +1,51 @@
+include(vcpkg_common_functions)
+
+find_program(GIT git)
+
+if(NOT VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ message(FATAL_ERROR "Rocksdb only supports x64")
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO facebook/rocksdb
+ REF 18c63af6ef2b9f014c404b88488ae52e6fead03c
+ SHA512 8dd4d27768feba6d9ddb61debe6cae21fa6d25c27dc347cba3b28cc39d2c1fa860dba7c8adedba4b40883eccccca190b60941cf958855c6b70ec5a3b96c20ac5
+ HEAD_REF master
+)
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES
+ "${CMAKE_CURRENT_LIST_DIR}/fix-building-both-static-and-shared.patch"
+ "${CMAKE_CURRENT_LIST_DIR}/fix-third-party-deps.patch"
+)
+
+
+if(VCPKG_CRT_LINKAGE STREQUAL static)
+ set(WITH_MD_LIBRARY OFF)
+else()
+ set(WITH_MD_LIBRARY ON)
+endif()
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DGIT_EXECUTABLE=${GIT}
+ -DGFLAGS=1
+ -DSNAPPY=1
+ -DLZ4=1
+ -DZLIB=1
+ -DCURRENT_INSTALLED_DIR=${CURRENT_INSTALLED_DIR}
+ -DFAIL_ON_WARNINGS=OFF
+ -DWITH_MD_LIBRARY=${WITH_MD_LIBRARY}
+ OPTIONS_DEBUG
+ -DDISABLE_INSTALL_HEADERS=ON
+)
+
+vcpkg_install_cmake(DISABLE_PARALLEL)
+
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/rocksdb RENAME copyright)
+
+vcpkg_copy_pdbs()