Target C++ 17 (#1327)
Summary: X-link: https://github.com/facebook/react-native/pull/38303 Pull Request resolved: https://github.com/facebook/yoga/pull/1327 This bumps Yoga to C++ 17 for a few reasons: 1. New versions of C++ may introduce behavior changes (e.g. evaluation order) and deprecations. Keeping the version closer to the version of large users helps avoid that. 2. C++ 17 unblocks some new bits I have wanted to use at times, like `std::optional`, `std::variant`, `if constexpr`, `[[nodiscard]]`. 3. There are already changes in C++ 20 that would be directly useful to Yoga, like `std::bit_cast` to avoid `memcpy` style type punning. There has been some contention around C++ versions before, but by the time the next stable version of Yoga is out, it will have been more than 6 years (~2 C++ versions) since a stable version of Clang/LLVM with C++ 17 support. I would not like to go back further than n-2. Changelog: [Internal] Reviewed By: christophpurrer Differential Revision: D47383922 fbshipit-source-id: eb95d4853f2168b68d6df5fddb797236eac55870
This commit is contained in:
committed by
Facebook GitHub Bot
parent
dbd8e915d5
commit
423dc155d8
@@ -4,7 +4,7 @@ Yoga is an embeddable and performant flexbox layout engine with bindings for mul
|
|||||||
|
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
Yoga's main implementation targets C++ 14 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++ 17 with accompanying build logic in CMake. A wrapper is provided to build the main library and run unit tests.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./unit_tests <Debug|Release>
|
./unit_tests <Debug|Release>
|
||||||
|
@@ -32,7 +32,7 @@ Pod::Spec.new do |spec|
|
|||||||
'-Wall',
|
'-Wall',
|
||||||
'-Werror',
|
'-Werror',
|
||||||
'-Wextra',
|
'-Wextra',
|
||||||
'-std=c++14',
|
'-std=c++17',
|
||||||
'-fPIC'
|
'-fPIC'
|
||||||
]
|
]
|
||||||
spec.source_files = 'yoga/**/*.{h,cpp}'
|
spec.source_files = 'yoga/**/*.{h,cpp}'
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
# This source code is licensed under the MIT license found in the
|
# This source code is licensed under the MIT license found in the
|
||||||
# LICENSE file in the root directory of this source tree.
|
# LICENSE file in the root directory of this source tree.
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
|
@@ -14,7 +14,7 @@ file(GLOB SOURCES CONFIGURE_DEPENDS
|
|||||||
|
|
||||||
include_directories(..)
|
include_directories(..)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
add_compile_definitions(
|
add_compile_definitions(
|
||||||
EMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0)
|
EMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0)
|
||||||
|
Reference in New Issue
Block a user