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@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev