diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index 4da5d147..6fda0098 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -31,7 +31,6 @@ jobs: uses: actions/checkout@v3 with: submodules: recursive - path: viam-cartographer - name: Check out PR branch code if: github.event_name == 'pull_request_target' @@ -39,7 +38,6 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} submodules: recursive - path: viam-cartographer - name: apt update run: | @@ -48,31 +46,20 @@ jobs: - name: make clean run: | chown -R testbot:testbot . - sudo -u testbot bash -lc 'cd viam-cartographer && make clean' + sudo -u testbot bash -lc 'make clean' - - name: make bufinstall buf setup - uses: nick-fields/retry@v2 - with: - timeout_minutes: 5 - max_attempts: 3 - retry_on: timeout - shell: bash - command: | - chown -R testbot:testbot . - sudo -u testbot bash -lc 'cd viam-cartographer && make bufinstall buf setup' - - - name: make build + - name: make setup run: | - sudo -u testbot bash -lc 'cd viam-cartographer && make build' + sudo -u testbot bash -lc 'make setup' - - name: make install-lua-files + - name: make build run: | - sudo -u testbot bash -lc 'cd viam-cartographer && make install-lua-files' + sudo -u testbot bash -lc 'make build' - name: Build AppImage (PR) if: contains(github.event.pull_request.labels.*.name, 'appimage') || contains(github.event.pull_request.labels.*.name, 'appimage-ignore-tests') run: | - sudo -u testbot bash -lc 'cd viam-cartographer && make BUILD_CHANNEL="pr-${{ github.event.pull_request.number }}" appimage' + sudo -u testbot bash -lc 'make BUILD_CHANNEL="pr-${{ github.event.pull_request.number }}" appimage' - name: Authorize GCP Upload uses: google-github-actions/auth@v1 @@ -84,7 +71,7 @@ jobs: uses: google-github-actions/upload-cloud-storage@v0.10.4 with: headers: "cache-control: no-cache" - path: 'viam-cartographer/etc/packaging/appimages/deploy/' + path: 'etc/packaging/appimages/deploy/' destination: 'packages.viam.com/apps/slam-servers/' glob: '*' parent: false @@ -92,14 +79,14 @@ jobs: - name: Build AppImage (Latest) if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' - run: sudo -u testbot bash -lc 'cd viam-cartographer && make appimage-ci' + run: sudo -u testbot bash -lc 'make appimage-ci' - name: Deploy Files (Latest) if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' uses: google-github-actions/upload-cloud-storage@v0.10.4 with: headers: "cache-control: no-cache" - path: 'viam-cartographer/etc/packaging/appimages/deploy/' + path: 'etc/packaging/appimages/deploy/' destination: 'packages.viam.com/apps/slam-servers/' glob: '*' parent: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1150358f..dccb0f44 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,15 +57,15 @@ jobs: - name: apt update run: | - sudo apt update + apt-get update - name: Verify no uncommitted changes from make lint run: | git init git add . chown -R testbot:testbot . - sudo -u testbot bash -lc 'make lint-setup lint' - GEN_DIFF=$(git status -s) + sudo -u testbot bash -lc 'sudo apt-get install -y clang-format && make lint' + GEN_DIFF=$(git status -s --ignore-submodules) if [ -n "$GEN_DIFF" ]; then echo '"make lint" resulted in changes not in git' 1>&2 @@ -73,43 +73,31 @@ jobs: exit 1 fi - - name: make bufinstall buf setup setup-cpp-full-mod - uses: nick-fields/retry@v2 - with: - timeout_minutes: 5 - max_attempts: 3 - retry_on: timeout - shell: bash - command: | - chown -R testbot:testbot . - sudo -u testbot bash -lc 'make bufinstall buf setup setup-cpp-full-mod' + - name: make setup + run: | + sudo -u testbot bash -lc 'make setup' - name: make build run: | sudo -u testbot bash -lc 'make build' - - name: make install-lua-files + - name: make install run: | - sudo -u testbot bash -lc 'make install-lua-files' + sudo -u testbot bash -lc 'make install' - name: make test run: | sudo -u testbot bash -lc 'make test' - - name: Copy carto_grpc_server binary - if: matrix.platform == 'linux/amd64' - run: | - sudo cp viam-cartographer/build/carto_grpc_server /usr/local/bin/carto_grpc_server - - name: Run viam-cartographer cartographer integration tests if: matrix.platform == 'linux/amd64' run: | - sudo -u testbot bash -lc 'sudo go test -v -race -run TestCartographerIntegration' + sudo -u testbot bash -lc 'go test -v -race -run TestCartographerIntegration' - - name: make test-cpp-full-mod-valgrind + - name: make setup-cpp-full-mod test-cpp-full-mod-valgrind # Currently we only run valgrind on arm64 as x86 # doesn't valgrind clean due to what appears to be a bug in GLOG # https://github.com/viamrobotics/viam-cartographer/actions/runs/5156238014/jobs/9287413446 if: matrix.platform != 'linux/amd64' run: | - sudo -u testbot bash -lc 'make test-cpp-full-mod-valgrind' + sudo -u testbot bash -lc 'make setup-cpp-full-mod test-cpp-full-mod-valgrind' diff --git a/Makefile b/Makefile index 29e51ed6..0792a4dc 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,43 @@ BUILD_CHANNEL?=local -TOOL_BIN = bin/gotools/$(shell uname -s)-$(shell uname -m) -PATH_WITH_TOOLS="`pwd`/$(TOOL_BIN):$(HOME)/go/bin/:${PATH}" -GIT_REVISION = $(shell git rev-parse HEAD | tr -d '\n') -TAG_VERSION?=$(shell git tag --points-at | sort -Vr | head -n1) -GO_BUILD_LDFLAGS = -ldflags "-X 'main.Version=${TAG_VERSION}' -X 'main.GitRevision=${GIT_REVISION}'" +TOOL_BIN := $(shell pwd)/bin/tools/$(shell uname -s)-$(shell uname -m) +GIT_REVISION := $(shell git rev-parse HEAD | tr -d '\n') +TAG_VERSION ?= $(shell git tag --points-at | sort -Vr | head -n1) +GO_BUILD_LDFLAGS := -ldflags "-X 'main.Version=${TAG_VERSION}' -X 'main.GitRevision=${GIT_REVISION}'" +SHELL := /usr/bin/env bash +export PATH := $(TOOL_BIN):$(PATH) +export GOBIN := $(TOOL_BIN) + +ifneq (, $(shell which brew)) + EXTRA_CMAKE_FLAGS := -DCMAKE_PREFIX_PATH=$(shell brew --prefix) -DQt5_DIR=$(shell brew --prefix qt5)/lib/cmake/Qt5 + export PKG_CONFIG_PATH := $(shell brew --prefix openssl@3)/lib/pkgconfig +endif + +default: build -ARTIFACT="~/go/bin/artifact" +artifact-pull: $(TOOL_BIN)/artifact + artifact pull -artifact-pull: - PATH=${PATH_WITH_TOOLS} artifact pull +$(TOOL_BIN)/artifact: + go install go.viam.com/utils/artifact/cmd/artifact -bufinstall: - sudo apt-get install -y protobuf-compiler-grpc libgrpc-dev libgrpc++-dev || brew install grpc openssl --quiet +$(TOOL_BIN)/buf: + go install github.com/bufbuild/buf/cmd/buf@v1.8.0 -bufsetup: - GOBIN=`pwd`/grpc/bin go install github.com/bufbuild/buf/cmd/buf@v1.8.0 - ln -sf `which grpc_cpp_plugin` grpc/bin/protoc-gen-grpc-cpp +$(TOOL_BIN)/protoc-gen-grpc-cpp: + mkdir -p "$(TOOL_BIN)" + which grpc_cpp_plugin && ln -sf `which grpc_cpp_plugin` $(TOOL_BIN)/protoc-gen-grpc-cpp -buf: bufsetup - PATH="${PATH}:`pwd`/grpc/bin" buf generate --template ./buf/buf.gen.yaml buf.build/viamrobotics/api - PATH="${PATH}:`pwd`/grpc/bin" buf generate --template ./buf/buf.grpc.gen.yaml buf.build/viamrobotics/api - PATH="${PATH}:`pwd`/grpc/bin" buf generate --template ./buf/buf.gen.yaml buf.build/googleapis/googleapis +buf: $(TOOL_BIN)/buf $(TOOL_BIN)/protoc-gen-grpc-cpp + buf generate --template ./buf/buf.gen.yaml buf.build/viamrobotics/api + buf generate --template ./buf/buf.grpc.gen.yaml buf.build/viamrobotics/api + buf generate --template ./buf/buf.gen.yaml buf.build/googleapis/googleapis clean: - rm -rf grpc - rm -rf bin - rm -rf viam-cartographer/build - rm -rf viam-cartographer/cartographer/build + rm -rf grpc bin viam-cartographer/build clean-all: git clean -fxd + cd viam-cartographer/cartographer && git checkout . && git clean -fxd ensure-submodule-initialized: @if [ ! -d "viam-cartographer/cartographer/cartographer" ]; then \ @@ -38,21 +46,8 @@ ensure-submodule-initialized: else \ echo "Submodule found successfully"; \ fi - -lint-setup-cpp: -ifeq ("Darwin", "$(shell uname -s)") - brew install clang-format -else - sudo apt-get install -y clang-format -endif - -lint-setup-go: - GOBIN=`pwd`/$(TOOL_BIN) go install \ - github.com/edaniels/golinters/cmd/combined \ - github.com/golangci/golangci-lint/cmd/golangci-lint \ - github.com/rhysd/actionlint/cmd/actionlint - -lint-setup: lint-setup-cpp lint-setup-go + grep -q viam-patched viam-cartographer/cartographer/CMakeLists.txt || \ + (cd viam-cartographer/cartographer && git checkout . && git apply ../cartographer_patches/carto.patch) lint-cpp: find . -type f -not -path \ @@ -63,42 +58,46 @@ lint-cpp: -and \( -iname '*.h' -o -iname '*.cpp' -o -iname '*.cc' \) \ | xargs clang-format -i --style="{BasedOnStyle: Google, IndentWidth: 4}" -lint-go: +lint-go: $(TOOL_BIN)/combined $(TOOL_BIN)/golangci-lint $(TOOL_BIN)/actionlint go vet -vettool=$(TOOL_BIN)/combined ./... - GOGC=50 $(TOOL_BIN)/golangci-lint run -v --fix --config=./etc/golangci.yaml - PATH=$(PATH_WITH_TOOLS) actionlint + GOGC=50 golangci-lint run -v --fix --config=./etc/golangci.yaml + actionlint + +$(TOOL_BIN)/combined $(TOOL_BIN)/golangci-lint $(TOOL_BIN)/actionlint: + go install \ + github.com/edaniels/golinters/cmd/combined \ + github.com/golangci/golangci-lint/cmd/golangci-lint \ + github.com/rhysd/actionlint/cmd/actionlint lint: ensure-submodule-initialized lint-cpp lint-go -setup: ensure-submodule-initialized -ifeq ("Darwin", "$(shell uname -s)") - cd viam-cartographer/scripts && ./setup_cartographer_macos.sh +setup: install-dependencies ensure-submodule-initialized artifact-pull + +install-dependencies: +ifneq (, $(shell which brew)) + brew update + brew install abseil boost ceres-solver protobuf ninja cairo googletest lua@5.3 pkg-config cmake go@1.20 grpc clang-format + brew link lua@5.3 + brew install openssl@3 eigen gflags glog suite-sparse sphinx-doc pcl nlopt-static +else ifneq (, $(shell which apt-get)) + $(warning "Installing cartographer external dependencies via APT.") + $(warning "Packages may be too old to work with this project.") + sudo apt-get update + sudo apt-get install -y cmake ninja-build libgmock-dev libboost-iostreams-dev liblua5.3-dev libcairo2-dev python3-sphinx libnlopt-dev \ + libabsl-dev libceres-dev libprotobuf-dev protobuf-compiler protobuf-compiler-grpc libpcl-dev libgrpc-dev libgrpc++-dev clang-format else - cd viam-cartographer/scripts && ./setup_cartographer_linux.sh -endif - @make artifact-pull - -build: build-module -ifneq ($(wildcard viam-cartographer/cartographer/build/.),) - cd viam-cartographer && ./scripts/build_viam_cartographer.sh -else - cd viam-cartographer && ./scripts/build_cartographer.sh && ./scripts/build_viam_cartographer.sh + $(error "Unsupported system. Only apt and brew currently supported.") endif -build-debug: build-module -ifneq ($(wildcard viam-cartographer/cartographer/build/.),) - cd viam-cartographer && ./scripts/build_viam_cartographer_debug.sh -else - cd viam-cartographer && ./scripts/build_cartographer.sh && ./scripts/build_viam_cartographer_debug.sh -endif +build: ensure-submodule-initialized buf build-module + cd viam-cartographer && cmake -Bbuild -G Ninja ${EXTRA_CMAKE_FLAGS} && cmake --build build + +build-debug: EXTRA_CMAKE_FLAGS += -DCMAKE_BUILD_TYPE=Debug -DFORCE_DEBUG_BUILD=True +build-debug: build build-module: mkdir -p bin && go build $(GO_BUILD_LDFLAGS) -o bin/cartographer-module module/main.go -install-lua-files: - sudo mkdir -p /usr/local/share/cartographer/lua_files/ - sudo cp viam-cartographer/lua_files/* /usr/local/share/cartographer/lua_files/ - test-cpp: viam-cartographer/build/unit_tests -p -l all @@ -122,7 +121,11 @@ test-go: test: test-cpp test-go -install: +install-lua-files: + sudo mkdir -p /usr/local/share/cartographer/lua_files/ + sudo cp viam-cartographer/lua_files/* /usr/local/share/cartographer/lua_files/ + +install: install-lua-files sudo rm -f /usr/local/bin/carto_grpc_server sudo rm -f /usr/local/bin/cartographer-module sudo cp viam-cartographer/build/carto_grpc_server /usr/local/bin/carto_grpc_server diff --git a/README.md b/README.md index d5d9b90f..409b858f 100644 --- a/README.md +++ b/README.md @@ -84,15 +84,11 @@ These containers are set to persist between sessions via the `persistent` parame #### Setup, build, and run the binary ```bash -# Setup the gRPC files -make bufinstall && make buf -# Install dependencies +# Install dependencies using brew (or apt-get) make setup -# Build & install the binary +# Build make build -# Install lua files -make install-lua-files -# Install the cartographer-module binary +# Install lua files and binaries to /usr/local make install # Run the binary cartographer-module diff --git a/cartofacade/cgo_api.go b/cartofacade/cgo_api.go index b98d2718..d2d90ae5 100644 --- a/cartofacade/cgo_api.go +++ b/cartofacade/cgo_api.go @@ -8,7 +8,7 @@ package cartofacade #cgo CFLAGS: -I../viam-cartographer/src/carto_facade // the libraries that need to be linked can be derived from line 258 of the build.ninja file that is autogenerated during make build - #cgo LDFLAGS: -L../viam-cartographer/build -L../viam-cartographer/cartographer/build -lviam-cartographer -lcartographer -ldl -lm -labsl_hash -labsl_city -labsl_bad_optional_access -labsl_strerror -labsl_str_format_internal -labsl_synchronization -labsl_strings -labsl_throw_delegate -lcairo -llua5.3 -lstdc++ -lceres -lprotobuf -lglog -lboost_filesystem -lboost_iostreams -lpcl_io -lpcl_common -labsl_raw_hash_set + #cgo LDFLAGS: -L../viam-cartographer/build -L../viam-cartographer/build/cartographer -lviam-cartographer -lcartographer -ldl -lm -labsl_hash -labsl_city -labsl_bad_optional_access -labsl_strerror -labsl_str_format_internal -labsl_synchronization -labsl_strings -labsl_throw_delegate -lcairo -llua5.3 -lstdc++ -lceres -lprotobuf -lglog -lboost_filesystem -lboost_iostreams -lpcl_io -lpcl_common -labsl_raw_hash_set #include "../viam-cartographer/src/carto_facade/carto_facade.h" diff --git a/etc/packaging/appimages/cartographer-module-aarch64.yml b/etc/packaging/appimages/cartographer-module-aarch64.yml index 5a9ea1db..3da9c741 100644 --- a/etc/packaging/appimages/cartographer-module-aarch64.yml +++ b/etc/packaging/appimages/cartographer-module-aarch64.yml @@ -7,13 +7,10 @@ script: - mkdir -p $TARGET_APPDIR/usr/share/cartographer/lua_files - cp ../../../bin/cartographer-module $TARGET_APPDIR/usr/bin/ - cp ../../../viam-cartographer/build/carto_grpc_server $TARGET_APPDIR/usr/bin/ - - cp ../../../viam-cartographer/cartographer/build/libcartographer.a $TARGET_APPDIR/usr/lib/ - - cp ../../../viam-cartographer/build/libviam-cartographer.a $TARGET_APPDIR/usr/lib/ - cp ../../../viam-cartographer/lua_files/* $TARGET_APPDIR/usr/share/cartographer/lua_files - mkdir -p $TARGET_APPDIR/usr/share/icons/viam/256x256/apps/ - cp ./viam-server.png $TARGET_APPDIR/usr/share/icons/viam/256x256/apps/viam-server.png - - go install github.com/Otterverse/aix@latest - - cp `go env GOPATH`/bin/aix $TARGET_APPDIR/usr/bin/ + - GOBIN=$TARGET_APPDIR/usr/bin/ go install github.com/Otterverse/aix@latest - chmod 755 $TARGET_APPDIR/usr/bin/* AppDir: diff --git a/etc/packaging/appimages/cartographer-module-x86_64.yml b/etc/packaging/appimages/cartographer-module-x86_64.yml index b113a4f2..18115da4 100644 --- a/etc/packaging/appimages/cartographer-module-x86_64.yml +++ b/etc/packaging/appimages/cartographer-module-x86_64.yml @@ -7,13 +7,10 @@ script: - mkdir -p $TARGET_APPDIR/usr/share/cartographer/lua_files - cp ../../../bin/cartographer-module $TARGET_APPDIR/usr/bin/ - cp ../../../viam-cartographer/build/carto_grpc_server $TARGET_APPDIR/usr/bin/ - - cp ../../../viam-cartographer/cartographer/build/libcartographer.a $TARGET_APPDIR/usr/lib/ - - cp ../../../viam-cartographer/build/libviam-cartographer.a $TARGET_APPDIR/usr/lib/ - cp ../../../viam-cartographer/lua_files/* $TARGET_APPDIR/usr/share/cartographer/lua_files - mkdir -p $TARGET_APPDIR/usr/share/icons/viam/256x256/apps/ - cp ./viam-server.png $TARGET_APPDIR/usr/share/icons/viam/256x256/apps/viam-server.png - - go install github.com/Otterverse/aix@latest - - cp `go env GOPATH`/bin/aix $TARGET_APPDIR/usr/bin/ + - GOBIN=$TARGET_APPDIR/usr/bin/ go install github.com/Otterverse/aix@latest - chmod 755 $TARGET_APPDIR/usr/bin/* AppDir: diff --git a/viam-cartographer/CMakeLists.txt b/viam-cartographer/CMakeLists.txt index 8530008d..ca81a9f3 100644 --- a/viam-cartographer/CMakeLists.txt +++ b/viam-cartographer/CMakeLists.txt @@ -1,237 +1,80 @@ cmake_minimum_required(VERSION 3.2) project(viam-cartographer) -add_definitions(-DABSL_LEGACY_THREAD_ANNOTATIONS) +set (CMAKE_CXX_STANDARD 17) -set(VIAM_CARTOGRAPHER_MAJOR_VERSION 1) -set(VIAM_CARTOGRAPHER_MINOR_VERSION 0) -set(VIAM_CARTOGRAPHER_PATCH_VERSION 0) -set(VIAM_CARTOGRAPHER_VERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION}.${CARTOGRAPHER_PATCH_VERSION}) -set(VIAM_CARTOGRAPHER_SOVERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION}) +if(DEFINED ENV{API_SOURCE_DIR}) + set(API_SOURCE_DIR $ENV{API_SOURCE_DIR}) +else() + set(API_SOURCE_DIR ${PROJECT_SOURCE_DIR}/..) +endif() +set(GRPC_SRC_DIR ${API_SOURCE_DIR}/grpc/cpp/gen) -include("${PROJECT_SOURCE_DIR}/cmake/functions.cmake") +if(NOT EXISTS ${GRPC_SRC_DIR}) +message(FATAL_ERROR + "RDK C++ gRPC gen files not found. Please specify the absolute path to your API_SOURCE_DIR e.g. 'export API_SOURCE_DIR=/home/user/api'" +) +endif() -find_package(absl REQUIRED) -find_package(Ceres REQUIRED COMPONENTS SuiteSparse) -find_package(Lua 5.2 REQUIRED) +message("PROJECT SOURCE DIR: " ${PROJECT_SOURCE_DIR}) +message("API SOURCE DIR: " ${API_SOURCE_DIR}) +message("GRPC SOURCE DIR: " ${GRPC_SRC_DIR}) -# include files/library from cartographer submodule -include_directories(${PROJECT_SOURCE_DIR}/cartographer) -include_directories(${PROJECT_SOURCE_DIR}/cartographer/build) -link_libraries(${PROJECT_SOURCE_DIR}/cartographer/build/libcartographer.a) -find_package(PCL REQUIRED) -include_directories(${PCL_INCLUDE_DIRS}) -link_directories(${PCL_LIBRARY_DIRS}) -add_definitions(${PCL_DEFINITIONS}) +# dependencies +add_subdirectory(cartographer) -find_package(OpenSSL REQUIRED) +find_package(PkgConfig REQUIRED) +pkg_check_modules(GRPCPP REQUIRED grpc++) -if(WIN32) - # On Windows, Protobuf is incorrectly found by the bundled CMake module, so prefer native CMake config. - set(protobuf_MODULE_COMPATIBLE TRUE CACHE INTERNAL "") - find_package(Protobuf 3.0.0 CONFIG) -else() - find_package(Protobuf 3.4.0 REQUIRED) -endif() +find_package(absl REQUIRED) +add_definitions(-DABSL_LEGACY_THREAD_ANNOTATIONS) + +find_package(PCL REQUIRED) -include(FindPkgConfig) -if (NOT WIN32) - PKG_SEARCH_MODULE(CAIRO REQUIRED cairo>=1.12.16) -else() - find_library(CAIRO_LIBRARIES cairo) -endif() +# build sources list file(GLOB_RECURSE ALL_VIAM_HDRS "src/*.h") file(GLOB_RECURSE ALL_VIAM_SRCS "src/*.cc") file(GLOB_RECURSE ALL_VIAM_C_SRCS "src/*.c") file(GLOB_RECURSE ALL_VIAM_TEST_SRCS "src/*_test.cc") list(REMOVE_ITEM ALL_VIAM_SRCS ${ALL_VIAM_TEST_SRCS}) - -if(DEFINED ENV{API_SOURCE_DIR}) - set(API_SOURCE_DIR $ENV{API_SOURCE_DIR}) -else() - set(API_SOURCE_DIR ${PROJECT_SOURCE_DIR}/..) +# remove dotfiles/-folders that could potentially pollute the build. +file(GLOB_RECURSE ALL_DOTFILES ".*/*") +if (ALL_DOTFILES) + list(REMOVE_ITEM ALL_VIAM_HDRS ${ALL_DOTFILES}) + list(REMOVE_ITEM ALL_VIAM_SRCS ${ALL_DOTFILES}) endif() -set(SRCDIR ${API_SOURCE_DIR}/grpc/cpp/gen) -message("PROJECT SOURCE DIR: " ${PROJECT_SOURCE_DIR}) -message("API SOURCE DIR: " ${API_SOURCE_DIR}) -message("GRPC SOURCE DIR: " ${SRCDIR}) - -if(EXISTS ${SRCDIR}) - find_package(PkgConfig REQUIRED) - - pkg_check_modules(GRPC REQUIRED grpc) - pkg_check_modules(GRPCPP REQUIRED grpc++) - - set(SOURCES ${SRCDIR}/service/slam/v1/slam.grpc.pb.cc - ${SRCDIR}/service/slam/v1/slam.pb.cc) - set(SOURCES ${SOURCES} ${SRCDIR}/common/v1/common.grpc.pb.cc - ${SRCDIR}/common/v1/common.pb.cc) - set(SOURCES ${SOURCES} ${SRCDIR}/google/api/annotations.pb.cc - ${SRCDIR}/google/api/httpbody.pb.cc) - set(SOURCES ${SOURCES} ${SRCDIR}/google/api/http.pb.cc) - - - # Remove dotfiles/-folders that could potentially pollute the build. - file(GLOB_RECURSE ALL_DOTFILES ".*/*") - if (ALL_DOTFILES) - list(REMOVE_ITEM ALL_VIAM_HDRS ${ALL_DOTFILES}) - list(REMOVE_ITEM ALL_VIAM_SRCS ${ALL_DOTFILES}) - endif() - - list(APPEND ALL_LIBRARY_HDRS ${ALL_VIAM_HDRS}) - list(APPEND ALL_LIBRARY_SRCS ${ALL_VIAM_SRCS}) - list(APPEND ALL_LIBRARY_SRCS ${ALL_VIAM_C_SRCS}) - - - add_library(${PROJECT_NAME} STATIC ${ALL_LIBRARY_HDRS} ${ALL_LIBRARY_SRCS} ${SOURCES}) - target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC ${SRCDIR}) - - configure_file( - ${PROJECT_SOURCE_DIR}/cartographer/cartographer/common/config.h.cmake - ${PROJECT_BINARY_DIR}/common/config.h) - - message("PROJECT_SOURCE_DIR and PROJECT_BINARY_DIR: ${PROJECT_SOURCE_DIR}, ${PROJECT_BINARY_DIR}") - - google_binary(carto_grpc_server - SRCS - src/main.cc - ) - - google_binary(unit_tests - SRCS - ${ALL_VIAM_TEST_SRCS} - ) - - target_link_libraries(carto_grpc_server PUBLIC - ${GRPC_LIBRARIES} - ${GRPCPP_LIBRARIES} - ${PROTOBUF_LIBRARIES} - ${JPEG_LIBRARIES}) - target_include_directories(carto_grpc_server SYSTEM PUBLIC - ${SRCDIR} - ${GRPC_INCLUDE_DIRS} - ${GRPCPP_INCLUDE_DIRS} - ${PROTOBUF_INCLUDE_DIRS} - ${JPEG_INCLUDE_DIRS}) - target_compile_options(carto_grpc_server PUBLIC - ${GRPC_CFLAGS_OTHER} - ${GRPCPP_CFLAGS_OTHER} - ${PROTOBUF_CFLAGS_OTHER} - ${JPEG_CFLAGS_OTHER}) - - target_link_libraries(unit_tests PUBLIC - ${GRPC_LIBRARIES} - ${GRPCPP_LIBRARIES} - ${PROTOBUF_LIBRARIES} - ${JPEG_LIBRARIES}) - target_include_directories(unit_tests SYSTEM PUBLIC - ${SRCDIR} - ${GRPC_INCLUDE_DIRS} - ${GRPCPP_INCLUDE_DIRS} - ${PROTOBUF_INCLUDE_DIRS} - ${JPEG_INCLUDE_DIRS}) - target_compile_options(unit_tests PUBLIC - ${GRPC_CFLAGS_OTHER} - ${GRPCPP_CFLAGS_OTHER} - ${PROTOBUF_CFLAGS_OTHER} - ${JPEG_CFLAGS_OTHER}) - - target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - "${CERES_INCLUDE_DIRS}") - target_link_libraries(${PROJECT_NAME} PUBLIC ${CERES_LIBRARIES}) - - target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - "${LUA_INCLUDE_DIR}") - target_link_libraries(${PROJECT_NAME} PUBLIC ${LUA_LIBRARIES}) - - if (WIN32) - find_package(glog REQUIRED) - set(GLOG_LIBRARY glog::glog) - else() - set(GLOG_LIBRARY glog) - endif() - - target_link_libraries(${PROJECT_NAME} PUBLIC ${GLOG_LIBRARY}) - target_link_libraries(${PROJECT_NAME} PUBLIC gflags) - if(WIN32) - # Needed to fix conflict with MSVC's error macro. - target_compile_definitions(${PROJECT_NAME} PUBLIC -DGLOG_NO_ABBREVIATED_SEVERITIES) - endif() - if(MSVC) - # Needed for VS 2017 5.8 - target_compile_definitions(${PROJECT_NAME} PUBLIC -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_USE_MATH_DEFINES) - endif() - - if("${CAIRO_INCLUDE_DIRS}") - target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - "${CAIRO_INCLUDE_DIRS}") - endif() - - target_link_libraries(${PROJECT_NAME} PUBLIC ${CAIRO_LIBRARIES}) - target_link_libraries(${PROJECT_NAME} PUBLIC ${PCL_LIBRARIES}) - - target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY} - absl::algorithm - absl::base - absl::debugging - absl::flat_hash_map - absl::memory - absl::meta - absl::numeric - absl::str_format - absl::strings - absl::synchronization - absl::time - absl::utility - ) - if (NOT WIN32) - target_link_libraries(${PROJECT_NAME} PUBLIC pthread) - endif() - - set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}") - set_target_properties(${PROJECT_NAME} PROPERTIES - COMPILE_FLAGS ${TARGET_COMPILE_FLAGS}) - - # Add the binary directory first, so that port.h is included after it has - # been generated. - target_include_directories(${PROJECT_NAME} PUBLIC - $ - $ - $ - ) - - install( - TARGETS ${PROJECT_NAME} - EXPORT CartographerExport - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - RUNTIME DESTINATION bin - ) - - foreach(HDR ${INSTALL_SOURCE_HDRS}) - file(RELATIVE_PATH REL_FIL ${PROJECT_SOURCE_DIR} ${HDR}) - get_filename_component(DIR ${REL_FIL} DIRECTORY) - install( - FILES ${HDR} - DESTINATION include/${DIR} - ) - endforeach() - - foreach(HDR ${INSTALL_GENERATED_HDRS}) - file(RELATIVE_PATH REL_FIL ${PROJECT_BINARY_DIR} ${HDR}) - get_filename_component(DIR ${REL_FIL} DIRECTORY) - install( - FILES ${HDR} - DESTINATION include/${DIR} - ) - endforeach() -else() -message( - FATAL_ERROR - "RDK C++ gRPC gen files not found. Please specify the absolute path to your API_SOURCE_DIR e.g. 'export API_SOURCE_DIR=/home/user/api'" +# combine sources +list(APPEND ALL_LIBRARY_HDRS ${ALL_VIAM_HDRS}) +list(APPEND ALL_LIBRARY_SRCS ${ALL_VIAM_SRCS}) +list(APPEND ALL_LIBRARY_SRCS ${ALL_VIAM_C_SRCS}) + +# add grpc/API sources +set(GRPC_SRCS + ${GRPC_SRC_DIR}/service/slam/v1/slam.grpc.pb.cc + ${GRPC_SRC_DIR}/service/slam/v1/slam.pb.cc + ${GRPC_SRC_DIR}/common/v1/common.grpc.pb.cc + ${GRPC_SRC_DIR}/common/v1/common.pb.cc + ${GRPC_SRC_DIR}/google/api/annotations.pb.cc + ${GRPC_SRC_DIR}/google/api/httpbody.pb.cc + ${GRPC_SRC_DIR}/google/api/http.pb.cc ) -endif() + +# the viam-cartographer library +add_library(${PROJECT_NAME} STATIC ${ALL_LIBRARY_HDRS} ${ALL_LIBRARY_SRCS} ${GRPC_SRCS}) +target_include_directories(${PROJECT_NAME} PUBLIC $) +target_link_libraries(${PROJECT_NAME} PUBLIC + cartographer + ${GRPCPP_LIBRARIES} + ${PCL_LIBRARIES} +) + +# executables +add_executable(carto_grpc_server src/main.cc) +target_link_libraries(carto_grpc_server PUBLIC viam-cartographer) + +add_executable(unit_tests ${ALL_VIAM_TEST_SRCS}) +target_link_libraries(unit_tests PUBLIC viam-cartographer) diff --git a/viam-cartographer/cartographer_build_utils/CMakeLists.txt b/viam-cartographer/cartographer_build_utils/CMakeLists.txt deleted file mode 100644 index f0906075..00000000 --- a/viam-cartographer/cartographer_build_utils/CMakeLists.txt +++ /dev/null @@ -1,246 +0,0 @@ -cmake_minimum_required(VERSION 3.2) - -project(cartographer) -add_definitions(-DABSL_LEGACY_THREAD_ANNOTATIONS) - -set(CARTOGRAPHER_MAJOR_VERSION 1) -set(CARTOGRAPHER_MINOR_VERSION 0) -set(CARTOGRAPHER_PATCH_VERSION 0) -set(CARTOGRAPHER_VERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION}.${CARTOGRAPHER_PATCH_VERSION}) -set(CARTOGRAPHER_SOVERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION}) - -include("${PROJECT_SOURCE_DIR}/cmake/functions.cmake") -google_initialize_cartographer_project() - -find_package(absl REQUIRED) -set(BOOST_COMPONENTS iostreams) -if(WIN32) - list(APPEND BOOST_COMPONENTS zlib) - set(Boost_USE_STATIC_LIBS FALSE) -endif() -find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS}) -find_package(Ceres REQUIRED COMPONENTS SuiteSparse) -find_package(Eigen3 REQUIRED) -find_package(Lua 5.2 REQUIRED) - -if(WIN32) - # On Windows, Protobuf is incorrectly found by the bundled CMake module, so prefer native CMake config. - set(protobuf_MODULE_COMPATIBLE TRUE CACHE INTERNAL "") - find_package(Protobuf 3.0.0 CONFIG) -else() - find_package(Protobuf 3.4.0 REQUIRED) -endif() - -include(FindPkgConfig) -if (NOT WIN32) - PKG_SEARCH_MODULE(CAIRO REQUIRED cairo>=1.12.16) -else() - find_library(CAIRO_LIBRARIES cairo) -endif() - -# Install catkin package.xml -install(FILES package.xml DESTINATION share/cartographer) - -set(CARTOGRAPHER_CONFIGURATION_FILES_DIRECTORY ${CMAKE_INSTALL_PREFIX}/share/cartographer/configuration_files - CACHE PATH ".lua configuration files directory") - -install(DIRECTORY configuration_files DESTINATION share/cartographer/) - -install(DIRECTORY cmake DESTINATION share/cartographer/) - -file(GLOB_RECURSE ALL_LIBRARY_HDRS "cartographer/*.h") -file(GLOB_RECURSE ALL_LIBRARY_SRCS "cartographer/*.cc") -file(GLOB_RECURSE ALL_EXECUTABLES "cartographer/*_main.cc") - -# Remove dotfiles/-folders that could potentially pollute the build. -file(GLOB_RECURSE ALL_DOTFILES ".*/*") -if (ALL_DOTFILES) - list(REMOVE_ITEM ALL_LIBRARY_HDRS ${ALL_DOTFILES}) - list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_DOTFILES}) - list(REMOVE_ITEM ALL_EXECUTABLES ${ALL_DOTFILES}) -endif() -list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_EXECUTABLES}) -file(GLOB_RECURSE ALL_GRPC_FILES "cartographer/cloud/*") -file(GLOB_RECURSE ALL_PROMETHEUS_FILES "cartographer/cloud/metrics/prometheus/*") -list(REMOVE_ITEM ALL_GRPC_FILES ${ALL_PROMETHEUS_FILES}) - -# GRPC files are part of the cartographer library - but we don't need them. -list(REMOVE_ITEM ALL_LIBRARY_HDRS ${ALL_GRPC_FILES}) -list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_GRPC_FILES}) -list(REMOVE_ITEM TEST_LIBRARY_HDRS ${ALL_GRPC_FILES}) -list(REMOVE_ITEM TEST_LIBRARY_SRCS ${ALL_GRPC_FILES}) -list(REMOVE_ITEM ALL_TESTS ${ALL_GRPC_FILES}) -list(REMOVE_ITEM ALL_EXECUTABLES ${ALL_GRPC_FILES}) - -# Prometheus files are part of the cartographer library - but we don't need them. -list(REMOVE_ITEM ALL_LIBRARY_HDRS ${ALL_PROMETHEUS_FILES}) -list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_PROMETHEUS_FILES}) -list(REMOVE_ITEM TEST_LIBRARY_HDRS ${ALL_PROMETHEUS_FILES}) -list(REMOVE_ITEM TEST_LIBRARY_SRCS ${ALL_PROMETHEUS_FILES}) -list(REMOVE_ITEM ALL_TESTS ${ALL_PROMETHEUS_FILES}) -list(REMOVE_ITEM ALL_EXECUTABLES ${ALL_PROMETHEUS_FILES}) - -set(INSTALL_SOURCE_HDRS ${ALL_LIBRARY_HDRS} ${TEST_LIBRARY_HDRS}) -# file(GLOB_RECURSE INTERNAL_HDRS "cartographer/*/internal/*.h") -# list(REMOVE_ITEM INSTALL_SOURCE_HDRS ${INTERNAL_HDRS}) - -file(GLOB_RECURSE ALL_PROTOS "cartographer/*.proto") -file(GLOB_RECURSE ALL_GRPC_SERVICES "cartographer/*_service.proto") -list(REMOVE_ITEM ALL_PROTOS ALL_GRPC_SERVICES) -if (NOT ${BUILD_GRPC}) - list(REMOVE_ITEM ALL_PROTOS ${ALL_GRPC_FILES}) -endif() - -# TODO(cschuet): Move proto compilation to separate function. -set(ALL_PROTO_SRCS) -set(ALL_PROTO_HDRS) -foreach(ABS_FIL ${ALL_PROTOS}) - file(RELATIVE_PATH REL_FIL ${PROJECT_SOURCE_DIR} ${ABS_FIL}) - get_filename_component(DIR ${REL_FIL} DIRECTORY) - get_filename_component(FIL_WE ${REL_FIL} NAME_WE) - - list(APPEND ALL_PROTO_SRCS "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.cc") - list(APPEND ALL_PROTO_HDRS "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.h") - - add_custom_command( - OUTPUT "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.cc" - "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.h" - COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} - ARGS --cpp_out ${PROJECT_BINARY_DIR} -I - ${PROJECT_SOURCE_DIR} ${ABS_FIL} - DEPENDS ${ABS_FIL} - COMMENT "Running C++ protocol buffer compiler on ${ABS_FIL}" - VERBATIM - ) -endforeach() -set_source_files_properties(${ALL_PROTO_SRCS} ${ALL_PROTO_HDRS} PROPERTIES GENERATED TRUE) -list(APPEND ALL_LIBRARY_HDRS ${ALL_PROTO_HDRS}) -list(APPEND ALL_LIBRARY_SRCS ${ALL_PROTO_SRCS}) - -set(INSTALL_GENERATED_HDRS ${ALL_PROTO_HDRS} ${ALL_GRPC_SERVICE_HDRS}) - -add_library(${PROJECT_NAME} STATIC ${ALL_LIBRARY_HDRS} ${ALL_LIBRARY_SRCS}) - -configure_file( - ${PROJECT_SOURCE_DIR}/cartographer/common/config.h.cmake - ${PROJECT_BINARY_DIR}/cartographer/common/config.h) - -target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - "${EIGEN3_INCLUDE_DIR}") -target_link_libraries(${PROJECT_NAME} PUBLIC ${EIGEN3_LIBRARIES}) - -target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - "${CERES_INCLUDE_DIRS}") -target_link_libraries(${PROJECT_NAME} PUBLIC ${CERES_LIBRARIES}) - -target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - "${LUA_INCLUDE_DIR}") -target_link_libraries(${PROJECT_NAME} PUBLIC ${LUA_LIBRARIES}) - -target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - "${Boost_INCLUDE_DIRS}") -target_link_libraries(${PROJECT_NAME} PUBLIC ${Boost_LIBRARIES}) - -if (WIN32) - find_package(glog REQUIRED) - set(GLOG_LIBRARY glog::glog) -else() - set(GLOG_LIBRARY glog) -endif() - -target_link_libraries(${PROJECT_NAME} PUBLIC ${GLOG_LIBRARY}) -target_link_libraries(${PROJECT_NAME} PUBLIC gflags) -if(WIN32) - # Needed to fix conflict with MSVC's error macro. - target_compile_definitions(${PROJECT_NAME} PUBLIC -DGLOG_NO_ABBREVIATED_SEVERITIES) -endif() -if(MSVC) - # Needed for VS 2017 5.8 - target_compile_definitions(${PROJECT_NAME} PUBLIC -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_USE_MATH_DEFINES) -endif() - -if("${CAIRO_INCLUDE_DIRS}") - target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - "${CAIRO_INCLUDE_DIRS}") -endif() -target_link_libraries(${PROJECT_NAME} PUBLIC ${CAIRO_LIBRARIES}) - -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} - absl::algorithm - absl::base - absl::debugging - absl::flat_hash_map - absl::memory - absl::meta - absl::numeric - absl::str_format - absl::strings - absl::synchronization - absl::time - absl::utility -) -if (NOT WIN32) - target_link_libraries(${PROJECT_NAME} PUBLIC pthread) -endif() - -set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}") -set_target_properties(${PROJECT_NAME} PROPERTIES - COMPILE_FLAGS ${TARGET_COMPILE_FLAGS}) - -# Add the binary directory first, so that port.h is included after it has -# been generated. -target_include_directories(${PROJECT_NAME} PUBLIC - $ - $ - $ -) - -install( - TARGETS ${PROJECT_NAME} - EXPORT CartographerExport - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - RUNTIME DESTINATION bin -) - -foreach(HDR ${INSTALL_SOURCE_HDRS}) - file(RELATIVE_PATH REL_FIL ${PROJECT_SOURCE_DIR} ${HDR}) - get_filename_component(DIR ${REL_FIL} DIRECTORY) - install( - FILES ${HDR} - DESTINATION include/${DIR} - ) -endforeach() - -foreach(HDR ${INSTALL_GENERATED_HDRS}) - file(RELATIVE_PATH REL_FIL ${PROJECT_BINARY_DIR} ${HDR}) - get_filename_component(DIR ${REL_FIL} DIRECTORY) - install( - FILES ${HDR} - DESTINATION include/${DIR} - ) -endforeach() - -set(CARTOGRAPHER_CMAKE_DIR share/cartographer/cmake) -include(CMakePackageConfigHelpers) -configure_package_config_file( - cartographer-config.cmake.in - ${PROJECT_BINARY_DIR}/cmake/cartographer/cartographer-config.cmake - PATH_VARS CARTOGRAPHER_CMAKE_DIR - INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/share/cartographer -) - -install( - EXPORT CartographerExport - DESTINATION share/cartographer/cmake/ - FILE CartographerTargets.cmake -) - -install( - FILES ${PROJECT_BINARY_DIR}/cmake/cartographer/cartographer-config.cmake - DESTINATION share/cartographer/ -) diff --git a/viam-cartographer/cartographer_patches/carto.patch b/viam-cartographer/cartographer_patches/carto.patch new file mode 100644 index 00000000..6d36915d --- /dev/null +++ b/viam-cartographer/cartographer_patches/carto.patch @@ -0,0 +1,304 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ef2fcb3..ba98945 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,33 +1,17 @@ +-# Copyright 2016 The Cartographer Authors +-# +-# Licensed under the Apache License, Version 2.0 (the "License"); +-# you may not use this file except in compliance with the License. +-# You may obtain a copy of the License at +-# +-# http://www.apache.org/licenses/LICENSE-2.0 +-# +-# Unless required by applicable law or agreed to in writing, software +-# distributed under the License is distributed on an "AS IS" BASIS, +-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-# See the License for the specific language governing permissions and +-# limitations under the License. +- ++# viam-patched version + cmake_minimum_required(VERSION 3.2) + + project(cartographer) ++add_definitions(-DABSL_LEGACY_THREAD_ANNOTATIONS) + + set(CARTOGRAPHER_MAJOR_VERSION 1) + set(CARTOGRAPHER_MINOR_VERSION 0) + set(CARTOGRAPHER_PATCH_VERSION 0) + set(CARTOGRAPHER_VERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION}.${CARTOGRAPHER_PATCH_VERSION}) + set(CARTOGRAPHER_SOVERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION}) +-option(BUILD_GRPC "build Cartographer gRPC support" false) +-set(CARTOGRAPHER_HAS_GRPC ${BUILD_GRPC}) +-option(BUILD_PROMETHEUS "build Prometheus monitoring support" false) + + include("${PROJECT_SOURCE_DIR}/cmake/functions.cmake") + google_initialize_cartographer_project() +-google_enable_testing() + + find_package(absl REQUIRED) + set(BOOST_COMPONENTS iostreams) +@@ -38,21 +22,14 @@ endif() + find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS}) + find_package(Ceres REQUIRED COMPONENTS SuiteSparse) + find_package(Eigen3 REQUIRED) +-find_package(LuaGoogle REQUIRED) ++find_package(Lua 5.2 REQUIRED) ++ + if(WIN32) + # On Windows, Protobuf is incorrectly found by the bundled CMake module, so prefer native CMake config. + set(protobuf_MODULE_COMPATIBLE TRUE CACHE INTERNAL "") + find_package(Protobuf 3.0.0 CONFIG) + else() +- find_package(Protobuf 3.0.0 REQUIRED) +-endif() +- +-if (${BUILD_GRPC}) +- find_package(async_grpc REQUIRED) +-endif() +- +-if(${BUILD_PROMETHEUS}) +- find_package( ZLIB REQUIRED ) ++ find_package(Protobuf 3.4.0 REQUIRED) + endif() + + include(FindPkgConfig) +@@ -62,12 +39,6 @@ else() + find_library(CAIRO_LIBRARIES cairo) + endif() + +-# Only build the documentation if we can find Sphinx. +-find_package(Sphinx) +-if(SPHINX_FOUND) +- add_subdirectory("docs") +-endif() +- + # Install catkin package.xml + install(FILES package.xml DESTINATION share/cartographer) + +@@ -80,9 +51,6 @@ install(DIRECTORY cmake DESTINATION share/cartographer/) + + file(GLOB_RECURSE ALL_LIBRARY_HDRS "cartographer/*.h") + file(GLOB_RECURSE ALL_LIBRARY_SRCS "cartographer/*.cc") +-file(GLOB_RECURSE TEST_LIBRARY_HDRS "cartographer/fake_*.h" "cartographer/*test_helpers*.h" "cartographer/mock_*.h") +-file(GLOB_RECURSE TEST_LIBRARY_SRCS "cartographer/fake_*.cc" "cartographer/*test_helpers*.cc" "cartographer/mock_*.cc") +-file(GLOB_RECURSE ALL_TESTS "cartographer/*_test.cc") + file(GLOB_RECURSE ALL_EXECUTABLES "cartographer/*_main.cc") + + # Remove dotfiles/-folders that could potentially pollute the build. +@@ -90,37 +58,32 @@ file(GLOB_RECURSE ALL_DOTFILES ".*/*") + if (ALL_DOTFILES) + list(REMOVE_ITEM ALL_LIBRARY_HDRS ${ALL_DOTFILES}) + list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_DOTFILES}) +- list(REMOVE_ITEM TEST_LIBRARY_HDRS ${ALL_DOTFILES}) +- list(REMOVE_ITEM TEST_LIBRARY_SRCS ${ALL_DOTFILES}) +- list(REMOVE_ITEM ALL_TESTS ${ALL_DOTFILES}) + list(REMOVE_ITEM ALL_EXECUTABLES ${ALL_DOTFILES}) + endif() + list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_EXECUTABLES}) +-list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_TESTS}) +-list(REMOVE_ITEM ALL_LIBRARY_HDRS ${TEST_LIBRARY_HDRS}) +-list(REMOVE_ITEM ALL_LIBRARY_SRCS ${TEST_LIBRARY_SRCS}) + file(GLOB_RECURSE ALL_GRPC_FILES "cartographer/cloud/*") + file(GLOB_RECURSE ALL_PROMETHEUS_FILES "cartographer/cloud/metrics/prometheus/*") + list(REMOVE_ITEM ALL_GRPC_FILES ${ALL_PROMETHEUS_FILES}) +-if (NOT ${BUILD_GRPC}) +- list(REMOVE_ITEM ALL_LIBRARY_HDRS ${ALL_GRPC_FILES}) +- list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_GRPC_FILES}) +- list(REMOVE_ITEM TEST_LIBRARY_HDRS ${ALL_GRPC_FILES}) +- list(REMOVE_ITEM TEST_LIBRARY_SRCS ${ALL_GRPC_FILES}) +- list(REMOVE_ITEM ALL_TESTS ${ALL_GRPC_FILES}) +- list(REMOVE_ITEM ALL_EXECUTABLES ${ALL_GRPC_FILES}) +-endif() +-if (NOT ${BUILD_PROMETHEUS}) +- list(REMOVE_ITEM ALL_LIBRARY_HDRS ${ALL_PROMETHEUS_FILES}) +- list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_PROMETHEUS_FILES}) +- list(REMOVE_ITEM TEST_LIBRARY_HDRS ${ALL_PROMETHEUS_FILES}) +- list(REMOVE_ITEM TEST_LIBRARY_SRCS ${ALL_PROMETHEUS_FILES}) +- list(REMOVE_ITEM ALL_TESTS ${ALL_PROMETHEUS_FILES}) +- list(REMOVE_ITEM ALL_EXECUTABLES ${ALL_PROMETHEUS_FILES}) +-endif() ++ ++# GRPC files are part of the cartographer library - but we don't need them. ++list(REMOVE_ITEM ALL_LIBRARY_HDRS ${ALL_GRPC_FILES}) ++list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_GRPC_FILES}) ++list(REMOVE_ITEM TEST_LIBRARY_HDRS ${ALL_GRPC_FILES}) ++list(REMOVE_ITEM TEST_LIBRARY_SRCS ${ALL_GRPC_FILES}) ++list(REMOVE_ITEM ALL_TESTS ${ALL_GRPC_FILES}) ++list(REMOVE_ITEM ALL_EXECUTABLES ${ALL_GRPC_FILES}) ++ ++# Prometheus files are part of the cartographer library - but we don't need them. ++list(REMOVE_ITEM ALL_LIBRARY_HDRS ${ALL_PROMETHEUS_FILES}) ++list(REMOVE_ITEM ALL_LIBRARY_SRCS ${ALL_PROMETHEUS_FILES}) ++list(REMOVE_ITEM TEST_LIBRARY_HDRS ${ALL_PROMETHEUS_FILES}) ++list(REMOVE_ITEM TEST_LIBRARY_SRCS ${ALL_PROMETHEUS_FILES}) ++list(REMOVE_ITEM ALL_TESTS ${ALL_PROMETHEUS_FILES}) ++list(REMOVE_ITEM ALL_EXECUTABLES ${ALL_PROMETHEUS_FILES}) ++ + set(INSTALL_SOURCE_HDRS ${ALL_LIBRARY_HDRS} ${TEST_LIBRARY_HDRS}) +-file(GLOB_RECURSE INTERNAL_HDRS "cartographer/*/internal/*.h") +-list(REMOVE_ITEM INSTALL_SOURCE_HDRS ${INTERNAL_HDRS}) ++# file(GLOB_RECURSE INTERNAL_HDRS "cartographer/*/internal/*.h") ++# list(REMOVE_ITEM INSTALL_SOURCE_HDRS ${INTERNAL_HDRS}) + + file(GLOB_RECURSE ALL_PROTOS "cartographer/*.proto") + file(GLOB_RECURSE ALL_GRPC_SERVICES "cartographer/*_service.proto") +@@ -155,33 +118,6 @@ set_source_files_properties(${ALL_PROTO_SRCS} ${ALL_PROTO_HDRS} PROPERTIES GENER + list(APPEND ALL_LIBRARY_HDRS ${ALL_PROTO_HDRS}) + list(APPEND ALL_LIBRARY_SRCS ${ALL_PROTO_SRCS}) + +-if(${BUILD_GRPC}) +- set(ALL_GRPC_SERVICE_SRCS) +- set(ALL_GRPC_SERVICE_HDRS) +- foreach(ABS_FIL ${ALL_GRPC_SERVICES}) +- file(RELATIVE_PATH REL_FIL ${PROJECT_SOURCE_DIR} ${ABS_FIL}) +- get_filename_component(DIR ${REL_FIL} DIRECTORY) +- get_filename_component(FIL_WE ${REL_FIL} NAME_WE) +- +- list(APPEND ALL_GRPC_SERVICE_SRCS "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.cc") +- list(APPEND ALL_GRPC_SERVICE_HDRS "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.h") +- +- add_custom_command( +- OUTPUT "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.cc" +- "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.h" +- COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} +- ARGS --cpp_out ${PROJECT_BINARY_DIR} +- -I ${PROJECT_SOURCE_DIR} +- ${ABS_FIL} +- DEPENDS ${ABS_FIL} +- COMMENT "Running C++ protocol buffer compiler on ${ABS_FIL}" +- VERBATIM +- ) +- endforeach() +- set_source_files_properties(${ALL_GRPC_SERVICE_SRCS} ${ALL_GRPC_SERVICE_HDRS} PROPERTIES GENERATED TRUE) +- list(APPEND ALL_LIBRARY_HDRS ${ALL_GRPC_SERVICE_HDRS}) +- list(APPEND ALL_LIBRARY_SRCS ${ALL_GRPC_SERVICE_SRCS}) +-endif() + set(INSTALL_GENERATED_HDRS ${ALL_PROTO_HDRS} ${ALL_GRPC_SERVICE_HDRS}) + + add_library(${PROJECT_NAME} STATIC ${ALL_LIBRARY_HDRS} ${ALL_LIBRARY_SRCS}) +@@ -190,46 +126,10 @@ 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_pbstream +- SRCS +- cartographer/io/pbstream_main.cc +-) +- +-google_binary(cartographer_print_configuration +- SRCS +- cartographer/common/print_configuration_main.cc +-) +- +-if(${BUILD_GRPC}) +- google_binary(cartographer_grpc_server +- SRCS +- cartographer/cloud/map_builder_server_main.cc +- ) +- target_link_libraries(cartographer_grpc_server PUBLIC grpc++) +- target_link_libraries(cartographer_grpc_server PUBLIC async_grpc) +- if(${BUILD_PROMETHEUS}) +- target_link_libraries(cartographer_grpc_server PUBLIC ${ZLIB_LIBRARIES}) +- target_link_libraries(cartographer_grpc_server PUBLIC prometheus-cpp-core) +- target_link_libraries(cartographer_grpc_server PUBLIC prometheus-cpp-pull) +- endif() +-endif() +- + target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC + "${EIGEN3_INCLUDE_DIR}") + target_link_libraries(${PROJECT_NAME} PUBLIC ${EIGEN3_LIBRARIES}) + +-target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC +- "${CERES_INCLUDE_DIRS}") + target_link_libraries(${PROJECT_NAME} PUBLIC ${CERES_LIBRARIES}) + + target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC +@@ -280,60 +180,19 @@ target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY} + absl::strings + absl::synchronization + absl::time +- absl::utility ++ absl::utility + ) ++if (TARGET absl::log_internal_check_op) ++ target_link_libraries(${PROJECT_NAME} PUBLIC absl::log_internal_check_op) ++endif() + if (NOT WIN32) + target_link_libraries(${PROJECT_NAME} PUBLIC pthread) + endif() +-if(${BUILD_GRPC}) +- target_link_libraries(${PROJECT_NAME} PUBLIC grpc++) +- target_link_libraries(${PROJECT_NAME} PUBLIC async_grpc) +-endif() +-if(${BUILD_PROMETHEUS}) +- target_link_libraries(${PROJECT_NAME} PUBLIC ${ZLIB_LIBRARIES}) +- target_link_libraries(${PROJECT_NAME} PUBLIC prometheus-cpp-core) +- target_link_libraries(${PROJECT_NAME} PUBLIC prometheus-cpp-pull) +- target_compile_definitions(${PROJECT_NAME} PUBLIC USE_PROMETHEUS=1) +-endif() + + set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}") + set_target_properties(${PROJECT_NAME} PROPERTIES + COMPILE_FLAGS ${TARGET_COMPILE_FLAGS}) + +-set(TEST_LIB +- cartographer_test_library +-) +-add_library(${TEST_LIB} ${TEST_LIBRARY_HDRS} ${TEST_LIBRARY_SRCS}) +-target_include_directories(${TEST_LIB} SYSTEM PRIVATE +- "${GMOCK_INCLUDE_DIRS}") +-# Needed for dynamically linked GTest on Windows. +-if (WIN32) +- target_compile_definitions(${TEST_LIB} PUBLIC -DGTEST_LINKED_AS_SHARED_LIBRARY) +-endif() +-target_link_libraries(${TEST_LIB} PUBLIC ${GMOCK_LIBRARY}) +-target_link_libraries(${TEST_LIB} PUBLIC ${PROJECT_NAME}) +-set_target_properties(${TEST_LIB} PROPERTIES +- COMPILE_FLAGS ${TARGET_COMPILE_FLAGS}) +- +-foreach(ABS_FIL ${ALL_TESTS}) +- file(RELATIVE_PATH REL_FIL ${PROJECT_SOURCE_DIR} ${ABS_FIL}) +- get_filename_component(DIR ${REL_FIL} DIRECTORY) +- 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}) +- if(${BUILD_GRPC}) +- target_link_libraries("${TEST_TARGET_NAME}" PUBLIC grpc++) +- target_link_libraries("${TEST_TARGET_NAME}" PUBLIC async_grpc) +- endif() +- if(${BUILD_PROMETHEUS}) +- target_link_libraries("${TEST_TARGET_NAME}" PUBLIC ${ZLIB_LIBRARIES}) +- target_link_libraries("${TEST_TARGET_NAME}" PUBLIC prometheus-cpp-core) +- target_link_libraries("${TEST_TARGET_NAME}" PUBLIC prometheus-cpp-pull) +- endif() +- target_link_libraries("${TEST_TARGET_NAME}" PUBLIC ${TEST_LIB}) +-endforeach() +- + # Add the binary directory first, so that port.h is included after it has + # been generated. + target_include_directories(${PROJECT_NAME} PUBLIC +diff --git a/cmake/functions.cmake b/cmake/functions.cmake +index 8cfc05f..6d849ca 100644 +--- a/cmake/functions.cmake ++++ b/cmake/functions.cmake +@@ -87,7 +87,7 @@ macro(google_initialize_cartographer_project) + google_add_flag(GOOG_CXX_FLAGS "-Werror=reorder") + google_add_flag(GOOG_CXX_FLAGS "-Werror=return-type") + google_add_flag(GOOG_CXX_FLAGS "-Werror=switch") +- google_add_flag(GOOG_CXX_FLAGS "-Werror=uninitialized") ++ # google_add_flag(GOOG_CXX_FLAGS "-Werror=uninitialized") + + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") + google_add_flag(GOOG_CXX_FLAGS "-Wthread-safety") diff --git a/viam-cartographer/cmake/functions.cmake b/viam-cartographer/cmake/functions.cmake deleted file mode 100644 index b3f57e82..00000000 --- a/viam-cartographer/cmake/functions.cmake +++ /dev/null @@ -1,143 +0,0 @@ -# Copyright 2016 The Cartographer Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -include(CMakeParseArguments) - -macro(_parse_arguments ARGS) - set(OPTIONS) - set(ONE_VALUE_ARG) - set(MULTI_VALUE_ARGS SRCS) - cmake_parse_arguments(ARG - "${OPTIONS}" "${ONE_VALUE_ARG}" "${MULTI_VALUE_ARGS}" ${ARGS}) -endmacro(_parse_arguments) - -macro(_common_compile_stuff VISIBILITY) - set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}") - - set_target_properties(${NAME} PROPERTIES - COMPILE_FLAGS ${TARGET_COMPILE_FLAGS}) - - target_include_directories(${NAME} PUBLIC ${PROJECT_NAME}) - target_link_libraries(${NAME} PUBLIC ${PROJECT_NAME}) -endmacro(_common_compile_stuff) - -function(google_test NAME ARG_SRC) - add_executable(${NAME} ${ARG_SRC}) - _common_compile_stuff("PRIVATE") - - # Make sure that gmock always includes the correct gtest/gtest.h. - target_include_directories("${NAME}" SYSTEM PRIVATE - "${GMOCK_INCLUDE_DIRS}") - target_link_libraries("${NAME}" PUBLIC ${GMOCK_LIBRARIES}) - - add_test(${NAME} ${NAME}) -endfunction() - -function(google_binary NAME) - _parse_arguments("${ARGN}") - - add_executable(${NAME} ${ARG_SRCS}) - - _common_compile_stuff("PRIVATE") - - install(TARGETS "${NAME}" RUNTIME DESTINATION bin) -endfunction() - -# Create a variable 'VAR_NAME'='FLAG'. If VAR_NAME is already set, FLAG is -# appended. -function(google_add_flag VAR_NAME FLAG) - if (${VAR_NAME}) - set(${VAR_NAME} "${${VAR_NAME}} ${FLAG}" PARENT_SCOPE) - else() - set(${VAR_NAME} "${FLAG}" PARENT_SCOPE) - endif() -endfunction() - -macro(google_initialize_cartographer_project) - if(CARTOGRAPHER_CMAKE_DIR) - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - ${CARTOGRAPHER_CMAKE_DIR}/modules) - else() - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) - endif() - - if(WIN32) - # TODO turn on equivalent warnings on Windows - else() - set(GOOG_CXX_FLAGS "-pthread -fPIC ${GOOG_CXX_FLAGS}") - - google_add_flag(GOOG_CXX_FLAGS "-Wall") - google_add_flag(GOOG_CXX_FLAGS "-Wpedantic") - - # Turn some warnings into errors. - google_add_flag(GOOG_CXX_FLAGS "-Werror=format-security") - google_add_flag(GOOG_CXX_FLAGS "-Werror=missing-braces") - google_add_flag(GOOG_CXX_FLAGS "-Werror=reorder") - google_add_flag(GOOG_CXX_FLAGS "-Werror=return-type") - google_add_flag(GOOG_CXX_FLAGS "-Werror=switch") - google_add_flag(GOOG_CXX_FLAGS "-Werror=uninitialized") - - if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") - google_add_flag(GOOG_CXX_FLAGS "-Wthread-safety") - endif() - - if(NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "") - set(CMAKE_BUILD_TYPE Release) - endif() - - if(CMAKE_BUILD_TYPE STREQUAL "Release") - google_add_flag(GOOG_CXX_FLAGS "-O3 -DNDEBUG") - elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") - google_add_flag(GOOG_CXX_FLAGS "-O3 -g -DNDEBUG") - elseif(CMAKE_BUILD_TYPE STREQUAL "Debug") - if(FORCE_DEBUG_BUILD) - message(WARNING "Building in Debug mode, expect very slow performance.") - google_add_flag(GOOG_CXX_FLAGS "-g") - else() - message(FATAL_ERROR - "Compiling in Debug mode is not supported and can cause severely degraded performance. " - "You should change the build type to Release. If you want to build in Debug mode anyway, " - "call CMake with -DFORCE_DEBUG_BUILD=True" - ) - endif() - # Support for Debian packaging CMAKE_BUILD_TYPE - elseif(CMAKE_BUILD_TYPE STREQUAL "None") - message(WARNING "Building with CMAKE_BUILD_TYPE None, " - "please make sure you have set CFLAGS and CXXFLAGS according to your needs.") - else() - message(FATAL_ERROR "Unknown CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") - endif() - - message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") - - # Add a hook that reruns CMake when source files are added or removed. - 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 - ) - if(NOT EXISTS ${FILES_LIST_PATH}) - execute_process(COMMAND ${DETECT_CHANGES_CMD}) - endif() - include(${FILES_LIST_PATH}) - endif() -endmacro() - -macro(google_enable_testing) - enable_testing() - find_package(GMock REQUIRED) -endmacro() diff --git a/viam-cartographer/cmake/modules/FindEigen3.cmake b/viam-cartographer/cmake/modules/FindEigen3.cmake deleted file mode 100644 index 9838e922..00000000 --- a/viam-cartographer/cmake/modules/FindEigen3.cmake +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 2018 The Cartographer Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -find_package(Eigen3 QUIET NO_MODULE) -if (NOT EIGEN3_FOUND) - list(APPEND EIGEN3_POSSIBLE_DIRS - /usr/local/include/eigen3 - /usr/include/eigen3 - ) - find_path(EIGEN3_INCLUDE_DIR - NAMES Eigen/Core - PATHS ${EIGEN3_POSSIBLE_DIRS} - ) - if (EIGEN3_INCLUDE_DIR AND EXISTS ${EIGEN3_INCLUDE_DIR}) - set(EIGEN3_FOUND TRUE) - else() - message(WARNING "Failed to find Eigen3. Please, define the path manually.") - endif() -endif() diff --git a/viam-cartographer/scripts/build_cartographer.sh b/viam-cartographer/scripts/build_cartographer.sh deleted file mode 100755 index c6d98abe..00000000 --- a/viam-cartographer/scripts/build_cartographer.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -set -o errexit - -if [ "$(uname)" == "Linux" ]; then - cd $(dirname $(readlink -f "${BASH_SOURCE}"))/.. -elif [ "$(uname)" == "Darwin" ]; then - readlinkorreal() { readlink "$1" || echo "$1"; } - cd $(dirname string readlinkorreal "${BASH_SOURCE}")/.. -else - echo ERROR: your OS is not handled yet - exit 1 -fi - -# Build and install Cartographer with the viam wrapper. -pushd cartographer -cp ../cartographer_build_utils/CMakeLists.txt CMakeLists.txt -rm -rf build -mkdir build -pushd build - -echo building cartographer -cmake .. -G Ninja -DCMAKE_CXX_STANDARD=17 -DCMAKE_PREFIX_PATH=`brew --prefix` -ninja -popd -popd diff --git a/viam-cartographer/scripts/build_viam_cartographer.sh b/viam-cartographer/scripts/build_viam_cartographer.sh deleted file mode 100755 index f744838f..00000000 --- a/viam-cartographer/scripts/build_viam_cartographer.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -set -o errexit - -if [ "$(uname)" == "Linux" ]; then - cd $(dirname $(readlink -f "${BASH_SOURCE}"))/.. -elif [ "$(uname)" == "Darwin" ]; then - readlinkorreal() { readlink "$1" || echo "$1"; } - cd $(dirname string readlinkorreal "${BASH_SOURCE}")/.. - which brew && export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:`brew --prefix openssl@3`/lib/pkgconfig" -else - echo ERROR: your OS is not handled yet - exit 1 -fi - -# Build and install Cartographer with the viam wrapper. -DIR=`pwd`/build/ -echo $DIR -if [ ! -d "$DIR" ]; then - mkdir build -else - echo "Build Directory already exists" -fi - -pushd build - -echo building viam-cartographer -cmake .. -G Ninja -DCMAKE_CXX_STANDARD=17 -DCMAKE_PREFIX_PATH=`brew --prefix` -DQt5_DIR=$(brew --prefix qt5)/lib/cmake/Qt5 -ninja -popd diff --git a/viam-cartographer/scripts/build_viam_cartographer_debug.sh b/viam-cartographer/scripts/build_viam_cartographer_debug.sh deleted file mode 100755 index 21b7563f..00000000 --- a/viam-cartographer/scripts/build_viam_cartographer_debug.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -set -o errexit - -if [ "$(uname)" == "Linux" ]; then - cd $(dirname $(readlink -f "${BASH_SOURCE}"))/.. -elif [ "$(uname)" == "Darwin" ]; then - readlinkorreal() { readlink "$1" || echo "$1"; } - cd $(dirname string readlinkorreal "${BASH_SOURCE}")/.. - which brew && export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:`brew --prefix openssl@3`/lib/pkgconfig" -else - echo ERROR: your OS is not handled yet - exit 1 -fi - -# Build and install Cartographer with the viam wrapper. -DIR=`pwd`/build/ -echo $DIR -if [ ! -d "$DIR" ]; then - mkdir build -else - echo "Build Directory already exists" -fi - -pushd build - -echo building viam-cartographer -cmake .. -G Ninja \ - -DCMAKE_CXX_STANDARD=17 \ - -DCMAKE_PREFIX_PATH=`brew --prefix` \ - -DQt5_DIR=$(brew --prefix qt5)/lib/cmake/Qt5 \ - -DCMAKE_BUILD_TYPE=Debug - -ninja diff --git a/viam-cartographer/scripts/setup_cartographer_linux.sh b/viam-cartographer/scripts/setup_cartographer_linux.sh deleted file mode 100755 index f210ecbb..00000000 --- a/viam-cartographer/scripts/setup_cartographer_linux.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -echo "Installing cartographer external dependencies" -sudo apt update -sudo apt install -y cmake ninja-build libgmock-dev libboost-iostreams-dev liblua5.3-dev libcairo2-dev python3-sphinx libabsl-dev libceres-dev libprotobuf-dev protobuf-compiler libpcl-dev -go install go.viam.com/utils/artifact/cmd/artifact diff --git a/viam-cartographer/scripts/setup_cartographer_macos.sh b/viam-cartographer/scripts/setup_cartographer_macos.sh deleted file mode 100755 index 1d7629b1..00000000 --- a/viam-cartographer/scripts/setup_cartographer_macos.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -echo "Installing cartographer external dependencies" -brew update -brew install abseil boost ceres-solver protobuf@21 ninja cairo googletest lua@5.3 pkg-config cmake go@1.20 grpc -brew link lua@5.3 -brew install openssl@3 eigen gflags glog suite-sparse sphinx-doc pcl -brew unlink protobuf@3 -brew unlink protobuf -brew unlink protobuf@21 && brew link protobuf@21 -go install go.viam.com/utils/artifact/cmd/artifact