Work around the broken way CocoaPods/Xcode deals with header maps
Summary: See https://github.com/facebook/react-native/issues/14326 for the bug this fixes. This is a pretty ugly hack to work around what I think is a CP bug. Since the C++ dependencies are only needed to build RN itself, and not applications, don't the conflicting headers as source files. Instead, use preserve_paths to get them unpacked into the source tree under Pods/<Pod>, and arrange for them to get used with HEADER_SEARCH_PATHS. This keeps them out of the project, so they don't get included in the header map, and other (badly structured) projects don't get confused. Reviewed By: javache Differential Revision: D5254716 fbshipit-source-id: cf33dcbcc71b5247843650c33ccf4fb08378e584
This commit is contained in:
parent
c143313a20
commit
f3f44eee59
|
@ -107,7 +107,7 @@ Pod::Spec.new do |s|
|
||||||
ss.source_files = "ReactCommon/cxxreact/*.{cpp,h}"
|
ss.source_files = "ReactCommon/cxxreact/*.{cpp,h}"
|
||||||
ss.exclude_files = "ReactCommon/cxxreact/{JSCTracing,SampleCxxModule}.*"
|
ss.exclude_files = "ReactCommon/cxxreact/{JSCTracing,SampleCxxModule}.*"
|
||||||
ss.private_header_files = "ReactCommon/cxxreact/*.h"
|
ss.private_header_files = "ReactCommon/cxxreact/*.h"
|
||||||
ss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\"" }
|
ss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/Folly\"" }
|
||||||
end
|
end
|
||||||
|
|
||||||
s.subspec "ART" do |ss|
|
s.subspec "ART" do |ss|
|
||||||
|
|
|
@ -13,14 +13,15 @@ Pod::Spec.new do |spec|
|
||||||
spec.dependency 'GLog'
|
spec.dependency 'GLog'
|
||||||
spec.compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1'
|
spec.compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1'
|
||||||
spec.header_mappings_dir = 'folly'
|
spec.header_mappings_dir = 'folly'
|
||||||
spec.source_files = 'folly/*.h',
|
spec.source_files = 'folly/Bits.cpp',
|
||||||
'folly/Bits.cpp',
|
|
||||||
'folly/Conv.cpp',
|
'folly/Conv.cpp',
|
||||||
'folly/Demangle.cpp',
|
'folly/Demangle.cpp',
|
||||||
'folly/StringBase.cpp',
|
'folly/StringBase.cpp',
|
||||||
'folly/Unicode.cpp',
|
'folly/Unicode.cpp',
|
||||||
'folly/dynamic.cpp',
|
'folly/dynamic.cpp',
|
||||||
'folly/json.cpp'
|
'folly/json.cpp'
|
||||||
|
# workaround for https://github.com/facebook/react-native/issues/14326
|
||||||
|
spec.preserve_paths = 'folly/*.h'
|
||||||
spec.libraries = "stdc++"
|
spec.libraries = "stdc++"
|
||||||
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
|
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
|
||||||
"CLANG_CXX_LANGUAGE_STANDARD" => "c++14",
|
"CLANG_CXX_LANGUAGE_STANDARD" => "c++14",
|
||||||
|
|
|
@ -10,7 +10,7 @@ Pod::Spec.new do |spec|
|
||||||
spec.source = { :git => 'https://github.com/google/glog.git',
|
spec.source = { :git => 'https://github.com/google/glog.git',
|
||||||
:tag => "v#{spec.version}" }
|
:tag => "v#{spec.version}" }
|
||||||
spec.module_name = 'glog'
|
spec.module_name = 'glog'
|
||||||
spec.source_files = 'src/**/*.h',
|
spec.source_files = 'src/glog/*.h',
|
||||||
'src/demangle.cc',
|
'src/demangle.cc',
|
||||||
'src/logging.cc',
|
'src/logging.cc',
|
||||||
'src/raw_logging.cc',
|
'src/raw_logging.cc',
|
||||||
|
@ -18,8 +18,10 @@ Pod::Spec.new do |spec|
|
||||||
'src/symbolize.cc',
|
'src/symbolize.cc',
|
||||||
'src/utilities.cc',
|
'src/utilities.cc',
|
||||||
'src/vlog_is_on.cc'
|
'src/vlog_is_on.cc'
|
||||||
|
# workaround for https://github.com/facebook/react-native/issues/14326
|
||||||
|
spec.preserve_paths = 'src/*.h',
|
||||||
|
'src/base/*.h'
|
||||||
spec.exclude_files = "src/windows/**/*"
|
spec.exclude_files = "src/windows/**/*"
|
||||||
spec.public_header_files = "src/glog/*.h"
|
|
||||||
spec.libraries = "stdc++"
|
spec.libraries = "stdc++"
|
||||||
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
|
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
|
||||||
"HEADER_SEARCH_PATHS" => "$(PODS_TARGET_SRCROOT)/src" }
|
"HEADER_SEARCH_PATHS" => "$(PODS_TARGET_SRCROOT)/src" }
|
||||||
|
|
Loading…
Reference in New Issue