CMake wiring, minor cleanup, minor test addition

Make Cmake things aware of BerkeleyDB and BlockchainBDB

Make the BlockchainDB unit tests aware of BlockchainBDB
This commit is contained in:
Thomas Winget 2015-03-16 03:12:54 -04:00
parent 1bc89398b4
commit cade0da8f1
No known key found for this signature in database
GPG Key ID: 58131A160789E630
6 changed files with 37 additions and 2 deletions

View File

@ -162,6 +162,9 @@ include_directories(external/rapidjson)
# Final setup for liblmdb # Final setup for liblmdb
include_directories(${LMDB_INCLUDE}) include_directories(${LMDB_INCLUDE})
# Final setup for Berkeley DB
include_directories(${BDB_INCLUDE})
if(MSVC) if(MSVC)
add_definitions("/bigobj /MP /W3 /GS- /D_CRT_SECURE_NO_WARNINGS /wd4996 /wd4345 /D_WIN32_WINNT=0x0600 /DWIN32_LEAN_AND_MEAN /DGTEST_HAS_TR1_TUPLE=0 /FIinline_c.h /D__SSE4_1__") add_definitions("/bigobj /MP /W3 /GS- /D_CRT_SECURE_NO_WARNINGS /wd4996 /wd4345 /D_WIN32_WINNT=0x0600 /DWIN32_LEAN_AND_MEAN /DGTEST_HAS_TR1_TUPLE=0 /FIinline_c.h /D__SSE4_1__")
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Dinline=__inline") # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Dinline=__inline")

View File

@ -103,3 +103,8 @@ set(LMDB_STATIC ${LMDB_STATIC} PARENT_SCOPE)
set(LMDB_INCLUDE ${LMDB_INCLUDE} PARENT_SCOPE) set(LMDB_INCLUDE ${LMDB_INCLUDE} PARENT_SCOPE)
set(LMDB_LIBRARY ${LMDB_LIBRARY} PARENT_SCOPE) set(LMDB_LIBRARY ${LMDB_LIBRARY} PARENT_SCOPE)
set(LMDB_LIBRARY_DIRS ${LMDB_LIBRARY_DIRS} PARENT_SCOPE) set(LMDB_LIBRARY_DIRS ${LMDB_LIBRARY_DIRS} PARENT_SCOPE)
set(BDB_STATIC ${BDB_STATIC} PARENT_SCOPE)
set(BDB_INCLUDE ${BDB_INCLUDE} PARENT_SCOPE)
set(BDB_LIBRARY ${BDB_LIBRARY} PARENT_SCOPE)
set(BDB_LIBRARY_DIRS ${BDB_LIBRARY_DIRS} PARENT_SCOPE)

View File

@ -44,6 +44,28 @@ else()
set(LMDB_LIBRARY ${LMDB_LIBRARIES} PARENT_SCOPE) set(LMDB_LIBRARY ${LMDB_LIBRARIES} PARENT_SCOPE)
set(LMDB_LIBRARY_DIRS "" PARENT_SCOPE) set(LMDB_LIBRARY_DIRS "" PARENT_SCOPE)
else() else()
die("Found liblmdb includes, but could not find liblmdb library. Please make sure you have installed liblmdb or liblmdb-dev or the equivalent") die("Found liblmdb includes, but could not find liblmdb library. Please make sure you have installed liblmdb and liblmdb-dev or the equivalent")
endif()
endif()
find_package(BerkeleyDB)
if(NOT DB_LIBRARIES OR STATIC)
add_subdirectory(libdb)
message(STATUS "BerkeleyDB not found, building from src tree")
set(BDB_STATIC true PARENT_SCOPE)
set(BDB_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/libdb" PARENT_SCOPE)
set(BDB_LIBRARY "db" PARENT_SCOPE)
else()
message(STATUS "Found BerkeleyDB include (db.h) in ${DB_INCLUDE_DIR}")
if(DB_LIBRARIES)
message(STATUS "Found BerkeleyDB shared library")
set(BDB_STATIC false PARENT_SCOPE)
set(BDB_INCLUDE ${DB_INCLUDE_DIR} PARENT_SCOPE)
set(BDB_LIBRARY ${DB_LIBRARIES} PARENT_SCOPE)
set(BDB_LIBRARY_DIRS "" PARENT_SCOPE)
else()
die("Found BerkeleyDB includes, but could not find BerkeleyDB library. Please make sure you have installed libdb and libdb-dev or the equivalent")
endif() endif()
endif() endif()

View File

@ -29,6 +29,7 @@
set(blockchain_db_sources set(blockchain_db_sources
blockchain_db.cpp blockchain_db.cpp
lmdb/db_lmdb.cpp lmdb/db_lmdb.cpp
berkeleydb/db_bdb.cpp
) )
set(blockchain_db_headers) set(blockchain_db_headers)
@ -36,6 +37,7 @@ set(blockchain_db_headers)
set(blockchain_db_private_headers set(blockchain_db_private_headers
blockchain_db.h blockchain_db.h
lmdb/db_lmdb.h lmdb/db_lmdb.h
berkeleydb/db_bdb.h
) )
bitmonero_private_headers(blockchain_db bitmonero_private_headers(blockchain_db
@ -57,4 +59,5 @@ target_link_libraries(blockchain_db
${Boost_SYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY} ${Boost_THREAD_LIBRARY}
${LMDB_LIBRARY} ${LMDB_LIBRARY}
${BDB_LIBRARY}
${EXTRA_LIBRARIES}) ${EXTRA_LIBRARIES})

View File

@ -35,6 +35,7 @@
#include "blockchain_db/blockchain_db.h" #include "blockchain_db/blockchain_db.h"
#include "blockchain_db/lmdb/db_lmdb.h" #include "blockchain_db/lmdb/db_lmdb.h"
#include "blockchain_db/berkeleydb/db_bdb.h"
#include "cryptonote_core/cryptonote_format_utils.h" #include "cryptonote_core/cryptonote_format_utils.h"
using namespace cryptonote; using namespace cryptonote;
@ -209,7 +210,7 @@ protected:
using testing::Types; using testing::Types;
typedef Types<BlockchainLMDB> implementations; typedef Types<BlockchainLMDB, BlockchainBDB> implementations;
TYPED_TEST_CASE(BlockchainDBTest, implementations); TYPED_TEST_CASE(BlockchainDBTest, implementations);

View File

@ -57,6 +57,7 @@ add_executable(unit_tests
target_link_libraries(unit_tests target_link_libraries(unit_tests
LINK_PRIVATE LINK_PRIVATE
cryptonote_core cryptonote_core
blockchain_db
rpc rpc
wallet wallet
${GTEST_MAIN_LIBRARIES} ${GTEST_MAIN_LIBRARIES}