[osmium-tool] 44/97: Improved cmake config.

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Tue Jul 21 20:15:33 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to tag v1.0.0
in repository osmium-tool.

commit 34effba5142ac80d2205613d8bc17b164aa60157
Author: Jochen Topf <jochen at topf.org>
Date:   Tue Dec 16 14:15:48 2014 +0100

    Improved cmake config.
---
 .gitignore               |   2 +-
 CMakeLists.txt           |  49 +-----------------
 cmake/FindCryptopp.cmake |   2 +-
 cmake/FindOsmium.cmake   | 128 ++++++++++++++++++++++++++++++++++++++++-------
 src/CMakeLists.txt       |   2 +-
 5 files changed, 113 insertions(+), 70 deletions(-)

diff --git a/.gitignore b/.gitignore
index e4f8bf8..4456706 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,4 @@ osmium
 src/*.o
 doc/*.1
 doc/*.html
-build/*
+build*
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3c01e77..ed118ab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,32 +28,9 @@ set(OSMIUM_VERSION ${OSMIUM_VERSION_MAJOR}.${OSMIUM_VERSION_MINOR}.${OSMIUM_VERS
 #  Find external dependencies
 #
 #----------------------------------------------------------------------
-find_package(Threads REQUIRED)
-list(APPEND LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
-if(NOT THREADS_FOUND)
-    message(WARNING "Threads library not found!\n")
-    set(MISSING_LIB 1)
-endif()
-
-find_package(OSMPBF REQUIRED)
-include_directories(${OSMPBF_INCLUDE_DIRS})
-list(APPEND LIBRARIES ${OSMPBF_LIBRARIES})
-if(NOT OSMPBF_FOUND)
-    message(WARNING "OSMPBF library not found!\n")
-    set(MISSING_LIB 1)
-endif()
-
-find_package(Protobuf REQUIRED)
-include_directories(${PROTOBUF_INCLUDE_DIRS})
-list(APPEND LIBRARIES ${PROTOBUF_LITE_LIBRARIES})
-if(NOT PROTOBUF_FOUND)
-    message(WARNING "Protobuf library not found!\n")
-    set(MISSING_LIB 1)
-endif()
 
-find_package(Boost COMPONENTS program_options REQUIRED)
+find_package(Boost REQUIRED COMPONENTS program_options)
 include_directories(${Boost_INCLUDE_DIRS})
-list(APPEND LIBRARIES ${Boost_LIBRARIES})
 if(NOT Boost_FOUND)
     message(WARNING "Boost program_options not found!\n")
     set(MISSING_LIB 1)
@@ -61,7 +38,6 @@ endif()
 
 find_package(Cryptopp REQUIRED)
 include_directories(${CRYPTOPP_INCLUDE_DIRS})
-list(APPEND LIBRARIES ${CRYPTOPP_LIBRARIES})
 if(NOT CRYPTOPP_FOUND)
     message(WARNING "Crypto++/Cryptopp library not found!\n")
     set(MISSING_LIB 1)
@@ -76,29 +52,6 @@ if(NOT OSMIUM_FOUND)
     set(MISSING_LIB 1)
 endif()
 
-find_package(ZLIB REQUIRED)
-include_directories(${ZLIB_INCLUDE_DIRS})
-list(APPEND LIBRARIES ${ZLIB_LIBRARIES})
-if(NOT ZLIB_FOUND)
-    message(WARNING "Zlib not found!\n")
-    set(MISSING_LIB 1)
-endif()
-
-find_package(BZip2 REQUIRED)
-include_directories(${BZIP2_INCLUDE_DIRS})
-list(APPEND LIBRARIES ${BZIP2_LIBRARIES})
-if(NOT BZIP2_FOUND)
-    message(WARNING "BZip2 library not found!\n")
-    set(MISSING_LIB 1)
-endif()
-
-find_package(EXPAT REQUIRED)
-include_directories(${EXPAT_INCLUDE_DIRS})
-list(APPEND LIBRARIES ${EXPAT_LIBRARIES})
-if(NOT EXPAT_FOUND)
-    message(WARNING "Expat library not found!\n")
-    set(MISSING_LIB 1)
-endif()
 
 #----------------------------------------------------------------------
 #
diff --git a/cmake/FindCryptopp.cmake b/cmake/FindCryptopp.cmake
index 3a9f7c8..a88124c 100644
--- a/cmake/FindCryptopp.cmake
+++ b/cmake/FindCryptopp.cmake
@@ -23,7 +23,7 @@ find_library(CRYPTOPP_LIBRARY NAMES crypto++ libcrypto++ cryptopp libcryptopp)
 # handle the QUIETLY and REQUIRED arguments and set CRYPTOPP_FOUND to TRUE if
 # all listed variables are TRUE
 include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(CRYPTOPP
+find_package_handle_standard_args(CRYPTOPP
                                   REQUIRED_VARS CRYPTOPP_LIBRARY CRYPTOPP_INCLUDE_DIR)
 
 # Copy the results to the output variables.
diff --git a/cmake/FindOsmium.cmake b/cmake/FindOsmium.cmake
index da11989..2c87db2 100644
--- a/cmake/FindOsmium.cmake
+++ b/cmake/FindOsmium.cmake
@@ -1,8 +1,46 @@
-# - Find Osmium
-# Find the Osmium headers.
+#
+#  FindOsmium.cmake
+#
+#  Find the Libosmium headers and, optionally, several components needed for
+#  different Libosmium functions.
+#
+#  Usage:
+#
+#    Copy this file (and OsmiumOptions.cmake) somewhere into your project
+#    directory, where cmake can find it. Usually this will be a directory
+#    called "cmake" which you can add to your module search path with the
+#    following line in your CMakeLists.txt:
+#
+#      list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
+#
+#    Then add the following in your CMakeLists.txt:
+#
+#      include(OsmiumOptions)
+#      find_package(Osmium REQUIRED COMPONENTS <XXX>)
+#      include_directories(${OSMIUM_INCLUDE_DIRS})
+#
+#    For the <XXX> substitute a space separated list of one or more of the
+#    following components:
+#
+#      pbf        - include libraries needed for PBF input and output
+#      xml        - include libraries needed for XML input and output
+#      io         - include libraries needed for any type of input/output
+#      geos       - include if you want to use any of the GEOS functions
+#      gdal       - include if you want to use any of the OGR functions
+#      proj       - include if you want to use any of the Proj.4 functions
+#      sparsehash - include if you use the sparsehash index
+#
+#    You can check for success with something like this:
+#
+#      if(NOT OSMIUM_FOUND)
+#          message(WARNING "Libosmium not found!\n")
+#      endif()
+#
+#  Variables:
 #
 #  OSMIUM_INCLUDE_DIRS - Where to find include files.
 #  OSMIUM_FOUND        - True if Osmium found.
+#
 
 # Look for the header file.
 find_path(OSMIUM_INCLUDE_DIR osmium/osm.hpp
@@ -19,10 +57,10 @@ find_path(OSMIUM_INCLUDE_DIR osmium/osm.hpp
     /opt
 )
 
-# handle the QUIETLY and REQUIRED arguments and set OSMIUM_FOUND to TRUE if
-# all listed variables are TRUE
+# Handle the QUIETLY and REQUIRED arguments and set OSMIUM_FOUND to TRUE if
+# all listed variables are TRUE.
 include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(OSMIUM REQUIRED_VARS OSMIUM_INCLUDE_DIR)
+find_package_handle_standard_args(OSMIUM REQUIRED_VARS OSMIUM_INCLUDE_DIR)
 
 # Copy the results to the output variables.
 if(OSMIUM_FOUND)
@@ -33,23 +71,72 @@ if(Osmium_FIND_REQUIRED AND NOT OSMIUM_FOUND)
   message(FATAL_ERROR "Can not find libosmium headers, please install them or configure the paths")
 endif()
 
+#----------------------------------------------------------------------
+#
+#  Check for optional components
+#
+#----------------------------------------------------------------------
+if(Osmium_FIND_COMPONENTS)
+  foreach(component ${Osmium_FIND_COMPONENTS})
+    string(TOUPPER ${component} _COMPONENT)
+    set(OSMIUM_USE_${_COMPONENT} TRUE)
+  endforeach()
+endif()
 
-if(";${Osmium_FIND_COMPONENTS};" MATCHES ";io;")
+# Component 'io' is an alias for 'pbf' and 'xml'
+if(OSMIUM_USE_IO)
+  set(OSMIUM_USE_PBF TRUE)
+  set(OSMIUM_USE_XML TRUE)
+endif()
+
+# Component 'ogr' is an alias for 'gdal'
+if(OSMIUM_USE_OGR)
+  set(OSMIUM_USE_GDAL TRUE)
+endif()
+
+# Component 'pbf'
+if(OSMIUM_USE_PBF)
   find_package(OSMPBF)
   find_package(Protobuf)
   find_package(ZLIB)
-  find_package(BZip2)
-  find_package(EXPAT)
   find_package(Threads)
 
-  if(OSMPBF_FOUND AND PROTOBUF_FOUND AND ZLIB_FOUND AND BZIP2_FOUND AND EXPAT_FOUND AND Threads_FOUND)
+  if(OSMPBF_FOUND AND PROTOBUF_FOUND AND ZLIB_FOUND AND Threads_FOUND)
     list(APPEND OSMIUM_LIBRARIES
-      ${OSMPBF_LIBRARIES} ${PROTOBUF_LITE_LIBRARY}
-      ${ZLIB_LIBRARY} ${BZIP2_LIBRARIES}
-      ${EXPAT_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
+      ${OSMPBF_LIBRARIES}
+      ${PROTOBUF_LITE_LIBRARY}
+      ${ZLIB_LIBRARY}
+      ${CMAKE_THREAD_LIBS_INIT}
+    )
     list(APPEND OSMIUM_INCLUDE_DIRS
       ${OSMPBF_INCLUDE_DIRS}
       ${PROTOBUF_INCLUDE_DIR}
+      ${ZLIB_INCLUDE_DIR}
+    )
+    if(WIN32)
+      list(APPEND OSMIUM_LIBRARIES ws2_32)
+    endif()
+  else()
+    set(MISSING_LIBRARIES 1)
+    if(Osmium_FIND_REQUIRED)
+      message(FATAL_ERROR "Can not find some libraries for Osmium input/output formats, please install them or configure the paths")
+    endif()
+  endif()
+endif()
+
+# Component 'xml'
+if(OSMIUM_USE_XML)
+  find_package(BZip2)
+  find_package(ZLIB)
+  find_package(EXPAT)
+
+  if(BZIP2_FOUND AND EXPAT_FOUND AND ZLIB_FOUND)
+    list(APPEND OSMIUM_LIBRARIES
+      ${BZIP2_LIBRARIES}
+      ${ZLIB_LIBRARY}
+      ${EXPAT_LIBRARY}
+    )
+    list(APPEND OSMIUM_INCLUDE_DIRS
       ${EXPAT_INCLUDE_DIR}
       ${BZIP2_INCLUDE_DIR}
       ${ZLIB_INCLUDE_DIR}
@@ -65,8 +152,8 @@ if(";${Osmium_FIND_COMPONENTS};" MATCHES ";io;")
   endif()
 endif()
 
-if(";${Osmium_FIND_COMPONENTS};" MATCHES ";geos;")
-  ##### Find GEOS Library
+# Component 'geos'
+if(OSMIUM_USE_GEOS)
   find_path(GEOS_INCLUDE_DIR geos/geom.h)
   find_library(GEOS_LIBRARY NAMES geos)
   if(GEOS_INCLUDE_DIR AND GEOS_LIBRARY)
@@ -82,7 +169,8 @@ if(";${Osmium_FIND_COMPONENTS};" MATCHES ";geos;")
   endif()
 endif()
 
-if(";${Osmium_FIND_COMPONENTS};" MATCHES ";gdal;")
+# Component 'gdal' (alias 'ogr')
+if(OSMIUM_USE_GDAL)
   find_package(GDAL)
   if(NOT GDAL_FOUND)
     set(MISSING_LIBRARIES 1)
@@ -95,8 +183,8 @@ if(";${Osmium_FIND_COMPONENTS};" MATCHES ";gdal;")
   endif()
 endif()
 
-if(";${Osmium_FIND_COMPONENTS};" MATCHES ";proj;")
-  ##### Find Proj.4 Library
+# Component 'proj'
+if(OSMIUM_USE_PROJ)
   find_path(PROJ_INCLUDE_DIR proj_api.h)
   find_library(PROJ_LIBRARY NAMES proj)
   if(PROJ_INCLUDE_DIR AND PROJ_LIBRARY)
@@ -112,8 +200,8 @@ if(";${Osmium_FIND_COMPONENTS};" MATCHES ";proj;")
   endif()
 endif()
 
-if(";${Osmium_FIND_COMPONENTS};" MATCHES ";sparsehash;")
-  ##### Find Google SparseHash
+# Component 'sparsehash'
+if(OSMIUM_USE_SPARSEHASH)
   find_path(SPARSEHASH_INCLUDE_DIR google/sparsetable)
   if(SPARSEHASH_INCLUDE_DIR)
     message(STATUS "Found SparseHash")
@@ -127,6 +215,8 @@ if(";${Osmium_FIND_COMPONENTS};" MATCHES ";sparsehash;")
   endif()
 endif()
 
+#----------------------------------------------------------------------
+
 list(REMOVE_DUPLICATES OSMIUM_INCLUDE_DIRS)
 list(REMOVE_DUPLICATES OSMIUM_LIBRARIES)
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 742795f..f325e0c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -3,7 +3,7 @@ file(GLOB OSMIUM_SOURCE_FILES *.cpp)
 
 add_executable(osmium ${OSMIUM_SOURCE_FILES})
 
-target_link_libraries(osmium ${LIBRARIES})
+target_link_libraries(osmium ${Boost_LIBRARIES} ${CRYPTOPP_LIBRARIES} ${OSMIUM_LIBRARIES})
 
 install(TARGETS osmium DESTINATION bin)
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/osmium-tool.git



More information about the Pkg-grass-devel mailing list