# vim: ft=make ts=4 sw=4 noet
.DEFAULT_GOAL := all

NAME    = py311
VERSION = 3.11.15
GARTYPE = v2

DISTNAME     = Python-$(VERSION)
MASTER_SITES = https://www.python.org/ftp/python/$(VERSION)/
DISTFILES   += $(DISTNAME).tgz

WORKSRC = $(WORKDIR)/Python-$(VERSION)

LICENSE = LICENSE

PACKAGES                   += OZSWpy311
SPKG_DESC_OZSWpy311         = Python 3.11 programming language interpreter
CATALOGNAME_OZSWpy311       = py311

BUILD_DEP_PKGS += OZSWopenssl OZSWzlib OZSWlibffi OZSWbzip2 OZSWxz OZSWsqlite OZSWreadline OZSWncurses
RUNTIME_DEP_PKGS_OZSWpy311 += OZSWopenssl OZSWzlib OZSWlibffi OZSWbzip2 OZSWxz OZSWsqlite OZSWreadline OZSWncurses

EXTENSIONS = 1

# ncurses wide-char headers live in a subdir
CPPFLAGS += -I$(prefix)/include/ncursesw

EXTRA_CONFIGURE_ARGS += --enable-shared
EXTRA_CONFIGURE_ARGS += --with-openssl=$(prefix)
EXTRA_CONFIGURE_ARGS += --with-openssl-rpath=auto
EXTRA_CONFIGURE_ARGS += --without-ensurepip
EXTRA_CONFIGURE_ARGS += --with-readline=readline
EXTRA_CONFIGURE_ARGS += --disable-test-modules
EXTRA_CONFIGURE_ARGS += ax_cv_c_float_words_bigendian=no

EXTRA_LD_FLAGS += -lsocket -lnsl

# Use GNU ar (system ar doesn't handle GCC-generated ELF objects correctly)
BUILD_OVERRIDE_VARS   += AR
BUILD_OVERRIDE_VAR_AR  = /opt/ozsw/bin/ar
INSTALL_OVERRIDE_VARS   += AR
INSTALL_OVERRIDE_VAR_AR  = /opt/ozsw/bin/ar

post-configure:
	# hstrerror is not in any shared lib on this Solaris version
	gsed -i 's/#define HAVE_HSTRERROR 1/\/* #define HAVE_HSTRERROR 1 *\//' \
	    $(WORKSRC)/pyconfig.h
	# setup.py HAVE_NCURSESW block needs NCURSES_WIDECHAR=1 too, otherwise
	# cchar_t is not declared (ncurses gates on _XOPEN_SOURCE_EXTENDED,
	# not Solaris _XPG6). Use gsed s/// to append line after HAVE_NCURSESW.
	gsed -i "s/curses_defines\.append(('HAVE_NCURSESW', '1'))/curses_defines.append(('HAVE_NCURSESW', '1'))\n            curses_defines.append(('NCURSES_WIDECHAR', '1'))/" \
	    $(WORKSRC)/setup.py
	@$(MAKECOOKIE)

include gar/category.mk
