~eliasnaur/gio

38ed6d1569354ad5b6b027bb357798dcde90f7ec — Elias Naur 6 months ago 5d7fbd7
app/internal: use pkg-config for finding system headers and libraries

I've resisted relying on pkg-config in the hope that hard-coded include and
library paths would suffice. However, apart from having to work around some
distro-specific differences, building with hardcoded include paths fails when
building on a buildroot:

	x86_64-buildroot-linux-gnu-gcc: ERROR: unsafe header/library path used in cross-compilation: '-I/usr/include/wayland'

(see #91)

Andri mentions a workaround (prefixing paths with "="), but that doesn't seem
to work on the BSDs.

Let's see how pkg-config fares. It's an extra dependency, but it promises to keep
us isolated from the varying paths on Linux distrobutions.

Updates #91

Signed-off-by: Elias Naur <mail@eliasnaur.com>
M app/internal/egl/egl_unix.go => app/internal/egl/egl_unix.go +2 -3
@@ 5,7 5,8 @@
package egl

/*
#cgo LDFLAGS: -lEGL
#cgo linux pkg-config: egl
#cgo freebsd openbsd LDFLAGS: -lEGL
#cgo freebsd CFLAGS: -I/usr/local/include
#cgo freebsd LDFLAGS: -L/usr/local/lib
#cgo openbsd CFLAGS: -I/usr/X11R6/include


@@ 14,8 15,6 @@ package egl

#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES2/gl2.h>
#include <GLES3/gl3.h>
*/
import "C"


M app/internal/glimpl/gl.go => app/internal/glimpl/gl.go +2 -1
@@ 14,8 14,9 @@ import (

/*
#cgo CFLAGS: -Werror
#cgo linux freebsd openbsd LDFLAGS: -lGLESv2
#cgo linux pkg-config: glesv2
#cgo linux freebsd LDFLAGS: -ldl
#cgo freebsd openbsd LDFLAGS: -lGLESv2
#cgo freebsd CFLAGS: -I/usr/local/include
#cgo freebsd LDFLAGS: -L/usr/local/lib
#cgo openbsd CFLAGS: -I/usr/X11R6/include

M app/internal/window/egl_wayland.go => app/internal/window/egl_wayland.go +3 -2
@@ 12,8 12,9 @@ import (
)

/*
#cgo LDFLAGS: -lwayland-egl
#cgo CFLAGS: -I/usr/include/wayland -DMESA_EGL_NO_X11_HEADERS
#cgo linux pkg-config: egl wayland-egl
#cgo freebsd openbsd LDFLAGS: -lwayland-egl
#cgo CFLAGS: -DMESA_EGL_NO_X11_HEADERS

#include <EGL/egl.h>
#include <wayland-client.h>

M app/internal/window/os_wayland.go => app/internal/window/os_wayland.go +2 -1
@@ 40,7 40,8 @@ import (
//go:generate sed -i "1s;^;// +build linux,!android,!nowayland freebsd\\n\\n;" wayland_text_input.c

/*
#cgo LDFLAGS: -lwayland-client -lwayland-cursor
#cgo linux pkg-config: wayland-client wayland-cursor
#cgo freebsd openbsd LDFLAGS: -lwayland-client -lwayland-cursor
#cgo freebsd CFLAGS: -I/usr/local/include
#cgo freebsd LDFLAGS: -L/usr/local/lib


M app/internal/window/os_x11.go => app/internal/window/os_x11.go +3 -1
@@ 7,7 7,9 @@ package window
/*
#cgo openbsd CFLAGS: -I/usr/X11R6/include -I/usr/local/include
#cgo openbsd LDFLAGS: -L/usr/X11R6/lib -L/usr/local/lib
#cgo LDFLAGS: -lX11 -lxkbcommon -lxkbcommon-x11 -lX11-xcb
#cgo freebsd openbsd LDFLAGS: -lX11 -lxkbcommon -lxkbcommon-x11 -lX11-xcb
#cgo linux pkg-config: x11 xkbcommon xkbcommon-x11 x11-xcb

#include <stdlib.h>
#include <locale.h>
#include <X11/Xlib.h>

M app/internal/xkb/xkb_unix.go => app/internal/xkb/xkb_unix.go +2 -2
@@ 19,9 19,9 @@ import (
)

/*
#cgo LDFLAGS: -lxkbcommon
#cgo linux pkg-config: xkbcommon
#cgo freebsd openbsd CFLAGS: -I/usr/local/include
#cgo freebsd openbsd LDFLAGS: -L/usr/local/lib
#cgo freebsd openbsd LDFLAGS: -L/usr/local/lib -lxkbcommon

#include <stdlib.h>
#include <xkbcommon/xkbcommon.h>