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.38/gdk-pixbuf-2.38.2.tar.xz" sha256 "73fa651ec0d89d73dd3070b129ce2203a66171dfc0bd2caa3570a9c93d2d0781" bottle do sha256 "07d351a8ad7e28077a839d80e3d55a86ea9d056544e496afc3647b20596fa7ab" => :mojave sha256 "f7d7f81ec134f8ee24798063c84c4a94524d15e252bf64a039819d23bc0842b1" => :high_sierra sha256 "14fb535a5c957c4bb45794fbf29b96004811cecb3ae89be59943a1f5e2cfb8fd" => :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