class GdkPixbuf < Formula desc "Toolkit for image loading and pixel buffer manipulation" homepage "https://gtk.org" url "https://download.gnome.org/sources/gdk-pixbuf/2.40/gdk-pixbuf-2.40.0.tar.xz" sha256 "1582595099537ca8ff3b99c6804350b4c058bb8ad67411bbaae024ee7cead4e6" bottle do sha256 "bb817292ab8e01a155b663ece6a1b887bb3340c7bfabf567b83b55c7e1b84bd6" => :catalina sha256 "9d9602f291e4023873a0f76cbff3e6c0de7456567ade57a178fad4939904043d" => :mojave sha256 "9cfc180931b123287962d66652d847b404bda76ac4c75333b4145cfa145fc87f" => :high_sierra end depends_on "gobject-introspection" => :build depends_on "meson" => :build depends_on "ninja" => :build depends_on "pkg-config" => :build depends_on "python" => :build depends_on "glib" depends_on "jpeg" depends_on "libpng" depends_on "libtiff" # gdk-pixbuf has an internal version number separate from the overall # version number that specifies the location of its module and cache # files, this will need to be updated if that internal version number # is ever changed (as evidenced by the location no longer existing) def gdk_so_ver "2.0" end def gdk_module_ver "2.10.0" end def install inreplace "gdk-pixbuf/meson.build", "-DGDK_PIXBUF_LIBDIR=\"@0@\"'.format(gdk_pixbuf_libdir)", "-DGDK_PIXBUF_LIBDIR=\"@0@\"'.format('#{HOMEBREW_PREFIX}/lib')" args = %W[ --prefix=#{prefix} -Dx11=false -Ddocs=false -Dgir=true -Drelocatable=false -Dnative_windows_loaders=false -Dinstalled_tests=false -Dman=false ] ENV["DESTDIR"] = "/" mkdir "build" do system "meson", *args, ".." system "ninja", "-v" system "ninja", "install" end # Other packages should use the top-level modules directory # rather than dumping their files into the gdk-pixbuf keg. inreplace lib/"pkgconfig/gdk-pixbuf-#{gdk_so_ver}.pc" do |s| libv = s.get_make_var "gdk_pixbuf_binary_version" s.change_make_var! "gdk_pixbuf_binarydir", HOMEBREW_PREFIX/"lib/gdk-pixbuf-#{gdk_so_ver}"/libv end end # The directory that loaders.cache gets linked into, also has the "loaders" # directory that is scanned by gdk-pixbuf-query-loaders in the first place def module_dir "#{HOMEBREW_PREFIX}/lib/gdk-pixbuf-#{gdk_so_ver}/#{gdk_module_ver}" end def post_install ENV["GDK_PIXBUF_MODULEDIR"] = "#{module_dir}/loaders" system "#{bin}/gdk-pixbuf-query-loaders", "--update-cache" end test do (testpath/"test.c").write <<~EOS #include int main(int argc, char *argv[]) { GType type = gdk_pixbuf_get_type(); return 0; } EOS gettext = Formula["gettext"] glib = Formula["glib"] libpng = Formula["libpng"] pcre = Formula["pcre"] flags = (ENV.cflags || "").split + (ENV.cppflags || "").split + (ENV.ldflags || "").split flags += %W[ -I#{gettext.opt_include} -I#{glib.opt_include}/glib-2.0 -I#{glib.opt_lib}/glib-2.0/include -I#{include}/gdk-pixbuf-2.0 -I#{libpng.opt_include}/libpng16 -I#{pcre.opt_include} -D_REENTRANT -L#{gettext.opt_lib} -L#{glib.opt_lib} -L#{lib} -lgdk_pixbuf-2.0 -lglib-2.0 -lgobject-2.0 -lintl ] system ENV.cc, "test.c", "-o", "test", *flags system "./test" end end