From fc687653149cb887e2f63c70f16b01f65e5d75eb Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Wed, 26 Apr 2023 17:27:29 -0700 Subject: [PATCH] Remove private headers exposed by podspecs (#940) Summary: X-link: https://github.com/facebook/litho/pull/940 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] Reviewed By: rshest Differential Revision: D45139075 fbshipit-source-id: 99152986a578f7aac8324dffe0e18c42a38cc6a5 --- 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 bbe0aabe..957ee98e 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 a60ea760..b17751ad 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 e489fbb6..26859330 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 82867a57..376c4fb5 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 e15cc122..77ce16fb 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 @@ public: setCloneNodeCallback(YGCloneNodeFunc{nullptr}); } }; - -#endif diff --git a/yoga/YGFloatOptional.h b/yoga/YGFloatOptional.h index 6af7bbaf..4aa9e76e 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 e95efbcc..166eabb6 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 @@ public: 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 14122342..b57a1207 100644 --- a/yoga/YGNode.h +++ b/yoga/YGNode.h @@ -7,8 +7,6 @@ #pragma once -#ifdef __cplusplus - #include #include #include "CompactValue.h" @@ -337,5 +335,3 @@ public: bool isNodeFlexible(); void reset(); }; - -#endif diff --git a/yoga/YGNodePrint.h b/yoga/YGNodePrint.h index 83b3f860..f06d457c 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 858b7cd1..20ce4e05 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 9444bb5d..e6f370d6 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 b9bfea4f..1d270e82 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