grame-cncm / faust

Functional programming language for signal processing and sound synthesis
http://faust.grame.fr
Other
2.53k stars 319 forks source link

faust2: LLVM 4.0 compilation issues #27

Closed agraef closed 7 years ago

agraef commented 7 years ago

Compiling with LLVM 4.0.0 on Arch, I'm getting these compilation errors:

make -C compiler -f Makefile.unix prefix=/usr/local
make[1]: Entering directory '/home/ag/Sources/github/faust2/compiler'
g++ -O3 -std=c++11 -Wall -Wuninitialized -Wno-parentheses -I. -Iboxes -Ierrors -Ievaluate -Inormalize -Iparser -Ipropagate -Iparallelize -Isignals -Itlib -Idraw -Idraw/device -Idraw/schema -Iextended -Ipatternmatcher -Idocumentator -Iutils -I../libraries -Igenerator -Igenerator/asmjs -Igenerator/c -Igenerator/cpp -Igenerator/java -Igenerator/js -Igenerator/llvm -Igenerator/fir -Igenerator/wasm -Igenerator/interpreter -DINSTALL_PREFIX='"/usr/local"' -std=gnu++11 -O1 -fPIC -D__USE_MINGW_ANSI_STDIO -Wall -Wuninitialized -fvisibility=hidden -Wno-overloaded-virtual -Wno-parentheses -I. -Iboxes -Ierrors -Ievaluate -Inormalize -Iparser -Ipropagate -Iparallelize -Isignals -Itlib -Idraw -Idraw/device -Idraw/schema -Iextended -Ipatternmatcher -Idocumentator -Iutils -I../libraries -Igenerator -Igenerator/asmjs -Igenerator/c -Igenerator/cpp -Igenerator/java -Igenerator/js -Igenerator/llvm -Igenerator/fir -Igenerator/wasm -Igenerator/interpreter -DINSTALL_PREFIX='"/usr/local"' -I`/usr/bin/llvm-config --includedir` -I../architecture -DLLVM_40 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS  -DASMJS_BUILD -DC_BUILD -DCPP_BUILD -DFIR_BUILD -DINTERP_BUILD -DJAVA_BUILD -DJS_BUILD -DLLVM_BUILD -DWASM_BUILD   -c -o libcode.o libcode.cpp
In file included from generator/interpreter/interpreter_dsp_aux.hh:37:0,
                 from generator/interpreter/interpreter_code_container.hh:26,
                 from generator/interpreter/interpreter_code_container.cpp:26,
                 from libcode.cpp:79:
generator/interpreter/fir_interpreter.hh:434:13: warning: multi-line comment [-Wcomment]
             //#define dispatch_next() { (*it)->write(&std::cout); std::cout << "int_stack_index " << int_stack_index << " real_stack_index " << real_stack_index << std::endl; \
             ^
In file included from libcode.cpp:91:0:
generator/llvm/llvm_code_container.hh: In member function ‘llvm::Value* LLVMCodeContainer::genFloat(const string&)’:
generator/llvm/llvm_code_container.hh:132:85: error: no matching function for call to ‘llvm::APFloat::APFloat(const llvm::fltSemantics& (&)(), const string&)’
             return ConstantFP::get(getContext(), APFloat(APFloat::IEEEsingle, number));
                                                                                     ^
In file included from /usr/include/llvm/IR/Type.h:18:0,
                 from /usr/include/llvm/IR/DerivedTypes.h:23,
                 from generator/llvm/llvm_instructions.hh:38,
                 from generator/llvm/llvm_code_container.hh:26,
                 from libcode.cpp:91:
