diff --git a/.buckconfig b/.buckconfig index 603fa928bcb..097057ee6ae 100644 --- a/.buckconfig +++ b/.buckconfig @@ -23,7 +23,7 @@ gh_facebook_buck2_shims_meta = shim [cxx] - cxxflags = -g -std=c++17 + cxxflags = -g -std=c++20 [parser] target_platform_detector_spec = target:root//...->prelude//platforms:default target:shim//...->prelude//platforms:default diff --git a/CMakeLists.txt b/CMakeLists.txt index abd032e3e30..5687a2992f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,7 +110,7 @@ include(ExternalProject) include(GNUInstallDirs) if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD 20) endif() announce_configured_options(CMAKE_CXX_STANDARD) @@ -233,6 +233,8 @@ endif() # they can be properly gc'd. -s: strip symbol. if(WIN32) set(CMAKE_CXX_FLAGS_RELEASE "/Gy /Gw ${CMAKE_CXX_FLAGS_RELEASE}") + # C++20 headers pull in ; suppress its min/max macros. + add_compile_definitions(NOMINMAX) else() set(CMAKE_CXX_FLAGS_RELEASE "-ffunction-sections -fdata-sections ${CMAKE_CXX_FLAGS_RELEASE}" diff --git a/backends/arm/CMakeLists.txt b/backends/arm/CMakeLists.txt index 095ccb6a49b..67f2635275e 100644 --- a/backends/arm/CMakeLists.txt +++ b/backends/arm/CMakeLists.txt @@ -7,6 +7,9 @@ project(arm_backend) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +# Pin to C++17 for embedded toolchain compatibility (not all support C++20). +set(CMAKE_CXX_STANDARD 17) + # Source root directory for executorch. if(NOT EXECUTORCH_ROOT) set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..) diff --git a/backends/cadence/CMakeLists.txt b/backends/cadence/CMakeLists.txt index f04bda30a69..9a42fd03fba 100644 --- a/backends/cadence/CMakeLists.txt +++ b/backends/cadence/CMakeLists.txt @@ -7,9 +7,8 @@ # Set the minimum required version of CMake for this project. cmake_minimum_required(VERSION 3.10) -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) -endif() +# Pin to C++17 for embedded toolchain compatibility (not all support C++20). +set(CMAKE_CXX_STANDARD 17) # Set the project name. project(cadence_backend) diff --git a/backends/cadence/fusion_g3/operators/CMakeLists.txt b/backends/cadence/fusion_g3/operators/CMakeLists.txt index a9501c687bb..b5f0b3909dd 100644 --- a/backends/cadence/fusion_g3/operators/CMakeLists.txt +++ b/backends/cadence/fusion_g3/operators/CMakeLists.txt @@ -7,9 +7,8 @@ cmake_minimum_required(VERSION 3.19) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) -endif() +# Pin to C++17 for embedded toolchain compatibility (not all support C++20). +set(CMAKE_CXX_STANDARD 17) include(${EXECUTORCH_ROOT}/tools/cmake/Utils.cmake) include(${EXECUTORCH_ROOT}/tools/cmake/Codegen.cmake) diff --git a/backends/cadence/generic/operators/CMakeLists.txt b/backends/cadence/generic/operators/CMakeLists.txt index dbf06e56bee..a004aaf09ea 100644 --- a/backends/cadence/generic/operators/CMakeLists.txt +++ b/backends/cadence/generic/operators/CMakeLists.txt @@ -7,9 +7,8 @@ cmake_minimum_required(VERSION 3.19) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) -endif() +# Pin to C++17 for embedded toolchain compatibility (not all support C++20). +set(CMAKE_CXX_STANDARD 17) include(${EXECUTORCH_ROOT}/tools/cmake/Utils.cmake) include(${EXECUTORCH_ROOT}/tools/cmake/Codegen.cmake) diff --git a/backends/cadence/hifi/operators/CMakeLists.txt b/backends/cadence/hifi/operators/CMakeLists.txt index b5801f5d488..15c8b19d37b 100644 --- a/backends/cadence/hifi/operators/CMakeLists.txt +++ b/backends/cadence/hifi/operators/CMakeLists.txt @@ -7,9 +7,8 @@ cmake_minimum_required(VERSION 3.19) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) -endif() +# Pin to C++17 for embedded toolchain compatibility (not all support C++20). +set(CMAKE_CXX_STANDARD 17) include(${EXECUTORCH_ROOT}/tools/cmake/Utils.cmake) include(${EXECUTORCH_ROOT}/tools/cmake/Codegen.cmake) diff --git a/backends/cadence/vision/operators/CMakeLists.txt b/backends/cadence/vision/operators/CMakeLists.txt index 38e4f97f841..1e828547ede 100644 --- a/backends/cadence/vision/operators/CMakeLists.txt +++ b/backends/cadence/vision/operators/CMakeLists.txt @@ -7,9 +7,8 @@ cmake_minimum_required(VERSION 3.19) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) -endif() +# Pin to C++17 for embedded toolchain compatibility (not all support C++20). +set(CMAKE_CXX_STANDARD 17) include(${EXECUTORCH_ROOT}/tools/cmake/Utils.cmake) include(${EXECUTORCH_ROOT}/tools/cmake/Codegen.cmake) diff --git a/backends/cortex_m/CMakeLists.txt b/backends/cortex_m/CMakeLists.txt index f88a6306fed..5fb91724c7a 100644 --- a/backends/cortex_m/CMakeLists.txt +++ b/backends/cortex_m/CMakeLists.txt @@ -8,9 +8,8 @@ cmake_minimum_required(VERSION 3.19) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) -endif() +# Pin to C++17 for embedded toolchain compatibility (not all support C++20). +set(CMAKE_CXX_STANDARD 17) # Source root directory for executorch if(NOT EXECUTORCH_ROOT) diff --git a/backends/mediatek/CMakeLists.txt b/backends/mediatek/CMakeLists.txt index 10c28be0053..cda87c59e9e 100644 --- a/backends/mediatek/CMakeLists.txt +++ b/backends/mediatek/CMakeLists.txt @@ -8,6 +8,9 @@ */ ]] +# Pin to C++17 for embedded toolchain compatibility (not all support C++20). +set(CMAKE_CXX_STANDARD 17) + # Let include directory as "executorch/..." set(_common_include_directories ${CMAKE_CURRENT_SOURCE_DIR}/../../..) diff --git a/backends/nxp/CMakeLists.txt b/backends/nxp/CMakeLists.txt index bfc4c046be6..cce18eeaae6 100644 --- a/backends/nxp/CMakeLists.txt +++ b/backends/nxp/CMakeLists.txt @@ -3,6 +3,9 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. +# Pin to C++17 for embedded toolchain compatibility (not all support C++20). +set(CMAKE_CXX_STANDARD 17) + set(_common_include_directories ${CMAKE_CURRENT_SOURCE_DIR}/../../..) add_compile_definitions(C10_USING_CUSTOM_GENERATED_MACROS)