Browse Source

CMake: Handle Berkeley DB on FreeBSD

The BSD systems still ship their own db.h with a historical
BSD implementation, which is preferred by CMake, as it searches
its default path first. We thus have to disable the DEFAULT_PATH
for the search, unfortunately. We also need to pass the correct
include directory to the target.

Furthermore, on FreeBSD the library is called db-<VERSION>, so
let's add db-5 to the list of allowed names.

Gbp-Dch: ignore
Julian Andres Klode 7 years ago
parent
commit
24ad9b325f
2 changed files with 15 additions and 3 deletions
  1. 14 3
      CMake/FindBerkeleyDB.cmake
  2. 1 0
      ftparchive/CMakeLists.txt

+ 14 - 3
CMake/FindBerkeleyDB.cmake

@@ -33,14 +33,25 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
+# We need NO_DEFAULT_PATH here, otherwise CMake helpfully picks up the wrong
+# db.h on BSD systems instead of the Berkeley DB one.
 find_path(BERKELEY_DB_INCLUDE_DIRS db.h
-  /usr/include/db5
+  ${CMAKE_INSTALL_FULL_INCLUDEDIR}/db5
   /usr/local/include/db5
-  /usr/include/db4
+  /usr/include/db5
+
+  ${CMAKE_INSTALL_FULL_INCLUDEDIR}/db4
   /usr/local/include/db4
+  /usr/include/db4
+
+  ${CMAKE_INSTALL_FULL_INCLUDEDIR}
+  /usr/local/include
+  /usr/include
+
+  NO_DEFAULT_PATH
 )
 
-find_library(BERKELEY_DB_LIBRARIES NAMES db )
+find_library(BERKELEY_DB_LIBRARIES NAMES db db-5)
 
 include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(Berkeley "Could not find Berkeley DB >= 4.1" BERKELEY_DB_INCLUDE_DIRS BERKELEY_DB_LIBRARIES)

+ 1 - 0
ftparchive/CMakeLists.txt

@@ -1,3 +1,4 @@
+include_directories(${BERKELEY_DB_INCLUDE_DIRS})
 # Create the executable tasks
 file(GLOB_RECURSE source "*.cc")
 add_executable(apt-ftparchive ${source})