cairo bajo zig-cc/musl: parches para construir la librería + su cairo-script-interpreter.pc en la granja. (1) meson.build — el loop `foreach name : check_funcs` corre `cc.has_function('ctime_r')` SIN prefix de header ⇒ prototipo desnudo que bajo zig-cc y gcc sobre musl choca con el builtin y el probe FALLA. Entonces cairo-ps-surface.c:105 (`#ifndef HAVE_CTIME_R`) define un fallback static que colisiona con (presente por _GNU_SOURCE) ⇒ error duro. musl SIEMPRE provee ctime_r; forzamos el define. (2) util/meson.build — cairo-trace: sus ejecutables no linkean libpixman-1.a bajo la estrategia `no_fallback` de zig-cc; nada aguas abajo pide cairo-trace ⇒ se salta entero. (3) util/cairo-script/meson.build — el subdir cairo-script SÍ se construye (la librería libcairoscript y su `cairo-script-interpreter.pc` las piden los demos GTK), pero los EJECUTABLES csi-* fallan el mismo link de pixman ⇒ se envuelven en `if false`. Así queda la .pc sin los exe. diff -Naur a/meson.build b/meson.build --- a/meson.build +++ b/meson.build @@ -708,4 +708,9 @@ endif endforeach +# hammer: has_function('ctime_r') sin prefix falla bajo zig/gcc+musl (prototipo desnudo choca +# con el builtin); musl SIEMPRE provee ctime_r => forzar y evitar el fallback static de +# cairo-ps-surface.c:105 que colisiona con la declaracion no-static de . +conf.set('HAVE_CTIME_R', 1) + conf.set('HAVE_STRNDUP', cc.has_function('strndup', prefix : '#include ')) diff -Naur a/util/meson.build b/util/meson.build --- a/util/meson.build +++ b/util/meson.build @@ -13,4 +13,4 @@ endif -if conf.get('CAIRO_HAS_TRACE', 0) == 1 +if false # hammer: saltar cairo-trace (sus exe no linkean pixman bajo zig; nada pide su .pc) subdir('cairo-trace') diff -Naur a/util/cairo-script/meson.build b/util/cairo-script/meson.build --- a/util/cairo-script/meson.build +++ b/util/cairo-script/meson.build @@ -48,3 +48,6 @@ meson.override_dependency('cairo-script-interpreter', libcairoscript_dep) +# hammer: los ejecutables csi-* no linkean libpixman-1.a bajo zig no_fallback; la libreria +# libcairoscript y su cairo-script-interpreter.pc SI (los demos GTK las piden). Saltar solo los exe. +if false csi_replay_exe = executable('csi-replay', csi_replay_sources, @@ -64,4 +64,5 @@ ) endif +endif install_headers(cairoscript_interpreter_headers, subdir: 'cairo')