[Mesa-dev] problem on building vmwgfx

Eric Engestrom eric.engestrom at imgtec.com
Tue Feb 28 13:24:24 UTC 2017


On Tuesday, 2017-02-28 14:04:15 +0100, Zhiguang Liu wrote:
> Hi,
> 
> I try to build vmwgfx on Ubuntu 12.04 with gcc-4.8.1, make 3.8.1. I clone
> the source files using the following command:
> 
> git clone git://anongit.freedesktop.org/git/mesa/vmwgfx
> 
> However, when I use 'make' command to build it, I got one error like this:
> 
> ================================================================
> zg at ubuntu:~/vmware/vmwgfx$ make
> make -C /lib/modules/3.13.0-108-generic/build  KCPPFLAGS="-DVMWGFX_STANDALONE
> -DTTM_STANDALONE" SUBDIRS=`/bin/pwd` DRMSRCDIR=`/bin/pwd` modules
> make[1]: Entering directory `/usr/src/linux-headers-3.13.0-108-generic'
>   CC [M]  /home/zg/vmware/vmwgfx/ww_mutex.o
>   CC [M]  /home/zg/vmware/vmwgfx/dma-fence.o
> In file included from /home/zg/vmware/vmwgfx/dma-fence.c:37:0:
> /home/zg/vmware/vmwgfx/drm_compat.h:113:3: error: expected identifier or
> ‘(’ before ‘{’ token
>   ({BUILD_BUG_ON(_s != TASK_NORMAL); \
>    ^
> include/linux/sched.h:2077:12: note: in expansion of macro ‘wake_up_state’
>  extern int wake_up_state(struct task_struct *tsk, unsigned int state);
>             ^

The problem isn't with the macro, but the fact that it's defined before
the function it replaces.

The result is that this:
	extern int wake_up_state(struct task_struct *tsk, unsigned int state);

… gets rewritten as this (by the preprocessor):
	extern int ({BUILD_BUG_ON(_s != TASK_NORMAL); wake_up_state(struct task_struct *tsk); });

… which is invalid and doesn't compile.

Changing the order of the includes should fix this. Can you try this
patch?

----8<----
diff --git a/core/dma-fence.c b/core/dma-fence.c
index d28fb37..515593f 100644
--- a/core/dma-fence.c
+++ b/core/dma-fence.c
@@ -34,8 +34,8 @@ EXPORT_TRACEPOINT_SYMBOL(dma_fence_emit);
 
 #include <linux/slab.h>
 #include <asm/atomic.h>
-#include "drm_compat.h"
 #include "core/dma-fence.h"
+#include "drm_compat.h"
 
 #define trace_dma_fence_signaled(_a)
 #define trace_dma_fence_wait_start(_a)
---->8----

Cheers,
  Eric


> make[2]: *** [/home/zg/vmware/vmwgfx/dma-fence.o] Error 1
> make[1]: *** [_module_/home/zg/vmware/vmwgfx] Error 2
> make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-108-generic'
> make: *** [modules] Error 2
> ================================================================
> 
> I opened the drm_compat.h and it seems that nothing goes wrong for line
> 113. Does anyone have some idea on this problem?
> 
> [image: Inline image 1]
> 
> Best regards,
> Zhiguang


More information about the mesa-dev mailing list