aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Clauson <aaron@sipsorcery.com>2017-10-25 23:05:17 +1100
committerAaron Clauson <aaron@sipsorcery.com>2017-10-25 23:05:17 +1100
commit75746d0b1fabeb4f86a3fa69645e8e5933de3d29 (patch)
tree36150732dc02bb886935d22acd09438fa5e29766
parent2b41ebc75957d2e40036f52854af9f5cdd22b3a9 (diff)
downloadvcpkg-75746d0b1fabeb4f86a3fa69645e8e5933de3d29.tar.gz
vcpkg-75746d0b1fabeb4f86a3fa69645e8e5933de3d29.zip
Port for leveldb
-rw-r--r--ports/leveldb/CMakeLists.txt75
-rw-r--r--ports/leveldb/CONTROL3
-rw-r--r--ports/leveldb/msvc_code_fix.diff63
-rw-r--r--ports/leveldb/portfile.cmake35
4 files changed, 176 insertions, 0 deletions
diff --git a/ports/leveldb/CMakeLists.txt b/ports/leveldb/CMakeLists.txt
new file mode 100644
index 000000000..73b082c4a
--- /dev/null
+++ b/ports/leveldb/CMakeLists.txt
@@ -0,0 +1,75 @@
+cmake_minimum_required(VERSION 3.8)
+project(leveldb C CXX)
+
+option(INSTALL_HEADERS "Install header files" ON)
+
+add_definitions(
+ -DWIN32
+ -D_CRT_NONSTDC_NO_DEPRECATE
+ -D_SCL_SECURE_NO_WARNINGS
+ -D_CRT_SECURE_NO_WARNINGS
+ -DNOMINMAX
+ -DLEVELDB_ATOMIC_PRESENT
+ -DLEVELDB_PLATFORM_WINDOWS
+)
+
+add_library(libleveldb
+ db/builder.cc
+ db/c.cc
+ db/dbformat.cc
+ db/db_impl.cc
+ db/db_iter.cc
+ db/dumpfile.cc
+ db/filename.cc
+ db/log_reader.cc
+ db/log_writer.cc
+ db/memtable.cc
+ db/repair.cc
+ db/table_cache.cc
+ db/version_edit.cc
+ db/version_set.cc
+ db/write_batch.cc
+ helpers/memenv/memenv.cc
+ port/port_posix_sse.cc
+ port/port_win.cc
+ table/block.cc
+ table/block_builder.cc
+ table/filter_block.cc
+ table/format.cc
+ table/iterator.cc
+ table/merger.cc
+ table/table.cc
+ table/table_builder.cc
+ table/two_level_iterator.cc
+ util/arena.cc
+ util/bloom.cc
+ util/cache.cc
+ util/coding.cc
+ util/comparator.cc
+ util/crc32c.cc
+ util/env.cc
+ util/env_posix.cc
+ util/env_win.cc
+ util/filter_policy.cc
+ util/hash.cc
+ util/histogram.cc
+ util/logging.cc
+ util/options.cc
+ util/status.cc
+)
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR} include)
+
+target_link_libraries(libleveldb PUBLIC Iphlpapi.lib Shlwapi.lib)
+
+install(TARGETS libleveldb
+ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+)
+
+if(INSTALL_HEADERS)
+ file(GLOB HEADERS include/leveldb/*.h)
+ install(FILES ${HEADERS} DESTINATION include/leveldb)
+ install(FILES helpers/memenv/memenv.h DESTINATION include)
+endif() \ No newline at end of file
diff --git a/ports/leveldb/CONTROL b/ports/leveldb/CONTROL
new file mode 100644
index 000000000..b953e540c
--- /dev/null
+++ b/ports/leveldb/CONTROL
@@ -0,0 +1,3 @@
+Source: leveldb
+Version: 2017-10-25-8b1cd3753b184341e837b30383832645135d3d73
+Description: LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
diff --git a/ports/leveldb/msvc_code_fix.diff b/ports/leveldb/msvc_code_fix.diff
new file mode 100644
index 000000000..6cab006d3
--- /dev/null
+++ b/ports/leveldb/msvc_code_fix.diff
@@ -0,0 +1,63 @@
+ db/c.cc | 2 ++
+ port/port_win.h | 7 +++++++
+ util/env_win.cc | 6 ++++--
+ 3 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/db/c.cc b/db/c.cc
+index 08ff0ad..b23e3dc 100644
+--- a/db/c.cc
++++ b/db/c.cc
+@@ -5,7 +5,9 @@
+ #include "leveldb/c.h"
+
+ #include <stdlib.h>
++#ifndef WIN32
+ #include <unistd.h>
++#endif
+ #include "leveldb/cache.h"
+ #include "leveldb/comparator.h"
+ #include "leveldb/db.h"
+diff --git a/port/port_win.h b/port/port_win.h
+index e8bf46e..989c15c 100644
+--- a/port/port_win.h
++++ b/port/port_win.h
+@@ -32,9 +32,16 @@
+ #define STORAGE_LEVELDB_PORT_PORT_WIN_H_
+
+ #ifdef _MSC_VER
++#if !(_MSC_VER >= 1900)
+ #define snprintf _snprintf
++#endif
+ #define close _close
+ #define fread_unlocked _fread_nolock
++#ifdef _WIN64
++#define ssize_t int64_t
++#else
++#define ssize_t int32_t
++#endif
+ #endif
+
+ #include <string>
+diff --git a/util/env_win.cc b/util/env_win.cc
+index d32c4e6..3b4c92b 100644
+--- a/util/env_win.cc
++++ b/util/env_win.cc
+@@ -761,14 +761,16 @@ uint64_t Win32Env::NowMicros()
+ static Status CreateDirInner( const std::string& dirname )
+ {
+ Status sRet;
+- DWORD attr = ::GetFileAttributes(dirname.c_str());
++ std::wstring dirnameW;
++ ToWidePath(dirname, dirnameW);
++ DWORD attr = ::GetFileAttributesW(dirnameW.c_str());
+ if (attr == INVALID_FILE_ATTRIBUTES) { // doesn't exist:
+ std::size_t slash = dirname.find_last_of("\\");
+ if (slash != std::string::npos){
+ sRet = CreateDirInner(dirname.substr(0, slash));
+ if (!sRet.ok()) return sRet;
+ }
+- BOOL result = ::CreateDirectory(dirname.c_str(), NULL);
++ BOOL result = ::CreateDirectoryW(dirnameW.c_str(), NULL);
+ if (result == FALSE) {
+ sRet = Status::IOError(dirname, "Could not create directory.");
+ return sRet;
diff --git a/ports/leveldb/portfile.cmake b/ports/leveldb/portfile.cmake
new file mode 100644
index 000000000..8a32c8392
--- /dev/null
+++ b/ports/leveldb/portfile.cmake
@@ -0,0 +1,35 @@
+include(vcpkg_common_functions)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+ message(FATAL_ERROR "leveldb doesn't currently support dynamic buildsas there are no export symbols defined.")
+endif()
+
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/leveldb-8b1cd3753b184341e837b30383832645135d3d73)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH "leveldb"
+ BRANCH "bitcoin-fork"
+ REPO "bitcoin-core/leveldb"
+ REF "8b1cd3753b184341e837b30383832645135d3d73"
+ SHA512 f5ad5fd21fb28ee052a4f3873abd58dab508c71621bcd482ab9e6ef4b57eca182c81502ddfe59736f5b2a54f2d05b397dd15982b3bd5d9039cd481eae3c7b958
+)
+
+message(STATUS "Patching")
+
+vcpkg_apply_patches(SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/msvc_code_fix.diff)
+
+message(STATUS "Building")
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA # Disable this option if project cannot be built with Ninja
+ OPTIONS_DEBUG -DINSTALL_HEADERS=OFF
+)
+
+vcpkg_install_cmake()
+
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/leveldb RENAME copyright)