Build fails with CFLAGS=-fno-common
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x0): multiple definition of `wfl_wl_proxy_marshal_constructor_versioned'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x4): multiple definition of `wfl_wl_proxy_marshal_constructor'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x8): multiple definition of `wfl_wl_proxy_marshal'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x8): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0xc): multiple definition of `wfl_wl_proxy_add_listener'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0xc): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x10): multiple definition of `wfl_wl_proxy_destroy'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x10): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x14): multiple definition of `wfl_wl_display_roundtrip'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x14): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x18): multiple definition of `wfl_wl_display_disconnect'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x18): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x1c): multiple definition of `wfl_wl_display_connect'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x1c): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x20): multiple definition of `wfl_wl_surface_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x20): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x24): multiple definition of `wfl_wl_shell_surface_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x24): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x28): multiple definition of `wfl_wl_shell_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x28): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x2c): multiple definition of `wfl_wl_registry_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x2c): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_platform.c.o:(.bss+0x30): multiple definition of `wfl_wl_compositor_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x30): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x8): multiple definition of `wfl_wl_proxy_marshal'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x8): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x10): multiple definition of `wfl_wl_proxy_destroy'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x10): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x20): multiple definition of `wfl_wl_surface_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x20): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x4): multiple definition of `wfl_wl_proxy_marshal_constructor'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x24): multiple definition of `wfl_wl_shell_surface_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x24): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0xc): multiple definition of `wfl_wl_proxy_add_listener'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0xc): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x0): multiple definition of `wfl_wl_proxy_marshal_constructor_versioned'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x14): multiple definition of `wfl_wl_display_roundtrip'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x14): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x18): multiple definition of `wfl_wl_display_disconnect'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x18): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x1c): multiple definition of `wfl_wl_display_connect'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x1c): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x28): multiple definition of `wfl_wl_shell_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x28): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x2c): multiple definition of `wfl_wl_registry_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x2c): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_window.c.o:(.bss+0x30): multiple definition of `wfl_wl_compositor_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x30): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x30): multiple definition of `wfl_wl_compositor_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x30): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x2c): multiple definition of `wfl_wl_registry_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x2c): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x28): multiple definition of `wfl_wl_shell_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x28): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x24): multiple definition of `wfl_wl_shell_surface_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x24): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x20): multiple definition of `wfl_wl_surface_interface'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x20): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x1c): multiple definition of `wfl_wl_display_connect'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x1c): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x18): multiple definition of `wfl_wl_display_disconnect'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x18): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x14): multiple definition of `wfl_wl_display_roundtrip'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x14): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x10): multiple definition of `wfl_wl_proxy_destroy'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x10): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0xc): multiple definition of `wfl_wl_proxy_add_listener'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0xc): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x8): multiple definition of `wfl_wl_proxy_marshal'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x8): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x4): multiple definition of `wfl_wl_proxy_marshal_constructor'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_wrapper.c.o:(.bss+0x0): multiple definition of `wfl_wl_proxy_marshal_constructor_versioned'; src/waffle/0a74eb2@@waffle-1@sha/wayland_wayland_display.c.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
I had a look and didn't understand what was going on in the code.