fritzkink
2023-12-27 706019354bab81fc3f01995caf1ae1a2dfa346cf
make-rules/shared-macros.mk
@@ -26,8 +26,8 @@
# whenever PATH is to be defined there:
#     PATH = $(PATH.illumos)
#     PATH = $(PATH.gnu)
PATH.illumos=$(PATH.prepend):$(USRBINDIR$(BITS)):$(USRBINDIR):$(GNUBIN):$(USRSBINDIR$(BITS)):$(USRSBINDIR):$(PERL5BINDIR)
PATH.gnu=$(PATH.prepend):$(GNUBIN):$(USRBINDIR$(BITS)):$(USRBINDIR):$(USRSBINDIR$(BITS)):$(USRSBINDIR):$(PERL5BINDIR)
PATH.illumos =   $(subst $(space),:,$(strip $(PATH.prepend))):$(USRBINDIR$(BITS)):$(USRBINDIR):$(GNUBIN):$(USRSBINDIR$(BITS)):$(USRSBINDIR)
PATH.gnu =   $(subst $(space),:,$(strip $(PATH.prepend))):$(GNUBIN):$(USRBINDIR$(BITS)):$(USRBINDIR):$(USRSBINDIR$(BITS)):$(USRSBINDIR)
# Default PATH
PATH = $(PATH.illumos)
@@ -44,7 +44,7 @@
#EXTERNAL_ARCHIVE_MIRROR = \
#   http://static.opensolaris.org/action/browse/userland/tarball/userland
DLC_ARCHIVE_MIRROR = http://dlc.openindiana.org/oi-userland/source-archives
DLC_ARCHIVE_MIRROR = https://dlc.openindiana.org/oi-userland/source-archives
# Default to looking for source archives on the internal mirror and the external
# mirror before we hammer on the community source archive repositories.
@@ -57,7 +57,7 @@
# The workspace starts at the mercurial root
ifeq ($(origin WS_TOP), undefined)
export WS_TOP := \
   $(shell hg root 2>/dev/null || git rev-parse --show-toplevel)
   $(shell git rev-parse --show-toplevel || hg root 2>/dev/null)
endif
USERLAND_ARCHIVES ?=   $(WS_TOP)/archives/
@@ -107,7 +107,7 @@
# to determine the distribution version
# (it should look like OpenIndiana Hipster YYYY.MM).
DISTRIBUTION_NAME = OpenIndiana Hipster
DISTRIBUTION_VERSION = 2023.05
DISTRIBUTION_VERSION = 2023.10
# Native OS version
OS_VERSION :=      $(shell uname -r)
SOLARIS_VERSION =   $(OS_VERSION:5.%=2.%)
@@ -218,6 +218,7 @@
PKG_REPO =   file:$(WS_REPO)
COMPONENT =      $(COMPONENT_DIR:$(WS_TOP)/components/%=%)
HUMAN_VERSION ?=   $(COMPONENT_VERSION)
COMPONENT_SRC_NAME =   $(COMPONENT_NAME)
@@ -621,12 +622,9 @@
        fi; \
    fi)
