facebook / folly

An open-source C++ library developed and used at Facebook.
https://groups.google.com/forum/?fromgroups#!forum/facebook-folly
Apache License 2.0
28.2k stars 5.54k forks source link

Build fails on macOS Sierra: Undefined symbols "operator delete" "operator new" #864

Closed ryandesign closed 2 years ago

ryandesign commented 6 years ago

Building folly 2018.05.28.00 fails on macOS Sierra (10.12, Xcode 9.2 Build version 9C40b, "Apple LLVM version 9.0.0 (clang-900.0.39.2)"):

/usr/bin/clang++  -pipe -Os -DNDEBUG -I/opt/local/include -stdlib=libc++ -arch x86_64 -mmacosx-version-min=10.12 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names CMakeFiles/GenerateFingerprintTables.dir/folly/build/GenerateFingerprintTables.cpp.o CMakeFiles/folly_base.dir/folly/ClockGettimeWrappers.cpp.o CMakeFiles/folly_base.dir/folly/Conv.cpp.o CMakeFiles/folly_base.dir/folly/Demangle.cpp.o CMakeFiles/folly_base.dir/folly/ExceptionWrapper.cpp.o CMakeFiles/folly_base.dir/folly/Executor.cpp.o CMakeFiles/folly_base.dir/folly/File.cpp.o CMakeFiles/folly_base.dir/folly/FileUtil.cpp.o CMakeFiles/folly_base.dir/folly/Format.cpp.o CMakeFiles/folly_base.dir/folly/FormatArg.cpp.o CMakeFiles/folly_base.dir/folly/GroupVarint.cpp.o CMakeFiles/folly_base.dir/folly/IPAddress.cpp.o CMakeFiles/folly_base.dir/folly/IPAddressV4.cpp.o CMakeFiles/folly_base.dir/folly/IPAddressV6.cpp.o CMakeFiles/folly_base.dir/folly/MacAddress.cpp.o CMakeFiles/folly_base.dir/folly/MicroLock.cpp.o CMakeFiles/folly_base.dir/folly/Poly.cpp.o CMakeFiles/folly_base.dir/folly/Random.cpp.o CMakeFiles/folly_base.dir/folly/ScopeGuard.cpp.o CMakeFiles/folly_base.dir/folly/SharedMutex.cpp.o CMakeFiles/folly_base.dir/folly/Singleton.cpp.o CMakeFiles/folly_base.dir/folly/SocketAddress.cpp.o CMakeFiles/folly_base.dir/folly/String.cpp.o CMakeFiles/folly_base.dir/folly/Subprocess.cpp.o CMakeFiles/folly_base.dir/folly/TimeoutQueue.cpp.o CMakeFiles/folly_base.dir/folly/Unicode.cpp.o CMakeFiles/folly_base.dir/folly/Uri.cpp.o CMakeFiles/folly_base.dir/folly/dynamic.cpp.o CMakeFiles/folly_base.dir/folly/json.cpp.o CMakeFiles/folly_base.dir/folly/json_pointer.cpp.o CMakeFiles/folly_base.dir/folly/compression/Compression.cpp.o CMakeFiles/folly_base.dir/folly/compression/Counters.cpp.o CMakeFiles/folly_base.dir/folly/compression/Zlib.cpp.o CMakeFiles/folly_base.dir/folly/compression/Zstd.cpp.o CMakeFiles/folly_base.dir/folly/concurrency/CacheLocality.cpp.o CMakeFiles/folly_base.dir/folly/container/detail/F14Table.cpp.o CMakeFiles/folly_base.dir/folly/detail/AtFork.cpp.o CMakeFiles/folly_base.dir/folly/detail/Futex.cpp.o CMakeFiles/folly_base.dir/folly/detail/IPAddress.cpp.o CMakeFiles/folly_base.dir/folly/detail/MemoryIdler.cpp.o CMakeFiles/folly_base.dir/folly/detail/RangeCommon.cpp.o CMakeFiles/folly_base.dir/folly/detail/RangeSse42.cpp.o CMakeFiles/folly_base.dir/folly/detail/SocketFastOpen.cpp.o CMakeFiles/folly_base.dir/folly/detail/StaticSingletonManager.cpp.o CMakeFiles/folly_base.dir/folly/detail/ThreadLocalDetail.cpp.o CMakeFiles/folly_base.dir/folly/executors/CPUThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/Codel.cpp.o CMakeFiles/folly_base.dir/folly/executors/GlobalExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/GlobalThreadPoolList.cpp.o CMakeFiles/folly_base.dir/folly/executors/IOThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/InlineExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ManualExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/QueuedImmediateExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/SerialExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ThreadPoolExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/ThreadedExecutor.cpp.o CMakeFiles/folly_base.dir/folly/executors/TimedDrivableExecutor.cpp.o CMakeFiles/folly_base.dir/folly/experimental/DynamicParser.cpp.o CMakeFiles/folly_base.dir/folly/experimental/EnvUtil.cpp.o CMakeFiles/folly_base.dir/folly/experimental/FunctionScheduler.cpp.o CMakeFiles/folly_base.dir/folly/experimental/JSONSchema.cpp.o CMakeFiles/folly_base.dir/folly/experimental/JemallocNodumpAllocator.cpp.o CMakeFiles/folly_base.dir/folly/experimental/NestedCommandLineApp.cpp.o CMakeFiles/folly_base.dir/folly/experimental/ProgramOptions.cpp.o CMakeFiles/folly_base.dir/folly/experimental/Select64.cpp.o CMakeFiles/folly_base.dir/folly/experimental/TestUtil.cpp.o CMakeFiles/folly_base.dir/folly/experimental/ThreadedRepeatingFunctionRunner.cpp.o CMakeFiles/folly_base.dir/folly/experimental/bser/Dump.cpp.o CMakeFiles/folly_base.dir/folly/experimental/bser/Load.cpp.o CMakeFiles/folly_base.dir/folly/experimental/hazptr/hazptr.cpp.o CMakeFiles/folly_base.dir/folly/experimental/hazptr/memory_resource.cpp.o CMakeFiles/folly_base.dir/folly/experimental/io/FsUtil.cpp.o CMakeFiles/folly_base.dir/folly/experimental/io/HugePages.cpp.o CMakeFiles/folly_base.dir/folly/experimental/observer/detail/Core.cpp.o CMakeFiles/folly_base.dir/folly/experimental/observer/detail/ObserverManager.cpp.o CMakeFiles/folly_base.dir/folly/experimental/settings/Settings.cpp.o CMakeFiles/folly_base.dir/folly/fibers/Baton.cpp.o CMakeFiles/folly_base.dir/folly/fibers/Fiber.cpp.o CMakeFiles/folly_base.dir/folly/fibers/FiberManager.cpp.o CMakeFiles/folly_base.dir/folly/fibers/FiberManagerMap.cpp.o CMakeFiles/folly_base.dir/folly/fibers/GuardPageAllocator.cpp.o CMakeFiles/folly_base.dir/folly/fibers/Semaphore.cpp.o CMakeFiles/folly_base.dir/folly/fibers/TimeoutController.cpp.o CMakeFiles/folly_base.dir/folly/fibers/detail/AtomicBatchDispatcher.cpp.o CMakeFiles/folly_base.dir/folly/futures/Barrier.cpp.o CMakeFiles/folly_base.dir/folly/futures/Future.cpp.o CMakeFiles/folly_base.dir/folly/futures/ThreadWheelTimekeeper.cpp.o CMakeFiles/folly_base.dir/folly/hash/Checksum.cpp.o CMakeFiles/folly_base.dir/folly/hash/SpookyHashV1.cpp.o CMakeFiles/folly_base.dir/folly/hash/SpookyHashV2.cpp.o CMakeFiles/folly_base.dir/folly/hash/detail/ChecksumDetail.cpp.o CMakeFiles/folly_base.dir/folly/hash/detail/Crc32cDetail.cpp.o CMakeFiles/folly_base.dir/folly/init/Init.cpp.o CMakeFiles/folly_base.dir/folly/io/Cursor.cpp.o CMakeFiles/folly_base.dir/folly/io/GlobalShutdownSocketSet.cpp.o CMakeFiles/folly_base.dir/folly/io/IOBuf.cpp.o CMakeFiles/folly_base.dir/folly/io/IOBufQueue.cpp.o CMakeFiles/folly_base.dir/folly/io/RecordIO.cpp.o CMakeFiles/folly_base.dir/folly/io/ShutdownSocketSet.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncPipe.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSSLSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncServerSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSignalHandler.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncSocketException.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncTimeout.cpp.o CMakeFiles/folly_base.dir/folly/io/async/AsyncUDPSocket.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBase.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseLocal.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseManager.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventBaseThread.cpp.o CMakeFiles/folly_base.dir/folly/io/async/EventHandler.cpp.o CMakeFiles/folly_base.dir/folly/io/async/HHWheelTimer.cpp.o CMakeFiles/folly_base.dir/folly/io/async/Request.cpp.o CMakeFiles/folly_base.dir/folly/io/async/SSLContext.cpp.o CMakeFiles/folly_base.dir/folly/io/async/SSLOptions.cpp.o CMakeFiles/folly_base.dir/folly/io/async/ScopedEventBaseThread.cpp.o CMakeFiles/folly_base.dir/folly/io/async/TimeoutManager.cpp.o CMakeFiles/folly_base.dir/folly/io/async/VirtualEventBase.cpp.o CMakeFiles/folly_base.dir/folly/io/async/ssl/OpenSSLUtils.cpp.o CMakeFiles/folly_base.dir/folly/io/async/ssl/SSLErrors.cpp.o CMakeFiles/folly_base.dir/folly/lang/Assume.cpp.o CMakeFiles/folly_base.dir/folly/lang/ColdClass.cpp.o CMakeFiles/folly_base.dir/folly/lang/SafeAssert.cpp.o CMakeFiles/folly_base.dir/folly/logging/AsyncFileWriter.cpp.o CMakeFiles/folly_base.dir/folly/logging/FileHandlerFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/FileWriterFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/GlogStyleFormatter.cpp.o CMakeFiles/folly_base.dir/folly/logging/ImmediateFileWriter.cpp.o CMakeFiles/folly_base.dir/folly/logging/Init.cpp.o CMakeFiles/folly_base.dir/folly/logging/InitWeak.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogCategory.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogCategoryConfig.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogConfig.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogConfigParser.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogHandlerConfig.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogLevel.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogMessage.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogName.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogStream.cpp.o CMakeFiles/folly_base.dir/folly/logging/LogStreamProcessor.cpp.o CMakeFiles/folly_base.dir/folly/logging/Logger.cpp.o CMakeFiles/folly_base.dir/folly/logging/LoggerDB.cpp.o CMakeFiles/folly_base.dir/folly/logging/RateLimiter.cpp.o CMakeFiles/folly_base.dir/folly/logging/StandardLogHandler.cpp.o CMakeFiles/folly_base.dir/folly/logging/StandardLogHandlerFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/StreamHandlerFactory.cpp.o CMakeFiles/folly_base.dir/folly/logging/printf.cpp.o CMakeFiles/folly_base.dir/folly/logging/xlog.cpp.o CMakeFiles/folly_base.dir/folly/memory/MallctlHelper.cpp.o CMakeFiles/folly_base.dir/folly/memory/ThreadCachedArena.cpp.o CMakeFiles/folly_base.dir/folly/memory/detail/MallocImpl.cpp.o CMakeFiles/folly_base.dir/folly/portability/Builtins.cpp.o CMakeFiles/folly_base.dir/folly/portability/Dirent.cpp.o CMakeFiles/folly_base.dir/folly/portability/Fcntl.cpp.o CMakeFiles/folly_base.dir/folly/portability/Libgen.cpp.o CMakeFiles/folly_base.dir/folly/portability/Malloc.cpp.o CMakeFiles/folly_base.dir/folly/portability/OpenSSL.cpp.o CMakeFiles/folly_base.dir/folly/portability/PThread.cpp.o CMakeFiles/folly_base.dir/folly/portability/Sockets.cpp.o CMakeFiles/folly_base.dir/folly/portability/Stdio.cpp.o CMakeFiles/folly_base.dir/folly/portability/Stdlib.cpp.o CMakeFiles/folly_base.dir/folly/portability/String.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysFile.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysMembarrier.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysMman.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysResource.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysStat.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysTime.cpp.o CMakeFiles/folly_base.dir/folly/portability/SysUio.cpp.o CMakeFiles/folly_base.dir/folly/portability/Time.cpp.o CMakeFiles/folly_base.dir/folly/portability/Unistd.cpp.o CMakeFiles/folly_base.dir/folly/ssl/Init.cpp.o CMakeFiles/folly_base.dir/folly/ssl/OpenSSLCertUtils.cpp.o CMakeFiles/folly_base.dir/folly/ssl/OpenSSLHash.cpp.o CMakeFiles/folly_base.dir/folly/ssl/detail/OpenSSLThreading.cpp.o CMakeFiles/folly_base.dir/folly/ssl/detail/SSLSessionImpl.cpp.o CMakeFiles/folly_base.dir/folly/stats/BucketedTimeSeries.cpp.o CMakeFiles/folly_base.dir/folly/stats/Histogram.cpp.o CMakeFiles/folly_base.dir/folly/stats/MultiLevelTimeSeries.cpp.o CMakeFiles/folly_base.dir/folly/stats/QuantileEstimator.cpp.o CMakeFiles/folly_base.dir/folly/stats/TDigest.cpp.o CMakeFiles/folly_base.dir/folly/stats/TimeseriesHistogram.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/AsymmetricMemoryBarrier.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/Hazptr.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/LifoSem.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/ParkingLot.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/Rcu.cpp.o CMakeFiles/folly_base.dir/folly/synchronization/WaitOptions.cpp.o CMakeFiles/folly_base.dir/folly/system/MemoryMapping.cpp.o CMakeFiles/folly_base.dir/folly/system/Shell.cpp.o CMakeFiles/folly_base.dir/folly/system/ThreadName.cpp.o CMakeFiles/folly_base.dir/folly/io/async/test/ScopedBoundPort.cpp.o CMakeFiles/folly_base.dir/folly/io/async/test/SocketPair.cpp.o CMakeFiles/folly_base.dir/folly/io/async/test/TimeUtil.cpp.o  -o GenerateFingerprintTables -Wl,-rpath,/opt/local/lib /opt/local/lib/libboost_context-mt.dylib /opt/local/lib/libboost_chrono-mt.dylib /opt/local/lib/libboost_date_time-mt.dylib /opt/local/lib/libboost_filesystem-mt.dylib /opt/local/lib/libboost_program_options-mt.dylib /opt/local/lib/libboost_regex-mt.dylib /opt/local/lib/libboost_system-mt.dylib /opt/local/lib/libboost_thread-mt.dylib /opt/local/lib/libboost_atomic-mt.dylib /opt/local/lib/libdouble-conversion.dylib /opt/local/lib/libgflags.dylib /opt/local/lib/libglog.dylib /opt/local/lib/libevent.dylib /opt/local/lib/libssl.dylib /opt/local/lib/libcrypto.dylib /usr/lib/libpthread.dylib /opt/local/lib/libz.dylib /opt/local/lib/libbz2.dylib /opt/local/lib/liblzma.dylib /opt/local/lib/liblz4.dylib /opt/local/lib/libzstd.dylib /opt/local/lib/libsnappy.a 
Undefined symbols for architecture x86_64:
  "operator delete(void*, std::align_val_t)", referenced from:
      folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(unsigned long, std::__1::shared_ptr<folly::ThreadFactory>) in CPUThreadPoolExecutor.cpp.o
      folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(unsigned long, std::__1::shared_ptr<folly::ThreadFactory>) in CPUThreadPoolExecutor.cpp.o
      folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(std::__1::pair<unsigned long, unsigned long>, std::__1::shared_ptr<folly::ThreadFactory>) in CPUThreadPoolExecutor.cpp.o
      folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(std::__1::pair<unsigned long, unsigned long>, std::__1::shared_ptr<folly::ThreadFactory>) in CPUThreadPoolExecutor.cpp.o
      std::__1::__shared_ptr_emplace<folly::ThreadPoolExecutor::Thread, std::__1::allocator<folly::ThreadPoolExecutor::Thread> >::~__shared_ptr_emplace() in CPUThreadPoolExecutor.cpp.o
      folly::ThreadPoolExecutor::Thread::~Thread() in CPUThreadPoolExecutor.cpp.o
      folly::LifoSemMPMCQueue<folly::CPUThreadPoolExecutor::CPUTask, (folly::QueueBehaviorIfFull)0>::~LifoSemMPMCQueue() in CPUThreadPoolExecutor.cpp.o
      ...
  "operator new(unsigned long, std::align_val_t)", referenced from:
      folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(unsigned long, std::__1::shared_ptr<folly::ThreadFactory>) in CPUThreadPoolExecutor.cpp.o
      folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(unsigned long, std::__1::shared_ptr<folly::ThreadFactory>) in CPUThreadPoolExecutor.cpp.o
      folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(std::__1::pair<unsigned long, unsigned long>, std::__1::shared_ptr<folly::ThreadFactory>) in CPUThreadPoolExecutor.cpp.o
      folly::CPUThreadPoolExecutor::CPUThreadPoolExecutor(std::__1::pair<unsigned long, unsigned long>, std::__1::shared_ptr<folly::ThreadFactory>) in CPUThreadPoolExecutor.cpp.o
      folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::allocNextSegment(folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment*, unsigned long long) in TimedDrivableExecutor.cpp.o
      folly::observer_detail::ObserverManager::ObserverManager() in ObserverManager.cpp.o
      folly::detail::LifoSemRawNode<std::__1::atomic>::pool() in LifoSem.cpp.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [GenerateFingerprintTables] Error 1

