[osmium-tool] 19/97: Add cmake build stuff.

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Tue Jul 21 20:15:30 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 3d8c2432b3737a911dbb77da74722f4803d28b36
Author: Jochen Topf <jochen at topf.org>
Date:   Mon Jul 21 15:48:34 2014 +0200

    Add cmake build stuff.
    
    This does work but probably needs some polish before we get rid of the old
    Makefile.
---
 .gitignore               |  1 +
 CMakeLists.txt           | 94 ++++++++++++++++++++++++++++++++++++++++++++++++
 cmake/FindCryptopp.cmake | 34 ++++++++++++++++++
 cmake/FindOSMPBF.cmake   | 49 +++++++++++++++++++++++++
 cmake/FindOsmium.cmake   | 29 +++++++++++++++
 src/CMakeLists.txt       | 24 +++++++++++++
 src/command_fileinfo.cpp |  6 +++-
 7 files changed, 236 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index dfd5ee4..e4f8bf8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ osmium
 src/*.o
 doc/*.1
 doc/*.html
+build/*
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..747e422
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,94 @@
+
+project(osmium)
+
+set(OSMIUM_VERSION 0.0.1)
+
+cmake_minimum_required(VERSION 2.8.5)
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
+
+#----------------------------------------------------------------------
+find_package(Threads REQUIRED)
+
+find_package(ZLIB REQUIRED)
+include_directories(${ZLIB_INCLUDE_DIRS})
+
+find_package(BZip2 REQUIRED)
+include_directories(${BZIP2_INCLUDE_DIRS})
+
+find_package(EXPAT REQUIRED)
+include_directories(${EXPAT_INCLUDE_DIRS})
+
+find_package(Protobuf REQUIRED)
+include_directories(${PROTOBUF_INCLUDE_DIRS})
+
+find_package(Boost COMPONENTS program_options REQUIRED)
+include_directories(${BOOST_INCLUDE_DIRS})
+
+find_package(Cryptopp REQUIRED)
+include_directories(${CRYPTOPP_INCLUDE_DIRS})
+
+find_package(OSMPBF REQUIRED)
+include_directories(${OSMPBF_INCLUDE_DIRS})
+
+find_package(Osmium REQUIRED)
+include_directories(${OSMIUM_INCLUDE_DIRS})
+
+#----------------------------------------------------------------------
+add_subdirectory(src)
+
+install(FILES README.md DESTINATION share/doc/osmium)
+
+#----------------------------------------------------------------------
+message(STATUS "Looking for cppcheck")
+find_program(CPPCHECK cppcheck)
+
+if(CPPCHECK)
+    message(STATUS "Looking for cppcheck - found")
+    set(CPPCHECK_OPTIONS --enable=warning,style,performance,portability,information,missingInclude)
+
+    # cpp doesn't find system includes for some reason, suppress that report
+    set(CPPCHECK_OPTIONS ${CPPCHECK_OPTIONS} --suppress=missingIncludeSystem)
+
+    add_custom_target(cppcheck ${CPPCHECK} --std=c++11 ${CPPCHECK_OPTIONS} ${CMAKE_SOURCE_DIR}/src/*pp)
+else()
+    message(STATUS "Looking for cppcheck - not found")
+    message(STATUS "  Make target cppcheck not available")
+endif()
+
+
+#----------------------------------------------------------------------
+message(STATUS "Looking for pandoc")
+find_program(PANDOC pandoc)
+
+if(PANDOC)
+    message(STATUS "Looking for pandoc - found")
+    message(STATUS "  Manual pages will be built")
+    execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE PUBDATE OUTPUT_STRIP_TRAILING_WHITESPACE)
+    set(PANDOC_MAN_OPTIONS -s -t man --template ${CMAKE_CURRENT_SOURCE_DIR}/doc/manpage.template --variable "description=osmium/${OSMIUM_VERSION}" --variable "date=${PUBDATE}")
+    set(PANDOC_HTML_OPTIONS -s -t html)
+
+    set(MAN_PAGES_1 osmium.1 osmium-apply-changes.1 osmium-cat.1 osmium-fileinfo.1 osmium-merge-changes.1 osmium-time-filter.1)
+    set(MAN_PAGES_5 osmium-file-formats.5)
+    set(MAN_NAMES ${MAN_PAGES_1} ${MAN_PAGES_5})
+    set(MAN_FILES)
+    foreach(m IN LISTS MAN_NAMES)
+        set(mf ${CMAKE_BINARY_DIR}/${m})
+        string(REGEX REPLACE ".[0-9]\$" "" mws "${m}")
+        set(ms ${CMAKE_SOURCE_DIR}/doc/${mws}.md)
+        add_custom_command(OUTPUT ${mf}
+            COMMAND ${PANDOC} ${PANDOC_MAN_OPTIONS} -o ${mf} ${ms}
+            DEPENDS ${ms}
+            WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+            COMMENT "Building manpage ${mf}"
+            VERBATIM)
+        list(APPEND MAN_FILES ${mf})
+    endforeach()
+
+    add_custom_target(man ALL DEPENDS ${MAN_FILES})
+else()
+    message(STATUS "Looking for pandoc - not found")
+    message(STATUS "  Manual pages will not be built")
+endif()
+
+#----------------------------------------------------------------------
diff --git a/cmake/FindCryptopp.cmake b/cmake/FindCryptopp.cmake
new file mode 100644
index 0000000..3a9f7c8
--- /dev/null
+++ b/cmake/FindCryptopp.cmake
@@ -0,0 +1,34 @@
+# - Find cryptopp
+# Find the native CRYPTOPP headers and libraries.
+#
+#  CRYPTOPP_INCLUDE_DIRS - where to find include files
+#  CRYPTOPP_LIBRARIES    - List of libraries when using cryptopp.
+#  CRYPTOPP_FOUND        - True if cryptopp found.
+
+# The library is called 'crypto++' on Linux, on OS/X it is called 'cryptopp'.
+
+# Look for the header file.
+find_path(CRYPTOPP_INCLUDE_DIR NAMES crypto++/sha.h)
+
+if(NOT CRYPTOPP_INCLUDE_DIR)
+    find_path(CRYPTOPP_INCLUDE_DIR NAMES cryptopp/sha.h)
+    if(CRYPTOPP_INCLUDE_DIR)
+        set(USE_CRYPTOPP 1)
+    endif()
+endif()
+
+# Look for the library.
+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
+                                  REQUIRED_VARS CRYPTOPP_LIBRARY CRYPTOPP_INCLUDE_DIR)
+
+# Copy the results to the output variables.
+if(CRYPTOPP_FOUND)
+  set(CRYPTOPP_INCLUDE_DIRS ${CRYPTOPP_INCLUDE_DIR})
+  set(CRYPTOPP_LIBRARIES ${CRYPTOPP_LIBRARY})
+endif()
+
diff --git a/cmake/FindOSMPBF.cmake b/cmake/FindOSMPBF.cmake
new file mode 100644
index 0000000..168d064
--- /dev/null
+++ b/cmake/FindOSMPBF.cmake
@@ -0,0 +1,49 @@
+# Locate OSMPBF library
+# This module defines
+#  OSMPBF_FOUND, if false, do not try to link to OSMPBF
+#  OSMPBF_LIBRARIES
+#  OSMPBF_INCLUDE_DIRS, where to find OSMPBF.hpp
+#
+# Note that the expected include convention is
+#  #include <osmpbf/osmpbf.h>
+# and not
+#  #include <osmpbf.h>
+
+FIND_PATH(OSMPBF_INCLUDE_DIR osmpbf/osmpbf.h
+  HINTS
+  $ENV{OSMPBF_DIR}
+  PATH_SUFFIXES include
+  PATHS
+  ~/Library/Frameworks
+  /Library/Frameworks
+  /usr/local
+  /usr
+  /opt/local # DarwinPorts
+  /opt
+)
+
+FIND_LIBRARY(OSMPBF_LIBRARY
+  NAMES osmpbf
+  HINTS
+  $ENV{OSMPBF_DIR}
+  PATH_SUFFIXES lib64 lib
+  PATHS
+  ~/Library/Frameworks
+  /Library/Frameworks
+  /usr/local
+  /usr
+  /opt/local
+  /opt
+)
+
+INCLUDE(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set OSMPBF_FOUND to TRUE if
+# all listed variables are TRUE
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(OSMPBF DEFAULT_MSG OSMPBF_LIBRARY OSMPBF_INCLUDE_DIR)
+
+# Copy the results to the output variables.
+if(OSMPBF_FOUND)
+  set(OSMPBF_INCLUDE_DIRS ${OSMPBF_INCLUDE_DIR})
+  set(OSMPBF_LIBRARIES ${OSMPBF_LIBRARY})
+endif()
+
diff --git a/cmake/FindOsmium.cmake b/cmake/FindOsmium.cmake
new file mode 100644
index 0000000..07a1a93
--- /dev/null
+++ b/cmake/FindOsmium.cmake
@@ -0,0 +1,29 @@
+# - Find Osmium
+# Find the Osmium headers.
+#
+#  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
+    PATH_SUFFIXES include
+    PATHS
+    ../libosmium
+    ~/Library/Frameworks
+    /Library/Frameworks
+    /usr/local
+    /usr/
+    /opt/local # DarwinPorts
+    /opt
+)
+
+# 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)
+
+# Copy the results to the output variables.
+if(OSMIUM_FOUND)
+  set(OSMIUM_INCLUDE_DIRS ${OSMIUM_INCLUDE_DIR})
+endif()
+
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..96b5431
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,24 @@
+
+add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64)
+
+if(USE_CRYPTOPP)
+    add_definitions(-DUSE_CRYPTOPP=${USE_CRYPTOPP})
+endif()
+
+add_compile_options(-O3)
+add_compile_options(-std=c++11)
+add_compile_options(-Wall -Wextra -pedantic -Wredundant-decls -Wdisabled-optimization -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wsign-promo -Wold-style-cast)
+
+if(APPLE)
+    add_compile_options(-stdlib=libc++)
+    set(LDFLAGS ${LDFLAGS} -stdlib=libc++)
+endif(APPLE)
+
+file(GLOB OSMIUM_SOURCE_FILES *.cpp)
+
+add_executable(osmium ${OSMIUM_SOURCE_FILES})
+
+target_link_libraries(osmium ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${EXPAT_LIBRARIES} ${PROTOBUF_LITE_LIBRARIES} ${Boost_LIBRARIES} ${CRYPTOPP_LIBRARIES} ${OSMPBF_LIBRARY})
+
+install(TARGETS osmium DESTINATION bin)
+
diff --git a/src/command_fileinfo.cpp b/src/command_fileinfo.cpp
index 8d9349d..a850bf5 100644
--- a/src/command_fileinfo.cpp
+++ b/src/command_fileinfo.cpp
@@ -29,7 +29,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include <boost/program_options.hpp>
 namespace po = boost::program_options;
 
-#include <crypto++/sha.h>
+#ifdef USE_CRYPTOPP
+# include <cryptopp/sha.h>
+#else
+# include <crypto++/sha.h>
+#endif
 
 #include <osmium/io/any_input.hpp>
 #include <osmium/handler.hpp>

-- 
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