5 # Note that the order of SUBDIRS matters.
6 # Many subdirectories depend on libfollytest from the test directory,
7 # so it must appear before other directories
8 SUBDIRS = . test experimental $(MAYBE_INIT) chrono/test io/test stats/test
10 ACLOCAL_AMFLAGS = -I m4
15 noinst_PROGRAMS = generate_fingerprint_tables
16 generate_fingerprint_tables_SOURCES = build/GenerateFingerprintTables.cpp
17 generate_fingerprint_tables_LDADD = libfollybase.la
19 noinst_LTLIBRARIES = \
20 libfollybasesse42.la \
27 follyincludedir = $(includedir)/folly
29 nobase_follyinclude_HEADERS = \
32 AtomicHashArray-inl.h \
35 AtomicIntrusiveLinkedList.h \
37 AtomicUnorderedMap.h \
43 ClockGettimeWrappers.h \
44 ConcurrentSkipList.h \
45 ConcurrentSkipList-inl.h \
50 compression/Compression.h \
51 compression/Counters.h \
54 concurrency/CacheLocality.h \
55 concurrency/ConcurrentHashMap.h \
56 concurrency/CoreCachedSharedPtr.h \
57 concurrency/detail/ConcurrentHashMap-detail.h \
58 concurrency/UnboundedQueue.h \
61 container/detail/BitIteratorDetail.h \
62 container/Iterator.h \
63 container/Enumerate.h \
64 container/EvictingCacheMap.h \
66 container/Foreach-inl.h \
67 container/SparseByteSet.h \
70 detail/AtomicHashUtils.h \
71 detail/AtomicUnorderedMapUtils.h \
72 detail/DiscriminatedPtrDetail.h \
73 detail/FileUtilDetail.h \
74 detail/FingerprintPolynomial.h \
76 detail/GroupVarintDetail.h \
78 detail/IPAddressSource.h \
79 detail/MemoryIdler.h \
80 detail/MPMCPipelineDetail.h \
82 detail/RangeCommon.h \
84 detail/SlowFingerprint.h \
85 detail/SocketFastOpen.h \
86 detail/StaticSingletonManager.h \
87 detail/ThreadLocalDetail.h \
89 detail/TurnSequencer.h \
91 executors/CPUThreadPoolExecutor.h \
93 executors/DrivableExecutor.h \
94 executors/FiberIOExecutor.h \
95 executors/FutureExecutor.h \
96 executors/GlobalExecutor.h \
97 executors/GlobalThreadPoolList.h \
98 executors/InlineExecutor.h \
99 executors/IOExecutor.h \
100 executors/IOObjectCache.h \
101 executors/IOThreadPoolExecutor.h \
102 executors/NotificationQueueExecutor.h \
103 executors/ScheduledExecutor.h \
104 executors/SerialExecutor.h \
105 executors/ThreadPoolExecutor.h \
106 executors/ThreadedExecutor.h \
107 executors/TimedDrivableExecutor.h \
108 executors/task_queue/BlockingQueue.h \
109 executors/task_queue/LifoSemMPMCQueue.h \
110 executors/task_queue/PriorityLifoSemMPMCQueue.h \
111 executors/task_queue/UnboundedBlockingQueue.h \
112 executors/thread_factory/NamedThreadFactory.h \
113 executors/thread_factory/PriorityThreadFactory.h \
114 executors/thread_factory/ThreadFactory.h \
115 functional/ApplyTuple.h \
124 ExceptionWrapper-inl.h \
127 concurrency/AtomicSharedPtr.h \
128 concurrency/detail/AtomicSharedPtr-detail.h \
129 experimental/AutoTimer.h \
130 experimental/ThreadedRepeatingFunctionRunner.h \
131 experimental/Bits.h \
132 experimental/BitVectorCoding.h \
133 experimental/CodingDetail.h \
134 experimental/DynamicParser.h \
135 experimental/DynamicParser-inl.h \
136 experimental/ExecutionObserver.h \
137 experimental/EliasFanoCoding.h \
138 experimental/EnvUtil.h \
139 experimental/EventCount.h \
140 experimental/Instructions.h \
141 experimental/bser/Bser.h \
142 experimental/exception_tracer/ExceptionAbi.h \
143 experimental/exception_tracer/ExceptionCounterLib.h \
144 experimental/exception_tracer/ExceptionTracer.h \
145 experimental/exception_tracer/ExceptionTracerLib.h \
146 experimental/exception_tracer/StackTrace.h \
147 experimental/FunctionScheduler.h \
148 experimental/FutureDAG.h \
149 experimental/hazptr/debug.h \
150 experimental/hazptr/hazptr.h \
151 experimental/hazptr/hazptr-impl.h \
152 experimental/hazptr/memory_resource.h \
153 experimental/io/FsUtil.h \
154 experimental/JemallocNodumpAllocator.h \
155 experimental/JSONSchema.h \
156 experimental/LockFreeRingBuffer.h \
157 experimental/logging/AsyncFileWriter.h \
158 experimental/logging/FileHandlerFactory.h \
159 experimental/logging/FileWriterFactory.h \
160 experimental/logging/GlogStyleFormatter.h \
161 experimental/logging/ImmediateFileWriter.h \
162 experimental/logging/Init.h \
163 experimental/logging/LogCategory.h \
164 experimental/logging/LogCategoryConfig.h \
165 experimental/logging/LogConfig.h \
166 experimental/logging/LogConfigParser.h \
167 experimental/logging/LogFormatter.h \
168 experimental/logging/Logger.h \
169 experimental/logging/LoggerDB.h \
170 experimental/logging/LogHandler.h \
171 experimental/logging/LogHandlerFactory.h \
172 experimental/logging/LogHandlerConfig.h \
173 experimental/logging/LogLevel.h \
174 experimental/logging/LogMessage.h \
175 experimental/logging/LogName.h \
176 experimental/logging/LogStream.h \
177 experimental/logging/LogStreamProcessor.h \
178 experimental/logging/LogWriter.h \
179 experimental/logging/printf.h \
180 experimental/logging/RateLimiter.h \
181 experimental/logging/StandardLogHandler.h \
182 experimental/logging/StandardLogHandlerFactory.h \
183 experimental/logging/StreamHandlerFactory.h \
184 experimental/logging/xlog.h \
185 experimental/NestedCommandLineApp.h \
186 experimental/observer/detail/Core.h \
187 experimental/observer/detail/GraphCycleDetector.h \
188 experimental/observer/detail/ObserverManager.h \
189 experimental/observer/detail/Observer-pre.h \
190 experimental/observer/Observable.h \
191 experimental/observer/Observable-inl.h \
192 experimental/observer/Observer.h \
193 experimental/observer/Observer-inl.h \
194 experimental/observer/SimpleObservable.h \
195 experimental/observer/SimpleObservable-inl.h \
196 experimental/ProgramOptions.h \
197 experimental/ReadMostlySharedPtr.h \
198 experimental/Select64.h \
199 experimental/StampedPtr.h \
200 experimental/StringKeyedCommon.h \
201 experimental/StringKeyedMap.h \
202 experimental/StringKeyedSet.h \
203 experimental/StringKeyedUnorderedMap.h \
204 experimental/StringKeyedUnorderedSet.h \
205 experimental/TestUtil.h \
206 experimental/TLRefCount.h \
207 experimental/TupleOps.h \
219 functional/Invoke.h \
220 functional/Partial.h \
222 futures/Future-pre.h \
225 futures/Future-inl.h \
226 futures/FutureException.h \
227 futures/FutureSplitter.h \
228 futures/Promise-inl.h \
230 futures/SharedPromise.h \
231 futures/SharedPromise-inl.h \
232 futures/ThreadWheelTimekeeper.h \
233 futures/Timekeeper.h \
234 futures/detail/Core.h \
235 futures/detail/FSM.h \
236 futures/detail/Types.h \
237 futures/test/TestExecutor.h \
239 hash/detail/ChecksumDetail.h \
241 hash/SpookyHashV1.h \
242 hash/SpookyHashV2.h \
254 gen/ParallelMap-inl.h \
262 IPAddressException.h \
274 io/ShutdownSocketSet.h \
275 io/async/AsyncPipe.h \
276 io/async/AsyncTimeout.h \
277 io/async/AsyncTransport.h \
278 io/async/AsyncUDPServerSocket.h \
279 io/async/AsyncUDPSocket.h \
280 io/async/AsyncServerSocket.h \
281 io/async/AsyncSignalHandler.h \
282 io/async/AsyncSocket.h \
283 io/async/AsyncSocketBase.h \
284 io/async/AsyncSSLSocket.h \
285 io/async/AsyncSocketException.h \
286 io/async/DecoratedAsyncTransportWrapper.h \
287 io/async/DelayedDestructionBase.h \
288 io/async/DelayedDestruction.h \
289 io/async/DestructorCheck.h \
290 io/async/EventBase.h \
291 io/async/EventBaseLocal.h \
292 io/async/EventBaseManager.h \
293 io/async/EventBaseThread.h \
294 io/async/EventFDWrapper.h \
295 io/async/EventHandler.h \
296 io/async/EventUtil.h \
297 io/async/NotificationQueue.h \
298 io/async/HHWheelTimer.h \
299 io/async/ssl/OpenSSLUtils.h \
300 io/async/ssl/SSLErrors.h \
301 io/async/ssl/TLSDefinitions.h \
303 io/async/SSLContext.h \
304 io/async/SSLOptions.h \
305 io/async/ScopedEventBaseThread.h \
306 io/async/TimeoutManager.h \
307 io/async/VirtualEventBase.h \
308 io/async/WriteChainAsyncTransportWrapper.h \
309 io/async/test/AsyncSSLSocketTest.h \
310 io/async/test/AsyncSocketTest2.h \
311 io/async/test/BlockingSocket.h \
312 io/async/test/MockAsyncSocket.h \
313 io/async/test/MockAsyncServerSocket.h \
314 io/async/test/MockAsyncSSLSocket.h \
315 io/async/test/MockAsyncTransport.h \
316 io/async/test/MockAsyncUDPSocket.h \
317 io/async/test/MockTimeoutManager.h \
318 io/async/test/ScopedBoundPort.h \
319 io/async/test/SocketPair.h \
320 io/async/test/TestSSLServer.h \
321 io/async/test/TimeUtil.h \
322 io/async/test/UndelayedDestruction.h \
323 io/async/test/Util.h \
330 lang/RValueReferenceWrapper.h \
343 memory/MallctlHelper.h \
345 memory/ThreadCachedArena.h \
346 memory/UninitializedMemoryHacks.h \
347 memory/detail/MallocImpl.h \
364 portability/Atomic.h \
365 portability/BitsFunctexcept.h \
366 portability/Builtins.h \
367 portability/Config.h \
368 portability/Constexpr.h \
369 portability/Dirent.h \
370 portability/Event.h \
371 portability/Fcntl.h \
372 portability/GFlags.h \
373 portability/GMock.h \
374 portability/GTest.h \
375 portability/IOVec.h \
376 portability/Libgen.h \
377 portability/Malloc.h \
379 portability/Memory.h \
380 portability/OpenSSL.h \
381 portability/PThread.h \
382 portability/Semaphore.h \
383 portability/Sockets.h \
384 portability/Stdio.h \
385 portability/Stdlib.h \
386 portability/String.h \
387 portability/Syslog.h \
388 portability/SysFile.h \
389 portability/SysMembarrier.h \
390 portability/SysMman.h \
391 portability/SysResource.h \
392 portability/SysStat.h \
393 portability/SysSyscall.h \
394 portability/SysTime.h \
395 portability/SysTypes.h \
396 portability/SysUio.h \
398 portability/TypeTraits.h \
399 portability/Unistd.h \
400 portability/Windows.h \
402 PriorityMPMCQueue.h \
403 ProducerConsumerQueue.h \
412 SingletonThreadLocal.h \
416 sorted_vector_types.h \
419 ssl/OpenSSLCertUtils.h \
421 ssl/OpenSSLPtrTypes.h \
422 ssl/OpenSSLVersionFinder.h \
424 ssl/OpenSSLLockTypes.h \
425 ssl/detail/OpenSSLThreading.h \
426 ssl/detail/SSLSessionImpl.h \
427 stats/detail/Bucket.h \
428 stats/BucketedTimeSeries-defs.h \
429 stats/BucketedTimeSeries.h \
430 stats/Histogram-defs.h \
432 stats/MultiLevelTimeSeries-defs.h \
433 stats/MultiLevelTimeSeries.h \
434 stats/TimeseriesHistogram-defs.h \
435 stats/TimeseriesHistogram.h \
436 synchronization/AsymmetricMemoryBarrier.h \
437 synchronization/AtomicStruct.h \
438 synchronization/Baton.h \
439 synchronization/CallOnce.h \
440 synchronization/LifoSem.h \
441 synchronization/ParkingLot.h \
442 synchronization/RWSpinLock.h \
443 synchronization/SaturatingSemaphore.h \
444 synchronization/Tearable.h \
445 synchronization/WaitOptions.h \
446 synchronization/detail/AtomicUtils.h \
447 synchronization/detail/Sleeper.h \
448 system/MemoryMapping.h \
451 system/ThreadName.h \
452 system/VersionCheck.h \
459 test/FBStringTestBenchmarks.cpp.h \
460 test/FBVectorTestBenchmarks.cpp.h \
461 test/function_benchmark/benchmark_impl.h \
462 test/function_benchmark/test_functions.h \
463 test/SynchronizedTestLib.h \
464 test/SynchronizedTestLib-inl.h \
470 tracing/StaticTracepoint.h \
471 tracing/ScopedTraceSection.h \
477 UncaughtExceptions.h \
484 FormatTables.cpp: build/generate_format_tables.py
485 $(PYTHON) build/generate_format_tables.py
486 CLEANFILES += FormatTables.cpp
488 EscapeTables.cpp: build/generate_escape_tables.py
489 $(PYTHON) build/generate_escape_tables.py
490 CLEANFILES += EscapeTables.cpp
492 GroupVarintTables.cpp: build/generate_varint_tables.py
493 $(PYTHON) build/generate_varint_tables.py
494 CLEANFILES += GroupVarintTables.cpp
496 libfollybasesse42_la_SOURCES = \
497 detail/RangeSse42.cpp \
498 hash/detail/ChecksumDetail.cpp \
499 hash/detail/Crc32cDetail.cpp
501 libfollybase_la_SOURCES = \
504 detail/RangeCommon.cpp \
509 memory/MallctlHelper.cpp \
510 portability/BitsFunctexcept.cpp \
514 libfolly_la_SOURCES = \
515 ClockGettimeWrappers.cpp \
516 compression/Compression.cpp \
517 compression/Counters.cpp \
518 compression/Zlib.cpp \
519 concurrency/CacheLocality.cpp \
522 detail/IPAddress.cpp \
523 detail/StaticSingletonManager.cpp \
524 detail/ThreadLocalDetail.cpp \
526 ExceptionWrapper.cpp \
531 FingerprintTables.cpp \
532 futures/Barrier.cpp \
534 futures/FutureException.cpp \
535 futures/ThreadWheelTimekeeper.cpp \
536 futures/test/TestExecutor.cpp \
537 executors/CPUThreadPoolExecutor.cpp \
538 executors/Codel.cpp \
539 executors/GlobalExecutor.cpp \
540 executors/GlobalThreadPoolList.cpp \
541 executors/IOThreadPoolExecutor.cpp \
542 executors/InlineExecutor.cpp \
543 executors/ManualExecutor.cpp \
544 executors/SerialExecutor.cpp \
545 executors/ThreadPoolExecutor.cpp \
546 executors/ThreadedExecutor.cpp \
547 executors/TimedDrivableExecutor.cpp \
548 executors/QueuedImmediateExecutor.cpp \
549 experimental/hazptr/hazptr.cpp \
550 experimental/hazptr/memory_resource.cpp \
552 GroupVarintTables.cpp \
554 hash/SpookyHashV1.cpp \
555 hash/SpookyHashV2.cpp \
564 io/ShutdownSocketSet.cpp \
565 io/async/AsyncPipe.cpp \
566 io/async/AsyncTimeout.cpp \
567 io/async/AsyncUDPSocket.cpp \
568 io/async/AsyncServerSocket.cpp \
569 io/async/AsyncSignalHandler.cpp \
570 io/async/AsyncSocket.cpp \
571 io/async/AsyncSocketException.cpp \
572 io/async/AsyncSSLSocket.cpp \
573 io/async/EventBase.cpp \
574 io/async/EventBaseLocal.cpp \
575 io/async/EventBaseManager.cpp \
576 io/async/EventBaseThread.cpp \
577 io/async/EventHandler.cpp \
578 io/async/Request.cpp \
579 io/async/SSLContext.cpp \
580 io/async/SSLOptions.cpp \
581 io/async/ScopedEventBaseThread.cpp \
582 io/async/VirtualEventBase.cpp \
583 io/async/HHWheelTimer.cpp \
584 io/async/TimeoutManager.cpp \
585 io/async/test/ScopedBoundPort.cpp \
586 io/async/test/SocketPair.cpp \
587 io/async/test/TimeUtil.cpp \
588 io/async/ssl/OpenSSLUtils.cpp \
589 io/async/ssl/SSLErrors.cpp \
593 lang/SafeAssert.cpp \
594 detail/MemoryIdler.cpp \
595 detail/SocketFastOpen.cpp \
597 memory/ThreadCachedArena.cpp \
598 portability/Dirent.cpp \
599 portability/Fcntl.cpp \
600 portability/Libgen.cpp \
601 portability/Malloc.cpp \
602 portability/OpenSSL.cpp \
603 portability/PThread.cpp \
604 portability/Sockets.cpp \
605 portability/Stdio.cpp \
606 portability/Stdlib.cpp \
607 portability/String.cpp \
608 portability/SysFile.cpp \
609 portability/SysMembarrier.cpp \
610 portability/SysMman.cpp \
611 portability/SysResource.cpp \
612 portability/SysStat.cpp \
613 portability/SysTime.cpp \
614 portability/SysUio.cpp \
615 portability/Time.cpp \
616 portability/Unistd.cpp \
625 ssl/OpenSSLCertUtils.cpp \
626 ssl/OpenSSLHash.cpp \
627 ssl/detail/OpenSSLThreading.cpp \
628 ssl/detail/SSLSessionImpl.cpp \
629 stats/BucketedTimeSeries.cpp \
630 stats/Histogram.cpp \
631 stats/MultiLevelTimeSeries.cpp \
632 stats/TimeseriesHistogram.cpp \
633 synchronization/AsymmetricMemoryBarrier.cpp \
634 synchronization/LifoSem.cpp \
635 synchronization/ParkingLot.cpp \
636 synchronization/WaitOptions.cpp \
637 system/MemoryMapping.cpp \
639 system/ThreadName.cpp \
640 system/VersionCheck.cpp \
645 experimental/ThreadedRepeatingFunctionRunner.cpp \
646 experimental/bser/Dump.cpp \
647 experimental/bser/Load.cpp \
648 experimental/DynamicParser.cpp \
649 experimental/EnvUtil.cpp \
650 experimental/FunctionScheduler.cpp \
651 experimental/io/FsUtil.cpp \
652 experimental/JemallocNodumpAllocator.cpp \
653 experimental/JSONSchema.cpp \
654 experimental/NestedCommandLineApp.cpp \
655 experimental/observer/detail/Core.cpp \
656 experimental/observer/detail/ObserverManager.cpp \
657 experimental/ProgramOptions.cpp \
658 experimental/Select64.cpp \
659 experimental/TestUtil.cpp
662 nobase_follyinclude_HEADERS += \
663 experimental/io/HugePages.h
664 libfolly_la_SOURCES += \
665 experimental/io/HugePages.cpp
668 if !HAVE_WEAK_SYMBOLS
669 libfollybase_la_SOURCES += memory/detail/MallocImpl.cpp
672 if HAVE_BOOST_CONTEXT
673 nobase_follyinclude_HEADERS += \
675 fibers/AddTasks-inl.h \
676 fibers/AtomicBatchDispatcher.h \
677 fibers/AtomicBatchDispatcher-inl.h \
680 fibers/BatchDispatcher.h \
681 fibers/BoostContextCompatibility.h \
682 fibers/detail/AtomicBatchDispatcher.h \
683 fibers/EventBaseLoopController.h \
684 fibers/EventBaseLoopController-inl.h \
687 fibers/FiberManager.h \
688 fibers/FiberManager-inl.h \
689 fibers/FiberManagerInternal.h \
690 fibers/FiberManagerInternal-inl.h \
691 fibers/FiberManagerMap.h \
693 fibers/ForEach-inl.h \
694 fibers/GenericBaton.h \
695 fibers/GuardPageAllocator.h \
696 fibers/LoopController.h \
698 fibers/Promise-inl.h \
700 fibers/SimpleLoopController.h \
701 fibers/TimedMutex.h \
702 fibers/TimedMutex-inl.h \
703 fibers/TimeoutController.h \
708 libfolly_la_SOURCES += \
710 fibers/detail/AtomicBatchDispatcher.cpp \
712 fibers/FiberManager.cpp \
713 fibers/FiberManagerMap.cpp \
714 fibers/GuardPageAllocator.cpp \
715 fibers/Semaphore.cpp \
716 fibers/TimeoutController.cpp
720 nobase_follyinclude_HEADERS += \
721 experimental/symbolizer/Elf.h \
722 experimental/symbolizer/Elf-inl.h \
723 experimental/symbolizer/ElfCache.h \
724 experimental/symbolizer/Dwarf.h \
725 experimental/symbolizer/LineReader.h \
726 experimental/symbolizer/SignalHandler.h \
727 experimental/symbolizer/StackTrace.h \
728 experimental/symbolizer/Symbolizer.h
730 libfolly_la_SOURCES += \
731 experimental/symbolizer/Elf.cpp \
732 experimental/symbolizer/ElfCache.cpp \
733 experimental/symbolizer/Dwarf.cpp \
734 experimental/symbolizer/LineReader.cpp \
735 experimental/symbolizer/SignalHandler.cpp \
736 experimental/symbolizer/StackTrace.cpp \
737 experimental/symbolizer/Symbolizer.cpp
740 if HAVE_VARIABLE_TEMPLATES
741 libfolly_la_SOURCES += \
745 libfollybasesse42_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION)
746 libfollybasesse42_la_CXXFLAGS = -msse4.2 -mpclmul
748 libfollybase_la_LIBADD = libfollybasesse42.la
749 libfollybase_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION)
751 libfolly_la_LIBADD = libfollybase.la
752 libfolly_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION) -lssl
755 libfolly_la_LDFLAGS += -lunwind
758 FingerprintTables.cpp: generate_fingerprint_tables
759 ./generate_fingerprint_tables
760 CLEANFILES += FingerprintTables.cpp
762 libfollybenchmark_la_SOURCES = Benchmark.cpp
763 libfollybenchmark_la_LIBADD = libfolly.la
764 libfollybenchmark_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION)
766 # install pkg-config metadata file
767 pkgconfigdir = $(libdir)/pkgconfig
768 nodist_pkgconfig_DATA = libfolly.pc