/usr/include/llvm/ADT/APFloat.h:826:3: note: candidate: llvm::APFloat::APFloat(llvm::APFloat&&)
   APFloat(APFloat &&RHS) = default;
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:826:3: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:825:3: note: candidate: llvm::APFloat::APFloat(const llvm::APFloat&)
   APFloat(const APFloat &RHS) = default;
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:825:3: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:824:12: note: candidate: llvm::APFloat::APFloat(float)
   explicit APFloat(float f) : U(IEEEFloat(f), IEEEsingle()) {}
            ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:824:12: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:823:12: note: candidate: llvm::APFloat::APFloat(double)
   explicit APFloat(double d) : U(IEEEFloat(d), IEEEdouble()) {}
            ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:823:12: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:822:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&, const llvm::APInt&)
   APFloat(const fltSemantics &Semantics, const APInt &I) : U(Semantics, I) {}
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:822:3: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘const llvm::fltSemantics&’
/usr/include/llvm/ADT/APFloat.h:820:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&, llvm::APFloatBase::uninitializedTag)
   APFloat(const fltSemantics &Semantics, uninitializedTag)
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:820:3: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘const llvm::fltSemantics&’
/usr/include/llvm/ADT/APFloat.h:818:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&, llvm::integerPart)
   APFloat(const fltSemantics &Semantics, integerPart I) : U(Semantics, I) {}
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:818:3: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘const llvm::fltSemantics&’
/usr/include/llvm/ADT/APFloat.h:817:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&, llvm::StringRef)
   APFloat(const fltSemantics &Semantics, StringRef S);
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:817:3: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘const llvm::fltSemantics&’
/usr/include/llvm/ADT/APFloat.h:816:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&)
   APFloat(const fltSemantics &Semantics) : U(Semantics) {}
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:816:3: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:803:12: note: candidate: llvm::APFloat::APFloat(llvm::APFloat::DoubleAPFloat, const llvm::fltSemantics&)
   explicit APFloat(DoubleAPFloat F, const fltSemantics &S)
            ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:803:12: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘llvm::APFloat::DoubleAPFloat {aka llvm::detail::DoubleAPFloat}’
/usr/include/llvm/ADT/APFloat.h:802:12: note: candidate: llvm::APFloat::APFloat(llvm::APFloat::IEEEFloat, const llvm::fltSemantics&)
   explicit APFloat(IEEEFloat F, const fltSemantics &S) : U(std::move(F), S) {}
            ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:802:12: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘llvm::APFloat::IEEEFloat {aka llvm::detail::IEEEFloat}’
/usr/include/llvm/ADT/APFloat.h:798:3: note: candidate: llvm::APFloat::APFloat()
   APFloat() : U(IEEEdouble()) {
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:798:3: note:   candidate expects 0 arguments, 2 provided
make[1]: *** [<builtin>: libcode.o] Error 1
g++ -O3 -std=c++11 -Wall -Wuninitialized -Wno-parentheses -I. -Iboxes -Ierrors -Ievaluate -Inormalize -Iparser -Ipropagate -Iparallelize -Isignals -Itlib -Idraw -Idraw/device -Idraw/schema -Iextended -Ipatternmatcher -Idocumentator -Iutils -I../libraries -Igenerator -Igenerator/asmjs -Igenerator/c -Igenerator/cpp -Igenerator/java -Igenerator/js -Igenerator/llvm -Igenerator/fir -Igenerator/wasm -Igenerator/interpreter -DINSTALL_PREFIX='"/usr/local"' -std=gnu++11 -O1 -fPIC -D__USE_MINGW_ANSI_STDIO -Wall -Wuninitialized -fvisibility=hidden -Wno-overloaded-virtual -Wno-parentheses -I. -Iboxes -Ierrors -Ievaluate -Inormalize -Iparser -Ipropagate -Iparallelize -Isignals -Itlib -Idraw -Idraw/device -Idraw/schema -Iextended -Ipatternmatcher -Idocumentator -Iutils -I../libraries -Igenerator -Igenerator/asmjs -Igenerator/c -Igenerator/cpp -Igenerator/java -Igenerator/js -Igenerator/llvm -Igenerator/fir -Igenerator/wasm -Igenerator/interpreter -DINSTALL_PREFIX='"/usr/local"' -I`/usr/bin/llvm-config --includedir` -I../architecture -DLLVM_40 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS  -DASMJS_BUILD -DC_BUILD -DCPP_BUILD -DFIR_BUILD -DINTERP_BUILD -DJAVA_BUILD -DJS_BUILD -DLLVM_BUILD -DWASM_BUILD   -c -o generator/llvm/llvm_code_container.o generator/llvm/llvm_code_container.cpp
In file included from generator/llvm/llvm_code_container.cpp:23:0:
generator/llvm/llvm_code_container.hh: In member function ‘llvm::Value* LLVMCodeContainer::genFloat(const string&)’:
generator/llvm/llvm_code_container.hh:132:85: error: no matching function for call to ‘llvm::APFloat::APFloat(const llvm::fltSemantics& (&)(), const string&)’
             return ConstantFP::get(getContext(), APFloat(APFloat::IEEEsingle, number));
                                                                                     ^
In file included from /usr/include/llvm/IR/Type.h:18:0,
                 from /usr/include/llvm/IR/DerivedTypes.h:23,
                 from generator/llvm/llvm_instructions.hh:38,
                 from generator/llvm/llvm_code_container.hh:26,
                 from generator/llvm/llvm_code_container.cpp:23:
/usr/include/llvm/ADT/APFloat.h:826:3: note: candidate: llvm::APFloat::APFloat(llvm::APFloat&&)
   APFloat(APFloat &&RHS) = default;
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:826:3: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:825:3: note: candidate: llvm::APFloat::APFloat(const llvm::APFloat&)
   APFloat(const APFloat &RHS) = default;
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:825:3: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:824:12: note: candidate: llvm::APFloat::APFloat(float)
   explicit APFloat(float f) : U(IEEEFloat(f), IEEEsingle()) {}
            ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:824:12: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:823:12: note: candidate: llvm::APFloat::APFloat(double)
   explicit APFloat(double d) : U(IEEEFloat(d), IEEEdouble()) {}
            ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:823:12: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:822:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&, const llvm::APInt&)
   APFloat(const fltSemantics &Semantics, const APInt &I) : U(Semantics, I) {}
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:822:3: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘const llvm::fltSemantics&’
/usr/include/llvm/ADT/APFloat.h:820:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&, llvm::APFloatBase::uninitializedTag)
   APFloat(const fltSemantics &Semantics, uninitializedTag)
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:820:3: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘const llvm::fltSemantics&’
/usr/include/llvm/ADT/APFloat.h:818:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&, llvm::integerPart)
   APFloat(const fltSemantics &Semantics, integerPart I) : U(Semantics, I) {}
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:818:3: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘const llvm::fltSemantics&’
/usr/include/llvm/ADT/APFloat.h:817:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&, llvm::StringRef)
   APFloat(const fltSemantics &Semantics, StringRef S);
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:817:3: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘const llvm::fltSemantics&’
/usr/include/llvm/ADT/APFloat.h:816:3: note: candidate: llvm::APFloat::APFloat(const llvm::fltSemantics&)
   APFloat(const fltSemantics &Semantics) : U(Semantics) {}
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:816:3: note:   candidate expects 1 argument, 2 provided
/usr/include/llvm/ADT/APFloat.h:803:12: note: candidate: llvm::APFloat::APFloat(llvm::APFloat::DoubleAPFloat, const llvm::fltSemantics&)
   explicit APFloat(DoubleAPFloat F, const fltSemantics &S)
            ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:803:12: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘llvm::APFloat::DoubleAPFloat {aka llvm::detail::DoubleAPFloat}’
