aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormmazat <6835356+mmazat@users.noreply.github.com>2018-02-19 09:46:02 -0500
committerRobert Schumacher <roschuma@microsoft.com>2018-02-19 06:46:02 -0800
commitd6ff55a735c40a642564fdd472f907ddf8a9b859 (patch)
tree25e6041fe64fd727ace5a47c4631d2b36a345471
parentd4004c8ac9cd2c9df58495ed7e06566ed85a32d6 (diff)
downloadvcpkg-d6ff55a735c40a642564fdd472f907ddf8a9b859.tar.gz
vcpkg-d6ff55a735c40a642564fdd472f907ddf8a9b859.zip
port for google cartographer (#2665)
* initial try to add port files * updates control and patch * minor fix * release is now built * install succeed * update to the latest commit * use cmake to export the symbols in dynamic linkage * [cartographer] Reformatting and added dependency on ceres[eigensparse]
-rw-r--r--ports/cartographer/CONTROL4
-rw-r--r--ports/cartographer/fix-find-packages.patch146
-rw-r--r--ports/cartographer/portfile.cmake39
3 files changed, 189 insertions, 0 deletions
diff --git a/ports/cartographer/CONTROL b/ports/cartographer/CONTROL
new file mode 100644
index 000000000..8439ea8e6
--- /dev/null
+++ b/ports/cartographer/CONTROL
@@ -0,0 +1,4 @@
+Source: cartographer
+Version: 0.3.0-3
+Build-Depends: ceres[eigensparse], gflags, glog, lua, cairo, boost-iostreams, gtest, protobuf
+Description: Google 2D & 3D SLAM package
diff --git a/ports/cartographer/fix-find-packages.patch b/ports/cartographer/fix-find-packages.patch
new file mode 100644
index 000000000..19694b704
--- /dev/null
+++ b/ports/cartographer/fix-find-packages.patch
@@ -0,0 +1,146 @@
+ CMakeLists.txt | 45 ++++++++++++++++++++++----------------
+ cartographer/common/math.h | 4 +++-
+ cartographer/common/thread_pool.cc | 2 +-
+ cmake/functions.cmake | 10 ++++-----
+ 4 files changed, 35 insertions(+), 26 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 55e9adc..bc92e9b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -26,18 +26,23 @@ option(BUILD_GRPC "build Cartographer gRPC support" false)
+ set(GRPC_PLUGIN_PATH "/usr/local/bin/grpc_cpp_plugin")
+
+ include("${PROJECT_SOURCE_DIR}/cmake/functions.cmake")
+-google_initialize_cartographer_project()
+-google_enable_testing()
++#google_initialize_cartographer_project()
++#google_enable_testing()
+
+ find_package(Boost REQUIRED COMPONENTS iostreams)
+ find_package(Ceres REQUIRED COMPONENTS SparseLinearAlgebraLibrary)
+ find_package(Eigen3 REQUIRED)
+-find_package(LuaGoogle REQUIRED)
++find_package(Lua REQUIRED)
+ find_package(Protobuf 3.0.0 REQUIRED)
++find_package(glog REQUIRED)
++find_package(gflags REQUIRED)
+
+-include(FindPkgConfig)
+-PKG_SEARCH_MODULE(CAIRO REQUIRED cairo>=1.12.16)
+-
++#include(FindPkgConfig)
++#PKG_SEARCH_MODULE(CAIRO REQUIRED cairo>=1.12.16)
++if(CMAKE_BUILD_TYPE STREQUAL Debug)
++ set(CAIRO_LIB_SUFFIX d)
++endif()
++find_library(CAIRO_LIBRARY cairo${CAIRO_LIB_SUFFIX})
+ # Only build the documentation if we can find Sphinx.
+ find_package(Sphinx)
+ if(SPHINX_FOUND)
+@@ -144,15 +149,15 @@ configure_file(
+ ${PROJECT_SOURCE_DIR}/cartographer/common/config.h.cmake
+ ${PROJECT_BINARY_DIR}/cartographer/common/config.h)
+
+-google_binary(cartographer_autogenerate_ground_truth
+- SRCS
+- cartographer/ground_truth/autogenerate_ground_truth_main.cc
+-)
+-
+-google_binary(cartographer_compute_relations_metrics
+- SRCS
+- cartographer/ground_truth/compute_relations_metrics_main.cc
+-)
++#google_binary(cartographer_autogenerate_ground_truth
++# SRCS
++# cartographer/ground_truth/autogenerate_ground_truth_main.cc
++#)
++#
++#google_binary(cartographer_compute_relations_metrics
++# SRCS
++# cartographer/ground_truth/compute_relations_metrics_main.cc
++#)
+
+ if(${BUILD_GRPC})
+ google_binary(cartographer_grpc_server
+@@ -167,7 +172,7 @@ foreach(ABS_FIL ${ALL_TESTS})
+ get_filename_component(FIL_WE ${REL_FIL} NAME_WE)
+ # Replace slashes as required for CMP0037.
+ string(REPLACE "/" "." TEST_TARGET_NAME "${DIR}/${FIL_WE}")
+- google_test("${TEST_TARGET_NAME}" ${ABS_FIL})
++ #google_test("${TEST_TARGET_NAME}" ${ABS_FIL})
+ if(${BUILD_GRPC})
+ target_link_libraries("${TEST_TARGET_NAME}" PUBLIC grpc++)
+ endif()
+@@ -190,8 +195,9 @@ target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC
+ target_link_libraries(${PROJECT_NAME} PUBLIC ${Boost_LIBRARIES})
+
+ # We expect find_package(Ceres) to have located these for us.
+-target_link_libraries(${PROJECT_NAME} PUBLIC glog)
+-target_link_libraries(${PROJECT_NAME} PUBLIC gflags)
++#target_link_libraries(${PROJECT_NAME} PUBLIC glog)
++#target_link_libraries(${PROJECT_NAME} PUBLIC gflags)
++target_link_libraries(${PROJECT_NAME} PUBLIC ${CAIRO_LIBRARY})
+
+ target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC
+ "${CAIRO_INCLUDE_DIRS}")
+@@ -201,7 +207,8 @@ target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC
+ ${PROTOBUF_INCLUDE_DIR})
+ # TODO(hrapp): This should not explicitly list pthread and use
+ # PROTOBUF_LIBRARIES, but that failed on first try.
+-target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY} pthread)
++#target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY} pthread)
++target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY})
+ if(${BUILD_GRPC})
+ target_link_libraries(${PROJECT_NAME} PUBLIC grpc++)
+ endif()
+diff --git a/cartographer/common/math.h b/cartographer/common/math.h
+index f0ae9e2..d32bdbe 100644
+--- a/cartographer/common/math.h
++++ b/cartographer/common/math.h
+@@ -16,7 +16,9 @@
+
+ #ifndef CARTOGRAPHER_COMMON_MATH_H_
+ #define CARTOGRAPHER_COMMON_MATH_H_
+-
++ #ifndef M_PI
++ #define M_PI 3.14159265358979323846
++ #endif
+ #include <cmath>
+ #include <vector>
+
+diff --git a/cartographer/common/thread_pool.cc b/cartographer/common/thread_pool.cc
+index fdda166..178472f 100644
+--- a/cartographer/common/thread_pool.cc
++++ b/cartographer/common/thread_pool.cc
+@@ -16,7 +16,7 @@
+
+ #include "cartographer/common/thread_pool.h"
+
+-#include <unistd.h>
++//#include <unistd.h>
+ #include <algorithm>
+ #include <chrono>
+ #include <numeric>
+diff --git a/cmake/functions.cmake b/cmake/functions.cmake
+index 3bfd343..b41a84e 100644
+--- a/cmake/functions.cmake
++++ b/cmake/functions.cmake
+@@ -118,12 +118,12 @@ macro(google_initialize_cartographer_project)
+ set(LIST_FILES_CMD "find ${PROJECT_SOURCE_DIR}/ -not -iwholename '*.git*' | sort | sed 's/^/#/'")
+ set(FILES_LIST_PATH "${PROJECT_BINARY_DIR}/AllFiles.cmake")
+ set(DETECT_CHANGES_CMD "bash" "-c" "${LIST_FILES_CMD} | diff -N -q ${FILES_LIST_PATH} - || ${LIST_FILES_CMD} > ${FILES_LIST_PATH}")
+- add_custom_target(${PROJECT_NAME}_detect_changes ALL
+- COMMAND ${DETECT_CHANGES_CMD}
+- VERBATIM
+- )
++ #add_custom_target(${PROJECT_NAME}_detect_changes ALL
++ # COMMAND ${DETECT_CHANGES_CMD}
++ # VERBATIM
++ #)
+ if(NOT EXISTS ${FILES_LIST_PATH})
+- execute_process(COMMAND ${DETECT_CHANGES_CMD})
++ # execute_process(COMMAND ${DETECT_CHANGES_CMD})
+ endif()
+ include(${FILES_LIST_PATH})
+ endmacro()
diff --git a/ports/cartographer/portfile.cmake b/ports/cartographer/portfile.cmake
new file mode 100644
index 000000000..49ca1b4b2
--- /dev/null
+++ b/ports/cartographer/portfile.cmake
@@ -0,0 +1,39 @@
+include(vcpkg_common_functions)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO googlecartographer/cartographer
+ REF a7ed7e224f98b396762c865b81b62dc3abea2e81
+ SHA512 2ab167c1c314591b4916baf70b8ad92ae542986c3578319d2454c904adae10f8027bc696579d6e2864d3606a6711563b82438e847527cad4ab0c2bd603a63eb7
+ HEAD_REF master
+)
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES
+ ${CMAKE_CURRENT_LIST_DIR}/fix-find-packages.patch
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS
+ -DGFLAGS_PREFER_EXPORTED_GFLAGS_CMAKE_CONFIGURATION=OFF
+ -DGLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION=OFF
+ -Dgtest_disable_pthreads=ON
+ -DCMAKE_USE_PTHREADS_INIT=OFF
+ -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
+ OPTIONS_DEBUG
+ -DFORCE_DEBUG_BUILD=True
+)
+
+vcpkg_install_cmake()
+
+vcpkg_copy_pdbs()
+
+# Clean
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
+
+# Handle copyright of cartographer
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/cartographer)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/cartographer/LICENSE ${CURRENT_PACKAGES_DIR}/share/cartographer/copyright)