This is odd because the build succeeds both on the older OS X El Capitan (10.11, Xcode 8.2.1 Build version 8C1002, "Apple LLVM version 8.0.0 (clang-800.0.42.1)") and the newer macOS High Sierra (10.13, Xcode 9.4 Build version 9F1027a, "Apple LLVM version 9.1.0 (clang-902.0.39.2)").

Orvid commented 6 years ago

This looks like it's being compiled in C++17 mode against an STL that isn't C++17 capable. (as it's failing to find the over-aligned new and delete operators)

ryandesign commented 6 years ago

You think so? It is using -std=gnu++14...

For comparison, here is the log of the successful build on OS X El Capitan 10.11 and the successful build on macOS High Sierra 10.13.

Perhaps it's relevant: The differences in cmake output are:

On 10.11: -- Performing Test COMPILER_HAS_W_NOEXCEPT_TYPE - Failed On 10.12: -- Performing Test COMPILER_HAS_W_NOEXCEPT_TYPE - Failed On 10.13: -- Performing Test COMPILER_HAS_W_NOEXCEPT_TYPE - Success

On 10.11: -- Performing Test COMPILER_HAS_F_ALIGNED_NEW - Failed On 10.12: -- Performing Test COMPILER_HAS_F_ALIGNED_NEW - Success On 10.13: -- Performing Test COMPILER_HAS_F_ALIGNED_NEW - Success

On 10.11: -- Looking for clock_gettime - not found On 10.12: -- Looking for clock_gettime - found On 10.13: -- Looking for clock_gettime - found

ryandesign commented 6 years ago

If I use -DCOMPILER_HAS_F_ALIGNED_NEW=OFF on macOS Sierra, the build does succeed.

uilianries commented 5 years ago

Hi!

I have a very similar error building Folly 2018.12.03.00 over XCode 9 + apple-clang 9.0 + libc++. All build steps are executed well, but when I try to link Folly I get:

Undefined symbols for architecture x86_64:
  "operator delete(void*, std::align_val_t)", referenced from:
      folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::allocNextSegment(folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment*) in libfolly.a(Future.cpp.o)
      folly::hazptr_deleter<folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment, std::__1::default_delete<folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment> >::delete_obj(folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment*) in libfolly.a(Future.cpp.o)
      folly::hazptr_domain<std::__1::atomic>::free_hazptr_recs() in libfolly.a(Hazptr.cpp.o)
      folly::TimedDrivableExecutor::~TimedDrivableExecutor() in libfolly.a(TimedDrivableExecutor.cpp.o)
      folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::reclaimRemainingSegments() in libfolly.a(TimedDrivableExecutor.cpp.o)
      folly::hazptr_deleter<folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment, std::__1::default_delete<folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment> >::delete_obj(folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment*) in libfolly.a(TimedDrivableExecutor.cpp.o)
      folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::allocNextSegment(folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment*) in libfolly.a(TimedDrivableExecutor.cpp.o)
      ...
  "operator new(unsigned long, std::align_val_t)", referenced from:
      folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::allocNextSegment(folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment*) in libfolly.a(Future.cpp.o)
      folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::allocNextSegment(folly::UnboundedQueue<folly::Function<void ()>, false, true, true, 8ul, 7ul, std::__1::atomic>::Segment*) in libfolly.a(TimedDrivableExecutor.cpp.o)
      folly::hazptr_domain<std::__1::atomic>::acquire_new_hprec() in libfolly.a(TimedDrivableExecutor.cpp.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [bin/test_package] Error 1
make[1]: *** [CMakeFiles/test_package.dir/all] Error 2
make: *** [all] Error 2

I already tried, but no success:

The full log can be found here

How could I build Folly with XCode 9.0?

ryandesign commented 5 years ago

I forgot about this issue, and I guess the developer did too. Maybe we can revisit it now and get it fixed.

How could I build Folly with XCode 9.0?

If you look at my comment immediately above yours, I mentioned that you can build it by using the cmake flag -DCOMPILER_HAS_F_ALIGNED_NEW=OFF.

Doing some Google research now, I found two bug reports (https://github.com/android-ndk/ndk/issues/421, https://www.veripool.org/issues/1231) that both seem to suggest that the version of Clang in Xcode 9 supports aligned new, but that the version of libc++ on macOS Sierra does not support it. So, in the cmake test where it checks if aligned new is supported, it needs to check not only if the compiler supports it but also if a program using it can be linked.

ryandesign commented 5 years ago

If you look at my comment immediately above yours, I mentioned that you can build it by using the cmake flag -DCOMPILER_HAS_F_ALIGNED_NEW=OFF.

Sorry, I did not see that you said you had already tried that. I cannot explain why that didn't work.

uilianries commented 5 years ago

Well, I have two scenarios, the first one is building a minimal Folly, without Google Snappy and many other dependencies, it works well, so I'm able to build Folly using XCode 9.0.

However, when I build Folly with all dependencies, including google snappy, that error occurs. According the cmake file, snappy is used to compressor feature only. I checked snappy build and it doesn't set any flag related to alignment. As you can see in that job, there are many dependencies included:

All of these libraries are linked as static. I might think that the error comes from a transitive dependency, but I'm sure all of these dependencies are used by many other projects and have never seen this error before.

barracuda156 commented 2 years ago

I forgot about this issue, and I guess the developer did too. Maybe we can revisit it now and get it fixed.

How could I build Folly with XCode 9.0?

If you look at my comment immediately above yours, I mentioned that you can build it by using the cmake flag -DCOMPILER_HAS_F_ALIGNED_NEW=OFF.

In fact the configure makes a test for it:

-- Performing Test COMPILER_HAS_F_ALIGNED_NEW - Failed

Presumably it should disable it accordingly.

Orvid commented 2 years ago

We only support the two most recent named versions of OSX, currently 11 (Big Sur) and 12 (Monterey)

The aligned-new checks are just dead code at this point, since aligned new and delete are a requirement of C++14.