mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
gl/meson: OSX support (CGL and Cocoa)
[Matthew Waters]: minor additions such as -fobjc-arc and relying on dependency rather than cc.find_library()
This commit is contained in:
parent
574607702b
commit
06b8792a5f
3 changed files with 92 additions and 34 deletions
|
@ -89,10 +89,14 @@ if build_gstgl and gstgl_dep.found()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if false # have cocoa
|
if glconf.has('GST_GL_HAVE_WINDOW_COCOA')
|
||||||
|
quartzcore_dep = dependency('QuartzCore', required : false)
|
||||||
|
if quartzcore_dep.found() # have cocoa
|
||||||
opengl_sources += [
|
opengl_sources += [
|
||||||
'caopengllayersink.m',
|
'caopengllayersink.m',
|
||||||
]
|
]
|
||||||
|
optional_deps += quartzcore_dep
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if x11_dep.found()
|
if x11_dep.found()
|
||||||
|
|
|
@ -147,6 +147,7 @@ gl_misc_deps = []
|
||||||
# Other preprocessor arguments
|
# Other preprocessor arguments
|
||||||
gl_cpp_args = []
|
gl_cpp_args = []
|
||||||
gl_includes = []
|
gl_includes = []
|
||||||
|
gl_objc_args = []
|
||||||
|
|
||||||
enabled_gl_apis = []
|
enabled_gl_apis = []
|
||||||
enabled_gl_platforms = []
|
enabled_gl_platforms = []
|
||||||
|
@ -202,8 +203,8 @@ else
|
||||||
need_platform_egl = 'yes'
|
need_platform_egl = 'yes'
|
||||||
elif platform == 'glx'
|
elif platform == 'glx'
|
||||||
need_platform_glx = 'yes'
|
need_platform_glx = 'yes'
|
||||||
# elif platform == 'cgl'
|
elif platform == 'cgl'
|
||||||
# need_platform_cgl = 'yes'
|
need_platform_cgl = 'yes'
|
||||||
elif platform == 'wgl'
|
elif platform == 'wgl'
|
||||||
need_platform_wgl = 'yes'
|
need_platform_wgl = 'yes'
|
||||||
# elif platform == 'eagl'
|
# elif platform == 'eagl'
|
||||||
|
@ -240,8 +241,8 @@ else
|
||||||
need_win_wayland = 'yes'
|
need_win_wayland = 'yes'
|
||||||
elif winsys == 'win32'
|
elif winsys == 'win32'
|
||||||
need_win_win32 = 'yes'
|
need_win_win32 = 'yes'
|
||||||
# elif winsys == 'cocoa'
|
elif winsys == 'cocoa'
|
||||||
# need_win_cocoa = 'yes'
|
need_win_cocoa = 'yes'
|
||||||
# elif winsys == 'eagl'
|
# elif winsys == 'eagl'
|
||||||
# need_win_eagl = 'yes'
|
# need_win_eagl = 'yes'
|
||||||
elif winsys == 'dispmanx'
|
elif winsys == 'dispmanx'
|
||||||
|
@ -284,14 +285,16 @@ endif
|
||||||
gl_dep = unneeded_dep
|
gl_dep = unneeded_dep
|
||||||
glx_dep = unneeded_dep
|
glx_dep = unneeded_dep
|
||||||
if need_api_opengl != 'no' or need_platform_glx != 'no'
|
if need_api_opengl != 'no' or need_platform_glx != 'no'
|
||||||
|
if host_machine.system() == 'darwin'
|
||||||
|
gl_dep = dependency('OpenGL', required : false)
|
||||||
|
else
|
||||||
# override meson's braindead gl detection on osx/windows/etc by forcing pkg-config
|
# override meson's braindead gl detection on osx/windows/etc by forcing pkg-config
|
||||||
gl_dep = dependency('gl', method: 'pkg-config', required : false)
|
gl_dep = dependency('gl', method: 'pkg-config', required : false)
|
||||||
|
endif
|
||||||
|
|
||||||
if not gl_dep.found()
|
if not gl_dep.found()
|
||||||
if host_machine.system() == 'windows'
|
if host_machine.system() == 'windows'
|
||||||
gl_dep = cc.find_library('opengl32', required : false)
|
gl_dep = cc.find_library('opengl32', required : false)
|
||||||
# elif host_machine.system() == 'darwin'
|
|
||||||
# gl_dep = cc.find_library('OpenGL', required : false)
|
|
||||||
else
|
else
|
||||||
gl_dep = cc.find_library('GL', required : false)
|
gl_dep = cc.find_library('GL', required : false)
|
||||||
endif
|
endif
|
||||||
|
@ -317,24 +320,27 @@ if need_api_opengl != 'no' or need_platform_glx != 'no'
|
||||||
glx_dep = unneeded_dep
|
glx_dep = unneeded_dep
|
||||||
endif
|
endif
|
||||||
|
|
||||||
opengl_includes = '''
|
opengl_includes = ''
|
||||||
#ifdef __APPLE__
|
if host_machine.system() == 'darwin'
|
||||||
# include <OpenGL/OpenGL.h>
|
opengl_includes += '''
|
||||||
# include <OpenGL/gl.h>
|
#include <OpenGL/OpenGL.h>
|
||||||
# if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
|
#include <OpenGL/gl.h>
|
||||||
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
|
||||||
# define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
|
# define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
|
||||||
# include <OpenGL/gl3.h>
|
# include <OpenGL/gl3.h>
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# if _MSC_VER
|
|
||||||
# include <windows.h>
|
|
||||||
# endif
|
|
||||||
# include <GL/gl.h>
|
|
||||||
# if __WIN32__ || _WIN32
|
|
||||||
# include <GL/glext.h>
|
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
'''
|
'''
|
||||||
|
else
|
||||||
|
opengl_includes += '''
|
||||||
|
#if _MSC_VER
|
||||||
|
# include <windows.h>
|
||||||
|
#endif
|
||||||
|
#include <GL/gl.h>
|
||||||
|
#if __WIN32__ || _WIN32
|
||||||
|
# include <GL/glext.h>
|
||||||
|
#endif
|
||||||
|
'''
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# GLES2 checks
|
# GLES2 checks
|
||||||
|
@ -619,11 +625,57 @@ if need_platform_wgl != 'no' and need_win_win32 != 'no'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if host_machine.system() == 'darwin'
|
if host_machine.system() == 'darwin'
|
||||||
# FIXME: how to know if we're on iOS or OS X?
|
if not have_objc
|
||||||
# gl_cocoa_headers += [
|
error('No ObjC compiler found')
|
||||||
# 'gstglcontext_cocoa.h',
|
endif
|
||||||
# 'gstglcaopengllayer.h',
|
|
||||||
# ]
|
objc = meson.get_compiler('objc')
|
||||||
|
if not objc.has_argument('-fobjc-arc')
|
||||||
|
error('ARC is required for building')
|
||||||
|
endif
|
||||||
|
|
||||||
|
gl_objc_args += ['-fobjc-arc']
|
||||||
|
|
||||||
|
quartzcore_dep = dependency('QuartzCore', required : false)
|
||||||
|
corefoundation_dep = dependency('CoreFoundation', required : false)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# OSX check
|
||||||
|
if need_platform_cgl == 'yes'
|
||||||
|
if need_win_cocoa == 'no'
|
||||||
|
error('Impossible situation requested: Cannot use CGL without Cocoa support')
|
||||||
|
elif need_api_opengl == 'no'
|
||||||
|
error('Impossible situation requested: Cannot use CGL without the OpenGL library')
|
||||||
|
endif
|
||||||
|
elif need_platform_cgl == 'no' and need_win_cocoa == 'yes'
|
||||||
|
error('Impossible situation requested: Cannot use Cocoa without CGL support')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if need_platform_cgl != 'no'
|
||||||
|
if quartzcore_dep.found() and corefoundation_dep.found()
|
||||||
|
gl_platform_deps += [quartzcore_dep, corefoundation_dep]
|
||||||
|
enabled_gl_platforms += 'cgl'
|
||||||
|
glconf.set10('GST_GL_HAVE_PLATFORM_CGL', 1)
|
||||||
|
|
||||||
|
if need_win_cocoa != 'no'
|
||||||
|
cocoa_dep = dependency('Cocoa', required : false)
|
||||||
|
if cocoa_dep.found()
|
||||||
|
gl_sources += [
|
||||||
|
'cocoa/gstglcaopengllayer.m',
|
||||||
|
'cocoa/gstglcontext_cocoa.m',
|
||||||
|
'cocoa/gstgldisplay_cocoa.m',
|
||||||
|
'cocoa/gstglwindow_cocoa.m'
|
||||||
|
]
|
||||||
|
gl_winsys_deps += cocoa_dep
|
||||||
|
enabled_gl_winsys += 'cocoa'
|
||||||
|
glconf.set10('GST_GL_HAVE_WINDOW_COCOA', 1)
|
||||||
|
elif need_win_cocoa == 'yes'
|
||||||
|
error('Could not find Cocoa')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
elif need_platform_cgl == 'yes'
|
||||||
|
error('Could not find CGL dependencies')
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# GDM Checks
|
# GDM Checks
|
||||||
|
@ -675,7 +727,7 @@ if need_platform_egl != 'no' and need_win_viv_fb != 'no'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# TODO: Add rest of gl config here.
|
# TODO: Add rest of gl config here.
|
||||||
# iOS, OS X specific support
|
# iOS, specific support
|
||||||
|
|
||||||
build_gstgl = true
|
build_gstgl = true
|
||||||
if enabled_gl_apis.length() == 0
|
if enabled_gl_apis.length() == 0
|
||||||
|
@ -740,6 +792,7 @@ if build_gstgl
|
||||||
gstgl = library('gstgl-' + api_version,
|
gstgl = library('gstgl-' + api_version,
|
||||||
gl_sources,
|
gl_sources,
|
||||||
c_args : gst_plugins_base_args + gl_cpp_args,
|
c_args : gst_plugins_base_args + gl_cpp_args,
|
||||||
|
objc_args : gst_plugins_base_args + gl_cpp_args + gl_objc_args,
|
||||||
include_directories : [configinc, libsinc, gl_includes],
|
include_directories : [configinc, libsinc, gl_includes],
|
||||||
version : libversion,
|
version : libversion,
|
||||||
soversion : soversion,
|
soversion : soversion,
|
||||||
|
|
|
@ -16,6 +16,7 @@ else
|
||||||
endif
|
endif
|
||||||
|
|
||||||
have_cxx = add_languages('cpp', required : false)
|
have_cxx = add_languages('cpp', required : false)
|
||||||
|
have_objc = add_languages('objc', required : false)
|
||||||
|
|
||||||
glib_req = '>= 2.40.0'
|
glib_req = '>= 2.40.0'
|
||||||
orc_req = '>= 0.4.24'
|
orc_req = '>= 0.4.24'
|
||||||
|
|
Loading…
Reference in a new issue