Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 20 additions & 6 deletions src/viam/api/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -63,20 +63,34 @@ if (VIAMCPPSDK_USE_DYNAMIC_PROTOS)
#
find_program(BUF_COMMAND buf)
if (NOT BUF_COMMAND)

set(HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD ${CMAKE_HOST_SYSTEM_PROCESSOR})
if (CMAKE_HOST_WIN32)
if (HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD STREQUAL "AMD64")
set(HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD x86_64)
elseif (HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD STREQUAL "ARM64")
set(HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD arm64)
else()
message(FATAL_ERROR "Unknown Windows platform to correct buf download URL: ${HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD}")
endif()
endif()

set(BUF_DOWNLOAD_URL https://github.com/bufbuild/buf/releases/latest/download/buf-${CMAKE_HOST_SYSTEM_NAME}-${HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD}${CMAKE_HOST_EXECUTABLE_SUFFIX})

file(
DOWNLOAD
https://github.com/bufbuild/buf/releases/latest/download/buf-${CMAKE_HOST_SYSTEM_NAME}-${CMAKE_HOST_SYSTEM_PROCESSOR}
${CMAKE_CURRENT_BINARY_DIR}/buf_latest
${BUF_DOWNLOAD_URL}
${CMAKE_CURRENT_BINARY_DIR}/buf_latest${CMAKE_HOST_EXECUTABLE_SUFFIX}
STATUS buf_status
)
list(GET buf_status 0 buf_status_code)
list(GET buf_status 1 buf_status_string)

if(NOT buf_status_code EQUAL 0)
message(FATAL_ERROR "No local `buf` program found (try setting PATH?) and failed to download: ${buf_status_string}")
message(FATAL_ERROR "No local `buf` program found (try setting PATH?) and failed to download: ${buf_status_string} for ${BUF_DOWNLOAD_URL}")
endif()

set(BUF_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/buf_latest)
set(BUF_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/buf_latest${CMAKE_HOST_EXECUTABLE_SUFFIX})
file(CHMOD ${BUF_COMMAND} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
endif()

Expand Down Expand Up @@ -116,7 +130,7 @@ if (VIAMCPPSDK_USE_DYNAMIC_PROTOS)
# List of names of non-compilable generated code
# The Switch component generates protobuf which uses `switch` as a namespace.
# This needs to be processed below.
set(VIAMCPPSDK_SWITCH_REPLACE_PATHS
set(VIAMCPPSDK_SWITCH_REPLACE_PATHS
${PROTO_GEN_DIR}/component/switch/v1/switch.grpc.pb.cc
${PROTO_GEN_DIR}/component/switch/v1/switch.grpc.pb.h
${PROTO_GEN_DIR}/component/switch/v1/switch.pb.cc
Expand Down Expand Up @@ -261,7 +275,7 @@ if (VIAMCPPSDK_USE_DYNAMIC_PROTOS)
COMMAND ${BUF_COMMAND} generate ${BUF_VIAM_API_SOURCE} --template buf.gen.yaml --path ${BUF_PROTO_COMPONENTS_JOINED}

# After generating the protos, include a step to invoke a search-and-replace for switch -> switch_ in the Switch component files
COMMAND ${CMAKE_COMMAND} "-DSWITCH_REPLACE_PATHS=\"${VIAMCPPSDK_SWITCH_REPLACE_PATHS}\"" -P ${CMAKE_CURRENT_SOURCE_DIR}/viamcppsdk_replace_switch.cmake
COMMAND ${CMAKE_COMMAND} "-DSWITCH_REPLACE_PATHS=\"${VIAMCPPSDK_SWITCH_REPLACE_PATHS}\"" -P ${CMAKE_CURRENT_SOURCE_DIR}/viamcppsdk_replace_switch.cmake
MAIN_DEPENDENCY buf.gen.yaml
)

Expand Down
4 changes: 3 additions & 1 deletion src/viam/sdk/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,15 @@ configure_file(common/grpc_fwd.hpp.in common/grpc_fwd.hpp)
if (VIAMCPPSDK_USE_WALL_WERROR)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(viamsdk PRIVATE -Wall -Werror)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
target_compile_options(viamsdk PRIVATE -Wall -Werror)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_compile_options(viamsdk PRIVATE -Wall -Werror)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# Note: Currently, the generated protos throw W4244 and W4267, so turn that back to a warning.
target_compile_options(viamsdk PRIVATE /W4 /WX /wd4244 /wd4267)
else()
message(ERROR "VIAMCPPSDK_USE_WALL_ERROR is set, but not known how to enable for compiler ID ${CMAKE_CXX_COMPILER_ID}")
message(FATAL_ERROR "VIAMCPPSDK_USE_WALL_ERROR is set, but not known how to enable for compiler ID ${CMAKE_CXX_COMPILER_ID}")
endif()
endif()

Expand Down