/usr/include/llvm/ADT/APFloat.h:802:12: note: candidate: llvm::APFloat::APFloat(llvm::APFloat::IEEEFloat, const llvm::fltSemantics&)
   explicit APFloat(IEEEFloat F, const fltSemantics &S) : U(std::move(F), S) {}
            ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:802:12: note:   no known conversion for argument 1 from ‘const llvm::fltSemantics&()’ to ‘llvm::APFloat::IEEEFloat {aka llvm::detail::IEEEFloat}’
/usr/include/llvm/ADT/APFloat.h:798:3: note: candidate: llvm::APFloat::APFloat()
   APFloat() : U(IEEEdouble()) {
   ^~~~~~~
/usr/include/llvm/ADT/APFloat.h:798:3: note:   candidate expects 0 arguments, 2 provided
make[1]: *** [<builtin>: generator/llvm/llvm_code_container.o] Error 1
g++ -O3 -std=c++11 -Wall -Wuninitialized -Wno-parentheses -I. -Iboxes -Ierrors -Ievaluate -Inormalize -Iparser -Ipropagate -Iparallelize -Isignals -Itlib -Idraw -Idraw/device -Idraw/schema -Iextended -Ipatternmatcher -Idocumentator -Iutils -I../libraries -Igenerator -Igenerator/asmjs -Igenerator/c -Igenerator/cpp -Igenerator/java -Igenerator/js -Igenerator/llvm -Igenerator/fir -Igenerator/wasm -Igenerator/interpreter -DINSTALL_PREFIX='"/usr/local"' -std=gnu++11 -O1 -fPIC -D__USE_MINGW_ANSI_STDIO -Wall -Wuninitialized -fvisibility=hidden -Wno-overloaded-virtual -Wno-parentheses -I. -Iboxes -Ierrors -Ievaluate -Inormalize -Iparser -Ipropagate -Iparallelize -Isignals -Itlib -Idraw -Idraw/device -Idraw/schema -Iextended -Ipatternmatcher -Idocumentator -Iutils -I../libraries -Igenerator -Igenerator/asmjs -Igenerator/c -Igenerator/cpp -Igenerator/java -Igenerator/js -Igenerator/llvm -Igenerator/fir -Igenerator/wasm -Igenerator/interpreter -DINSTALL_PREFIX='"/usr/local"' -I`/usr/bin/llvm-config --includedir` -I../architecture -DLLVM_40 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS  -DASMJS_BUILD -DC_BUILD -DCPP_BUILD -DFIR_BUILD -DINTERP_BUILD -DJAVA_BUILD -DJS_BUILD -DLLVM_BUILD -DWASM_BUILD   -c -o generator/llvm/llvm_dsp_aux.o generator/llvm/llvm_dsp_aux.cpp
generator/llvm/llvm_dsp_aux.cpp: In function ‘llvm::Module* ParseBitcodeFile(llvm::MemoryBufferRef, llvm::LLVMContext&, std::__cxx11::string*)’:
generator/llvm/llvm_dsp_aux.cpp:309:63: error: conversion from ‘llvm::Expected<std::unique_ptr<llvm::Module> >’ to non-scalar type ‘llvm::ErrorOr<std::unique_ptr<llvm::Module> >’ requested
     ErrorOr<unique_ptr<Module>> ModuleOrErr = parseBitcodeFile(Buffer, Context);
                                               ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
generator/llvm/llvm_dsp_aux.cpp: In function ‘void AddOptimizationPasses(llvm::legacy::PassManagerBase&, llvm::legacy::FunctionPassManager&, unsigned int, unsigned int)’:
generator/llvm/llvm_dsp_aux.cpp:582:51: error: ‘createAlwaysInlinerPass’ was not declared in this scope
         Builder.Inliner = createAlwaysInlinerPass();
                                                   ^
make[1]: *** [<builtin>: generator/llvm/llvm_dsp_aux.o] Error 1
make[1]: Target 'all' not remade because of errors.
make[1]: Leaving directory '/home/ag/Sources/github/faust2/compiler'
make: *** [Makefile:44: all] Error 2
agraef commented 7 years ago

Build log as text file: buildlog.txt

sletz commented 7 years ago

Fixed in f261a90ca915c06dee9e3a8e62a69664fe17082d

agraef commented 7 years ago

Thanks! I'm still getting a linker error on Linux (seems that there's a -lpthread missing somewhere), but I can probably take care of that myself.

