zig icon indicating copy to clipboard operation
zig copied to clipboard

Code using GLX fails, but only on FreeBSD

Open stefncb opened this issue 2 years ago • 1 comments

Zig Version

0.11.0

Steps to Reproduce and Observed Behavior

Here's the Zig code for a minimal program that requests all valid framebuffers from GLX:

const c = @cImport({
    @cInclude("X11/Xlib.h");
    @cInclude("GL/glx.h");
});

pub fn main() !void {
    const display = c.XOpenDisplay(null) orelse @panic("display");

    const visual_attribs = [_]c_int{
        c.None,
    };

    var fbc_count: c_int = undefined;
    _ = c.glXChooseFBConfig(
        display,
        c.DefaultScreen(display),
        &visual_attribs,
        &fbc_count,
    ) orelse @panic("fbc");
}

To build this, here's what I had to add to the default build.zig (the include and lib paths are because of FreeBSD):

exe.addLibraryPath("/usr/local/lib");
exe.addIncludePath("/usr/local/include");
exe.linkSystemLibrary("X11");
exe.linkSystemLibrary("xcb");
exe.linkSystemLibrary("Xau");
exe.linkSystemLibrary("Xdmcp");
exe.linkSystemLibrary("GL");

If I build this on a FreeBSD machine (both with a just-compiled compiler from master and with the 0.10.0 one), it panics at the penultimate line. On Linux it runs fine.

Here's the same program in C:

#include <X11/Xlib.h>
#include <GL/glx.h>
#include <assert.h>

int main(void) {
	Display* display = XOpenDisplay(0);
	assert(display != 0);

	int visual_attribs[] = {
            None,
	};

	int fbc_count;
	GLXFBConfig* fbc = glXChooseFBConfig(
		display,
		DefaultScreen(display),
		visual_attribs,
		&fbc_count
	);
	assert(fbc != 0);

	return 0;
}

Compile with cc -Wall -Wextra -Werror -L/usr/local/lib -I/usr/local/include -o 'test' 'main.c' -lX11 -lGL. This runs fine on both FreeBSD and Linux.

I've been debugging this for days now. It might be some deep library-was-linked-incorrectly thing that I'm not knowledgeable enough to find, I really can't tell.

Expected Behavior

Both programs should exit normally on both platforms.

stefncb avatar Mar 10 '23 13:03 stefncb

I have not been able to recreate this issue: Zig version:

zig version
0.12.0

FreeBSD Release:

uname -r
14.0-RELEASE

lateefj avatar Dec 19 '23 01:12 lateefj