We are currently migrating Bugzilla to GitHub issues.
Any changes made to the bug tracker now will be lost, so please do not post new bugs or make changes to them.
When we're done, all bug URLs will redirect to their equivalent location on the new bug tracker.

Bug 2838

Summary: cmake - build process fails on linux because of wayland not properly detected
Product: SDL Reporter: Michele Caini <michele.caini>
Component: buildAssignee: Ryan C. Gordon <icculus>
Status: RESOLVED FIXED QA Contact: Sam Lantinga <slouken>
Severity: minor    
Priority: P2 CC: ajanbu, icculus
Version: HG 2.1Keywords: triage-2.0.4
Hardware: x86_64   
OS: Linux   
Attachments: Build fix (add missing include)

Description Michele Caini 2015-01-07 21:05:01 UTC
Linux ********* 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt2-1 (2014-12-08) x86_64 GNU/Linux

CMake returns the following:

[...]
-- Performing Test HAVE_VIDEO_OPENGLES_V2 - Success
-- checking for modules 'wayland-client;wayland-cursor;wayland-egl;egl;xkbcommon'
--   found wayland-client, version 1.6.0
--   found wayland-cursor, version 1.6.0
--   found wayland-egl, version 10.3.2
--   found egl, version 10.3.2
--   found xkbcommon, version 0.4.3
-- Performing Test HAVE_VIDEO_VIVANTE_VDK
[...]
--   VIDEO_RPI              (Wanted: ON): OFF
--   VIDEO_VIVANTE          (Wanted: ON): OFF
--   VIDEO_WAYLAND          (Wanted: ON): ON
--   VIDEO_X11              (Wanted: ON): ON
--   VIDEO_X11_XCURSOR      (Wanted: ON): ON
[...]
--  EXTRA_LIBS:    wayland-cursor;wayland-egl;wayland-client;EGL;xkbcommon;m;/usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so;/usr/lib/x86_64-linux-gnu/libXcursor.so;/usr/lib/x86_64-linux-gnu/libXinerama.so;/usr/lib/x86_64-linux-gnu/libXi.so;/usr/lib/x86_64-linux-gnu/libXrandr.so;/usr/lib/x86_64-linux-gnu/libXss.so;/usr/lib/x86_64-linux-gnu/libXxf86vm.so;GL
[...]

Make returns the following:

