From 3422236e805092060658de7f9c9826e57ab8118d Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Mon, 24 Apr 2023 13:27:16 -0700 Subject: [PATCH] Remove private headers exposed by podspecs (#1252) Summary: Pull Request resolved: https://github.com/facebook/yoga/pull/1252 X-link: https://github.com/facebook/react-native/pull/36993 Fabric relies on the private C++ internals of Yoga. This creates a conundrum in the open source build due to how header creation in Cocoapods works. 1. The default mechanism of specifying public headers needs to include the private headers for them to be made usable by fabric (by default) 2. Cocoapods will roll up all of the public headers when importing a module https://github.com/facebook/react-native/pull/33381 fixed the Fabric Cocoapods build which ran into this. React Native relies on FlipperKit which relies on YogaKit, which in turn finally imports the Yoga podspec. Because YogaKit may use Swift, we can only expose the public Yoga C ABI. The first solution in that PR was to allow RN to access Yoga private headers, but this was changed to instead make all Yoga headers public, and to add ifdefs to all of them to no-op when included outside of a C++ environment. Talking to Kudo, we should be able to change back to the earlier approach in the PR, to instead expose the private headers to only RN. This lets us avoid exposing headers that we ideally wouldn't be, and lets us avoid the messy ifdefs in every Yoga header. Changelog: [Internal] Differential Revision: D45139075 fbshipit-source-id: af4c7c82ca15276a72c024d98cf44134da27497d --- Yoga.podspec | 4 ++-- yoga/BitUtils.h | 4 ---- yoga/CompactValue.h | 4 ---- yoga/Utils.h | 4 ---- yoga/YGConfig.h | 4 ---- yoga/YGFloatOptional.h | 4 ---- yoga/YGLayout.h | 4 ---- yoga/YGNode.h | 4 ---- yoga/YGNodePrint.h | 4 ---- yoga/YGStyle.h | 4 ---- yoga/Yoga-internal.h | 4 ---- yoga/log.h | 4 ---- 12 files changed, 2 insertions(+), 46 deletions(-) diff --git a/Yoga.podspec b/Yoga.podspec index bbe0aabe6e..957ee98e96 100644 --- a/Yoga.podspec +++ b/Yoga.podspec @@ -33,7 +33,7 @@ Pod::Spec.new do |spec| '-std=c++14', '-fPIC' ] - spec.source_files = 'yoga/**/*.{c,h,cpp}' - spec.public_header_files = 'yoga/*.h' + spec.source_files = 'yoga/**/*.{h,cpp}' + spec.public_header_files = 'yoga/{Yoga,YGEnums,YGMacros,YGValue}.h' end diff --git a/yoga/BitUtils.h b/yoga/BitUtils.h index a60ea7609c..b17751ad33 100644 --- a/yoga/BitUtils.h +++ b/yoga/BitUtils.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include #include #include "YGEnums.h" @@ -67,5 +65,3 @@ inline void setBooleanData(uint8_t& flags, size_t index, bool value) { } // namespace detail } // namespace yoga } // namespace facebook - -#endif diff --git a/yoga/CompactValue.h b/yoga/CompactValue.h index e489fbb614..26859330f3 100644 --- a/yoga/CompactValue.h +++ b/yoga/CompactValue.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #if defined(__has_include) && __has_include() // needed to be able to evaluate defined(__cpp_lib_bit_cast) #include @@ -212,5 +210,3 @@ constexpr bool operator!=(CompactValue a, CompactValue b) noexcept { } // namespace detail } // namespace yoga } // namespace facebook - -#endif diff --git a/yoga/Utils.h b/yoga/Utils.h index 82867a5774..376c4fb55c 100644 --- a/yoga/Utils.h +++ b/yoga/Utils.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include "YGNode.h" #include "Yoga-internal.h" #include "CompactValue.h" @@ -146,5 +144,3 @@ inline YGFloatOptional YGResolveValueMargin( const float ownerSize) { return value.isAuto() ? YGFloatOptional{0} : YGResolveValue(value, ownerSize); } - -#endif diff --git a/yoga/YGConfig.h b/yoga/YGConfig.h index e15cc12253..77ce16fb2e 100644 --- a/yoga/YGConfig.h +++ b/yoga/YGConfig.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include "Yoga-internal.h" #include "Yoga.h" @@ -77,5 +75,3 @@ struct YOGA_EXPORT YGConfig { setCloneNodeCallback(YGCloneNodeFunc{nullptr}); } }; - -#endif diff --git a/yoga/YGFloatOptional.h b/yoga/YGFloatOptional.h index 6af7bbafbf..4aa9e76e29 100644 --- a/yoga/YGFloatOptional.h +++ b/yoga/YGFloatOptional.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include #include #include "Yoga-internal.h" @@ -70,5 +68,3 @@ inline bool operator>=(YGFloatOptional lhs, YGFloatOptional rhs) { inline bool operator<=(YGFloatOptional lhs, YGFloatOptional rhs) { return lhs < rhs || lhs == rhs; } - -#endif diff --git a/yoga/YGLayout.h b/yoga/YGLayout.h index e95efbcc24..166eabb64d 100644 --- a/yoga/YGLayout.h +++ b/yoga/YGLayout.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include "BitUtils.h" #include "YGFloatOptional.h" #include "Yoga-internal.h" @@ -63,5 +61,3 @@ struct YGLayout { bool operator==(YGLayout layout) const; bool operator!=(YGLayout layout) const { return !(*this == layout); } }; - -#endif diff --git a/yoga/YGNode.h b/yoga/YGNode.h index 098c1b5ea2..8ca6c35988 100644 --- a/yoga/YGNode.h +++ b/yoga/YGNode.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include #include #include "CompactValue.h" @@ -344,5 +342,3 @@ struct YOGA_EXPORT YGNode { bool isNodeFlexible(); void reset(); }; - -#endif diff --git a/yoga/YGNodePrint.h b/yoga/YGNodePrint.h index 83b3f860e4..f06d457c4d 100644 --- a/yoga/YGNodePrint.h +++ b/yoga/YGNodePrint.h @@ -9,8 +9,6 @@ #pragma once -#ifdef __cplusplus - #include #include "Yoga.h" @@ -28,5 +26,3 @@ void YGNodeToString( } // namespace facebook #endif - -#endif diff --git a/yoga/YGStyle.h b/yoga/YGStyle.h index 858b7cd1b4..20ce4e0562 100644 --- a/yoga/YGStyle.h +++ b/yoga/YGStyle.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include #include #include @@ -237,5 +235,3 @@ YOGA_EXPORT bool operator==(const YGStyle& lhs, const YGStyle& rhs); YOGA_EXPORT inline bool operator!=(const YGStyle& lhs, const YGStyle& rhs) { return !(lhs == rhs); } - -#endif diff --git a/yoga/Yoga-internal.h b/yoga/Yoga-internal.h index 9444bb5d1d..e6f370d6bf 100644 --- a/yoga/Yoga-internal.h +++ b/yoga/Yoga-internal.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include #include #include @@ -154,5 +152,3 @@ static const float kDefaultFlexShrink = 0.0f; static const float kWebDefaultFlexShrink = 1.0f; extern bool YGFloatsEqual(const float a, const float b); - -#endif diff --git a/yoga/log.h b/yoga/log.h index b9bfea4f39..1d270e82e4 100644 --- a/yoga/log.h +++ b/yoga/log.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include "YGEnums.h" struct YGNode; @@ -38,5 +36,3 @@ struct Log { } // namespace detail } // namespace yoga } // namespace facebook - -#endif