sletz commented 7 years ago

llvm-config tool is supposed to give the correct set of libraries to use. Please follow this path...

agraef commented 7 years ago

Yeah, but apparently it doesn't on Linux (this is on Arch):

$ llvm-config --libs
-lLLVM-4.0
$ llvm-config --system-libs

It's not the first time that they mess this up either. :(

FWIW, here's how the link command looks like, including the error message:

make[1]: Entering directory '/home/ag/Sources/github/faust2/compiler'
g++ -O3 -std=c++11 -Wall -Wuninitialized -Wno-parentheses -I. -Iboxes -Ierrors -Ievaluate -Inormalize -Iparser -Ipropagate -Iparallelize -Isignals -Itlib -Idraw -Idraw/device -Idraw/schema -Iextended -Ipatternmatcher -Idocumentator -Iutils -I../libraries -Igenerator -Igenerator/asmjs -Igenerator/c -Igenerator/cpp -Igenerator/java -Igenerator/js -Igenerator/llvm -Igenerator/fir -Igenerator/wasm -Igenerator/interpreter -DINSTALL_PREFIX='"/usr/local"' -std=gnu++11 -O1 -fPIC -D__USE_MINGW_ANSI_STDIO -Wall -Wuninitialized -fvisibility=hidden -Wno-overloaded-virtual -Wno-parentheses -I. -Iboxes -Ierrors -Ievaluate -Inormalize -Iparser -Ipropagate -Iparallelize -Isignals -Itlib -Idraw -Idraw/device -Idraw/schema -Iextended -Ipatternmatcher -Idocumentator -Iutils -I../libraries -Igenerator -Igenerator/asmjs -Igenerator/c -Igenerator/cpp -Igenerator/java -Igenerator/js -Igenerator/llvm -Igenerator/fir -Igenerator/wasm -Igenerator/interpreter -DINSTALL_PREFIX='"/usr/local"' -I`/usr/bin/llvm-config --includedir` -I../architecture -DLLVM_40 -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS  -DASMJS_BUILD -DC_BUILD -DCPP_BUILD -DFIR_BUILD -DINTERP_BUILD -DJAVA_BUILD -DJS_BUILD -DLLVM_BUILD -DWASM_BUILD  ../libraries/loki/SafeFormat.o boxes/boxcomplexity.o boxes/boxes.o boxes/boxtype.o boxes/ppbox.o documentator/doc.o documentator/doc_Text.o documentator/doc_autodoc.o documentator/doc_compile.o documentator/doc_lang.o documentator/doc_metadatas.o documentator/doc_notice.o documentator/doc_sharing.o documentator/lateq.o draw/device/PSDev.o draw/device/SVGDev.o draw/drawschema.o draw/schema/blockSchema.o draw/schema/cableSchema.o draw/schema/collector.o draw/schema/connectorSchema.o draw/schema/cutSchema.o draw/schema/decorateSchema.o draw/schema/enlargedSchema.o draw/schema/inverterSchema.o draw/schema/mergeSchema.o draw/schema/parSchema.o draw/schema/recSchema.o draw/schema/seqSchema.o draw/schema/splitSchema.o draw/schema/topSchema.o draw/sigToGraph.o errors/errormsg.o errors/timing.o evaluate/environment.o evaluate/eval.o evaluate/loopDetector.o extended/xtended.o generator/Text.o generator/code_container.o generator/contextor.o generator/dag_instructions_compiler.o generator/description.o generator/dsp_aux.o generator/fir_to_fir.o generator/floats.o generator/instructions.o generator/instructions_compiler.o generator/occurences.o generator/omp_code_container.o generator/tools.o generator/uitree.o generator/vec_code_container.o generator/wss_code_container.o normalize/aterm.o normalize/mterm.o normalize/normalize.o normalize/privatise.o normalize/simplify.o parallelize/code_loop.o parallelize/colorize.o parser/enrobage.o parser/faustlexer.o parser/faustparser.o parser/sourcefetcher.o parser/sourcereader.o patternmatcher/patternmatcher.o propagate/labels.o propagate/propagate.o signals/binop.o signals/ppsig.o signals/prim2.o signals/recursivness.o signals/signals.o signals/sigorderrules.o signals/sigprint.o signals/sigtype.o signals/sigtyperules.o signals/sigvisitor.o signals/subsignals.o tlib/compatibility.o tlib/list.o tlib/node.o tlib/occurrences.o tlib/recursive-tree.o tlib/shlysis.o tlib/symbol.o tlib/tree.o utils/files.o utils/names.o libcode.o global.o generator/asmjs/asmjs_dsp_aux.o generator/asmjs/asmjs_code_container.o generator/c/c_code_container.o generator/cpp/cpp_gpu_code_container.o generator/cpp/cpp_code_container.o generator/fir/fir_code_container.o generator/interpreter/interpreter_code_container.o generator/interpreter/interpreter_dsp_aux.o generator/java/java_code_container.o generator/js/js_code_container.o generator/llvm/clang_code_container.o generator/llvm/llvm_code_container.o generator/llvm/llvm_dsp_aux.o generator/wasm/wast_code_container.o generator/wasm/wasm_dsp_aux.o generator/wasm/wasm_code_container.o main.o `/usr/bin/llvm-config --ldflags` -lLLVM-4.0.0 -lLLVM-4.0   `pkg-config --libs libcrypto` -o faust
/usr/bin/ld: generator/llvm/llvm_dsp_aux.o: undefined reference to symbol 'pthread_mutexattr_settype@@GLIBC_2.2.5'
/usr/lib/../lib/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile.unix:265: faust] Error 1
make[1]: Leaving directory '/home/ag/Sources/github/faust2/compiler'
make: *** [Makefile:44: all] Error 2

Just adding -lpthread manually to LLVMLIBS in Makefile.unix:182 fixes the issue for me. I don't think that this will do any harm on macOS, but I'm not so sure about Windows...

sletz commented 7 years ago

OK so please commit (possibly doing a "git pull" first since I just did a merge of master branch...)

agraef commented 7 years ago

Done. (Got caught up with other things, sorry.) While I was at it, I also fixed 'make install' (does not try to install the faustbench stuff any more if it hasn't been build) and added the faustbench stuff to make world.

One thing I noticed is that dynamic-jack-gtk gets installed by the tools/benchmark/Makefile, but not in the global Makefile. Is this intentional, or an oversight?

agraef commented 7 years ago

Ok, I see now why the benchmark programs are not built by default (they require Jack which might not be available everywhere), so I removed them from make world again.

agraef commented 7 years ago

Tested now also on Mac, works fine there.

NB: One obstacle I have with Faust on the Mac is that MacPorts doesn't have a working Jack port which is required to build Faust with all the Jack features in MacPorts. Well, there is a Jack port in MP, but it's in a sorry state (ancient 1.x version which doesn't even compile on Sierra any more). If you have the time and inclination to help me with this, we should really try to get a proper Jack2 port into MP some time. :)