Revert "build: rpi: rely on pkgconfig for compiler flags"

This reverts commit ea40fa36ee.

This caused strange runtime failure on Raspbian (when running mpv,
vc_dispmanx_display_open() returned 0, while other dispmanx using
programs were fine). The problem must have been something about the
compiler flags, maybe linking order or set of include paths.
This commit is contained in:
wm4 2017-08-15 18:41:16 +02:00
parent 16d22ea02a
commit 72a8120daa
2 changed files with 22 additions and 23 deletions

View File

@ -4,7 +4,7 @@ from waflib import Utils
import os
__all__ = ["check_pthreads", "check_iconv", "check_lua",
"check_cocoa", "check_openal", "check_rpi"]
"check_cocoa", "check_openal"]
pthreads_program = load_fragment('pthreads.c')
@ -103,24 +103,3 @@ def check_openal(ctx, dependency_identifier):
if fn(ctx, dependency_identifier):
return True
return False
def check_rpi(ctx, dependency_identifier):
# We need MMAL/bcm_host/dispmanx APIs.
# Upstream keeps pkgconfig files in '/opt/vc/lib/pkgconfig'.
# See https://github.com/raspberrypi/userland/issues/245
# PKG_CONFIG_SYSROOT_DIR helps with cross compilation.
prev_pkg_path = os.getenv('PKG_CONFIG_PATH', '')
os.environ['PKG_CONFIG_PATH'] = os.pathsep.join(
filter(None, [os.path.join(os.getenv('PKG_CONFIG_SYSROOT_DIR', '/'),
'opt/vc/lib/pkgconfig'),
prev_pkg_path]))
checks = [
check_pkg_config('bcm_host', uselib_store='bcm_host'),
check_pkg_config('egl'),
check_cc(lib=['mmal_core', 'mmal_util', 'mmal_vc_client'], use=['bcm_host']),
]
ret = all((fn(ctx, dependency_identifier) for fn in checks))
os.environ['PKG_CONFIG_PATH'] = prev_pkg_path
return ret

22
wscript
View File

@ -721,9 +721,29 @@ video_output_features = [
'deps': [ 'win32-desktop' ],
'func': check_cc(header_name='d3d9.h'),
}, {
'name': '--android',
'desc': 'Android support',
'func': check_statement('android/api-level.h', '(void)__ANDROID__'), # arbitrary android-specific header
}, {
# We need MMAL/bcm_host/dispmanx APIs. Also, most RPI distros require
# every project to hardcode the paths to the include directories. Also,
# these headers are so broken that they spam tons of warnings by merely
# including them (compensate with -isystem and -fgnu89-inline).
'name': '--rpi',
'desc': 'Raspberry Pi support',
'func': check_rpi,
'func': compose_checks(
check_cc(cflags="-isystem/opt/vc/include/ "+
"-isystem/opt/vc/include/interface/vcos/pthreads " +
"-isystem/opt/vc/include/interface/vmcs_host/linux " +
"-fgnu89-inline",
linkflags="-L/opt/vc/lib",
header_name="bcm_host.h",
lib=['mmal_core', 'mmal_util', 'mmal_vc_client', 'bcm_host']),
# We still need all OpenGL symbols, because the vo_opengl code is
# generic and supports anything from GLES2/OpenGL 2.1 to OpenGL 4 core.
check_cc(lib="EGL"),
check_cc(lib="GLESv2"),
),
} , {
'name': '--ios-gl',
'desc': 'iOS OpenGL ES hardware decoding interop support',