Bug 88209 - HAVE_LLVM undelcared in r600_pipe_common.c if enable_r600_llvm not set
Summary: HAVE_LLVM undelcared in r600_pipe_common.c if enable_r600_llvm not set
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Gallium/r600 (show other bugs)
Version: git
Hardware: All All
: medium normal
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-01-08 18:14 UTC by athomas
Modified: 2015-01-23 21:51 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
Don't build LLVM related code when HAVE_LLVM isn't defined (1.09 KB, patch)
2015-01-09 09:53 UTC, Michel Dänzer
Details | Splinter Review

Description athomas 2015-01-08 18:14:37 UTC

    
Comment 1 athomas 2015-01-08 18:21:55 UTC

HAVE_LLVM is only established by configure.ac if LLVM_CONFIG = yes. LLVM_CONFIG will only be "yes" if enable_r600_llvm is specified. If HAVE_LLVM is not declared, then the build of mesa/mesa/src/gallium/drivers/radeon/r600_pipe_common.c

DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DLLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"


Fails with:
make[3]: Entering directory '/home/jessie/xserver_tmp/src/mesa/mesa/src/gallium/drivers/radeon'
  CC       r600_pipe_common.lo
r600_pipe_common.c: In function 'r600_get_compute_param':
r600_pipe_common.c:503:40: error: 'HAVE_LLVM' undeclared (first use in this function)
   if (rscreen->family <= CHIP_ARUBA || HAVE_LLVM < 0x0306) {
                                        ^
r600_pipe_common.c:503:40: note: each undeclared identifier is reported only once for each function it appears in
Makefile:668: recipe for target 'r600_pipe_common.lo' failed
make[3]: *** [r600_pipe_common.lo] Error 1
Comment 2 Michel Dänzer 2015-01-09 09:53:01 UTC
Created attachment 111998 [details] [review]
Don't build LLVM related code when HAVE_LLVM isn't defined

Does this patch work?
Comment 3 athomas 2015-01-09 14:25:34 UTC
The patch seems to be in the right direction of removing the dependance of  LLVM in the source code, but I dont have hardware to test functionality. I can test that it compiles when LLVM isn't specified on Monday. I don't have enough  knowledge on the internal workings of the driver to make comments on the implications of the code chages though. 

A couple of notes I meant to add last night:

Build Environment:

- Building directly on an ARM platform. imx6 - very similar to sabrelite.
- I set the prefix to be someplace in my /home directory via the X.org build.sh script.
- Flags: --enable-driglx-direct --enable-gles1 --enable-gles2 --enable-glx --with-dri-drivers=radeon

Additional notes about the mesa build with llvm:

Normally the auto setting for enable_gallium_llvm will set enable_gallium=llvm=yes and trigger llvm to be used with the driver. This is NOT the case if the host CPU is not i*86/x96_64/AMD64. See the current snippet below from configure.ac


if test "x$enable_gallium_llvm" = xauto; then
    case "$host_cpu" in
    i*86|x86_64|amd64) enable_gallium_llvm=yes;;
    esac
fi

Tests I did:
- I hacked the configure.ac to always set enable_gallium_llvm=yes and was able to get the gallium r600 driver to build and subsquently mesa. 
- I, somewhat stupidly, tested --with-dri-drivers=nouveau and not --with-gallium-drivers=nouveau because I dont care about the drivers - I will end up using Freescale/Vivante drivers. BUT - can the two be aligned or at least checked for inconsistencies.

Questions:
- Does it make sense to migrate the default to use LLVM for ARM platforms? 

At the end of the day I didnt really care about the drivers themselves because I will be dropping in Vivante drivers via Freescale, but I needed mesa/gallium to build. I should have cut the gallium drivers out, but I was concerned I had my build environment/paths setup correctly.
Comment 4 Marek Olšák 2015-01-23 21:51:41 UTC
Fixed with bed6f20f28af8bf531c14e3cab12a00354a31. Closing.


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.