Marc Horowitz f3f44eee59 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
2017-06-15 13:05:04 -07:00

46 lines
1.8 KiB
Ruby

Pod::Spec.new do |spec|
spec.name = 'Folly'
spec.version = '2016.09.26.00'
spec.license = { :type => 'Apache License, Version 2.0' }
spec.homepage = 'https://github.com/facebook/folly'
spec.summary = 'An open-source C++ library developed and used at Facebook.'
spec.authors = 'Facebook'
spec.source = { :git => 'https://github.com/facebook/folly.git',
:tag => "v#{spec.version}" }
spec.module_name = 'folly'
spec.dependency 'boost'
spec.dependency 'DoubleConversion'
spec.dependency 'GLog'
spec.compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1'
spec.header_mappings_dir = 'folly'
spec.source_files = 'folly/Bits.cpp',
'folly/Conv.cpp',
'folly/Demangle.cpp',
'folly/StringBase.cpp',
'folly/Unicode.cpp',
'folly/dynamic.cpp',
'folly/json.cpp'
# workaround for https://github.com/facebook/react-native/issues/14326
spec.preserve_paths = 'folly/*.h'
spec.libraries = "stdc++"
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
"CLANG_CXX_LANGUAGE_STANDARD" => "c++14",
"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\"" }
# Pinning to the same version as React.podspec.
spec.platform = :ios, '8.0'
spec.subspec "detail" do |ss|
ss.header_dir = 'folly/detail'
ss.source_files = 'folly/detail/*.h',
'folly/detail/MallocImpl.cpp'
end
spec.subspec "portability" do |ss|
ss.header_dir = 'folly/portability'
ss.source_files = 'folly/portability/*.h',
'folly/portability/BitsFunctexcept.cpp'
end
end