Skip to content

Struggling to install on MacOS with pre installed llvm  #307

@gioxc88

Description

@gioxc88

hello I wanted to ask if someone could be so kind to list all the commands necessary to install on MacOS (Sonoma 14.3)
I tried to follow the instruction on the website

and did the following

python build-and-run-tests.py

but it gets stuck here

LLVM build detected, but config/binder version has changed, perfoming a clean rebuild...
Download LLVM source...
cd /Users/gioxc88/develop/projects/QuantLibPython/binder/build && mkdir llvm-13.0.0.src && curl -LJ https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.0/llvm-13.0.0.src.tar.xz | tar --strip-components=1 -Jxom -C llvm-13.0.0.src && mv llvm-13.0.0.src /Users/gioxc88/develop/projects/QuantLibPython/binder/build/llvm-13.0.0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 43.3M  100 43.3M    0     0  4672k      0  0:00:09  0:00:09 --:--:-- 4696k

Download Clang source...
cd /Users/gioxc88/develop/projects/QuantLibPython/binder/build && mkdir clang-13.0.0.src && curl -LJ https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.0/clang-13.0.0.src.tar.xz | tar --strip-components=1 -Jxom -C clang-13.0.0.src && mv clang-13.0.0.src /Users/gioxc88/develop/projects/QuantLibPython/binder/build/llvm-13.0.0/tools/clang
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 17.0M  100 17.0M    0     0  3371k      0  0:00:05  0:00:05 --:--:-- 4178k

Building tool: binder...
cd /Users/gioxc88/develop/projects/QuantLibPython/binder/build/llvm-13.0.0/llvm-13.0.0.macOS-14.3-arm64-arm-64bit.release && cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_EH=1 -DLLVM_ENABLE_RTTI=ON  .. && ninja binder tools/clang/lib/Headers/clang-resource-headers clang -j1


is it supposed to take a very long time at this point without printing anything?

I also tried

export PATH="/opt/homebrew/Cellar/llvm/19.1.3/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/Cellar/llvm/19.1.3/lib"

git clone https://github.com/RosettaCommons/binder.git
cd binder
mkdir build
cd build
cmake -DLLVM_CONFIG=/opt/homebrew/Cellar/llvm/19.1.3/bin/llvm-config \
      -DCLANG_LIBRARIES=/opt/homebrew/Cellar/llvm/19.1.3/lib \
      -DCLANG_INCLUDE_DIRS=/opt/homebrew/Cellar/llvm/19.1.3/include ..
make

but it keeps failing here

