[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: LLVM/JIT on MacOS X
From: |
Ben Abbott |
Subject: |
Re: LLVM/JIT on MacOS X |
Date: |
Sun, 15 Jun 2014 18:59:35 -0400 |
On Jun 15, 2014, at 3:45 PM, Stefan Mahr <address@hidden> wrote:
>> On Jun 15, 2014, at 2:52 PM, Stefan Mahr <address@hidden> wrote:
>>
>>> -------- Original-Nachricht --------
>>> Betreff: Re: LLVM/JIT on MacOS X
>>> Von: Ben Abbott <address@hidden>
>>> An: Stefan Mahr <address@hidden>
>>> Kopie (CC): Help-Octave List <address@hidden>
>>> Datum: So 15 Jun 2014 03:38:40 CEST
>>>
>>>> On Jun 14, 2014, at 7:13 PM, Stefan Mahr <address@hidden> wrote:
>>>>
>>>>>>
>>>>>> On Jun 14, 2014, at 10:26 AM, Ben Abbott <address@hidden> wrote:
>>>>>>
>>>>>>> On Jun 12, 2014, at 1:36 PM, Ben Abbott <address@hidden> wrote:
>>>>>>>
>>>>>>>> On Jun 12, 2014, at 11:36 AM, Stefan Mahr <address@hidden> wrote:
>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Ben Abbott wrote:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Carlo,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Have you been successful getting JIT to work on Mac OS X?
>>>>>>>>>>>>>>>>>>>> When I try, I encounter the error below.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Ben
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> [...]
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Undefined symbols for architecture x86_64:
>>>>>>>>>>>>>>>>>>>> "llvm::verifyModule(llvm::Module const&,
>>>>>>>>>>>>>>>>>>>> llvm::VerifierFailureAction, std::basic_string<char,
>>>>>>>>>>>>>>>>>>>> std::char_traits<char>, std::allocator<char> >*)",
>>>>>>>>>>>>>>>>>>>> referenced from:
>>>>>>>>>>>>>>>>>>>> tree_jit::optimize(llvm::Function*) in
>>>>>>>>>>>>>>>>>>>> libcorefcn.a(corefcn_libcorefcn_la-pt-jit.o)
>>>>>>>>>>>>>>>>>>>> "llvm::raw_fd_ostream::raw_fd_ostream(char const*,
>>>>>>>>>>>>>>>>>>>> std::basic_string<char, std::char_traits<char>,
>>>>>>>>>>>>>>>>>>>> std::allocator<char> >&, unsigned int)", referenced from:
>>>>>>>>>>>>>>>>>>>> tree_jit::optimize(llvm::Function*) in
>>>>>>>>>>>>>>>>>>>> libcorefcn.a(corefcn_libcorefcn_la-pt-jit.o)
>>>>>>>>>>>>>>>>>>>> "llvm::ExecutionEngine::createJIT(llvm::Module*,
>>>>>>>>>>>>>>>>>>>> std::basic_string<char, std::char_traits<char>,
>>>>>>>>>>>>>>>>>>>> std::allocator<char> >*, llvm::JITMemoryManager*,
>>>>>>>>>>>>>>>>>>>> llvm::CodeGenOpt::Level, bool, llvm::Reloc::Model,
>>>>>>>>>>>>>>>>>>>> llvm::CodeModel::Model)", referenced from:
>>>>>>>>>>>>>>>>>>>> tree_jit::initialize() in
>>>>>>>>>>>>>>>>>>>> libcorefcn.a(corefcn_libcorefcn_la-pt-jit.o)
>>>>>>>>>>>>>>>>>>>> ld: symbol(s) not found for architecture x86_64
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Hi Ben,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> your error message sounds like a incompatibility with newer
>>>>>>>>>>>>>>>>>>> LLVM versions and should be fixed with my attached patch in
>>>>>>>>>>>>>>>>>>> this bug report: http://savannah.gnu.org/bugs/?41061
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> As always, a rebased changeset to a more recent repository
>>>>>>>>>>>>>>>>>>> state can be found here:
>>>>>>>>>>>>>>>>>>> http://inversethought.com/hg/octave-nkf/nkf-ready
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Could you try the patch?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Stefan
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Patching my default branch with the changeset from bug 41061
>>>>>>>>>>>>>>>>>> ...
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> $ patch -p1 < ~/Downloads/llvm-3.4-3.5pre.patch
>>>>>>>>>>>>>>>>>> patching file configure.ac
>>>>>>>>>>>>>>>>>> patching file libinterp/corefcn/jit-typeinfo.cc
>>>>>>>>>>>>>>>>>> patching file libinterp/corefcn/jit-util.h
>>>>>>>>>>>>>>>>>> patching file libinterp/corefcn/pt-jit.cc
>>>>>>>>>>>>>>>>>> Hunk #2 succeeded at 2064 (offset -8 lines).
>>>>>>>>>>>>>>>>>> Hunk #3 succeeded at 2187 (offset -8 lines).
>>>>>>>>>>>>>>>>>> patching file libinterp/corefcn/pt-jit.h
>>>>>>>>>>>>>>>>>> patching file m4/acinclude.m4
>>>>>>>>>>>>>>>>>> $ make -j4
>>>>>>>>>>>>>>>>>> <snip>
>>>>>>>>>>>>>>>>>> </snip>
>>>>>>>>>>>>>>>>>> Undefined symbols for architecture x86_64:
>>>>>>>>>>>>>>>>>> "llvm::verifyModule(llvm::Module const&,
>>>>>>>>>>>>>>>>>> llvm::VerifierFailureAction, std::basic_string<char,
>>>>>>>>>>>>>>>>>> std::char_traits<char>, std::allocator<char> >*)",
>>>>>>>>>>>>>>>>>> referenced from:
>>>>>>>>>>>>>>>>>> tree_jit::optimize(llvm::Function*) in
>>>>>>>>>>>>>>>>>> libcorefcn.a(corefcn_libcorefcn_la-pt-jit.o)
>>>>>>>>>>>>>>>>>> "llvm::raw_fd_ostream::raw_fd_ostream(char const*,
>>>>>>>>>>>>>>>>>> std::basic_string<char, std::char_traits<char>,
>>>>>>>>>>>>>>>>>> std::allocator<char> >&, unsigned int)", referenced from:
>>>>>>>>>>>>>>>>>> tree_jit::optimize(llvm::Function*) in
>>>>>>>>>>>>>>>>>> libcorefcn.a(corefcn_libcorefcn_la-pt-jit.o)
>>>>>>>>>>>>>>>>>> "llvm::ExecutionEngine::createJIT(llvm::Module*,
>>>>>>>>>>>>>>>>>> std::basic_string<char, std::char_traits<char>,
>>>>>>>>>>>>>>>>>> std::allocator<char> >*, llvm::JITMemoryManager*,
>>>>>>>>>>>>>>>>>> llvm::CodeGenOpt::Level, bool, llvm::Reloc::Model,
>>>>>>>>>>>>>>>>>> llvm::CodeModel::Model)", referenced from:
>>>>>>>>>>>>>>>>>> tree_jit::initialize() in
>>>>>>>>>>>>>>>>>> libcorefcn.a(corefcn_libcorefcn_la-pt-jit.o)
>>>>>>>>>>>>>>>>>> ld: symbol(s) not found for architecture x86_64
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Ben
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> bootstrap and configure is needed before starting make.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Configure ran (automatically) after the patch was applied.
>>>>>>>>>>>>>>>> Just to be sure, I ran bootstrap & configure manually, and
>>>>>>>>>>>>>>>> still obtained the same result.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Ben
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'm really confused that compiling works, but linking fails.
>>>>>>>>>>>>>>> This usually happens in the past (for me) if there are multiple
>>>>>>>>>>>>>>> versions of LLVM installed (Debian/Ubuntu) or some older
>>>>>>>>>>>>>>> headerfiles were not deleted during update (seen with MXE).
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> E.g. for linking error with llvm::verifyModule. The header file
>>>>>>>>>>>>>>> for my LLVM-3.3 installation is in <llvm/Analysis/Verifier.h>.
>>>>>>>>>>>>>>> For llvm 3.5 it's in <llvm/IR/Verifier.h> with different
>>>>>>>>>>>>>>> declaration. If compiling with 3.3 headers and linking to 3.5
>>>>>>>>>>>>>>> lib I would expect the same error as you get. Same for
>>>>>>>>>>>>>>> llvm::raw_fd_ostream::raw_fd_ostream, since the last argument
>>>>>>>>>>>>>>> is not an integer type anymore in newer LLVM versions. However,
>>>>>>>>>>>>>>> this doesn't explain a link error for
>>>>>>>>>>>>>>> llvm::ExecutionEngine::createJIT. I see no difference in
>>>>>>>>>>>>>>> declarions between LLVM versions 3.3 to 3.5.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> To summarise: If you only have LLVM 3.3 installed, I have no
>>>>>>>>>>>>>>> idea. Sorry.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Stefan
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> hmmm, it does appear there is more than one llvm present.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> $ port installed *llvm*
>>>>>>>>>>>>>> The following ports are currently installed:
>>>>>>>>>>>>>> llvm-3.3 @3.3_1
>>>>>>>>>>>>>> llvm-3.3 @3.3_4 (active)
>>>>>>>>>>>>>> llvm-gcc42 @2336.11_1 (active)
>>>>>>>>>>>>>> llvm_select @0.2_0
>>>>>>>>>>>>>> llvm_select @1.0_0 (active)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I've deactivate llvm-gcc42
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> $ sudo port deactivate llvm-gcc42
>>>>>>>>>>>>>> Password:
>>>>>>>>>>>>>> ---> Deactivating llvm-gcc42 @2336.11_1
>>>>>>>>>>>>>> ---> Cleaning llvm-gcc42
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> And ran configure/make again. Unfortunately, I'm still seeing
>>>>>>>>>>>>>> the same error.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Looking at "config.log", there is one problem with llvm ....
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> configure:15039: checking llvm/IR/Function.h presence
>>>>>>>>>>>>>> configure:15039: /opt/local/bin/g++-mp-4.7 -E
>>>>>>>>>>>>>> -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -isystem
>>>>>>>>>>>>>> /opt/local/libexec/llvm-3.3/include -D_THREAD_SAFE
>>>>>>>>>>>>>> -I/opt/local/include conftest.cpp
>>>>>>>>>>>>>> configure:15039: $? = 0
>>>>>>>>>>>>>> configure:15039: result: yes
>>>>>>>>>>>>>> configure:15039: checking for llvm/IR/Function.h
>>>>>>>>>>>>>> configure:15039: result: yes
>>>>>>>>>>>>>> configure:15057: checking llvm/Support/IRBuilder.h usability
>>>>>>>>>>>>>> configure:15057: /opt/local/bin/g++-mp-4.7 -c -pipe -O2 -m64
>>>>>>>>>>>>>> -D_THREAD_SAFE -pthread -D__STDC_CONSTANT_MACROS
>>>>>>>>>>>>>> -D__STDC_LIMIT_MACROS -isystem
>>>>>>>>>>>>>> /opt/local/libexec/llvm-3.3/include -D_THREAD_SAFE
>>>>>>>>>>>>>> -I/opt/local/include conftest.cpp >&5
>>>>>>>>>>>>>> conftest.cpp:84:36: fatal error: llvm/Support/IRBuilder.h: No
>>>>>>>>>>>>>> such file or directory
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ben
>>>>>>>>>>>>>
>>>>>>
>>>>>> I've switched to llvm-3.4. Configure looks to detect it correctly.
>>>>>>
>>>>>> LLVM CPPFLAGS: -isystem /opt/local/libexec/llvm-3.4/include
>>>>>> LLVM LDFLAGS: -L/opt/local/libexec/llvm-3.4/lib
>>>>>> LLVM libraries: -lLLVM-3.4
>>>>>>
>>>>>> While make still fails, the error is different.
>>>>>>
>>>>>> libtool: compile: /opt/local/bin/g++-mp-4.7 -DHAVE_CONFIG_H -I. -I..
>>>>>> -I../liboctave/cruft/misc -I../liboctave/array -I../liboctave/numeric
>>>>>> -I../liboctave/numeric -I../liboctave/operators -I../liboctave/operators
>>>>>> -I../liboctave/system -I../liboctave/util -I./octave-value -I./operators
>>>>>> -Iparse-tree -I./parse-tree -Icorefcn -I./corefcn -I../libgnu
>>>>>> -I../libgnu -I/opt/local/include -I/opt/local/include/freetype2
>>>>>> -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include
>>>>>> -I/opt/local/include/libpng16 -I/opt/local/include/freetype2
>>>>>> -I/opt/local/include -I/opt/local/include/libpng16 -isystem
>>>>>> /opt/local/libexec/llvm-3.4/include -D_THREAD_SAFE -I/opt/local/include
>>>>>> -Wall -W -Wshadow -Wold-style-cast -Wformat -Wpointer-arith
>>>>>> -Wwrite-strings -Wcast-align -Wcast-qual -pipe -O2 -m64 -D_THREAD_SAFE
>>>>>> -pthread -MT corefcn/corefcn_libcorefcn_la-pt-jit.lo -MD -MP -MF
>>>>>> corefcn/.deps/corefcn_libcorefcn_la-pt-jit.Tpo -c corefcn/pt-jit.cc
>>>>>> -fno-common -DPIC -o
>>>>> corefcn/.libs/corefcn_libcorefcn_
>>>>> la-pt-jit.o
>>>>>> In file included from corefcn/pt-jit.cc:57:0:
>>>>>> /opt/local/libexec/llvm-3.4/include/llvm/PassManager.h:34:15: error:
>>>>>> 'PassManager' is already declared in this scope
>>>>>> /opt/local/libexec/llvm-3.4/include/llvm/PassManager.h:35:15: error:
>>>>>> 'FunctionPassManager' is already declared in this scope
>>>>>> corefcn/pt-jit.cc: In member function 'bool tree_jit::initialize()':
>>>>>> corefcn/pt-jit.cc:2056:48: error: cannot convert
>>>>>> 'llvm::legacy::PassManager*' to 'llvm::PassManager*' in assignment
>>>>>> corefcn/pt-jit.cc:2057:22: error: invalid use of incomplete type 'class
>>>>>> llvm::PassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:46:9: error: forward declaration of 'class
>>>>>> llvm::PassManager'
>>>>>> corefcn/pt-jit.cc:2059:55: error: cannot convert
>>>>>> 'llvm::legacy::FunctionPassManager*' to 'llvm::FunctionPassManager*' in
>>>>>> assignment
>>>>>> corefcn/pt-jit.cc:2061:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc:2065:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc:2066:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc:2067:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc:2068:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc:2069:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc:2070:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc:2071:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc:2072:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc: In member function 'void
>>>>>> tree_jit::optimize(llvm::Function*)':
>>>>>> corefcn/pt-jit.cc:2168:22: error: invalid use of incomplete type 'class
>>>>>> llvm::PassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:46:9: error: forward declaration of 'class
>>>>>> llvm::PassManager'
>>>>>> corefcn/pt-jit.cc:2169:15: error: invalid use of incomplete type 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> In file included from corefcn/jit-typeinfo.h:34:0,
>>>>>> from corefcn/jit-ir.h:34,
>>>>>> from corefcn/pt-jit.h:30,
>>>>>> from corefcn/pt-jit.cc:36:
>>>>>> corefcn/jit-util.h:45:9: error: forward declaration of 'class
>>>>>> llvm::FunctionPassManager'
>>>>>> corefcn/pt-jit.cc:2175:34: error: 'F_Binary' is not a member of
>>>>>> 'llvm::raw_fd_ostream'
>>>>>>
>>>>>> Ben
>>>>>>
>>>>>
>>>>> Hi Ben,
>>>>>
>>>>> have you still applied the LLVM patch? (Rik has applied the patch to
>>>>> default.)
>>>>>
>>>>> Stefan
>>>>
>>>> Using the default branch, with no patches, config.log includes ...
>>>>
>>>> LLVM CPPFLAGS: -isystem /opt/local/libexec/llvm-3.4/include
>>>> LLVM LDFLAGS: -L/opt/local/libexec/llvm-3.4/lib
>>>> LLVM libraries: -lLLVM-3.4
>>>>
>>>> And make still fails with ...
>>>>
>>>> libtool: link: /opt/local/bin/g++-mp-4.7 -dynamiclib -o
>>>> .libs/liboctinterp.2.dylib .libs/liboctinterp_la-octave.o
>>>> .libs/liboctinterp_la-version.o operators/.libs/liboctinterp_la-op-b-b.o
>>>> operators/.libs/liboctinterp_la-op-b-bm.o
>>>> operators/.libs/liboctinterp_la-op-b-sbm.o
>>>> operators/.libs/liboctinterp_la-op-bm-b.o
>>>> operators/.libs/liboctinterp_la-op-bm-bm.o
>>>> operators/.libs/liboctinterp_la-op-bm-sbm.o
>>>> operators/.libs/liboctinterp_la-op-cdm-cdm.o
>>>> operators/.libs/liboctinterp_la-op-cdm-cm.o
>>>> operators/.libs/liboctinterp_la-op-cdm-cs.o
>>>> operators/.libs/liboctinterp_la-op-cdm-dm.o
>>>> operators/.libs/liboctinterp_la-op-cdm-m.o
>>>> operators/.libs/liboctinterp_la-op-cdm-s.o
>>>> operators/.libs/liboctinterp_la-op-cell.o
>>>> operators/.libs/liboctinterp_la-op-chm.o
>>>> operators/.libs/liboctinterp_la-op-class.o
>>>> operators/.libs/liboctinterp_la-op-cm-cdm.o
>>>> operators/.libs/liboctinterp_la-op-cm-cm.o
>>>> operators/.libs/liboctinterp_la-op-cm-cs.o
>>>> operators/.libs/liboctinterp_la-op-cm-dm.o
>>> operators/.libs/liboctinterp_la-
>>> op-cm-m.o operators/.libs/liboctinterp_la-op-cm-pm.o
>>> operators/.libs/liboctinterp_la-op-cm-s.o
>>> operators/.libs/liboctinterp_la-op-cm-scm.o
>>> operators/.libs/liboctinterp_la-op-cm-sm.o
>>> operators/.libs/liboctinterp_la-op-cs-cm.o
>>> operators/.libs/liboctinterp_la-op-cs-cs.o
>>> operators/.libs/liboctinterp_la-op-cs-m.o
>>> operators/.libs/liboctinterp_la-op-cs-s.o
>>> operators/.libs/liboctinterp_la-op-cs-scm.o
>>> operators/.libs/liboctinterp_la-op-cs-sm.o
>>> operators/.libs/liboctinterp_la-op-dm-cdm.o
>>> operators/.libs/liboctinterp_la-op-dm-cm.o
>>> operators/.libs/liboctinterp_la-op-dm-cs.o
>>> operators/.libs/liboctinterp_la-op-dm-dm.o
>>> operators/.libs/liboctinterp_la-op-dm-m.o
>>> operators/.libs/liboctinterp_la-op-dm-s.o
>>> operators/.libs/liboctinterp_la-op-dm-scm.o
>>> operators/.libs/liboctinterp_la-op-dm-sm.o
>>> operators/.libs/liboctinterp_la-op-double-conv.o
>>> operators/.libs/liboctinterp_la-op-fcdm-fcdm.o
>>> operators/.libs/liboctinterp_la-op-fcdm-fcm.o
>>> operators/.libs/liboctinterp_la-op-fcdm-fcs.o
>>> operators/.libs/liboctinterp
>>> _la-op-fcdm-fdm.o operators/.libs/liboctinterp_la-op-fcdm-fm.o
>>> operators/.libs/liboctinterp_la-op-fcdm-fs.o
>>> operators/.libs/liboctinterp_la-op-fcm-fcdm.o
>>> operators/.libs/liboctinterp_la-op-fcm-fcm.o
>>> operators/.libs/liboctinterp_la-op-fcm-fcs.o
>>> operators/.libs/liboctinterp_la-op-fcm-fdm.o
>>> operators/.libs/liboctinterp_la-op-fcm-fm.o
>>> operators/.libs/liboctinterp_la-op-fcm-fs.o
>>> operators/.libs/liboctinterp_la-op-fcm-pm.o
>>> operators/.libs/liboctinterp_la-op-fcn.o
>>> operators/.libs/liboctinterp_la-op-fcs-fcm.o
>>> operators/.libs/liboctinterp_la-op-fcs-fcs.o
>>> operators/.libs/liboctinterp_la-op-fcs-fm.o
>>> operators/.libs/liboctinterp_la-op-fcs-fs.o
>>> operators/.libs/liboctinterp_la-op-fdm-fcdm.o
>>> operators/.libs/liboctinterp_la-op-fdm-fcm.o
>>> operators/.libs/liboctinterp_la-op-fdm-fcs.o
>>> operators/.libs/liboctinterp_la-op-fdm-fdm.o
>>> operators/.libs/liboctinterp_la-op-fdm-fm.o
>>> operators/.libs/liboctinterp_la-op-fdm-fs.o
>>> operators/.libs/liboctinterp_la-op-float-conv.o
>>> operators/.libs/liboctinterp_la-op-fm-fcdm
>>> .o operators/.libs/liboctinterp_la-op-fm-fcm.o
>>> operators/.libs/liboctinterp_la-op-fm-fcs.o
>>> operators/.libs/liboctinterp_la-op-fm-fdm.o
>>> operators/.libs/liboctinterp_la-op-fm-fm.o
>>> operators/.libs/liboctinterp_la-op-fm-fs.o
>>> operators/.libs/liboctinterp_la-op-fm-pm.o
>>> operators/.libs/liboctinterp_la-op-fs-fcm.o
>>> operators/.libs/liboctinterp_la-op-fs-fcs.o
>>> operators/.libs/liboctinterp_la-op-fs-fm.o
>>> operators/.libs/liboctinterp_la-op-fs-fs.o
>>> operators/.libs/liboctinterp_la-op-i16-i16.o
>>> operators/.libs/liboctinterp_la-op-i32-i32.o
>>> operators/.libs/liboctinterp_la-op-i64-i64.o
>>> operators/.libs/liboctinterp_la-op-i8-i8.o
>>> operators/.libs/liboctinterp_la-op-int-concat.o
>>> operators/.libs/liboctinterp_la-op-int-conv.o
>>> operators/.libs/liboctinterp_la-op-m-cdm.o
>>> operators/.libs/liboctinterp_la-op-m-cm.o
>>> operators/.libs/liboctinterp_la-op-m-cs.o
>>> operators/.libs/liboctinterp_la-op-m-dm.o
>>> operators/.libs/liboctinterp_la-op-m-m.o
>>> operators/.libs/liboctinterp_la-op-m-pm.o
>>> operators/.libs/liboctinterp_la-op-m-
>>> s.o operators/.libs/liboctinterp_la-op-m-scm.o
>>> operators/.libs/liboctinterp_la-op-m-sm.o
>>> operators/.libs/liboctinterp_la-op-pm-cm.o
>>> operators/.libs/liboctinterp_la-op-pm-fcm.o
>>> operators/.libs/liboctinterp_la-op-pm-fm.o
>>> operators/.libs/liboctinterp_la-op-pm-m.o
>>> operators/.libs/liboctinterp_la-op-pm-pm.o
>>> operators/.libs/liboctinterp_la-op-pm-scm.o
>>> operators/.libs/liboctinterp_la-op-pm-sm.o
>>> operators/.libs/liboctinterp_la-op-range.o
>>> operators/.libs/liboctinterp_la-op-s-cm.o
>>> operators/.libs/liboctinterp_la-op-s-cs.o
>>> operators/.libs/liboctinterp_la-op-s-m.o
>>> operators/.libs/liboctinterp_la-op-s-s.o
>>> operators/.libs/liboctinterp_la-op-s-scm.o
>>> operators/.libs/liboctinterp_la-op-s-sm.o
>>> operators/.libs/liboctinterp_la-op-sbm-b.o
>>> operators/.libs/liboctinterp_la-op-sbm-bm.o
>>> operators/.libs/liboctinterp_la-op-sbm-sbm.o
>>> operators/.libs/liboctinterp_la-op-scm-cm.o
>>> operators/.libs/liboctinterp_la-op-scm-cs.o
>>> operators/.libs/liboctinterp_la-op-scm-m.o
>>> operators/.libs/liboctinterp_la-op-scm-s.o
>>> operator
>>> s/.libs/liboctinterp_la-op-scm-scm.o
>>> operators/.libs/liboctinterp_la-op-scm-sm.o
>>> operators/.libs/liboctinterp_la-op-sm-cm.o
>>> operators/.libs/liboctinterp_la-op-sm-cs.o
>>> operators/.libs/liboctinterp_la-op-sm-m.o
>>> operators/.libs/liboctinterp_la-op-sm-s.o
>>> operators/.libs/liboctinterp_la-op-sm-scm.o
>>> operators/.libs/liboctinterp_la-op-sm-sm.o
>>> operators/.libs/liboctinterp_la-op-str-m.o
>>> operators/.libs/liboctinterp_la-op-str-s.o
>>> operators/.libs/liboctinterp_la-op-str-str.o
>>> operators/.libs/liboctinterp_la-op-struct.o
>>> operators/.libs/liboctinterp_la-op-ui16-ui16.o
>>> operators/.libs/liboctinterp_la-op-ui32-ui32.o
>>> operators/.libs/liboctinterp_la-op-ui64-ui64.o
>>> operators/.libs/liboctinterp_la-op-ui8-ui8.o
>>> template-inst/.libs/liboctinterp_la-Array-os.o
>>> template-inst/.libs/liboctinterp_la-Array-tc.o
>>> template-inst/.libs/liboctinterp_la-Array-jit.o
>>> corefcn/.libs/liboctinterp_la-oct-errno.o
>>> operators/.libs/liboctinterp_la-ops.o .libs/liboctinterp_la-builtins.o
>>> -Wl,-force_load,octave-value/.libs/liboctav
>>> e-value.a -Wl,-force_load,parse-tree/.libs/libparse-tree.a
>>> -Wl,-force_load,parse-tree/.libs/libparser.a
>>> -Wl,-force_load,corefcn/.libs/libcorefcn.a
>>> -Wl,-force_load,corefcn/.libs/libtex_parser.a
>>> -L/opt/local/libexec/llvm-3.4/lib -L/opt/local/lib
>>> ../liboctave/.libs/liboctave.dylib
>>> -L/opt/local/lib/gcc47/gcc/x86_64-apple-darwin13/4.7.3
>>> -L/opt/local/lib/gcc47/gcc/x86_64-apple-darwin13/4.7.3/../../.. -lhdf5 -lz
>>> -lfontconfig -lfreetype -lgl2ps -lLLVM-3.4 -lcurl -lcholmod -lumfpack
>>> -lsuitesparseconfig -lamd -lcamd -lcolamd -lccolamd -lcxsparse -larpack
>>> -lqrupdate -lfftw3_threads -lfftw3 -lfftw3f_threads -lfftw3f -llapack
>>> -lcblas -lf77blas -latlas -lreadline -lncurses -lpcre -ldl -lgfortran
>>> -lquadmath -lm -O2 -m64 -pthread -m64 -Wl,-framework -Wl,OpenGL
>>> -Wl,-framework -Wl,Carbon -pthread -install_name
>>> /usr/local/octave/4.1.0/lib/octave/4.1.0+/liboctinterp.2.dylib
>>> -compatibility_version 3 -current_version 3.0 -Wl,-single_module
>>>> Undefined symbols for architecture x86_64:
>>>> "llvm::verifyModule(llvm::Module const&, llvm::VerifierFailureAction,
>>>> std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)",
>>>> referenced from:
>>>> tree_jit::optimize(llvm::Function*) in
>>>> libcorefcn.a(corefcn_libcorefcn_la-pt-jit.o)
>>>> "llvm::raw_fd_ostream::raw_fd_ostream(char const*, std::basic_string<char,
>>>> std::char_traits<char>, std::allocator<char> >&,
>>>> llvm::sys::fs::OpenFlags)", referenced from:
>>>> tree_jit::optimize(llvm::Function*) in
>>>> libcorefcn.a(corefcn_libcorefcn_la-pt-jit.o)
>>>> "llvm::ExecutionEngine::createJIT(llvm::Module*, std::basic_string<char,
>>>> std::char_traits<char>, std::allocator<char> >*, llvm::JITMemoryManager*,
>>>> llvm::CodeGenOpt::Level, bool, llvm::Reloc::Model,
>>>> llvm::CodeModel::Model)", referenced from:
>>>> tree_jit::initialize() in
>>>> libcorefcn.a(corefcn_libcorefcn_la-pt-jit.o)
>>>> ld: symbol(s) not found for architecture x86_64
>>>>
>>>> Ben
>>>>
>>>
>>> Hi Ben,
>>>
>>> What's the output of
>>>
>>> file /opt/local/libexec/llvm-3.4/lib/*LLVM-3.4*
>>>
>>> Stefan
>>
>>
>> $ file /opt/local/libexec/llvm-3.4/lib/*LLVM-3.4*
>> /opt/local/libexec/llvm-3.4/lib/libLLVM-3.4.dylib: Mach-O 64-bit dynamically
>> linked shared library x86_64
>>
>> Ben
>
> Just found your comment on macports bug tracker [1]. Did you try to use
> the same compiler for octave as for llvm?
> ---
> [1] http://trac.macports.org/ticket/41155
Good idea. I forced an uninstalled and reinstalled llvm-3.4.
sudo port -f uninstall llvm-3.4
sudo port -f install llvm-3.4 configure.compiler=macports-gcc-4.7
---> Computing dependencies for llvm-3.4
---> Fetching archive for llvm-3.4
---> Attempting to fetch llvm-3.4-3.4_3.darwin_13.x86_64.tbz2 from
http://packages.macports.org/llvm-3.4
---> Attempting to fetch llvm-3.4-3.4_3.darwin_13.x86_64.tbz2.rmd160 from
http://packages.macports.org/llvm-3.4
---> Installing llvm-3.4 @3.4_3
---> Activating llvm-3.4 @3.4_3
---> Cleaning llvm-3.4
---> Computing dependencies for llvm-3.4
---> Cleaning llvm-3.4
---> Updating database of binaries
---> Scanning binaries for linking errors
---> No broken files found.
There is no configure/build phase and checking the creation info, for the llvm
libs, indicates Jun 2 14:27. So it looks like a binary install. An "-s" is
needed to build from source ...
First, I tried the default buld
$ sudo port -fs install llvm-3.4
---> Computing dependencies for llvm-3.4
---> Fetching distfiles for llvm-3.4
---> Verifying checksums for llvm-3.4
---> Extracting llvm-3.4
---> Applying patches to llvm-3.4
---> Configuring llvm-3.4
---> Building llvm-3.4
---> Staging llvm-3.4 into destroot
---> Installing llvm-3.4 @3.4_3
---> Activating llvm-3.4 @3.4_3
---> Cleaning llvm-3.4
---> Updating database of binaries
---> Scanning binaries for linking errors
---> No broken files found.
Looks like building is straight forward. Next, I added gcc-4.7
$ sudo port -fs install llvm-3.4 configure.compiler=macports-gcc-4.7
---> Computing dependencies for llvm-3.4
---> Fetching distfiles for llvm-3.4
---> Verifying checksums for llvm-3.4
---> Extracting llvm-3.4
---> Applying patches to llvm-3.4
---> Configuring llvm-3.4
Error: Failed to configure llvm-3.4, consult
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_llvm-3.4/llvm-3.4/work/llvm-3.4/config.log
Error: org.macports.configure for port llvm-3.4 returned: configure failure:
command execution failed
Please see the log file for port llvm-3.4 for details:
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_llvm-3.4/llvm-3.4/main.log
Error: Problem while installing llvm-3.4
Error: Unable to execute port: upgrade libffi failed
The log file ends with ...
:debug:main Running callback portconfigure::add_automatic_compiler_dependencies
:debug:main Chosen compiler macports-gcc-4.7 is provided by a port, adding
dependency
:debug:main Adding depends_lib port:gcc47
:debug:main Finished running callback
portconfigure::add_automatic_compiler_dependencies
:debug:main Running callback portbuild::add_automatic_buildsystem_dependencies
:debug:main Finished running callback
portbuild::add_automatic_buildsystem_dependencies
:debug:main No need to upgrade! llvm_select 1.0_0 >= llvm_select 1.0_0
:debug:main Starting logging for llvm-3.4
:error:configure Problem while installing llvm-3.4
:debug:configure upgrade libffi failed
while executing
"macports::_upgrade_mport_deps $mport $target"
(procedure "mportexec" line 39)
invoked from within
"mportexec $workername $target"
:error:configure Unable to execute port: upgrade libffi failed
My impression is that llvm's dependencies need to be built with gcc-4.7 as well.
I'll get started trying that. If I'm off track, let me know.
Ben
- Re: LLVM/JIT on MacOS X, (continued)
- Re: LLVM/JIT on MacOS X, Ben Abbott, 2014/06/12
- Aw: Re: LLVM/JIT on MacOS X, Stefan Mahr, 2014/06/12
- Re: LLVM/JIT on MacOS X, Ben Abbott, 2014/06/12
- Re: LLVM/JIT on MacOS X, Ben Abbott, 2014/06/14
- Re: LLVM/JIT on MacOS X, Ben Abbott, 2014/06/14
- Re: LLVM/JIT on MacOS X, Stefan Mahr, 2014/06/14
- Re: LLVM/JIT on MacOS X, Ben Abbott, 2014/06/14
- Re: LLVM/JIT on MacOS X, Stefan Mahr, 2014/06/15
- Re: LLVM/JIT on MacOS X, Ben Abbott, 2014/06/15
- Re: LLVM/JIT on MacOS X, Stefan Mahr, 2014/06/15
- Re: LLVM/JIT on MacOS X,
Ben Abbott <=