GCC_VERSION =   10
GCC_DEFAULT =   13
GCC_VERSION =   $(GCC_DEFAULT)
GCC_ROOT =   /usr/gcc/$(GCC_VERSION)
GCC_LIBDIR.32 =   $(GCC_ROOT)/lib
GCC_LIBDIR.64 =   $(GCC_ROOT)/lib/$(MACH64)
GCC_LIBDIR =   $(GCC_LIBDIR.$(BITS))
# Define runtime package names to be used in dependencies
GCC_VERSION_MAJOR    = $(shell echo $(GCC_VERSION) | $(GSED) -e 's/\([0-9]\+\)\.[0-9]\+.*/\1/')
@@ -656,6 +654,7 @@
GCC_INCDIR =   $(GCC_ROOT)/include
GCC_LIBGCCDIR =   $(GCC_ROOT)/lib/gcc
GCC_INCGXXDIR =   $(GCC_ROOT)/include/c++/$(GCC_FULL_VERSION)
PATH.prepend +=   $(GCC_BINDIR)
ifneq ($(strip $(CCACHE)),)
@@ -682,14 +681,17 @@
LD =      /usr/bin/ld
# Clang definitions (we only have 64 bit clang)
CLANG_VERSION           ?= 15
CLANG_FULL_VERSION      ?= $(CLANG_VERSION).0
CLANG_DEFAULT =      17
CLANG_VERSION =      $(CLANG_DEFAULT)
CLANG_FULL_VERSION =   $(CLANG_VERSION).0
CLANG_PREFIX             = /usr/clang/$(CLANG_FULL_VERSION)
CLANG_BINDIR =      $(CLANG_PREFIX)/bin
CLANG_LIBDIR             = $(CLANG_PREFIX)/lib
CLANG_DEVELOPER_PKG      = developer/clang-$(CLANG_VERSION)
CLANG_RUNTIME_PKG        = runtime/clang-$(CLANG_VERSION)
REQUIRED_PACKAGES_SUBST += CLANG_DEVELOPER_PKG
REQUIRED_PACKAGES_SUBST += CLANG_RUNTIME_PKG
PATH.prepend +=      $(CLANG_BINDIR)
# Python definitions
PYTHON.2.7.VENDOR_PACKAGES.64 = /usr/lib/python2.7/vendor-packages/64
@@ -706,10 +708,15 @@
FC =      $(FC.$(COMPILER).$(BITS))
RUBY_VERSION =  2.3
RUBY_LIB_VERSION.2.3 = 2.3.0
RUBY_LIB_VERSION.2.6 = 2.6.0
RUBY_LIB_VERSION.3.2 = 3.2.0
RUBY.2.3 =   /usr/ruby/2.3/bin/ruby
RUBY.2.6 =   /usr/ruby/2.6/bin/ruby
RUBY.3.2 =   /usr/ruby/3.2/bin/ruby
RUBY =          $(RUBY.$(RUBY_VERSION))
RUBY_LIB_VERSION = $(RUBY_LIB_VERSION.$(RUBY_VERSION))
@@ -783,11 +790,9 @@
COMPONENT_POST_INSTALL_ACTION += $(PYTHON_SCRIPTS_PROCESS)
JAVA8_HOME =   /usr/jdk/instances/openjdk1.8.0
JAVA11_HOME =   /usr/jdk/instances/openjdk11.0.10
JAVA17_HOME =   /usr/jdk/instances/openjdk17
JAVA18_HOME =   /usr/jdk/instances/openjdk18
JAVA19_HOME =   /usr/jdk/instances/openjdk19
JAVA_HOME = $(JAVA8_HOME)
JAVA17_HOME =   /usr/jdk/instances/openjdk17.0.8
JAVA21_HOME =   /usr/jdk/instances/openjdk21
JAVA_HOME = $(JAVA17_HOME)
# QT macros
# We deliver version 5 in 32- and 64-bit variants.
@@ -803,18 +808,43 @@
QT5_PKG_CONFIG_PATH = $(QT5_LIBDIR)/pkgconfig
# We deliver version 6 only in a 64-bit variant.
QT6_VERSION = 6.2
QT6_VERSION = 6.6
QT6_BASEDIR = $(USRLIBDIR)/qt/$(QT6_VERSION)
QT6_BINDIR = $(QT6_BASEDIR)/bin/$(MACH64)
QT6_LIBDIR = $(QT6_BASEDIR)/lib/$(MACH64)
QT6_PKG_CONFIG_PATH = $(QT6_LIBDIR)/pkgconfig
#
# Upstream officially supports two recent major Perl versions.  They also aim
# to provide critical security fixes for major Perl versions whose 5.x.0
# release was within the past three years.
#
# We support union of both sets.  IOW, we will start to obsolete a major Perl
# version if its 5.x.0 was released longer than three years ago AND there are
# already released two newer major Perl versions.
#
# See https://perldoc.perl.org/perlpolicy
#
#
# We will start to obsolete major Perl versions according the following table:
#
# +--------------+----------------+
# | Perl version | Obsolete after |
# +--------------+----------------+
# |     5.34     |   2024-05-20   |
# |     5.36     |   2025-05-28   |
# |     5.38     |   2026-07-02   |
# +--------------+----------------+
#
# See https://www.cpan.org/src/README.html
#
# This is the default version of Perl
PERL_VERSION =  5.36
PERL_VERSION =  5.38
# The PERL_VERSIONS list should always be in ascending order (newest version
# last)
PERL_VERSIONS = 5.34 5.36
PERL_VERSIONS = 5.34 5.36 5.38
# Perl up to 5.22 was built 32-bit only.  Starting with 5.24 the perl package
# is built 64-bit only.  So now all PERL_VERSIONS are 64-bit only.
PERL_64_ONLY_VERSIONS = $(PERL_VERSIONS)
@@ -851,11 +881,29 @@
PKG_MACROS +=   PERL_ARCH=$(PERL_ARCH)
PKG_MACROS +=   PERL_VERSION=$(PERL_VERSION)
#
# Upstream supports major PostgreSQL versions for 5 years after its initial
# release.  After that one last minor version is released and then the major
# version is considered EOL.
#
# We will start to obsolete PostgreSQL versions according the following table:
#
# +--------------------+----------------+
# | PostgreSQL version | Obsolete after |
# +--------------------+----------------+
# |         12         |   2024-11-14   |
# |         14         |   2026-11-12   |
# |         15         |   2027-11-11   |
# +--------------------+----------------+
#
# See https://www.postgresql.org/support/versioning/
#
# Config magic for Postgres/EnterpriseDB/...
# Default DB version should be the newest one we do have so we detect any
# incompatibilities as soon as possible.  Components could override this when
# they are not ready yet to compile with so new version.
PG_VERSION ?=   14
PG_VERSION ?=   15
PG_IMPLEM ?=    postgres
PG_VERNUM =     $(subst .,,$(PG_VERSION))
# For dependencies, including REQUIRED_PACKAGES if needed
@@ -884,10 +932,26 @@
PG_CONFIG.32 =  $(PG_BINDIR.32)/pg_config
PG_CONFIG.64 =  $(PG_BINDIR.64)/pg_config
PG_CONFIG =     $(PG_CONFIG.$(BITS))
PATH.prepend +=   $(PG_BINDIR)
PKG_MACROS +=   PG_VERSION=$(PG_VERSION)
PKG_MACROS +=   PG_VERNUM=$(PG_VERNUM)
PKG_MACROS +=   PG_BASEPKG=$(PG_BASEPKG)
#
# Upstream maintains long-term MariaDB releases for at least 5 years and
# short-term MariaDB releases for at least one year.
#
# We will start to obsolete MariaDB versions according the following table:
#
# +-----------------+----------------+
# | MariaDB version | Obsolete after |
# +-----------------+----------------+
# |      10.6       |   2026-07      |
# +-----------------+----------------+
#
# See https://mariadb.org/about/#maintenance-policy
#
# Config magic for MySQL/MariaDB/Percona/...
# Default DB version should be the newest one we do have so we detect any
@@ -932,6 +996,7 @@
MYSQL_CONFIG.64 =  $(MYSQL_BINDIR.64)/mysql_config
MYSQL_CONFIG =     $(MYSQL_CONFIG.$(BITS))
MYSQL_PKG_CONFIG_PATH =   $(MYSQL_LIBDIR)/pkgconfig
PATH.prepend +=      $(MYSQL_BINDIR)
PKG_MACROS +=   MYSQL_VERSION=$(MYSQL_VERSION)
PKG_MACROS +=   MYSQL_VERNUM=$(MYSQL_VERNUM)
@@ -969,6 +1034,11 @@
TCLSH.8.6.sparc.32 =   /usr/bin/sparcv7/tclsh8.6
TCLSH.8.6.sparc.64 =   /usr/bin/sparcv9/tclsh8.6
TCLSH =      $(TCLSH.$(TCL_VERSION).$(MACH).$(BITS))
# ICU library
ICU_LIBRARY_PKG =      library/icu
REQUIRED_PACKAGES_SUBST +=   ICU_LIBRARY_PKG
CCSMAKE =   /usr/ccs/bin/make
GMAKE =      /usr/gnu/bin/make
@@ -1016,12 +1086,15 @@
STRIP =   /usr/bin/strip
IPS2TGZ =    $(WS_TOOLS)/ips2tgz
JQ =      /usr/bin/jq
DOS2UNIX =   /usr/bin/dos2unix
TAC =      /usr/bin/tac
QUILT =      /usr/bin/quilt
INS.dir=        $(INSTALL) -d $@
INS.file=       $(INSTALL) -m 444 $< $(@D)
# OpenSSL macros
OPENSSL_DEFAULT = 1.1
OPENSSL_DEFAULT = 3.1
ifeq ($(strip $(USE_OPENSSL11)),yes)
OPENSSL_VERSION = 1.1
else
@@ -1119,8 +1192,8 @@
#
# Control the GCC optimization level.
gcc_OPT.sparc.32 =   -O3 -mcpu=ultrasparc -mvis
gcc_OPT.sparc.64 =   -O3 -mcpu=ultrasparc -mvis
gcc_OPT.sparc.32 =   -O3 -mcpu=ultrasparc -mvis -mfsmuld
gcc_OPT.sparc.64 =   -O3 -mcpu=ultrasparc -mvis -mfsmuld
gcc_OPT.i386.32 =   -O3
gcc_OPT.i386.64 =   -O3
gcc_OPT =      $(gcc_OPT.$(MACH).$(BITS))
@@ -1359,16 +1432,26 @@
REQUIRED_PACKAGES_SUBST+= GOBJC_RUNTIME_PKG
# Generate requirements on all built python version variants for given packages
USERLAND_REQUIRED_PACKAGES += $(foreach ver,$(PYTHON_VERSIONS),$(PYTHON_USERLAND_REQUIRED_PACKAGES:%=%-$(shell echo $(ver) | tr -d .)))
REQUIRED_PACKAGES += $(foreach ver,$(PYTHON_VERSIONS),$(PYTHON_REQUIRED_PACKAGES:%=%-$(shell echo $(ver) | tr -d .)))
TEST_REQUIRED_PACKAGES += $(foreach ver,$(PYTHON_VERSIONS),$(TEST_REQUIRED_PACKAGES.python:%=%-$(shell echo $(ver) | tr -d .)))
USERLAND_REQUIRED_PACKAGES += $(foreach ver,$(PYTHON_VERSIONS),$(USERLAND_REQUIRED_PACKAGES.python:%=%-$(subst .,,$(ver))))
REQUIRED_PACKAGES += $(foreach ver,$(PYTHON_VERSIONS),$(PYTHON_REQUIRED_PACKAGES:%=%-$(subst .,,$(ver))))
TEST_REQUIRED_PACKAGES += $(foreach ver,$(PYTHON_VERSIONS),$(TEST_REQUIRED_PACKAGES.python:%=%-$(subst .,,$(ver))))
# Generate requirements on all built perl version variants for given packages
REQUIRED_PACKAGES += $(foreach ver,$(PERL_VERSIONS),$(PERL_REQUIRED_PACKAGES:%=%-$(shell echo $(ver) | tr -d .)))
TEST_REQUIRED_PACKAGES += $(foreach ver,$(PERL_VERSIONS),$(TEST_REQUIRED_PACKAGES.perl:%=%-$(shell echo $(ver) | tr -d .)))
USERLAND_REQUIRED_PACKAGES += $(foreach ver,$(PERL_VERSIONS),$(USERLAND_REQUIRED_PACKAGES.perl:%=%-$(subst .,,$(ver))))
REQUIRED_PACKAGES += $(foreach ver,$(PERL_VERSIONS),$(PERL_REQUIRED_PACKAGES:%=%-$(subst .,,$(ver))))
TEST_REQUIRED_PACKAGES += $(foreach ver,$(PERL_VERSIONS),$(TEST_REQUIRED_PACKAGES.perl:%=%-$(subst .,,$(ver))))
# Generate conflicting packages for all built python version variants for given package
TEST_CONFLICTING_PACKAGES += $(foreach ver,$(PYTHON_VERSIONS),$(TEST_CONFLICTING_PACKAGES.python:%=%-$(shell echo $(ver) | tr -d .)))
TEST_CONFLICTING_PACKAGES += $(foreach ver,$(PYTHON_VERSIONS),$(TEST_CONFLICTING_PACKAGES.python:%=%-$(subst .,,$(ver))))
# Targets for some tools rarely used by the build framework.  We do not add
# these tools to USERLAND_REQUIRED_PACKAGES to do not pollute it.
$(QUILT):
   @echo
   @echo "$(QUILT) is missing"
   @echo "Please install developer/quilt package"
   @echo
   @exit 1
include $(WS_MAKE_RULES)/environment.mk
include $(WS_MAKE_RULES)/depend.mk