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 + #include + +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 ++//#include + #include + #include + #include +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)