From 84ddbd186a6f52b1a26e4ad547ac87c2fa172e16 Mon Sep 17 00:00:00 2001 From: Dmitri Smirnov Date: Fri, 5 Jan 2018 14:52:57 -0800 Subject: [PATCH] Make Windows dep switches compatible with other builds Summary: Make dependacies switches compatible with other OS builds TODO: Make find_package work for Windows. Closes https://github.com/facebook/rocksdb/pull/3322 Differential Revision: D6667637 Pulled By: sagar0 fbshipit-source-id: 5afcd7bbfe69465310a4fbc8e589f01e506b95f5 --- CMakeLists.txt | 30 +++++++++++++++--------- appveyor.yml | 2 +- thirdparty.inc | 63 ++++++++++++++++++-------------------------------- 3 files changed, 42 insertions(+), 53 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index becdc5194..3c0f67f5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ # cd build # 3. Run cmake to generate project files for Windows, add more options to enable required third-party libraries. # See thirdparty.inc for more information. -# sample command: cmake -G "Visual Studio 14 Win64" -DGFLAGS=1 -DSNAPPY=1 -DJEMALLOC=1 -DJNI=1 .. +# sample command: cmake -G "Visual Studio 15 Win64" -DWITH_GFLAGS=1 -DWITH_SNAPPY=1 -DWITH_JEMALLOC=1 -DWITH_JNI=1 .. # 4. Then build the project in debug mode (you may want to add /m[:] flag to run msbuild in parallel threads # or simply /m ot use all avail cores) # msbuild rocksdb.sln @@ -42,7 +42,14 @@ endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/") option(WITH_JEMALLOC "build with JeMalloc" OFF) +option(WITH_SNAPPY "build with SNAPPY" OFF) +option(WITH_LZ4 "build with lz4" OFF) +option(WITH_ZLIB "build with zlib" OFF) if(MSVC) + # Defaults currently different for GFLAGS. + # We will address find_package work a little later + option(WITH_GFLAGS "build with GFlags" OFF) + option(WITH_XPRESS "build with windows built in compression" OFF) include(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty.inc) else() if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") @@ -56,8 +63,18 @@ else() include_directories(${JEMALLOC_INCLUDE_DIR}) endif() endif() + + # No config file for this + option(WITH_GFLAGS "build with GFlags" ON) + if(WITH_GFLAGS) + find_package(gflags) + if(gflags_FOUND) + add_definitions(-DGFLAGS=1) + include_directories(${gflags_INCLUDE_DIR}) + list(APPEND THIRDPARTY_LIBS ${gflags_LIBRARIES}) + endif() + endif() - option(WITH_SNAPPY "build with SNAPPY" OFF) if(WITH_SNAPPY) find_package(snappy REQUIRED) add_definitions(-DSNAPPY) @@ -65,7 +82,6 @@ else() list(APPEND THIRDPARTY_LIBS ${SNAPPY_LIBRARIES}) endif() - option(WITH_ZLIB "build with zlib" OFF) if(WITH_ZLIB) find_package(zlib REQUIRED) add_definitions(-DZLIB) @@ -81,7 +97,6 @@ else() list(APPEND THIRDPARTY_LIBS ${BZIP2_LIBRARIES}) endif() - option(WITH_LZ4 "build with lz4" OFF) if(WITH_LZ4) find_package(lz4 REQUIRED) add_definitions(-DLZ4) @@ -254,13 +269,6 @@ if(WITH_UBSAN) endif() endif() -find_package(gflags) -if(gflags_FOUND) - add_definitions(-DGFLAGS=1) - include_directories(${gflags_INCLUDE_DIR}) - list(APPEND THIRDPARTY_LIBS ${gflags_LIBRARIES}) -endif() - find_package(NUMA) if(NUMA_FOUND) add_definitions(-DNUMA) diff --git a/appveyor.yml b/appveyor.yml index bff8df7c6..65a521370 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,7 +3,7 @@ image: Visual Studio 2015 before_build: - md %APPVEYOR_BUILD_FOLDER%\build - cd %APPVEYOR_BUILD_FOLDER%\build -- cmake -G "Visual Studio 14 2015 Win64" -DOPTDBG=1 -DXPRESS=1 -DPORTABLE=1 .. +- cmake -G "Visual Studio 14 Win64" -DOPTDBG=1 -DWITH_XPRESS=1 -DPORTABLE=1 .. - cd .. build: project: build\rocksdb.sln diff --git a/thirdparty.inc b/thirdparty.inc index a364d1d44..26c50d99f 100644 --- a/thirdparty.inc +++ b/thirdparty.inc @@ -1,14 +1,6 @@ # Edit definitions below to specify paths to include files and libraries of all 3rd party libraries -# -# Edit these lines to set defaults for use of external libraries -# -set(USE_GFLAGS_DEFAULT 0) # GFLAGS is disabled by default, enable with -DGFLAGS=1 cmake command line agrument -set(USE_SNAPPY_DEFAULT 0) # SNAPPY is disabled by default, enable with -DSNAPPY=1 cmake command line agrument -set(USE_LZ4_DEFAULT 0) # LZ4 is disabled by default, enable with -DLZ4=1 cmake command line agrument -set(USE_ZLIB_DEFAULT 0) # ZLIB is disabled by default, enable with -DZLIB=1 cmake command line agrument -set(USE_XPRESS_DEFAULT 0) # XPRESS is disabled by default, enable with -DXPRESS=1 cmake command line agrument - +# TODO: Make this work with find_package and/or get rid of it # # This example assumes all the libraries locate in directories under THIRDPARTY_HOME environment variable # Set environment variable THIRDPARTY_HOME to point to your third party libraries home (Unix style dir separators) @@ -17,7 +9,7 @@ set(USE_XPRESS_DEFAULT 0) # XPRESS is disabled by default, enable with -D set (THIRDPARTY_LIBS "") # Initialization, don't touch # -# Edit these 4 lines to define paths to GFLAGS +# Defaults # set(GFLAGS_HOME $ENV{THIRDPARTY_HOME}/Gflags.Library) set(GFLAGS_INCLUDE ${GFLAGS_HOME}/inc/include) @@ -25,16 +17,12 @@ set(GFLAGS_LIB_DEBUG ${GFLAGS_HOME}/bin/debug/amd64/gflags.lib) set(GFLAGS_LIB_RELEASE ${GFLAGS_HOME}/bin/retail/amd64/gflags.lib) # ================================================== GFLAGS ================================================== -# -# Don't touch these lines -# -if (DEFINED GFLAGS) - set(USE_GFLAGS ${GFLAGS}) -else () - set(USE_GFLAGS ${USE_GFLAGS_DEFAULT}) +# For compatibility +if (GFLAGS) + set(WITH_GFLAGS ON) endif () -if (${USE_GFLAGS} EQUAL 1) +if (WITH_GFLAGS) message(STATUS "GFLAGS library is enabled") if(DEFINED ENV{GFLAGS_INCLUDE}) @@ -68,16 +56,12 @@ 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) -# -# Don't touch these lines -# -if (DEFINED SNAPPY) - set(USE_SNAPPY ${SNAPPY}) -else () - set(USE_SNAPPY ${USE_SNAPPY_DEFAULT}) +# For compatibility +if(SNAPPY) + set(WITH_SNAPPY ON) endif () -if (${USE_SNAPPY} EQUAL 1) +if (WITH_SNAPPY) message(STATUS "SNAPPY library is enabled") if(DEFINED ENV{SNAPPY_INCLUDE}) @@ -115,12 +99,10 @@ set(LZ4_LIB_RELEASE ${LZ4_HOME}/bin/retail/amd64/lz4.lib) # Don't touch these lines # if (DEFINED LZ4) - set(USE_LZ4 ${LZ4}) -else () - set(USE_LZ4 ${USE_LZ4_DEFAULT}) + set(WITH_LZ4 ON) endif () -if (${USE_LZ4} EQUAL 1) +if (WITH_LZ4) message(STATUS "LZ4 library is enabled") if(DEFINED ENV{LZ4_INCLUDE}) @@ -157,13 +139,13 @@ set(ZLIB_LIB_RELEASE ${ZLIB_HOME}/bin/retail/amd64/zlib.lib) # # Don't touch these lines # -if (DEFINED ZLIB) - set(USE_ZLIB ${ZLIB}) -else () - set(USE_ZLIB ${USE_ZLIB_DEFAULT}) + +# For compatibilty +if (ZLIB) + set(WITH_ZLIB ON) endif () -if (${USE_ZLIB} EQUAL 1) +if (WITH_ZLIB) message(STATUS "ZLIB library is enabled") if(DEFINED ENV{ZLIB_INCLUDE}) @@ -188,13 +170,12 @@ else () message(STATUS "ZLIB library is disabled") endif () -if (DEFINED XPRESS) - set(USE_XPRESS ${XPRESS}) -else () - set(USE_XPRESS ${USE_XPRESS_DEFAULT}) +# For compatibilty +if (XPRESS) + set(WITH_XPRESS ON) endif () -if (${USE_XPRESS} EQUAL 1) +if (WITH_XPRESS) message(STATUS "XPRESS is enabled") add_definitions(-DXPRESS) @@ -218,7 +199,7 @@ set(JEMALLOC_LIB_RELEASE ${JEMALLOC_HOME}/bin/retail/amd64/jemalloc.lib) # Don't touch these lines # -# For compatibilty with previous +# For compatibilty if(JEMALLOC) set(WITH_JEMALLOC ON) endif()