[ 83%] Building C object CMakeFiles/SDL2-static.dir/src/video/x11/SDL_x11touch.c.o                                                                                                                                 
[ 84%] Building C object CMakeFiles/SDL2-static.dir/src/video/wayland/SDL_waylandvideo.c.o                                                                                                                         
[ 85%] Building C object CMakeFiles/SDL2-static.dir/src/video/wayland/SDL_waylandtouch.c.o                                                                                                                         
[ 85%] Building C object CMakeFiles/SDL2-static.dir/src/video/wayland/SDL_waylandopengles.c.o                                                                                                                      
[ 86%] Building C object CMakeFiles/SDL2-static.dir/src/video/wayland/SDL_waylanddyn.c.o                                                                                                                           
[ 87%] Building C object CMakeFiles/SDL2-static.dir/src/video/wayland/SDL_waylandwindow.c.o                                                                                                                        
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c: In function ‘handle_ping’:
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:37:5: warning: implicit declaration of function ‘wl_shell_surface_pong’ [-Wimplicit-function-declaration]
     wl_shell_surface_pong(shell_surface, serial);
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c: In function ‘handle_configure’:
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:50:5: warning: implicit declaration of function ‘WAYLAND_wl_egl_window_resize’ [-Wimplicit-function-declaration]
     WAYLAND_wl_egl_window_resize(wind->egl_window, window->w, window->h, 0, 0);
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:52:5: warning: implicit declaration of function ‘wl_compositor_create_region’ [-Wimplicit-function-declaration]
     region = wl_compositor_create_region(wind->waylandData->compositor);
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:52:12: warning: assignment makes pointer from integer without a cast
     region = wl_compositor_create_region(wind->waylandData->compositor);
            ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:53:5: warning: implicit declaration of function ‘wl_region_add’ [-Wimplicit-function-declaration]
     wl_region_add(region, 0, 0, window->w, window->h);
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:54:5: warning: implicit declaration of function ‘wl_surface_set_opaque_region’ [-Wimplicit-function-declaration]
     wl_surface_set_opaque_region(wind->surface, region);
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:55:5: warning: implicit declaration of function ‘wl_region_destroy’ [-Wimplicit-function-declaration]
     wl_region_destroy(region);
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c: At top level:
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:64:21: error: variable ‘shell_surface_listener’ has initializer but incomplete type
 static const struct wl_shell_surface_listener shell_surface_listener = {
                     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:65:5: warning: excess elements in struct initializer
     handle_ping,
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:65:5: warning: (near initialization for ‘shell_surface_listener’)
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:66:5: warning: excess elements in struct initializer
     handle_configure,
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:66:5: warning: (near initialization for ‘shell_surface_listener’)
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:68:1: warning: excess elements in struct initializer
 };
 ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:68:1: warning: (near initialization for ‘shell_surface_listener’)
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c: In function ‘Wayland_ShowWindow’:
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:116:9: warning: implicit declaration of function ‘wl_shell_surface_set_fullscreen’ [-Wimplicit-function-declaration]
         wl_shell_surface_set_fullscreen(wind->shell_surface,
         ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:117:41: error: ‘WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT’ undeclared (first use in this function)
                                         WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT,
                                         ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:117:41: note: each undeclared identifier is reported only once for each function it appears in
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:120:9: warning: implicit declaration of function ‘wl_shell_surface_set_toplevel’ [-Wimplicit-function-declaration]
         wl_shell_surface_set_toplevel(wind->shell_surface);
         ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:122:5: warning: implicit declaration of function ‘WAYLAND_wl_display_flush’ [-Wimplicit-function-declaration]
     WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c: In function ‘Wayland_SetWindowFullscreen’:
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:133:41: error: ‘WL_SHELL_SURFACE_FULLSCREEN_METHOD_SCALE’ undeclared (first use in this function)
                                         WL_SHELL_SURFACE_FULLSCREEN_METHOD_SCALE,
                                         ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c: In function ‘Wayland_CreateWindow’:
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:170:9: warning: implicit declaration of function ‘wl_compositor_create_surface’ [-Wimplicit-function-declaration]
         wl_compositor_create_surface(c->compositor);
         ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:169:19: warning: assignment makes pointer from integer without a cast
     data->surface =
                   ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:171:5: warning: implicit declaration of function ‘wl_surface_set_user_data’ [-Wimplicit-function-declaration]
     wl_surface_set_user_data(data->surface, data);
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:172:5: warning: implicit declaration of function ‘wl_shell_get_shell_surface’ [-Wimplicit-function-declaration]
     data->shell_surface = wl_shell_get_shell_surface(c->shell,
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:172:25: warning: assignment makes pointer from integer without a cast
     data->shell_surface = wl_shell_get_shell_surface(c->shell,
                         ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:192:5: warning: implicit declaration of function ‘WAYLAND_wl_egl_window_create’ [-Wimplicit-function-declaration]
     data->egl_window = WAYLAND_wl_egl_window_create(data->surface,
     ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:192:22: warning: assignment makes pointer from integer without a cast
     data->egl_window = WAYLAND_wl_egl_window_create(data->surface,
                      ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:204:9: warning: implicit declaration of function ‘wl_shell_surface_set_user_data’ [-Wimplicit-function-declaration]
         wl_shell_surface_set_user_data(data->shell_surface, data);
         ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:205:9: warning: implicit declaration of function ‘wl_shell_surface_add_listener’ [-Wimplicit-function-declaration]
         wl_shell_surface_add_listener(data->shell_surface,
         ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:217:12: warning: assignment makes pointer from integer without a cast
     region = wl_compositor_create_region(c->compositor);
            ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c: In function ‘Wayland_SetWindowSize’:
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:235:12: warning: assignment makes pointer from integer without a cast
     region =wl_compositor_create_region(data->compositor);
            ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c: In function ‘Wayland_DestroyWindow’:
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:248:9: warning: implicit declaration of function ‘WAYLAND_wl_egl_window_destroy’ [-Wimplicit-function-declaration]
         WAYLAND_wl_egl_window_destroy(wind->egl_window);
         ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:251:13: warning: implicit declaration of function ‘wl_shell_surface_destroy’ [-Wimplicit-function-declaration]
             wl_shell_surface_destroy(wind->shell_surface);
             ^
/home/skypjack/projects/SDL/SDL/src/video/wayland/SDL_waylandwindow.c:257:9: warning: implicit declaration of function ‘wl_surface_destroy’ [-Wimplicit-function-declaration]
         wl_surface_destroy(wind->surface);
         ^
CMakeFiles/SDL2-static.dir/build.make:2837: recipe for target 'CMakeFiles/SDL2-static.dir/src/video/wayland/SDL_waylandwindow.c.o' failed
make[2]: *** [CMakeFiles/SDL2-static.dir/src/video/wayland/SDL_waylandwindow.c.o] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/SDL2-static.dir/all' failed
make[1]: *** [CMakeFiles/SDL2-static.dir/all] Error 2
Makefile:117: recipe for target 'all' failed
make: *** [all] Error 2

Let me know if I can help with more details.
Comment 1 ajanbu 2015-01-10 12:54:56 UTC
Created attachment 1988 [details]
Build fix (add missing include)

I had the same issue and this patch fixed the build for me.
Comment 2 Michele Caini 2015-02-06 20:44:32 UTC
sorry for the late. it works for me.
Comment 3 Ryan C. Gordon 2015-02-19 05:22:23 UTC
Marking a large number of bugs with the "triage-2.0.4" keyword at once. Sorry if you got a lot of email from this. This is to help me sort through some bugs in regards to a 2.0.4 release. We may or may not fix this bug for 2.0.4, though!
Comment 4 Ryan C. Gordon 2015-02-19 19:31:08 UTC
This patch is now https://hg.libsdl.org/SDL/rev/dfd8202eb9a7

Thanks!

--ryan.