From 1424f02508ca8344578fb659e794d66141674d47 Mon Sep 17 00:00:00 2001 From: Joshua Salzedo Date: Thu, 17 Jun 2021 22:11:41 -0700 Subject: [PATCH] Implement Cmake and Bazel bindings --- CMakeLists.txt | 5 +++++ WORKSPACE | 1 + sdk/BUILD | 0 sdk/sdk/BUILD | 33 +++++++++++++++++++++++++++ sdk/sdk/CMakeLists.txt | 41 ++++++++++++++++++++++++++++++++++ sdk/sdk/src/rplidar_driver.cpp | 2 +- 6 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 CMakeLists.txt create mode 100644 WORKSPACE create mode 100644 sdk/BUILD create mode 100644 sdk/sdk/BUILD create mode 100644 sdk/sdk/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..21780dd --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.10) +project(rplidar_sdk) +set(CMAKE_CXX_STANDARD 17) + +add_subdirectory(sdk/sdk) \ No newline at end of file diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 0000000..898849d --- /dev/null +++ b/WORKSPACE @@ -0,0 +1 @@ +workspace( name = "rp_lidar") \ No newline at end of file diff --git a/sdk/BUILD b/sdk/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/sdk/sdk/BUILD b/sdk/sdk/BUILD new file mode 100644 index 0000000..03f91d9 --- /dev/null +++ b/sdk/sdk/BUILD @@ -0,0 +1,33 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") + +cc_library( + name = "rplidar_driver", + srcs = [ + "src/rplidar_driver.cpp", + "src/hal/thread.cpp", + ] + select({ + "@bazel_tools//src/conditions:windows": glob(["src/arch/win32/*.cpp"]), + "//conditions:default": glob(["src/arch/linux/*.cpp"]), + }), + hdrs = glob(["include/*.h"]) + select({ + "@bazel_tools//src/conditions:windows": glob(["src/arch/win32/*.hpp"]) + glob(["src/arch/win32/*.h"]), + "//conditions:default": glob(["src/arch/linux/*.hpp"]) + glob(["src/arch/linux/*.h"]), + }) + glob([ + "src/*.h", + "src/hal/*.h", + ]), + # NOTICE: Ugly hack is ugly, but required in builds that enable -werr + # NOTICE: mainly because there is magic in this lib I don't want to attempt to fix. + copts = [ + "-Wno-unused-variable", + "-Wno-sign-compare", + "-Wno-unused-but-set-variable", + "-Wno-parentheses", + "-Wno-unused-result", + ], + includes = [ + "include", + "src", + ], + visibility = ["//visibility:public"], +) diff --git a/sdk/sdk/CMakeLists.txt b/sdk/sdk/CMakeLists.txt new file mode 100644 index 0000000..12f0511 --- /dev/null +++ b/sdk/sdk/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.10) + + +file(GLOB base_sources src/*.cpp src/hal/*.cpp) +file(GLOB base_includes src/*.h src/*.hpp src/hal/*.h src/hal/*.hpp) + +# Check if Windows, exclude MinGW +if (WIN32 AND NOT MINGW) + message(STATUS "Detected Windows target...") + file(GLOB platform_srcs src/arch/win32/*.hpp src/arch/win32/*.cpp) + include_directories(src/arch/win32) +elseif (MINGW) + # Library doesn't build under MinGW, no idea why. + message(FATAL_ERROR "Mingw is presently not supported.") +elseif (${CMAKE_SYSTEM_NAME} MATCHES Linux) + message(STATUS "linux target...") + file(GLOB platform_srcs src/arch/linux/*.hpp src/arch/linux/*.cpp) + include_directories(src/arch/linux) + +elseif (${CMAKE_SYSTEM_NAME} MATCHES Darwin) + message(STATUS "Apple Mac OS X target...") + file(GLOB platform_srcs src/arch/macOS/*.hpp src/arch/macOS/*.cpp) + include_directories(src/arch/macOS) +else () + message(FATAL_ERROR "Unknown platform ${CMAKE_SYSTEM_NAME}, build cannot continue.") +endif () + +# glob shared C++ sources +add_library(rplidar_sdk STATIC ${base_sources} ${platform_srcs}) + +target_include_directories( + rplidar_sdk INTERFACE include src +) + +include_directories(src src/hal include) + +install( + TARGETS rplidar_sdk + DESTINATION . +) + diff --git a/sdk/sdk/src/rplidar_driver.cpp b/sdk/sdk/src/rplidar_driver.cpp index af244f8..80e7a64 100644 --- a/sdk/sdk/src/rplidar_driver.cpp +++ b/sdk/sdk/src/rplidar_driver.cpp @@ -2219,7 +2219,7 @@ u_result RPlidarDriverImplCommon::startMotor() } } else { - setLidarSpinSpeed(600);//set default rpm to tof lidar + return setLidarSpinSpeed(600);//set default rpm to tof lidar } }