2 """Script for generating the Makefiles."""
11 PROJECTNAME = "GStreamer 'all'"
13 ROOTDIR = os.path.abspath(os.path.dirname(__file__))
14 MAKEFILE_TMPL = """all:
15 %(tab)scd %(build_dir)s && %(ninja)s -k 100; %(ninja)s
18 %(tab)scd %(build_dir)s && DESTDIR="${DESTDIR}" %(ninja)s install
21 %(tab)scd %(build_dir)s && %(ninja)s test
24 %(tab)scd %(build_dir)s && %(ninja)s uninstalled
27 %(tab)srm -Rf %(build_dir)s
32 def accept_command(commands):
33 """Checks if @command --version works."""
34 for command in commands:
36 subprocess.check_output([command, "--version"])
38 except FileNotFoundError:
44 def get_configs(meson):
45 meson_version = subprocess.check_output([meson, '--version']).decode().strip()
46 if meson_version <= '0.33.0':
47 print("Disabling the introspection as support for the introspection with subproject was introduced in 0.34")
48 return ['-Dgstreamer:disable_introspection=true',
49 '-Dgst-editing-services:disable_introspection=true',
50 '-Dgst-devtools:disable_introspection=true']
55 def configure_meson(args):
56 """Configures meson and generate the Makefile."""
57 meson = accept_command(["meson", "meson.py"])
59 print("Install mesonbuild to build %s: http://mesonbuild.com/\n"
60 "You can simply install it with:\n"
61 " $ sudo pip3 install meson" % PROJECTNAME)
64 ninja = accept_command(["ninja", "ninja-build"])
66 print("Install ninja-build to build %s: https://ninja-build.org/"
70 build_dir = os.path.join(ROOTDIR, "build")
71 shutil.rmtree(build_dir, True)
76 subprocess.check_call([meson, "../"] + args + get_configs(meson))
77 except subprocess.CalledProcessError as e:
78 print("EXIT meson return %s" % e.returncode)
81 with open(os.path.join(ROOTDIR, "Makefile"), "w") as makefile:
82 makefile.write(MAKEFILE_TMPL %
83 {"build_dir": build_dir,
87 if __name__ == "__main__":
88 parser = argparse.ArgumentParser(description='Process some integers.')
89 parser.add_argument("--no-reconfigure", action='store_true',
90 default=False, help='Avoid removing the build dir'
92 options, args = parser.parse_known_args()
93 if options.no_reconfigure:
95 ROOTDIR + "/build/build.ninja") and os.path.exists(
96 ROOTDIR + "/Makefile"):
97 print("Not reconfiguring")
100 configure_meson(args)