forked from facebook/react-native
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RCT-Folly.podspec
149 lines (139 loc) · 8.5 KB
/
RCT-Folly.podspec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
folly_release_version = '2021.06.28.00'
Pod::Spec.new do |spec|
spec.name = 'RCT-Folly'
# Patched to v2 to address https://github.com/react-native-community/releases/issues/251
spec.version = folly_release_version + '-v2'
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#{folly_release_version}" }
spec.module_name = 'folly'
spec.header_mappings_dir = '.'
spec.dependency 'boost'
spec.dependency 'DoubleConversion'
spec.dependency 'glog'
spec.dependency 'fmt' , '~> 6.2.1'
spec.compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation -faligned-new'
spec.source_files = 'folly/String.cpp',
'folly/Conv.cpp',
'folly/Demangle.cpp',
'folly/FileUtil.cpp',
'folly/Format.cpp',
'folly/lang/SafeAssert.cpp',
'folly/lang/ToAscii.cpp',
'folly/ScopeGuard.cpp',
'folly/Unicode.cpp',
'folly/dynamic.cpp',
'folly/json.cpp',
'folly/json_pointer.cpp',
'folly/container/detail/F14Table.cpp',
'folly/detail/Demangle.cpp',
'folly/detail/UniqueInstance.cpp',
'folly/hash/SpookyHashV2.cpp',
'folly/lang/Assume.cpp',
'folly/lang/CString.cpp',
'folly/lang/Exception.cpp',
'folly/memory/detail/MallocImpl.cpp',
'folly/net/NetOps.cpp',
'folly/portability/SysUio.cpp',
'folly/system/ThreadId.h',
'folly/system/ThreadId.cpp',
'folly/*.h',
'folly/container/*.h',
'folly/container/detail/*.h',
'folly/detail/*.h',
'folly/functional/*.h',
'folly/hash/*.h',
'folly/lang/*.h',
'folly/memory/*.h',
'folly/memory/detail/*.h',
'folly/net/*.h',
'folly/net/detail/*.h',
'folly/portability/*.h'
# workaround for https://github.com/facebook/react-native/issues/14326
spec.preserve_paths = 'folly/*.h',
'folly/container/*.h',
'folly/container/detail/*.h',
'folly/detail/*.h',
'folly/functional/*.h',
'folly/hash/*.h',
'folly/lang/*.h',
'folly/memory/*.h',
'folly/memory/detail/*.h',
'folly/net/*.h',
'folly/net/detail/*.h',
'folly/portability/*.h'
spec.libraries = "c++abi" # NOTE Apple-only: Keep c++abi here due to https://github.com/react-native-community/releases/issues/251
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/libevent/include/\"" }
# TODO: The boost spec should really be selecting these files so that dependents of Folly can also access the required headers.
spec.user_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"" }
spec.default_subspec = 'Default'
spec.subspec 'Default' do
# no-op
end
spec.subspec 'Fabric' do |fabric|
fabric.source_files = 'folly/SharedMutex.cpp',
'folly/concurrency/CacheLocality.cpp',
'folly/detail/Futex.cpp',
'folly/synchronization/ParkingLot.cpp',
'folly/portability/Malloc.cpp'
fabric.preserve_paths = 'folly/concurrency/CacheLocality.h',
'folly/synchronization/ParkingLot.h',
'folly/synchronization/SanitizeThread.h',
'folly/system/ThreadId.h'
end
spec.subspec 'Futures' do |futures|
futures.dependency 'libevent'
futures.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => ["$(inherited)", "$(PODS_ROOT)/Headers/Public/libevent/event"] }
futures.source_files = 'folly/futures/*.{h,cpp}',
'folly/futures/detail/*.{h,cpp}',
'folly/executors/*.{h,cpp}',
'folly/executors/thread_factory/{NamedThreadFactory,ThreadFactory}.{h,cpp}',
'folly/executors/task_queue/{BlockingQueue,UnboundedBlockingQueue,LifoSemMPMCQueue,PriorityUnboundedBlockingQueue,PriorityLifoSemMPMCQueue}.{h,cpp}',
'folly/concurrency/*.{h,cpp}',
'folly/system/{ThreadId,ThreadName,HardwareConcurrency}.{h,cpp}',
'folly/synchronization/*.{h,cpp}',
'folly/synchronization/detail/*.{h,cpp}',
'folly/Try.cpp',
'folly/concurrency/CacheLocality.cpp',
'folly/experimental/{ExecutionObserver,ReadMostlySharedPtr,SingleWriterFixedHashMap,TLRefCount}.{h,cpp}',
'folly/io/async/{AtomicNotificationQueue,AtomicNotificationQueue-inl,AsyncTimeout,DelayedDestruction,DelayedDestructionBase,EventBase,EventBaseLocal,EventBaseManager,EventBaseAtomicNotificationQueue,EventBaseAtomicNotificationQueue-inl,EventBaseBackendBase,EventHandler,EventUtil,HHWheelTimer,HHWheelTimer-fwd,NotificationQueue,Request,TimeoutManager,VirtualEventBase}.{h,cpp}',
'folly/io/{Cursor,Cursor-inl,IOBuf,IOBufQueue}.{h,cpp}',
'folly/tracing/StaticTracepoint.{h,cpp}',
'folly/tracing/AsyncStack.{h,cpp}',
'folly/tracing/AsyncStack-inl.h',
'folly/{Executor,ExceptionString,ExceptionWrapper,ExceptionWrapper-inl,FileUtil,Singleton,SharedMutex}.{h,cpp}',
'folly/detail/{AsyncTrace,AtFork,Futex,Futex-inl,MemoryIdler,SingletonStackTrace,StaticSingletonManager,ThreadLocalDetail}.{h,cpp}',
'folly/lang/SafeAssert.{h,cpp}',
'folly/memory/MallctlHelper.{h,cpp}',
'folly/portability/{GFlags,SysUio}.{h,cpp}',
'folly/portability/SysMembarrier.cpp',
'folly/chrono/Hardware.{h,cpp}',
'folly/experimental/coro/Traits.{h,cpp}',
'folly/fibers/*.{h,cpp}',
'folly/experimental/coro/Coroutine.{h,cpp}',
'folly/fibers/Baton-inl.h',
'folly/experimental/**/*.h',
'folly/system/Pid.{h,cpp}'
# TODO: Perhaps some of the wildcards above can be further trimmed down with some of these:
#
# 'folly/executors/{DrivableExecutor,InlineExecutor,QueuedImmediateExecutor,TimedDrivableExecutor}.{h,cpp}',
# 'folly/concurrency/{CacheLocality,UnboundedQueue}.{h,cpp}',
# 'folly/system/ThreadId.h',
# 'folly/synchronization/Hazptr{,-fwd,Domain,Holder,Obj,ObjLinked,Rec,ThrLocal}.{h,cpp}',
# 'folly/synchronization/{AsymmetricMemoryBarrier,AtomicStruct,Baton,MicroSpinLock,ParkingLot,RWSpinLock,SanitizeThread,SaturatingSemaphore,WaitOptions}.{h,cpp}',
# 'folly/synchronization/detail/{AtomicUtils,Sleeper,Spin}.{h,cpp}',
# 'folly/experimental/{ReadMostlySharedPtr,TLRefCount}.h',
end
# Folly has issues when compiled with iOS 10 set as deployment target
# See https://github.com/facebook/folly/issues/1470 for details
spec.platforms = { :ios => "9.0", :tvos => "9.0" }
end