diff --git a/Package.swift b/Package.swift index 4c8d846fa9..15f94268cb 100644 --- a/Package.swift +++ b/Package.swift @@ -28,5 +28,5 @@ let package = Package( ] ) ], - cxxLanguageStandard: CXXLanguageStandard(rawValue: "c++17") + cxxLanguageStandard: CXXLanguageStandard(rawValue: "c++20") ) diff --git a/README.md b/README.md index 3fc4aeee61..00972de2c7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Yoga is an embeddable and performant flexbox layout engine with bindings for mul ## Building -Yoga's main implementation targets C++ 17 with accompanying build logic in CMake. A wrapper is provided to build the main library and run unit tests. +Yoga's main implementation targets C++ 20 with accompanying build logic in CMake. A wrapper is provided to build the main library and run unit tests. ```sh ./unit_tests diff --git a/Yoga.podspec b/Yoga.podspec index 847b37735f..d2e48494ad 100644 --- a/Yoga.podspec +++ b/Yoga.podspec @@ -33,7 +33,7 @@ Pod::Spec.new do |spec| '-Werror', '-Wextra', '-Wconversion', - '-std=c++17', + '-std=c++20', '-fPIC' ] diff --git a/build.gradle b/build.gradle index f278799699..c553dd8f13 100644 --- a/build.gradle +++ b/build.gradle @@ -6,8 +6,8 @@ */ plugins { - id("com.android.library") version "8.0.1" apply false - id("com.android.application") version "8.0.1" apply false + id("com.android.library") version "8.1.1" apply false + id("com.android.application") version "8.1.1" apply false id("io.github.gradle-nexus.publish-plugin") version "1.3.0" } diff --git a/cmake/project-defaults.cmake b/cmake/project-defaults.cmake index 8868ce93d9..08f50a4ece 100644 --- a/cmake/project-defaults.cmake +++ b/cmake/project-defaults.cmake @@ -3,7 +3,7 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_POSITION_INDEPENDENT_CODE ON) diff --git a/java/build.gradle.kts b/java/build.gradle.kts index 5e2ee5d2b4..39575931f5 100644 --- a/java/build.gradle.kts +++ b/java/build.gradle.kts @@ -21,9 +21,9 @@ val ndkVersionProperty: String by rootProject.extra android { namespace = "com.facebook.yoga" - compileSdk = 33 - buildToolsVersion = "33.0.0" - ndkVersion = "23.1.7779620" + compileSdk = 34 + buildToolsVersion = "34.0.0" + ndkVersion = "25.1.8937393" defaultConfig { minSdk = 21 diff --git a/javascript/CMakeLists.txt b/javascript/CMakeLists.txt index 96400b701b..44cbfcebe5 100644 --- a/javascript/CMakeLists.txt +++ b/javascript/CMakeLists.txt @@ -14,7 +14,7 @@ file(GLOB SOURCES CONFIGURE_DEPENDS include_directories(..) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) add_compile_definitions( EMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0) diff --git a/yoga/bits/BitCast.h b/yoga/bits/BitCast.h index eaca348c8c..13fb0e41f2 100644 --- a/yoga/bits/BitCast.h +++ b/yoga/bits/BitCast.h @@ -14,6 +14,7 @@ namespace facebook::yoga { // Polyfill for std::bit_cast() from C++20, to allow safe type punning // https://en.cppreference.com/w/cpp/numeric/bit_cast +// TODO: Remove when we upgrade to NDK 26+ template std::enable_if_t< sizeof(To) == sizeof(From) && std::is_trivially_copyable_v &&