Skip to content

Commit 05480e0

Browse files
authored
[RSDK-10385] Fix buf downloading on windows and small misc fixes (#404)
1 parent c5a854e commit 05480e0

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

src/viam/api/CMakeLists.txt

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,34 @@ if (VIAMCPPSDK_USE_DYNAMIC_PROTOS)
6363
#
6464
find_program(BUF_COMMAND buf)
6565
if (NOT BUF_COMMAND)
66+
67+
set(HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD ${CMAKE_HOST_SYSTEM_PROCESSOR})
68+
if (CMAKE_HOST_WIN32)
69+
if (HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD STREQUAL "AMD64")
70+
set(HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD x86_64)
71+
elseif (HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD STREQUAL "ARM64")
72+
set(HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD arm64)
73+
else()
74+
message(FATAL_ERROR "Unknown Windows platform to correct buf download URL: ${HOST_SYSTEM_PROCESSOR_FOR_BUF_DOWNLOAD}")
75+
endif()
76+
endif()
77+
78+
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})
79+
6680
file(
6781
DOWNLOAD
68-
https://github.com/bufbuild/buf/releases/latest/download/buf-${CMAKE_HOST_SYSTEM_NAME}-${CMAKE_HOST_SYSTEM_PROCESSOR}
69-
${CMAKE_CURRENT_BINARY_DIR}/buf_latest
82+
${BUF_DOWNLOAD_URL}
83+
${CMAKE_CURRENT_BINARY_DIR}/buf_latest${CMAKE_HOST_EXECUTABLE_SUFFIX}
7084
STATUS buf_status
7185
)
7286
list(GET buf_status 0 buf_status_code)
7387
list(GET buf_status 1 buf_status_string)
7488

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

79-
set(BUF_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/buf_latest)
93+
set(BUF_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/buf_latest${CMAKE_HOST_EXECUTABLE_SUFFIX})
8094
file(CHMOD ${BUF_COMMAND} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
8195
endif()
8296

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

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

src/viam/sdk/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ configure_file(common/grpc_fwd.hpp.in common/grpc_fwd.hpp)
3636
if (VIAMCPPSDK_USE_WALL_WERROR)
3737
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
3838
target_compile_options(viamsdk PRIVATE -Wall -Werror)
39+
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
40+
target_compile_options(viamsdk PRIVATE -Wall -Werror)
3941
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
4042
target_compile_options(viamsdk PRIVATE -Wall -Werror)
4143
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
4244
# Note: Currently, the generated protos throw W4244 and W4267, so turn that back to a warning.
4345
target_compile_options(viamsdk PRIVATE /W4 /WX /wd4244 /wd4267)
4446
else()
45-
message(ERROR "VIAMCPPSDK_USE_WALL_ERROR is set, but not known how to enable for compiler ID ${CMAKE_CXX_COMPILER_ID}")
47+
message(FATAL_ERROR "VIAMCPPSDK_USE_WALL_ERROR is set, but not known how to enable for compiler ID ${CMAKE_CXX_COMPILER_ID}")
4648
endif()
4749
endif()
4850

0 commit comments

Comments
 (0)