NAME     = gtk2
VERSION  = 2.24.33
DISTNAME = gtk+-$(VERSION)

CATEGORIES = utils

DESCRIPTION = GTK+ 2 graphical user interface toolkit
define BLURB
GTK+ is a multi-platform toolkit for creating graphical user interfaces.
Version 2.x is widely used by applications including Pidgin.
endef

DYNURLS   = https://download.gnome.org/sources/gtk+/2.24/gtk+-2.24.33.tar.xz
DISTFILES = gtk+-2.24.33.tar.xz

LICENSE = COPYING

WORKSRC = $(WORKDIR)/gtk+-$(VERSION)

PACKAGES             = OZSWgtk2
SPKG_DESC_OZSWgtk2   = GTK+ 2 graphical user interface toolkit
SPKG_CLASSES         = cswdictconf
RUNTIME_DEP_PKGS_OZSWgtk2  = OZSWglib OZSWpango OZSWcairo OZSWatk OZSWgdkpixbuf
RUNTIME_DEP_PKGS_OZSWgtk2 += OZSWlibX11 OZSWlibXext OZSWlibXrender
RUNTIME_DEP_PKGS_OZSWgtk2 += OZSWlibXi OZSWlibXrandr OZSWlibXcursor
RUNTIME_DEP_PKGS_OZSWgtk2 += OZSWlibXfixes OZSWlibXdamage OZSWlibXcomposite OZSWlibXinerama
RUNTIME_DEP_PKGS_OZSWgtk2 += OZSWfontconfig OZSWfreetype

# gtk-update-icon-cache is also provided by OZSWgtk3; exclude from this package
EXTRA_PKGFILES_EXCLUDED += .*/bin/gtk-update-icon-cache

CONFIGURE_ARGS  = $(DIRPATHS)
CONFIGURE_ARGS += --with-gdktarget=x11
CONFIGURE_ARGS += --disable-cups
CONFIGURE_ARGS += --without-libjasper
CONFIGURE_ARGS += --disable-introspection
CONFIGURE_ARGS += --disable-gtk-doc
CONFIGURE_ARGS += --disable-man
CONFIGURE_ARGS += --enable-explicit-deps=no
CONFIGURE_ARGS += --disable-dependency-tracking

include gar/category.mk

# Solaris feature_tests.h requires _XOPEN_SOURCE=600.
# GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_28: GLib 2.68+ changed deprecated macros
# (G_TYPE_INSTANCE_GET_PRIVATE, G_STATIC_PRIVATE_INIT, etc.) to use _Pragma("GCC warning")
# which is a statement pragma, not usable as an expression. GTK2 2.24 only needs GLib 2.28
# API, so pinning to 2.28 avoids all _Pragma wrappers added for 2.32+ deprecations.
CFLAGS += -D_XOPEN_SOURCE=600 -D__EXTENSIONS__ -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_28

post-extract:
	# gtksearchenginesimple.c defines _XOPEN_SOURCE 500 which overrides our 600,
	# causing Solaris feature_tests.h to error. Patch it to 600.
	/usr/bin/gsed -i 's/^#define _XOPEN_SOURCE 500/#define _XOPEN_SOURCE 600/' \
	    $(WORKSRC)/gtk/gtksearchenginesimple.c
	# papi_status_t is an enum/int but initialized with NULL -- error in GCC 12
	/usr/bin/gsed -i 's/papi_status_t pstatus = NULL;/papi_status_t pstatus = 0;/' \
	    $(WORKSRC)/modules/printbackends/papi/gtkprintbackendpapi.c
	@$(MAKECOOKIE)

post-configure:
	# Patch LIBS in all generated Makefiles to add -lintl (libintl is a DSO on Solaris)
	find $(WORKSRC) -name Makefile \
	    -exec /usr/bin/gsed -i 's/^LIBS = *$$/LIBS = -lintl/' {} \;
	# Fix libtool ECHO on Solaris (ksh93 builtin "print -r --" fails under bash)
	find $(WORKSRC) -name "libtool" \
	    -exec /usr/bin/gsed -i 's/ECHO="print -r --"/ECHO="printf %s\\n"/g' {} \;
	@$(MAKECOOKIE)
