class Gtkx3 < Formula desc "Toolkit for creating graphical user interfaces" homepage "https://gtk.org/" url "https://download.gnome.org/sources/gtk/3.24/gtk-3.24.51.tar.xz" sha256 "0013877c6bd23c2dbe42ad7c70a053d0e449be66736574e37867c49c5f905a4f" license "LGPL-2.0-or-later" livecheck do url :stable regex(/gtk\+?[._-](3\.([0-8]\d*?)?[02468](?:\.\d+)*?)\.t/i) end bottle do sha256 arm64_tahoe: "8a6b1cf042150d78cc3707274cad033f554eaac9b20732a3b700406e382cdabd" sha256 arm64_sequoia: "11b496591b4566d112944143af4dc9b177040da48eb687e4c4880351ad145fb5" sha256 arm64_sonoma: "aa364198c45fefc951d4787d8ca1156b14bfedce16687a9769613ef587410632" sha256 sonoma: "801962fdd5db7aace2774d1f007b480b744d8c6e52cb0a2a3f9e02b4fae867d9" sha256 arm64_linux: "3789850042fdd0cd821f80f634ac9b1c86998eb1e6b34e0231d8ab087e3a51a5" sha256 x86_64_linux: "ae3319b30112bf8f755220fa0aad79edd051f3b710fb66ad6406d93ab2cd9690" end depends_on "docbook" => :build depends_on "docbook-xsl" => :build depends_on "gettext" => :build depends_on "gobject-introspection" => :build depends_on "meson" => :build depends_on "ninja" => :build depends_on "pkgconf" => [:build, :test] depends_on "at-spi2-core" depends_on "cairo" depends_on "fribidi" depends_on "gdk-pixbuf" depends_on "glib" depends_on "gsettings-desktop-schemas" depends_on "harfbuzz" depends_on "hicolor-icon-theme" depends_on "libepoxy" depends_on "pango" uses_from_macos "libxslt" => :build # for xsltproc on_macos do depends_on "gettext" end on_linux do depends_on "cmake" => :build depends_on "fontconfig" depends_on "iso-codes" depends_on "libx11" depends_on "libxdamage" depends_on "libxext" depends_on "libxfixes" depends_on "libxi" depends_on "libxinerama" depends_on "libxkbcommon" depends_on "libxrandr" depends_on "wayland" depends_on "wayland-protocols" depends_on "xorgproto" end def install args = %w[ -Dgtk_doc=false -Dman=true -Dintrospection=true ] if OS.mac? args << "-Dquartz_backend=true" args << "-Dx11_backend=false" end # ensure that we don't run the meson post install script ENV["DESTDIR"] = "/" # Find our docbook catalog ENV["XML_CATALOG_FILES"] = "#{etc}/xml/catalog" system "meson", "setup", "build", *args, *std_meson_args system "meson", "compile", "-C", "build", "--verbose" system "meson", "install", "-C", "build" bin.install_symlink bin/"gtk-update-icon-cache" => "gtk3-update-icon-cache" man1.install_symlink man1/"gtk-update-icon-cache.1" => "gtk3-update-icon-cache.1" end def post_install system "#{Formula["glib"].opt_bin}/glib-compile-schemas", "#{HOMEBREW_PREFIX}/share/glib-2.0/schemas" system bin/"gtk3-update-icon-cache", "-f", "-t", "#{HOMEBREW_PREFIX}/share/icons/hicolor" system bin/"gtk-query-immodules-3.0 > #{HOMEBREW_PREFIX}/lib/gtk-3.0/3.0.0/immodules.cache" end test do (testpath/"test.c").write <<~C #include int main(int argc, char *argv[]) { gtk_disable_setlocale(); return 0; } C flags = shell_output("pkgconf --cflags --libs gtk+-3.0").chomp.split system ENV.cc, "test.c", "-o", "test", *flags system "./test" # include a version check for the pkg-config files assert_match version.to_s, shell_output("cat #{lib}/pkgconfig/gtk+-3.0.pc").strip end end