set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${AWS_ROOT_DIR})

set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${AWS_ROOT_DIR})
find_package(AWSSDK REQUIRED COMPONENTS s3 kinesis) 

message(STATUS "AWS libraries: ${AWSSDK_LINK_LIBRARIES}")

set(ROCKSDB_ROOT_DIR "${PROJECT_SOURCE_DIR}/../deps/rocksdb")


set(rocksdb_CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON)

if (WITH_CCACHE AND CCACHE_FOUND)
    list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_CXX_COMPILER=ccache)
    list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_CXX_COMPILER_ARG1=${CMAKE_CXX_COMPILER})
  else()
    list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
  endif()

list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_AR=${CMAKE_AR})
list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
list(APPEND rocksdb_CMAKE_ARGS -DFAIL_ON_WARNINGS=OFF)
list(APPEND rocksdb_CMAKE_ARGS -DPORTABLE=ON)
list(APPEND rocksdb_CMAKE_ARGS -DUSE_RTTI=1)

list(APPEND rocksdb_CMAKE_ARGS -DWITH_TOOLS=OFF)
list(APPEND rocksdb_CMAKE_ARGS -DWITH_TESTS=OFF)


list(APPEND rocksdb_CMAKE_ARGS -DWITH_GFLAGS=OFF)
list(APPEND rocksdb_CMAKE_ARGS -DWITH_JEMALLOC=OFF)
list(APPEND rocksdb_CMAKE_ARGS -DWITH_TBB=${TBB_FOUND})

list(APPEND rocksdb_CMAKE_ARGS -DWITH_SNAPPY=${SNAPPY_FOUND})
list(APPEND rocksdb_CMAKE_ARGS -DWITH_LZ4=${LZ4_FOUND})
list(APPEND rocksdb_CMAKE_ARGS -DWITH_ZLIB=${ZLIB_FOUND})
list(APPEND rocksdb_CMAKE_ARGS -DWITH_BZ2=${BZIP2_FOUND})
list(APPEND rocksdb_CMAKE_ARGS -DWITH_ZSTD=${ZSTD_FOUND})

if(WITH_BUNDLE_SNAPPY)
    list(APPEND rocksdb_CMAKE_ARGS -DSNAPPY_ROOT_DIR=${SNAPPY_ROOT_DIR})
endif()

if(WITH_BUNDLE_LZ4)
    list(APPEND rocksdb_CMAKE_ARGS -DLZ4_ROOT_DIR=${LZ4_ROOT_DIR})
endif()

list(APPEND rocksdb_CMAKE_ARGS -DWITH_AWS=ON)
#list(APPEND rocksdb_CMAKE_ARGS -Daws-sdk-cpp_DIR=${AWS_ROOT_DIR})


message(STATUS "cmake args ${rocksdb_CMAKE_ARGS}")

include(ExternalProject)

ExternalProject_Add(rocksdb
    SOURCE_DIR "${ROCKSDB_ROOT_DIR}"
    DOWNLOAD_COMMAND ""
    CMAKE_ARGS ${rocksdb_CMAKE_ARGS}
    BUILD_COMMAND $(MAKE) rocksdb
    INSTALL_COMMAND ""
    )


ExternalProject_Get_Property(rocksdb BINARY_DIR)

add_dependencies(${ErlangRocksDBNIF_TARGET} rocksdb)

if(WITH_BUNDLE_SNAPPY)
    ExternalProject_Add_StepDependencies(rocksdb build snappy)
endif()

if(WITH_BUNDLE_LZ4)
    ExternalProject_Add_StepDependencies(rocksdb build lz4)
endif()


set(ROCKSDB_LIBRARIES
    ${BINARY_DIR}/librocksdb${CMAKE_STATIC_LIBRARY_SUFFIX})

set(ROCKSDB_FOUND TRUE)

set(ROCKSDB_INCLUDE_DIRS
    ${ROCKSDB_ROOT_DIR}/include)
message(STATUS "Found RocksDB library: ${ROCKSDB_LIBRARIES}")
message(STATUS "Found RocksDB includes: ${ROCKSDB_INCLUDE_DIRS}")

mark_as_advanced(
    ROCKSDB_ROOT_DIR
    ROCKSDB_LIBRARIES
    ROCKSDB_INCLUDE_DIRS,
    AWSSDK_LINK_LIBRARIES
)
