meson: add graphene subproject
[platform/upstream/gstreamer.git] / ext / gl / meson.build
1 opengl_sources = [
2   'gstopengl.c',
3   'gstglalpha.c',
4   'gstgluploadelement.c',
5   'gstgldownloadelement.c',
6   'gstglcolorconvertelement.c',
7   'gstglfilterbin.c',
8   'gstglsinkbin.c',
9   'gstglsrcbin.c',
10   'gstglimagesink.c',
11   'gstglfiltercube.c',
12   'gstgleffects.c',
13   'effects/gstgleffectscurves.c',
14   'effects/gstgleffectssources.c',
15   'effects/gstgleffectidentity.c',
16   'effects/gstgleffectmirror.c',
17   'effects/gstgleffectsqueeze.c',
18   'effects/gstgleffectstretch.c',
19   'effects/gstgleffectfisheye.c',
20   'effects/gstgleffecttwirl.c',
21   'effects/gstgleffectbulge.c',
22   'effects/gstgleffecttunnel.c',
23   'effects/gstgleffectsquare.c',
24   'effects/gstgleffectlumatocurve.c',
25   'effects/gstgleffectrgbtocurve.c',
26   'effects/gstgleffectsin.c',
27   'effects/gstgleffectxray.c',
28   'effects/gstgleffectglow.c',
29   'effects/gstgleffectblur.c',
30   'effects/gstgleffectsobel.c',
31   'effects/gstgleffectlaplacian.c',
32   'gstglbasemixer.c',
33   'gstglcolorscale.c',
34   'gstglcolorbalance.c',
35   'gstgldeinterlace.c',
36   'gstglfiltershader.c',
37   'gstglfilterapp.c',
38   'gstglmixerbin.c',
39   'gstglmixer.c',
40   'gstglvideomixer.c',
41   'gstglstereomix.c',
42   'gstglstereosplit.c',
43   'gstglviewconvert.c',
44   'gltestsrc.c',
45   'gstgltestsrc.c',
46   'gstgloverlaycompositorelement.c',
47   'gstglutils.c'
48 ]
49
50 if get_option('gl').disabled() or not gstgl_dep.found()
51   subdir_done()
52 endif
53
54 optional_deps = []
55 gl_objc_args = []
56
57 if gl_dep.found() # have desktop GL
58   opengl_sources += [
59     'gstglfilterglass.c',
60     'gstglmosaic.c',
61   ]
62 endif
63
64 graphene_dep = dependency('graphene-gobject-1.0',
65   version : '>=1.4.0',
66   required : get_option('gl-graphene'),
67   fallback: ['graphene', 'graphene_gobject_dep'],
68   default_options: ['introspection=false', 'installed_tests=false', 'tests=false'])
69
70 if graphene_dep.found()
71   optional_deps += graphene_dep
72   core_conf.set('HAVE_GRAPHENE', true)
73   opengl_sources += [
74     'gstgltransformation.c',
75     'gstglvideoflip.c',
76   ]
77 endif
78
79 png_dep = dependency('libpng', version : '>=1.0', required : get_option('gl-png'))
80 jpeg_dep = dependency('libjpeg', required : get_option('gl-jpeg'))
81
82 if png_dep.found()
83   optional_deps += png_dep
84   core_conf.set('HAVE_PNG', true)
85   opengl_sources += [
86     'gstgldifferencematte.c',
87   ]
88   if jpeg_dep.found()
89     optional_deps += jpeg_dep
90     core_conf.set('HAVE_JPEG', true)
91     opengl_sources += [
92       'gstgloverlay.c',
93     ]
94   endif
95 endif
96
97 if glconf.get('GST_GL_HAVE_WINDOW_COCOA', 0) == 1
98   foundation_dep = dependency('appleframeworks', modules : ['Foundation'], required : false)
99   quartzcore_dep = dependency('appleframeworks', modules : ['QuartzCore'], required : false)
100   if foundation_dep.found() and quartzcore_dep.found() # have cocoa
101     opengl_sources += [
102       'caopengllayersink.m',
103     ]
104     optional_deps += quartzcore_dep
105   endif
106 endif
107
108 if x11_dep.found()
109   # for XInitThreads()
110   optional_deps += x11_dep
111 endif
112
113 if bcm_host_dep.found()
114   optional_deps += bcm_host_dep
115 endif
116
117 if egl_dep.found() and cc.has_header('libdrm/drm_fourcc.h')
118   optional_deps += allocators_dep
119 endif
120
121 if ['darwin', 'ios'].contains(host_system)
122   if not have_objc
123     error('No ObjC compiler found')
124   endif
125
126   objc = meson.get_compiler('objc')
127   if not objc.has_argument('-fobjc-arc')
128     error('ARC is required for building')
129   endif
130
131   gl_objc_args += ['-fobjc-arc']
132 endif
133
134 gstopengl = library('gstopengl',
135   opengl_sources,
136   c_args : gst_plugins_base_args,
137   objc_args : gst_plugins_base_args + gl_objc_args,
138   link_args : noseh_link_args,
139   include_directories : [configinc],
140   dependencies : [gstgl_dep, video_dep,
141                   gst_base_dep, gst_controller_dep, libm] + optional_deps,
142   install : true,
143   install_dir : plugins_install_dir)
144
145 pkgconfig.generate(gstopengl, install_dir : plugins_pkgconfig_install_dir)
146 plugins += [gstopengl]