[ 26%] Linking CXX executable binder
cd /Users/gioxc88/develop/projects/QuantLibPython/binder/build/source && /opt/homebrew/Cellar/cmake/3.31.0/bin/cmake -E cmake_link_script CMakeFiles/binder.dir/link.txt --verbose=1
/Library/Developer/CommandLineTools/usr/bin/c++  -fno-rtti -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/homebrew/opt/llvm/lib CMakeFiles/binder.dir/main.cpp.o CMakeFiles/binder.dir/binder.cpp.o CMakeFiles/binder.dir/context.cpp.o CMakeFiles/binder.dir/class.cpp.o CMakeFiles/binder.dir/config.cpp.o CMakeFiles/binder.dir/enum.cpp.o CMakeFiles/binder.dir/function.cpp.o CMakeFiles/binder.dir/options.cpp.o CMakeFiles/binder.dir/type.cpp.o CMakeFiles/binder.dir/util.cpp.o CMakeFiles/binder.dir/fmt/format.cc.o CMakeFiles/binder.dir/fmt/os.cc.o -o binder  /opt/homebrew/opt/llvm/lib/libclang-cpp.dylib
ld: Undefined symbols:
  llvm::raw_ostream::flush_nonempty(), referenced from:
      llvm::raw_ostream::flush() in enum.cpp.o
  llvm::raw_ostream::SetBufferAndMode(char*, unsigned long, llvm::raw_ostream::BufferKind), referenced from:
      llvm::raw_ostream::SetUnbuffered() in enum.cpp.o
  llvm::raw_ostream::write(char const*, unsigned long), referenced from:
      llvm::raw_ostream::operator<<(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in main.cpp.o
      llvm::raw_ostream::operator<<(llvm::StringRef) in main.cpp.o
  llvm::raw_ostream::~raw_ostream(), referenced from:
      llvm::raw_string_ostream::raw_string_ostream(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in enum.cpp.o
      llvm::raw_string_ostream::~raw_string_ostream() in enum.cpp.o
  llvm::raw_ostream::operator<<(long), referenced from:
      llvm::raw_ostream::operator<<(int) in main.cpp.o
  llvm::StringMapImpl::RehashTable(unsigned int), referenced from:
      std::__1::pair<llvm::StringMapIterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, bool> llvm::StringMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, llvm::MallocAllocator>::try_emplace_with_hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&>(llvm::StringRef, unsigned int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in type.cpp.o
  llvm::StringMapImpl::LookupBucketFor(llvm::StringRef, unsigned int), referenced from:
      std::__1::pair<llvm::StringMapIterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, bool> llvm::StringMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, llvm::MallocAllocator>::try_emplace_with_hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&>(llvm::StringRef, unsigned int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in type.cpp.o
  llvm::StringMapImpl::hash(llvm::StringRef), referenced from:
      llvm::StringMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, llvm::MallocAllocator>::find(llvm::StringRef) in type.cpp.o
      std::__1::pair<llvm::StringMapIterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, bool> llvm::StringMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, llvm::MallocAllocator>::try_emplace<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&>(llvm::StringRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in type.cpp.o
  llvm::SmallVectorBase<unsigned int>::grow_pod(void*, unsigned long, unsigned long), referenced from:
      llvm::SmallVectorTemplateCommon<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, void>::grow_pod(unsigned long, unsigned long) in main.cpp.o
      llvm::SmallVectorTemplateCommon<std::__1::pair<void*, unsigned long>, void>::grow_pod(unsigned long, unsigned long) in main.cpp.o
      llvm::SmallVectorTemplateCommon<void*, void>::grow_pod(unsigned long, unsigned long) in main.cpp.o
      llvm::SmallVectorTemplateCommon<clang::DeclContext const*, void>::grow_pod(unsigned long, unsigned long) in enum.cpp.o
      llvm::SmallVectorTemplateCommon<llvm::cl::OptionCategory*, void>::grow_pod(unsigned long, unsigned long) in options.cpp.o
  llvm::SmallVectorBase<unsigned int>::set_size(unsigned long), referenced from:
      llvm::SmallVectorTemplateBase<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, true>::push_back(llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>) in main.cpp.o
      llvm::SmallVectorTemplateBase<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, true>::pop_back() in main.cpp.o
      llvm::SmallVectorTemplateBase<std::__1::pair<void*, unsigned long>, true>::push_back(std::__1::pair<void*, unsigned long>) in main.cpp.o
      llvm::SmallVectorTemplateBase<void*, true>::push_back(void*) in main.cpp.o
      llvm::SmallVectorTemplateBase<clang::DeclContext const*, true>::push_back(clang::DeclContext const*) in enum.cpp.o
      llvm::SmallVectorTemplateBase<llvm::cl::OptionCategory*, true>::push_back(llvm::cl::OptionCategory*) in options.cpp.o
  llvm::SmallVectorBase<unsigned int>::SmallVectorBase(void*, unsigned long), referenced from:
      llvm::SmallVectorTemplateCommon<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, void>::SmallVectorTemplateCommon(unsigned long) in main.cpp.o
      llvm::SmallVectorTemplateCommon<clang::DeclContext const*, void>::SmallVectorTemplateCommon(unsigned long) in enum.cpp.o
      llvm::SmallVectorTemplateCommon<llvm::cl::OptionCategory*, void>::SmallVectorTemplateCommon(unsigned long) in options.cpp.o
  llvm::allocate_buffer(unsigned long, unsigned long), referenced from:
      llvm::MallocAllocator::Allocate(unsigned long, unsigned long) in main.cpp.o
      llvm::DenseMap<clang::NamedDecl const*, int, llvm::DenseMapInfo<clang::NamedDecl const*, void>, llvm::detail::DenseMapPair<clang::NamedDecl const*, int>>::allocateBuckets(unsigned int) in binder.cpp.o
      llvm::DenseMap<clang::CXXRecordDecl const*, bool, llvm::DenseMapInfo<clang::CXXRecordDecl const*, void>, llvm::detail::DenseMapPair<clang::CXXRecordDecl const*, bool>>::allocateBuckets(unsigned int) in class.cpp.o
      llvm::DenseMap<clang::FunctionDecl const*, bool, llvm::DenseMapInfo<clang::FunctionDecl const*, void>, llvm::detail::DenseMapPair<clang::FunctionDecl const*, bool>>::allocateBuckets(unsigned int) in function.cpp.o
  llvm::deallocate_buffer(void*, unsigned long, unsigned long), referenced from:
      llvm::MallocAllocator::Deallocate(void const*, unsigned long, unsigned long) in main.cpp.o
      llvm::DenseMap<clang::NamedDecl const*, int, llvm::DenseMapInfo<clang::NamedDecl const*, void>, llvm::detail::DenseMapPair<clang::NamedDecl const*, int>>::grow(unsigned int) in binder.cpp.o
      llvm::DenseMap<clang::NamedDecl const*, int, llvm::DenseMapInfo<clang::NamedDecl const*, void>, llvm::detail::DenseMapPair<clang::NamedDecl const*, int>>::shrink_and_clear() in binder.cpp.o
      llvm::DenseMap<clang::NamedDecl const*, int, llvm::DenseMapInfo<clang::NamedDecl const*, void>, llvm::detail::DenseMapPair<clang::NamedDecl const*, int>>::~DenseMap() in context.cpp.o
      llvm::DenseMap<clang::CXXRecordDecl const*, bool, llvm::DenseMapInfo<clang::CXXRecordDecl const*, void>, llvm::detail::DenseMapPair<clang::CXXRecordDecl const*, bool>>::~DenseMap() in class.cpp.o
      llvm::DenseMap<clang::CXXRecordDecl const*, bool, llvm::DenseMapInfo<clang::CXXRecordDecl const*, void>, llvm::detail::DenseMapPair<clang::CXXRecordDecl const*, bool>>::grow(unsigned int) in class.cpp.o
      llvm::DenseMap<clang::FunctionDecl const*, bool, llvm::DenseMapInfo<clang::FunctionDecl const*, void>, llvm::detail::DenseMapPair<clang::FunctionDecl const*, bool>>::~DenseMap() in function.cpp.o
      ...
  llvm::logAllUnhandledErrors(llvm::Error, llvm::raw_ostream&, llvm::Twine), referenced from:
      _main in main.cpp.o
  llvm::DisableABIBreakingChecks, referenced from:
      llvm::VerifyDisableABIBreakingChecks in main.cpp.o
  llvm::llvm_unreachable_internal(char const*, char const*, unsigned int), referenced from:
      clang::ConstructionContextItem::getKindAsString(clang::ConstructionContextItem::ItemKind) in main.cpp.o
      clang::FunctionProtoType::getExceptionSpecSize(clang::ExceptionSpecificationType, unsigned int) in main.cpp.o
      clang::RecursiveASTVisitor<ClassVisitor>::TraverseConceptRequirement(clang::concepts::Requirement*) in main.cpp.o
      clang::RecursiveASTVisitor<ClassVisitor>::TraverseAttr(clang::Attr*) in main.cpp.o
      clang::RecursiveASTVisitor<BinderVisitor>::TraverseConceptRequirement(clang::concepts::Requirement*) in main.cpp.o
      clang::RecursiveASTVisitor<BinderVisitor>::TraverseAttr(clang::Attr*) in main.cpp.o
  llvm::cl::basic_parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::basic_parser(llvm::cl::Option&), referenced from:
      llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::parser(llvm::cl::Option&) in options.cpp.o
  llvm::cl::basic_parser<bool>::basic_parser(llvm::cl::Option&), referenced from:
      llvm::cl::parser<bool>::parser(llvm::cl::Option&) in options.cpp.o
  llvm::cl::basic_parser<int>::basic_parser(llvm::cl::Option&), referenced from:
      llvm::cl::parser<int>::parser(llvm::cl::Option&) in options.cpp.o
  llvm::cl::OptionCategory::registerCategory(), referenced from:
      llvm::cl::OptionCategory::OptionCategory(llvm::StringRef, llvm::StringRef) in options.cpp.o
  llvm::cl::SetVersionPrinter(std::__1::function<void (llvm::raw_ostream&)>), referenced from:
      _main in main.cpp.o
  llvm::cl::GenericOptionValue::anchor(), referenced from:
      vtable for llvm::cl::OptionValueCopy<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> in options.cpp.o
      vtable for llvm::cl::OptionValue<bool> in options.cpp.o
      vtable for llvm::cl::OptionValueBase<bool, false> in options.cpp.o
      vtable for llvm::cl::OptionValueCopy<bool> in options.cpp.o
      vtable for llvm::cl::OptionValue<int> in options.cpp.o
      vtable for llvm::cl::OptionValueBase<int, false> in options.cpp.o
      vtable for llvm::cl::OptionValueCopy<int> in options.cpp.o
      ...
  llvm::cl::getGeneralCategory(), referenced from:
      llvm::cl::Option::Option(llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden) in options.cpp.o
  llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::setInitialValue(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&), referenced from:
      void llvm::cl::initializer<char [1]>::apply<llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>>(llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>&) const in options.cpp.o
  llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::done(), referenced from:
      llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::opt<char [12], llvm::cl::desc, llvm::cl::cat>(char const (&) [12], llvm::cl::desc const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::opt<char [7], llvm::cl::desc, llvm::cl::initializer<char [1]>, llvm::cl::cat>(char const (&) [7], llvm::cl::desc const&, llvm::cl::initializer<char [1]> const&, llvm::cl::cat const&) in options.cpp.o
  llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::setInitialValue(bool const&), referenced from:
      void llvm::cl::initializer<bool>::apply<llvm::cl::opt<bool, false, llvm::cl::parser<bool>>>(llvm::cl::opt<bool, false, llvm::cl::parser<bool>>&) const in options.cpp.o
  llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::done(), referenced from:
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [18], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [18], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [12], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [12], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [6], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [6], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [2], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [2], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [5], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [5], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [21], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [21], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [17], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [17], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      ...
  llvm::cl::opt<int, false, llvm::cl::parser<int>>::setInitialValue(int const&), referenced from:
      void llvm::cl::initializer<int>::apply<llvm::cl::opt<int, false, llvm::cl::parser<int>>>(llvm::cl::opt<int, false, llvm::cl::parser<int>>&) const in options.cpp.o
  llvm::cl::opt<int, false, llvm::cl::parser<int>>::done(), referenced from:
      llvm::cl::opt<int, false, llvm::cl::parser<int>>::opt<char [14], llvm::cl::desc, llvm::cl::initializer<int>, llvm::cl::cat>(char const (&) [14], llvm::cl::desc const&, llvm::cl::initializer<int> const&, llvm::cl::cat const&) in options.cpp.o
  llvm::cl::Option::addArgument(), referenced from:
      llvm::cl::list<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, bool, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::done() in options.cpp.o
  llvm::cl::Option::addCategory(llvm::cl::OptionCategory&), referenced from:
      void llvm::cl::cat::apply<llvm::cl::opt<bool, false, llvm::cl::parser<bool>>>(llvm::cl::opt<bool, false, llvm::cl::parser<bool>>&) const in options.cpp.o
      void llvm::cl::cat::apply<llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>>(llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>&) const in options.cpp.o
      void llvm::cl::cat::apply<llvm::cl::opt<int, false, llvm::cl::parser<int>>>(llvm::cl::opt<int, false, llvm::cl::parser<int>>&) const in options.cpp.o
      void llvm::cl::cat::apply<llvm::cl::list<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, bool, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>>(llvm::cl::list<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, bool, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>&) const in options.cpp.o
  llvm::cl::Option::addOccurrence(unsigned int, llvm::StringRef, llvm::StringRef, bool), referenced from:
      vtable for llvm::cl::list<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, bool, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> in options.cpp.o
  llvm::cl::Option::anchor(), referenced from:
      vtable for llvm::cl::list<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, bool, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> in options.cpp.o
  llvm::cl::Option::setArgStr(llvm::StringRef), referenced from:
      void llvm::cl::applicator<char [18]>::opt<llvm::cl::opt<bool, false, llvm::cl::parser<bool>>>(llvm::StringRef, llvm::cl::opt<bool, false, llvm::cl::parser<bool>>&) in options.cpp.o
      void llvm::cl::applicator<char [12]>::opt<llvm::cl::opt<bool, false, llvm::cl::parser<bool>>>(llvm::StringRef, llvm::cl::opt<bool, false, llvm::cl::parser<bool>>&) in options.cpp.o
      void llvm::cl::applicator<char [6]>::opt<llvm::cl::opt<bool, false, llvm::cl::parser<bool>>>(llvm::StringRef, llvm::cl::opt<bool, false, llvm::cl::parser<bool>>&) in options.cpp.o
      void llvm::cl::applicator<char [2]>::opt<llvm::cl::opt<bool, false, llvm::cl::parser<bool>>>(llvm::StringRef, llvm::cl::opt<bool, false, llvm::cl::parser<bool>>&) in options.cpp.o
      void llvm::cl::applicator<char [5]>::opt<llvm::cl::opt<bool, false, llvm::cl::parser<bool>>>(llvm::StringRef, llvm::cl::opt<bool, false, llvm::cl::parser<bool>>&) in options.cpp.o
      void llvm::cl::applicator<char [21]>::opt<llvm::cl::opt<bool, false, llvm::cl::parser<bool>>>(llvm::StringRef, llvm::cl::opt<bool, false, llvm::cl::parser<bool>>&) in options.cpp.o
      void llvm::cl::applicator<char [12]>::opt<llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>>(llvm::StringRef, llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>&) in options.cpp.o
      ...
  llvm::cl::extrahelp::extrahelp(llvm::StringRef), referenced from:
      ___cxx_global_var_init in main.cpp.o
      ___cxx_global_var_init.12 in main.cpp.o
  llvm::vfs::getRealFileSystem(), referenced from:
      _main in main.cpp.o
  llvm::errs(), referenced from:
      ClassVisitor::VisitEnumDecl(clang::EnumDecl*) in main.cpp.o
      binder::Context::sort_binders() in context.cpp.o
  llvm::outs(), referenced from:
      _main in main.cpp.o
      BinderFrontendAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef) in main.cpp.o
      binder::Context::bind(binder::Config const&) in context.cpp.o
      binder::Context::bind(binder::Config const&) in context.cpp.o
      binder::Context::sort_binders() in context.cpp.o
      binder::Context::sort_binders() in context.cpp.o
      binder::Context::generate(binder::Config const&) in context.cpp.o
      binder::Context::generate(binder::Config const&) in context.cpp.o
      ...
  llvm::APInt::initSlowCase(unsigned long long, bool), referenced from:
      llvm::APInt::APInt(unsigned int, unsigned long long, bool) in main.cpp.o
  llvm::APInt::APInt(unsigned int, unsigned int, unsigned long long const*), referenced from:
      clang::APNumericStorage::getIntValue() const in main.cpp.o
  llvm::Regex::Regex(llvm::StringRef, llvm::Regex::RegexFlags), referenced from:
      binder::simplify_std_class_name_raw(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in type.cpp.o
  llvm::Regex::Regex(llvm::Regex&&), referenced from:
      std::__1::pair<llvm::Regex, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::pair[abi:v160006]<llvm::Regex, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&, (void*)0>(llvm::Regex&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in type.cpp.o
      std::__1::pair<llvm::Regex, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::pair(std::__1::pair<llvm::Regex, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>&&) in type.cpp.o
  llvm::Regex::~Regex(), referenced from:
      binder::simplify_std_class_name_raw(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in type.cpp.o
      binder::simplify_std_class_name_raw(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in type.cpp.o
      std::__1::pair<llvm::Regex, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::~pair() in type.cpp.o
      std::__1::pair<llvm::Regex, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::pair[abi:v160006]<llvm::Regex, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&, (void*)0>(llvm::Regex&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in type.cpp.o
  llvm::StringMapImpl::FindKey(llvm::StringRef, unsigned int) const, referenced from:
      llvm::StringMap<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, llvm::MallocAllocator>::find(llvm::StringRef, unsigned int) in type.cpp.o
  llvm::SmallVectorBase<unsigned int>::size() const, referenced from:
      clang::RecursiveASTVisitor<ClassVisitor>::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) in main.cpp.o
      llvm::SmallVectorTemplateBase<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, true>::push_back(llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>) in main.cpp.o
      llvm::SmallVectorTemplateBase<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, true>::pop_back() in main.cpp.o
      llvm::SmallVectorTemplateCommon<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, void>::end() in main.cpp.o
      llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>> const* llvm::SmallVectorTemplateCommon<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, true>>(llvm::SmallVectorTemplateBase<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, true>*, llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>> const&, unsigned long) in main.cpp.o
      llvm::SmallVectorTemplateCommon<clang::Attr*, void>::end() const in main.cpp.o
      llvm::SmallVectorTemplateBase<std::__1::pair<void*, unsigned long>, true>::push_back(std::__1::pair<void*, unsigned long>) in main.cpp.o
      ...
  llvm::SmallVectorBase<unsigned int>::empty() const, referenced from:
      clang::RecursiveASTVisitor<ClassVisitor>::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) in main.cpp.o
      llvm::SmallVectorTemplateCommon<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, void>::back() in main.cpp.o
      clang::RecursiveASTVisitor<BinderVisitor>::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) in main.cpp.o
  llvm::SmallVectorBase<unsigned int>::capacity() const, referenced from:
      llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>> const* llvm::SmallVectorTemplateCommon<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, true>>(llvm::SmallVectorTemplateBase<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>, true>*, llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>> const&, unsigned long) in main.cpp.o
      std::__1::pair<void*, unsigned long> const* llvm::SmallVectorTemplateCommon<std::__1::pair<void*, unsigned long>, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<std::__1::pair<void*, unsigned long>, true>>(llvm::SmallVectorTemplateBase<std::__1::pair<void*, unsigned long>, true>*, std::__1::pair<void*, unsigned long> const&, unsigned long) in main.cpp.o
      void* const* llvm::SmallVectorTemplateCommon<void*, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<void*, true>>(llvm::SmallVectorTemplateBase<void*, true>*, void* const&, unsigned long) in main.cpp.o
      clang::DeclContext const* const* llvm::SmallVectorTemplateCommon<clang::DeclContext const*, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<clang::DeclContext const*, true>>(llvm::SmallVectorTemplateBase<clang::DeclContext const*, true>*, clang::DeclContext const* const&, unsigned long) in enum.cpp.o
      llvm::cl::OptionCategory* const* llvm::SmallVectorTemplateCommon<llvm::cl::OptionCategory*, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<llvm::cl::OptionCategory*, true>>(llvm::SmallVectorTemplateBase<llvm::cl::OptionCategory*, true>*, llvm::cl::OptionCategory* const&, unsigned long) in options.cpp.o
  llvm::cl::basic_parser_impl::getOptionWidth(llvm::cl::Option const&) const, referenced from:
      llvm::cl::list<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, bool, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::getOptionWidth() const in options.cpp.o
  llvm::cl::basic_parser_impl::printOptionInfo(llvm::cl::Option const&, unsigned long) const, referenced from:
      llvm::cl::list<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, bool, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::printOptionInfo(unsigned long) const in options.cpp.o
  llvm::Regex::sub(llvm::StringRef, llvm::StringRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) const, referenced from:
      binder::simplify_std_class_name_raw(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in type.cpp.o
  vtable for llvm::raw_ostream, referenced from:
      llvm::raw_ostream::raw_ostream(bool, llvm::raw_ostream::OStreamKind) in enum.cpp.o
  vtable for llvm::raw_string_ostream, referenced from:
      llvm::raw_string_ostream::raw_string_ostream(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in enum.cpp.o
  vtable for llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, referenced from:
      llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::OptionValue(llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>&&) in options.cpp.o
      llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::OptionValue(llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&) in options.cpp.o
      llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::OptionValue(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in options.cpp.o
      llvm::cl::OptionValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::OptionValue() in options.cpp.o
  vtable for llvm::cl::GenericOptionValue, referenced from:
      llvm::cl::GenericOptionValue::GenericOptionValue(llvm::cl::GenericOptionValue const&) in options.cpp.o
      llvm::cl::GenericOptionValue::GenericOptionValue() in options.cpp.o
  vtable for llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>, referenced from:
      llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::~opt() in options.cpp.o
      llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::opt<char [12], llvm::cl::desc, llvm::cl::cat>(char const (&) [12], llvm::cl::desc const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, false, llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>::opt<char [7], llvm::cl::desc, llvm::cl::initializer<char [1]>, llvm::cl::cat>(char const (&) [7], llvm::cl::desc const&, llvm::cl::initializer<char [1]> const&, llvm::cl::cat const&) in options.cpp.o
  vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool>>, referenced from:
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::~opt() in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [18], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [18], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [12], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [12], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [6], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [6], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [2], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [2], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [5], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [5], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      llvm::cl::opt<bool, false, llvm::cl::parser<bool>>::opt<char [21], llvm::cl::desc, llvm::cl::initializer<bool>, llvm::cl::cat>(char const (&) [21], llvm::cl::desc const&, llvm::cl::initializer<bool> const&, llvm::cl::cat const&) in options.cpp.o
      ...
  vtable for llvm::cl::opt<int, false, llvm::cl::parser<int>>, referenced from:
      llvm::cl::opt<int, false, llvm::cl::parser<int>>::~opt() in options.cpp.o
      llvm::cl::opt<int, false, llvm::cl::parser<int>>::opt<char [14], llvm::cl::desc, llvm::cl::initializer<int>, llvm::cl::cat>(char const (&) [14], llvm::cl::desc const&, llvm::cl::initializer<int> const&, llvm::cl::cat const&) in options.cpp.o
  vtable for llvm::cl::Option, referenced from:
      llvm::cl::Option::~Option() in options.cpp.o
      llvm::cl::Option::Option(llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden) in options.cpp.o
  vtable for llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, referenced from:
      llvm::cl::parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::parser(llvm::cl::Option&) in options.cpp.o
  vtable for llvm::cl::parser<bool>, referenced from:
      llvm::cl::parser<bool>::parser(llvm::cl::Option&) in options.cpp.o
  vtable for llvm::cl::parser<int>, referenced from:
      llvm::cl::parser<int>::parser(llvm::cl::Option&) in options.cpp.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [source/binder] Error 1
make[1]: *** [source/CMakeFiles/binder.dir/all] Error 2
make: *** [all] Error 2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions