import os import glob from lib import cpp from lib.make import * version("1.18.4") description("a 2D graphics library with support for multiple output devices") maintainer("sisungo ") source_url("https://gitlab.com/freedesktop-sdk/mirrors/freedesktop/cairo/cairo/-/archive/1.18.4/cairo-1.18.4.tar.gz") builddep("shortcut/c") builddep("shortcut/meson") builddep("pkgconf") builddep("glib-dev @target") builddep("libfontconfig-dev @target") builddep("libfreetype-dev @target") builddep("libpng-dev @target") builddep("libpixman-dev @target") def fix_gobject_pc(path): with open(path, 'r') as file: content = file.read() content = content.replace(get_prefix('libcairo'), get_prefix('libcairo-gobject')) content = content.replace(get_prefix('libcairo-dev'), get_prefix('libcairo-gobject-dev')) with open(path, 'wt+') as file: file.write(content) def build(): cpp.meson_setup([ "--prefix=/", f"--libdir={get_prefix('libcairo')}/lib", f"--includedir={get_prefix('libcairo-dev')}/include", f"--bindir={get_prefix('libcairo-dev')}/bin", "-Dfontconfig=enabled", "-Dfreetype=enabled", "-Dpng=enabled", "-Dtee=enabled", "-Dglib=enabled", ]) cpp.meson_compile() cpp.meson_install() fix_gobject_pc("lib/pkgconfig/cairo-gobject.pc") on_build(build) def pack_glob(composer, globs, excluded_kw=[]): for iglob in globs: for i in glob.glob(iglob): if any(excluded_pattern in i for excluded_pattern in excluded_kw): continue composer.makedirs(os.path.dirname(i)) if os.path.islink(i) or os.path.isfile(i): composer.addfile(i) else: composer.add_dir(i) package("libcairo") dep("libfontconfig @same-arch") dep("libpng @same-arch") dep("libpixman @same-arch") dep("libfreetype @same-arch") dep("libz @same-arch") on_pack(lambda c: pack_glob(c, ["lib/cairo", "lib/*so*"], ["gobject"])) package("libcairo-dev") dep("libcairo (same)") dep("libfontconfig-dev @same-arch") dep("libpng-dev @same-arch") dep("libpixman-dev @same-arch") dep("libfreetype-dev @same-arch") dep("libz-dev @same-arch") on_pack(lambda c: pack_glob(c, ["lib/pkgconfig/*", "include/cairo/*"], ["gobject"])) package("libcairo-gobject") dep("libcairo (same)") dep("libglib @same-arch") dep("libgobject @same-arch") on_pack(lambda c: pack_glob(c, ["lib/*gobject*"])) package("libcairo-gobject-dev") dep("libcairo-dev (same)") dep("glib-dev @same-arch") on_pack(lambda c: pack_glob(c, ["include/cairo/*gobject*", "lib/pkgconfig/*gobject*"]))