aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Winget <tewinget@gmail.com>2015-01-18 18:30:31 -0500
committerThomas Winget <tewinget@gmail.com>2015-01-18 18:30:31 -0500
commit34883599bc74e8b98795fd2df24d306fe8aa1cca (patch)
tree40eb3828fa656da38ae173129199031cd0836fe0
parentInitial import of lmdb source (diff)
downloadmonero-34883599bc74e8b98795fd2df24d306fe8aa1cca.tar.xz
Add in-source lmdb to build process
Working on Linux, needs verified for other platforms but should be fine.
-rw-r--r--CMakeLists.txt5
-rw-r--r--cmake/FindLMDB.cmake4
-rw-r--r--db_drivers/CMakeLists.txt49
-rw-r--r--db_drivers/liblmdb/CMakeLists.txt39
4 files changed, 92 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee5d5f2ce..632eecbd8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -138,7 +138,10 @@ link_directories(${UNBOUND_LIBRARY_DIRS})
# Final setup for rapidjson
include_directories(external/rapidjson)
-find_package(LMDB REQUIRED)
+
+add_subdirectory(db_drivers)
+
+# Final setup for liblmdb
include_directories(${LMDB_INCLUDE})
if(MSVC)
diff --git a/cmake/FindLMDB.cmake b/cmake/FindLMDB.cmake
index 743cc4860..b4c90dea2 100644
--- a/cmake/FindLMDB.cmake
+++ b/cmake/FindLMDB.cmake
@@ -53,9 +53,5 @@ IF(LMDB_INCLUDE_DIR)
MESSAGE(STATUS "Found liblmdb library")
set(LMDB_INCLUDE ${LMDB_INCLUDE_DIR})
set(LMDB_LIBRARY ${LMDB_LIBRARIES})
- ELSE()
- MESSAGE(FATAL_ERROR "${BoldRed}Could not find liblmdb library, please make sure you have installed liblmdb or liblmdb-dev or the equivalent${ColourReset}")
ENDIF()
-ELSE()
- MESSAGE(FATAL_ERROR "${BoldRed}Could not find liblmdb library, please make sure you have installed liblmdb or liblmdb-dev or the equivalent${ColourReset}")
ENDIF()
diff --git a/db_drivers/CMakeLists.txt b/db_drivers/CMakeLists.txt
new file mode 100644
index 000000000..5993ed3a2
--- /dev/null
+++ b/db_drivers/CMakeLists.txt
@@ -0,0 +1,49 @@
+# Copyright (c) 2014-2015, The Monero Project
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification, are
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this list of
+# conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice, this list
+# of conditions and the following disclaimer in the documentation and/or other
+# materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its contributors may be
+# used to endorse or promote products derived from this software without specific
+# prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+find_package(LMDB)
+
+if(NOT LMDB_LIBRARIES OR STATIC)
+ add_subdirectory(liblmdb)
+ message(STATUS "lmdb not found, building from src tree")
+
+ set(LMDB_STATIC true PARENT_SCOPE)
+ set(LMDB_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/liblmdb" PARENT_SCOPE)
+ set(LMDB_LIBRARY "lmdb" PARENT_SCOPE)
+else()
+ message(STATUS "Found liblmdb include (lmdb.h) in ${LMDB_INCLUDE_DIR}")
+ if(LMDB_LIBRARIES)
+ message(STATUS "Found liblmdb shared library")
+ set(LMDB_STATIC false PARENT_SCOPE)
+ set(LMDB_INCLUDE ${LMDB_INCLUDE_DIR} PARENT_SCOPE)
+ set(LMDB_LIBRARY ${LMDB_LIBRARIES} PARENT_SCOPE)
+ set(LMDB_LIBRARY_DIRS "" PARENT_SCOPE)
+ else()
+ die("Found liblmdb includes, but could not find liblmdb library. Please make sure you have installed liblmdb or liblmdb-dev or the equivalent")
+ endif()
+endif()
diff --git a/db_drivers/liblmdb/CMakeLists.txt b/db_drivers/liblmdb/CMakeLists.txt
new file mode 100644
index 000000000..62b800135
--- /dev/null
+++ b/db_drivers/liblmdb/CMakeLists.txt
@@ -0,0 +1,39 @@
+# Copyright (c) 2014-2015, The Monero Project
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification, are
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this list of
+# conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice, this list
+# of conditions and the following disclaimer in the documentation and/or other
+# materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its contributors may be
+# used to endorse or promote products derived from this software without specific
+# prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set (lmdb_sources
+mdb.c
+midl.c)
+
+include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
+
+add_library(lmdb
+ ${lmdb_sources})
+target_link_libraries(lmdb
+ LINK_PRIVATE
+ ${CMAKE_THREAD_LIBS_INIT})