Fix build in Ubuntu 18.04 clang 6.0.0 (#276)
* Fix build in Ubuntu 18.04 clang 6.0.0 * Globally allow double-promotion instead of on a case-by-case basis
This commit is contained in:
Родитель
1e02477c5d
Коммит
29ef39dd66
|
@ -24,6 +24,7 @@ if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
|||
list(APPEND CLANG_ALL_WARNINGS "-Wno-documentation-unknown-command") # Allow undocumented documentation commands used by doxygen
|
||||
list(APPEND CLANG_ALL_WARNINGS "-Wno-covered-switch-default") # Allow default: in switch statements that cover all enum values
|
||||
list(APPEND CLANG_ALL_WARNINGS "-Wno-unreachable-code-break") # Allow break even if it is unreachable
|
||||
list(APPEND CLANG_ALL_WARNINGS "-Wno-double-promotion") # Allow floats to be promoted to doubles. Needed for isnan() on some systems
|
||||
if (NOT (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS "5.0.0"))
|
||||
# Added in clang 5
|
||||
list(APPEND CLANG_ALL_WARNINGS "-Wno-zero-as-null-pointer-constant") # Allow zero as nullptr
|
||||
|
|
|
@ -351,15 +351,6 @@ void capture_set_imu_image(k4a_capture_t capture_handle, k4a_image_t image_handl
|
|||
capture_set_ir_image(capture_handle, image_handle);
|
||||
}
|
||||
|
||||
// On Ubuntu 16.04 this works without warnings, but on Ubuntu 18.04 isnan actually
|
||||
// takes a long double, we get a double-promotion warning here. Unfortunately,
|
||||
// isnan has an implementation-defined argument type, so there's not a specific
|
||||
// type we can cast it to in order to avoid clang's precision warnings, so we
|
||||
// just need to suppress the warning.
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wdouble-promotion"
|
||||
#endif
|
||||
void capture_set_temperature_c(k4a_capture_t capture_handle, float temperature_c)
|
||||
{
|
||||
RETURN_VALUE_IF_HANDLE_INVALID(VOID_VALUE, k4a_capture_t, capture_handle);
|
||||
|
@ -369,10 +360,6 @@ void capture_set_temperature_c(k4a_capture_t capture_handle, float temperature_c
|
|||
capture->temperature_c = temperature_c;
|
||||
}
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
float capture_get_temperature_c(k4a_capture_t capture_handle)
|
||||
{
|
||||
RETURN_VALUE_IF_HANDLE_INVALID(NAN, k4a_capture_t, capture_handle);
|
||||
|
|
Загрузка…
Ссылка в новой задаче