Created attachment 55273 [details] Use LLVM_LIBS="`$LLVM_CONFIG --libs engine`" As llvm-config says: Typical components: all All LLVM libraries (default). engine Either a native JIT or a bitcode interpreter. `all` contains MIPS/ARM/etc libs, which [AFAIU] is not actually used and is not necessary installed, which leads to build/linking error due to missing libraries.
This sounds like a LLVM bug to me. If MIPS and ARMS libraries weren't built and installed then 'llvm-config --libs' shouldn't list them.
Anyway, Mesa doesn't need LLVM libraries except in `$LLVM_CONFIG --libs engine` to build/run?
(In reply to comment #2) > Anyway, Mesa doesn't need LLVM libraries except in `$LLVM_CONFIG --libs engine` > to build/run? I tried the SCons build using 'llvm-config --libs engine' and Mesa fails to build. $ scons [...] Linking build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend ... build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend.o: In function `test_one': mesa/src/gallium/drivers/llvmpipe/lp_test_blend.c:691: undefined reference to `LLVMWriteBitcodeToFile' build/linux-x86_64-debug/gallium/auxiliary/libgallium.a(lp_bld_debug.os): In function `llvm::InitializeAllDisassemblers()': /usr/lib/llvm-2.8/include/llvm/Config/Disassemblers.def:27: undefined reference to `LLVMInitializeARMDisassembler'
Created attachment 56313 [details] [review] Use LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`" Filled bug against LLVM http://llvm.org/bugs/show_bug.cgi?id=11886 Looks like LLVM guys recommend to use more fine-grained llvm-config options with specific LLVM_LINK_COMPONENTS, so Mesa should also use it, if possible (not sure though, waiting for the answer in LLVM bugzilla). llvmpipe also uses bitwriter functions, so use LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`" (now also with scons changes. Can't check scons build, because it's broken for me due to unrelated reasons).
Commited. Thanks ojab
Hi, the commit: commit 25ee5a27f30aaeb83232de9bada82534d2d504fc Author: ojab <ojab@ojab.ru> Date: Mon Jan 30 12:34:46 2012 +0400 Use only native engine & bitwriter LLVM libraries for linking. Signed-off-by: José Fonseca <jfonseca@vmware.com> breaks Mesa build: /bin/bash ../../../../bin/mklib -o r600_dri.so.tmp -noprefix -linker 'g++' -ldflags ' -L/usr/lib/llvm-2.8/lib -lpthread -lffi -ldl -lm ' \ target.o ../../../../src/mesa/drivers/dri/common/utils.o ../../../../src/mesa/drivers/dri/common/dri_util.o ../../../../src/mesa/drivers/dri/common/xmlconfig.o ../../../../src/gallium/drivers/r600/libr600.a ../../../../src/gallium/state_trackers/dri/drm/libdridrm.a ../../../../src/gallium/winsys/radeon/drm/libradeonwinsys.a ../../../../src/gallium/drivers/trace/libtrace.a ../../../../src/gallium/drivers/rbug/librbug.a ../../../../src/gallium/drivers/noop/libnoop.a \ -Wl,--start-group ../../../../src/mesa/libmesagallium.a ../../../../src/gallium/auxiliary/libgallium.a -Wl,--end-group \ -L../../../../lib -Wl,-R/usr/lib/i386-linux-gnu/dri -ldricore -lglsl -ldrm -lexpat -lm -lpthread -ldl -lLLVMBitWriter -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMMCParser -lLLVMX86AsmPrinter -lLLVMX86Info -lLLVMJIT -lLLVMExecutionEngine -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMMC -lLLVMCore -lLLVMSupport -lLLVMSystem -L/usr/lib/llvm-2.8/lib mklib: Making Linux shared library: r600_dri.so.tmp g++ -fno-omit-frame-pointer -Wall -Wmissing-prototypes -std=c99 -fno-strict-aliasing -fno-builtin-memcmp -g -fno-omit-frame-pointer -fPIC -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -D_GNU_SOURCE -DPTHREADS -DDEBUG -DTEXTURE_FLOAT_ENABLED -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DGLX_USE_TLS -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -D__STDC_CONSTANT_MACROS -DHAVE_LLVM=0x0208 -fvisibility=hidden -o r600_dri.so.test ../../../../src/mesa/drivers/dri/common/dri_test.o r600_dri.so.tmp -L../../../../lib -Wl,-R/usr/lib/i386-linux-gnu/dri -ldricore -lglsl -ldrm -lexpat -lm -lpthread -ldl -L/usr/lib/llvm-2.8/lib -lpthread -lffi -ldl -lm ; r600_dri.so.tmp: undefined reference to `LLVMInitializeARMDisassembler' collect2: ld returned 1 exit status make[3]: *** [r600_dri.so] Error 1 make[3]: Leaving directory `/home/eosie/dev/mesa/src/gallium/targets/dri-r600' Do you have any idea how to fix this?
(In reply to comment #6) > > Do you have any idea how to fix this? Should be fixed now. See also bug 45420.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.