+apiversion = '1.0'
+gst_version = '>= @0@'.format(meson.project_version())
+
+build_system = build_machine.system()
+cc = meson.get_compiler('c')
+
+fs = import('fs')
+gnome = import('gnome')
+pkgconfig = import('pkgconfig')
+python3 = import('python').find_installation()
+# Ensure that we're not being run from inside the development environment
+# because that will confuse meson, and it might find the already-built
+# gstreamer. It's fine if people run `ninja` as long as it doesn't run
+# reconfigure because ninja doesn't care about the env.
+ensure_not_devenv = '''
+import os
+assert('GST_ENV' not in os.environ)
+'''
+cmdres = run_command(python3, '-c', ensure_not_devenv, check: false)
+if cmdres.returncode() != 0
+ error('Do not run `ninja reconfigure` or `meson` for gst-build inside the development environment, you will run into problems')
+endif
+
+# Install gst-indent pre-commit hook
+run_command(python3, '-c', 'import shutil; shutil.copy("scripts/git-hooks/multi-pre-commit.hook", ".git/hooks/pre-commit")', check: false)
+
+# Ensure that the user does not have Strawberry Perl in PATH, since it ships
+# with a pkg-config.bat and broken pkgconfig files for libffi and zlib. Will
+# cause a build error, such as in
+# https://gitlab.freedesktop.org/gstreamer/gst-build/-/issues/41
+ensure_no_strawberry_perl = '''
+import os
+assert(r'Strawberry\perl\bin' not in os.environ['PATH'])
+'''
+if build_system == 'windows' and meson.version().version_compare('<0.60.0')
+ cmdres = run_command(python3, '-c', ensure_no_strawberry_perl, check: false)
+ if cmdres.returncode() != 0
+ error('You have Strawberry Perl in PATH which is known to cause build issues with Meson < 0.60.0. Please remove it from PATH, uninstall it, or upgrade Meson.')
+ endif
+endif
+
+documented_projects = ''
+# Make it possible to use msys2 built zlib which fails
+# when not using the mingw toolchain as it uses unistd.h
+if not meson.is_subproject() and cc.get_id() == 'msvc'
+ uname = find_program('uname', required: false)
+ if uname.found()
+ ret = run_command(uname, '-o', check: false)
+ if ret.returncode() == 0 and ret.stdout().to_lower() == 'msys'
+ ret = run_command(uname, '-r', check: false)
+ # The kernel version returned by uname is actually the msys version
+ if ret.returncode() == 0 and ret.stdout().startswith('2')
+ # If a system zlib is found, disable UNIX features in zlib.h and zconf.h
+ if cc.find_library('z').found()
+ add_global_arguments('-DZ_SOLO', language: 'c')
+ endif
+ endif
+ endif
+ endif
+endif
+
+# Ensure that MSVC interprets all source code as UTF-8. Only do this when we're
+# not a subproject, because subprojects are not allowed to call
+# add_global_arguments().
+if not meson.is_subproject() and cc.get_id() == 'msvc'
+ add_global_arguments(
+ cc.get_supported_arguments(['/utf-8']), # set the input encoding to utf-8
+ language: ['c', 'cpp'])
+endif
+
+building_full = get_option('default_library') == 'static'
+tools_option = 'tools=auto'
+if building_full and not get_option('tools').disabled()
+ # Do not build subprojects tools when we build them against gst-full
+ tools_option = 'tools=disabled'