diff --git a/.travis.yml b/.travis.yml index b1a69945f..b09a14541 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ cache: addons: apt: sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6'] - packages: ['clang-3.6' , 'g++-6', 'zlib1g-dev', 'libbz2-dev', 'libsnappy-dev', 'curl', 'libgflags-dev'] + packages: ['clang-3.6' , 'g++-6', 'zlib1g-dev', 'libbz2-dev', 'libsnappy-dev', 'curl', 'libgflags-dev', 'mingw-w64'] env: - TEST_GROUP=platform_dependent1 - TEST_GROUP=platform_dependent2 @@ -30,6 +30,7 @@ env: # Build examples - JOB_NAME=examples - JOB_NAME=cmake + - JOB_NAME=cmake-mingw matrix: exclude: @@ -39,6 +40,11 @@ matrix: env: TEST_GROUP=1 - os: osx env: TEST_GROUP=2 + - os : osx + env: JOB_NAME=cmake-mingw + - os: linux + env: JOB_NAME=cmake-mingw + compiler: clang before_script: - if [[ "${TRAVIS_OS_NAME}" == 'linux' && "${CXX}" == 'clang++' ]]; then CXX=clang++-3.6; fi @@ -58,6 +64,7 @@ script: - if [[ "${JOB_NAME}" == 'lite_build' ]]; then OPT="-DTRAVIS -DROCKSDB_LITE" V=1 make -j4 static_lib; fi - if [[ "${JOB_NAME}" == 'examples' ]]; then OPT=-DTRAVIS V=1 make -j4 static_lib; cd examples; make -j4; fi - if [[ "${JOB_NAME}" == 'cmake' ]]; then mkdir build && cd build && cmake .. && make -j4 rocksdb; fi + - if [[ "${JOB_NAME}" == 'cmake-mingw' ]]; then mkdir build && cd build && cmake .. -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_SYSTEM_NAME=Windows && make -j4 rocksdb; fi notifications: email: - leveldb@fb.com diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b1719de5..c2cbd19ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -506,16 +506,14 @@ else() env/io_posix.cc) endif() +set(ROCKSDB_STATIC_LIB rocksdb${ARTIFACT_SUFFIX}) +set(ROCKSDB_SHARED_LIB rocksdb-shared${ARTIFACT_SUFFIX}) +set(ROCKSDB_IMPORT_LIB ${ROCKSDB_SHARED_LIB}) if(WIN32) set(SYSTEM_LIBS ${SYSTEM_LIBS} Shlwapi.lib Rpcrt4.lib) - set(ROCKSDB_STATIC_LIB rocksdblib${ARTIFACT_SUFFIX}) - set(ROCKSDB_IMPORT_LIB rocksdb${ARTIFACT_SUFFIX}) set(LIBS ${ROCKSDB_STATIC_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) else() set(SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT} rt) - set(ROCKSDB_STATIC_LIB rocksdb${ARTIFACT_SUFFIX}) - set(ROCKSDB_SHARED_LIB rocksdb-shared) - set(ROCKSDB_IMPORT_LIB ${ROCKSDB_SHARED_LIB}) set(LIBS ${ROCKSDB_SHARED_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) add_library(${ROCKSDB_SHARED_LIB} SHARED ${SOURCES}) diff --git a/db/c_test.c b/db/c_test.c index 2ecf18d6c..9677f8509 100644 --- a/db/c_test.c +++ b/db/c_test.c @@ -20,7 +20,7 @@ // Can not use port/port.h macros as this is a c file #ifdef OS_WIN -#include +#include #define snprintf _snprintf diff --git a/port/win/env_win.cc b/port/win/env_win.cc index b6d30c967..8a15d04c3 100644 --- a/port/win/env_win.cc +++ b/port/win/env_win.cc @@ -35,8 +35,8 @@ #include "monitoring/thread_status_updater.h" #include "monitoring/thread_status_util.h" -#include // For UUID generation -#include +#include // for uuid generation +#include namespace rocksdb { diff --git a/port/win/env_win.h b/port/win/env_win.h index e0e283af4..75164c231 100644 --- a/port/win/env_win.h +++ b/port/win/env_win.h @@ -21,7 +21,7 @@ #include "util/threadpool_imp.h" #include -#include +#include #include #include diff --git a/port/win/io_win.h b/port/win/io_win.h index ac8edee6e..2b6a5fdff 100644 --- a/port/win/io_win.h +++ b/port/win/io_win.h @@ -14,11 +14,11 @@ #include #include -#include "rocksdb/Status.h" +#include "rocksdb/status.h" #include "rocksdb/env.h" #include "util/aligned_buffer.h" -#include +#include namespace rocksdb { @@ -77,8 +77,8 @@ class WinFileData { public: // We want this class be usable both for inheritance (prive // or protected) and for containment so __ctor and __dtor public - WinFileData(const std::string& filename, HANDLE hFile, bool use_direct_io) - : filename_(filename), hFile_(hFile), use_direct_io_(use_direct_io) {} + WinFileData(const std::string& filename, HANDLE hFile, bool direct_io) + : filename_(filename), hFile_(hFile), use_direct_io_(direct_io) {} virtual ~WinFileData() { this->CloseFile(); } diff --git a/port/win/win_logger.h b/port/win/win_logger.h index be55f6fde..fddf1d1bf 100644 --- a/port/win/win_logger.h +++ b/port/win/win_logger.h @@ -19,7 +19,7 @@ #include "rocksdb/env.h" #include -#include +#include namespace rocksdb { diff --git a/port/win/win_thread.cc b/port/win/win_thread.cc index 630d1d843..9c71d376a 100644 --- a/port/win/win_thread.cc +++ b/port/win/win_thread.cc @@ -13,7 +13,7 @@ #include #include // __beginthreadex -#include +#include #include #include diff --git a/port/win/xpress_win.cc b/port/win/xpress_win.cc index d79bd32d9..344a42cda 100644 --- a/port/win/xpress_win.cc +++ b/port/win/xpress_win.cc @@ -10,7 +10,7 @@ // found in the LICENSE file. See the AUTHORS file for names of contributors. #include "port/win/xpress_win.h" -#include +#include #include #include diff --git a/util/log_buffer.cc b/util/log_buffer.cc index 630547f06..bb9bb2d16 100644 --- a/util/log_buffer.cc +++ b/util/log_buffer.cc @@ -62,11 +62,12 @@ void LogBuffer::FlushBufferToLog() { for (BufferedLog* log : logs_) { const time_t seconds = log->now_tv.tv_sec; struct tm t; - localtime_r(&seconds, &t); - Log(log_level_, info_log_, - "(Original Log Time %04d/%02d/%02d-%02d:%02d:%02d.%06d) %s", - t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, - t.tm_sec, static_cast(log->now_tv.tv_usec), log->message); + if (localtime_r(&seconds, &t) != nullptr) { + Log(log_level_, info_log_, + "(Original Log Time %04d/%02d/%02d-%02d:%02d:%02d.%06d) %s", + t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, + t.tm_sec, static_cast(log->now_tv.tv_usec), log->message); + } } logs_.clear(); }