| 1 |
# vim: ft=make ts=4 sw=4 noet |
| 2 |
# |
| 3 |
# gar.conf.mk - OZSW fork configuration for OpenSolaris 2009.06 (snv_111b) |
| 4 |
# Forked from OpenCSW mgar/gar/v2 |
| 5 |
# |
| 6 |
|
| 7 |
# Use bash for all recipe commands. The default /bin/sh on OpenSolaris is |
| 8 |
# ksh93 which has a bug where a { echo; sed | sed | sed; } > file brace group |
| 9 |
# produces only the echo line (gnulib header generation hits this). |
| 10 |
SHELL = /usr/bin/bash |
| 11 |
|
| 12 |
# Pick up user information |
| 13 |
-include $(HOME)/.garrc |
| 14 |
-include /etc/opt/ozsw/garrc |
| 15 |
-include /opt/ozsw/etc/garrc |
| 16 |
|
| 17 |
THISHOST := $(shell /usr/bin/uname -n) |
| 18 |
|
| 19 |
# Build platform - OpenSolaris x86 only |
| 20 |
PACKAGING_PLATFORMS ?= opensolaris-i386 |
| 21 |
|
| 22 |
GAR_PLATFORM ?= $(firstword $(foreach P,$(PACKAGING_PLATFORMS),$(if $(filter $(THISHOST),$(PACKAGING_HOST_$P)),$P))) |
| 23 |
|
| 24 |
MODULATION ?= global |
| 25 |
FILEDIR ?= files |
| 26 |
WORKROOTDIR ?= $(if $(GAR_PLATFORM),work/$(GAR_PLATFORM),work) |
| 27 |
WORKDIR ?= $(WORKROOTDIR)/build-$(MODULATION) |
| 28 |
WORKDIR_FIRSTMOD ?= $(WORKROOTDIR)/build-$(firstword $(MODULATIONS)) |
| 29 |
WORKDIR_GLOBAL ?= $(WORKROOTDIR)/build-global |
| 30 |
DOWNLOADDIR ?= $(WORKROOTDIR)/download |
| 31 |
PARTIALDIR ?= $(DOWNLOADDIR)/partial |
| 32 |
COOKIEROOTDIR ?= $(WORKROOTDIR)/cookies |
| 33 |
COOKIEDIR ?= $(COOKIEROOTDIR)/$(MODULATION) |
| 34 |
EXTRACTDIR ?= $(WORKDIR) |
| 35 |
WORKSRC ?= $(WORKDIR)/$(DISTNAME) |
| 36 |
WORKSRC_FIRSTMOD ?= $(WORKDIR_FIRSTMOD)/$(DISTNAME) |
| 37 |
OBJDIR ?= . |
| 38 |
INSTALLISADIR ?= $(WORKROOTDIR)/install-$(MODULATION) |
| 39 |
PKGDIR ?= $(WORKROOTDIR)/package |
| 40 |
SCRATCHDIR ?= tmp |
| 41 |
CHECKSUM_FILE ?= checksums |
| 42 |
MANIFEST_FILE ?= manifest |
| 43 |
LOGDIR ?= log |
| 44 |
|
| 45 |
ELISP_DIRS ?= $(datadir)/emacs/site-lisp $(EXTRA_ELISP_DIRS) |
| 46 |
|
| 47 |
GIT_PROXY_SCRIPT ?= $(abspath $(GARBIN))/gitproxy |
| 48 |
GIT_DEFAULT_TRACK = +refs/heads/master:refs/remotes/origin/master |
| 49 |
GIT_COMMIT_OPTS ?= -v |
| 50 |
|
| 51 |
# For parallel builds |
| 52 |
PARALLELMODULATIONS ?= |
| 53 |
TTY ?= /usr/bin/tty |
| 54 |
SSH ?= ssh |
| 55 |
|
| 56 |
# Outbound proxies |
| 57 |
http_proxy ?= |
| 58 |
ftp_proxy ?= |
| 59 |
export http_proxy ftp_proxy |
| 60 |
|
| 61 |
SKIPDEPEND ?= 1 |
| 62 |
|
| 63 |
GARCHIVEDIR ?= /export/home/ai/src/ozsw-distfiles |
| 64 |
GARCHIVEPATH ?= $(GARCHIVEDIR) |
| 65 |
|
| 66 |
# Architecture - OpenSolaris is i386 only (snv_111b) |
| 67 |
GARCHLIST ?= i386 |
| 68 |
GARCH := $(if $(GARCH),$(GARCH),$(shell /usr/bin/uname -p)) |
| 69 |
GAROSREL := $(if $(GAROSREL),$(GAROSREL),$(shell /usr/bin/uname -r)) |
| 70 |
|
| 71 |
# Compiler - GCC9 is the only supported compiler |
| 72 |
# GCC9_CC_HOME points to the bootstrap compiler (built by old shell recipes). |
| 73 |
# Once GCC is built under GAR it will live under BUILD_PREFIX. |
| 74 |
GARCOMPILERS = GCC9 GCC12 |
| 75 |
GARCOMPILER ?= GCC9 |
| 76 |
|
| 77 |
ifeq (,$(filter $(GARCOMPILER),$(GARCOMPILERS))) |
| 78 |
$(error The compiler '$(GARCOMPILER)' is unknown. Please select one of $(GARCOMPILERS)) |
| 79 |
endif |
| 80 |
|
| 81 |
# Build flavor (OPT/DBG) |
| 82 |
GARFLAVOR ?= OPT |
| 83 |
|
| 84 |
# OZSW install prefix |
| 85 |
BUILD_PREFIX ?= /opt/ozsw |
| 86 |
|
| 87 |
prefix ?= $(BUILD_PREFIX) |
| 88 |
exec_prefix ?= $(prefix) |
| 89 |
bindir_install ?= $(exec_prefix)/bin |
| 90 |
bindir ?= $(abspath $(bindir_install)/$(MM_BINDIR)) |
| 91 |
sbindir_install ?= $(exec_prefix)/sbin |
| 92 |
sbindir ?= $(abspath $(sbindir_install)/$(MM_BINDIR)) |
| 93 |
libexecdir_install ?= $(exec_prefix)/libexec |
| 94 |
libexecdir ?= $(abspath $(libexecdir_install)/$(MM_BINDIR)) |
| 95 |
datadir ?= $(prefix)/share |
| 96 |
sysconfdir ?= /etc$(prefix) |
| 97 |
sharedstatedir ?= $(prefix)/share |
| 98 |
localstatedir ?= /var$(prefix) |
| 99 |
libdir_install ?= $(exec_prefix)/lib |
| 100 |
libdir ?= $(abspath $(libdir_install)/$(MM_LIBDIR)) |
| 101 |
infodir ?= $(sharedstatedir)/info |
| 102 |
includedir ?= $(prefix)/include |
| 103 |
mandir ?= $(sharedstatedir)/man |
| 104 |
docdir ?= $(sharedstatedir)/doc |
| 105 |
sourcedir ?= $(BUILD_PREFIX)/src |
| 106 |
|
| 107 |
RELOCATE_PREFIX ?= $(prefix) |
| 108 |
|
| 109 |
binpath_install ?= $(BUILD_PREFIX)/bin |
| 110 |
binpath ?= $(abspath $(binpath_install)/$(MM_BINDIR)) |
| 111 |
sbinpath_install ?= $(BUILD_PREFIX)/sbin |
| 112 |
sbinpath ?= $(abspath $(sbinpath_install)/$(MM_BINDIR)) |
| 113 |
libpath_install ?= $(BUILD_PREFIX)/lib |
| 114 |
libpath ?= $(abspath $(libpath_install)/$(MM_LIBDIR)) |
| 115 |
includepath_install ?= $(BUILD_PREFIX)/include |
| 116 |
includepath ?= $(BUILD_PREFIX)/include |
| 117 |
|
| 118 |
# DESTDIR is used at INSTALL TIME ONLY to determine what the filesystem root should be. |
| 119 |
DESTROOT ?= $(HOME) |
| 120 |
PKGROOT ?= $(abspath $(WORKROOTDIR)/pkgroot) |
| 121 |
DESTDIR ?= $(abspath $(INSTALLISADIR)) |
| 122 |
DESTIMG ?= $(LOGNAME)-$(shell hostname) |
| 123 |
|
| 124 |
# Common package dependency |
| 125 |
COMMON_PKG_DEPENDS ?= |
| 126 |
|
| 127 |
# Core packages required for GAR to function correctly |
| 128 |
DEF_BASE_PKGS += OZSWbzip2 |
| 129 |
DEF_BASE_PKGS += OZSWcoreutils |
| 130 |
DEF_BASE_PKGS += OZSWgawk |
| 131 |
DEF_BASE_PKGS += OZSWgmake |
| 132 |
DEF_BASE_PKGS += OZSWgsed |
| 133 |
DEF_BASE_PKGS += OZSWgtar |
| 134 |
DEF_BASE_PKGS += OZSWxz |
| 135 |
|
| 136 |
# During bootstrap, do not block builds on uninstalled base packages. |
| 137 |
# Once OZSWgmake, OZSWgtar etc. are installed, set this in garrc: |
| 138 |
# PREREQUISITE_BASE_PKGS = $(DEF_BASE_PKGS) |
| 139 |
PREREQUISITE_BASE_PKGS ?= |
| 140 |
|
| 141 |
# Package format - always SVR4 for OZSW |
| 142 |
# (OpenSolaris 5.11 defaults to IPS but we explicitly use SVR4) |
| 143 |
PKGFORMAT ?= svr4 |
| 144 |
PKGFORMAT-5.11 ?= svr4 |
| 145 |
|
| 146 |
# Supported ISAs for OpenSolaris i386 kernel |
| 147 |
ISALIST_i386 = pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 |
| 148 |
ISALIST_amd64 = amd64 $(ISALIST_i386) |
| 149 |
ISALIST = $(ISALIST_amd64) |
| 150 |
|
| 151 |
# Default ISA per architecture |
| 152 |
ISA_DEFAULT_i386 ?= i386 |
| 153 |
ISA_DEFAULT64_i386 ?= amd64 |
| 154 |
|
| 155 |
# Kernel ISA detection |
| 156 |
KERNELISA := $(shell /usr/bin/isainfo -k) |
| 157 |
|
| 158 |
# Memory model directories (lib subdir for 64-bit) |
| 159 |
MEMORYMODEL_amd64 = 64 |
| 160 |
MEMORYMODEL_i386 = |
| 161 |
$(foreach I,$(ISALIST_i386),$(eval MEMORYMODEL_$(I) ?= )) |
| 162 |
|
| 163 |
# Multi-memory: libdir and bindir subdirs |
| 164 |
MM_LIBDIR ?= $(MEMORYMODEL_$(ISA)) |
| 165 |
MM_BINDIR ?= $(MEMORYMODEL_$(ISA)) |
| 166 |
|
| 167 |
# ISA default (what we build as the primary ISA) |
| 168 |
ISA ?= $(ISA_DEFAULT_$(GARCH)) |
| 169 |
|
| 170 |
# Compiler configuration - GCC 9.x |
| 171 |
# Bootstrap compiler lives at /opt/oz (built by shell recipes). |
| 172 |
# After GCC is bootstrapped under GAR, GCC9_CC_HOME will be BUILD_PREFIX. |
| 173 |
GCC9_CC_HOME ?= /opt/oz |
| 174 |
GCC9_VERSION ?= 9.5 |
| 175 |
|
| 176 |
GCC9_CC ?= $(GCC9_CC_HOME)/bin/gcc |
| 177 |
GCC9_CXX ?= $(GCC9_CC_HOME)/bin/g++ |
| 178 |
GCC9_F77 ?= $(GCC9_CC_HOME)/bin/gfortran |
| 179 |
GCC9_FC ?= $(GCC9_CC_HOME)/bin/gfortran |
| 180 |
|
| 181 |
# Architecture flags for GCC9 on i386/amd64 |
| 182 |
ARCHFLAGS_GCC9_amd64 = -m64 |
| 183 |
ARCHFLAGS_GCC9_pentium_pro+mmx = -march=pentium-pro -mmmx |
| 184 |
ARCHFLAGS_GCC9_pentium_pro = -march=pentium-pro |
| 185 |
ARCHFLAGS_GCC9_pentium+mmx = -march=pentium -mmmx |
| 186 |
ARCHFLAGS_GCC9_pentium = -march=pentium |
| 187 |
ARCHFLAGS_GCC9_i486 = -march=i486 |
| 188 |
ARCHFLAGS_GCC9_i386 = |
| 189 |
|
| 190 |
MEMORYMODEL_pentium_pro+mmx = $(MEMORYMODEL_i386) |
| 191 |
MEMORYMODEL_pentium_pro = $(MEMORYMODEL_i386) |
| 192 |
MEMORYMODEL_pentium+mmx = $(MEMORYMODEL_i386) |
| 193 |
MEMORYMODEL_pentium = $(MEMORYMODEL_i386) |
| 194 |
MEMORYMODEL_i486 = $(MEMORYMODEL_i386) |
| 195 |
|
| 196 |
# Build optimisation flags |
| 197 |
FLAVOR_FLAGS_OPT = -O2 |
| 198 |
FLAVOR_FLAGS_DBG = -g |
| 199 |
FLAVOR_FLAGS ?= $(FLAVOR_FLAGS_$(GARFLAVOR)) |
| 200 |
|
| 201 |
# Compiler flag variables |
| 202 |
GCC9_CC_FLAGS ?= $(FLAVOR_FLAGS) $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC9_CC_FLAGS) $(EXTRA_CC_FLAGS) |
| 203 |
GCC9_CXX_FLAGS ?= $(FLAVOR_FLAGS) $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC9_CXX_FLAGS) $(EXTRA_CXX_FLAGS) |
| 204 |
GCC9_LD_FLAGS ?= -L$(BUILD_PREFIX)/lib -Wl,-R,$(BUILD_PREFIX)/lib $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC9_LD_FLAGS) $(EXTRA_LD_FLAGS) |
| 205 |
GCC9_FFLAGS ?= $(FLAVOR_FLAGS) $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC9_FFLAGS) $(EXTRA_FFLAGS) |
| 206 |
GCC9_FCFLAGS ?= $(FLAVOR_FLAGS) $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC9_FCFLAGS) $(EXTRA_FCFLAGS) |
| 207 |
|
| 208 |
# Compiler configuration - GCC 12.x |
| 209 |
GCC12_CC_HOME ?= /opt/ozsw |
| 210 |
GCC12_VERSION ?= 12.5 |
| 211 |
|
| 212 |
GCC12_CC ?= $(GCC12_CC_HOME)/bin/gcc |
| 213 |
GCC12_CXX ?= $(GCC12_CC_HOME)/bin/g++ |
| 214 |
GCC12_F77 ?= $(GCC12_CC_HOME)/bin/gfortran |
| 215 |
GCC12_FC ?= $(GCC12_CC_HOME)/bin/gfortran |
| 216 |
|
| 217 |
GCC12_CC_FLAGS ?= $(FLAVOR_FLAGS) $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC12_CC_FLAGS) $(EXTRA_CC_FLAGS) |
| 218 |
GCC12_CXX_FLAGS ?= $(FLAVOR_FLAGS) $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC12_CXX_FLAGS) $(EXTRA_CXX_FLAGS) |
| 219 |
GCC12_LD_FLAGS ?= -L$(BUILD_PREFIX)/lib -Wl,-R,$(BUILD_PREFIX)/lib $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC12_LD_FLAGS) $(EXTRA_LD_FLAGS) |
| 220 |
GCC12_FFLAGS ?= $(FLAVOR_FLAGS) $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC12_FFLAGS) $(EXTRA_FFLAGS) |
| 221 |
GCC12_FCFLAGS ?= $(FLAVOR_FLAGS) $(ARCHFLAGS_$(GARCOMPILER)_$(ISA)) $(EXTRA_GCC12_FCFLAGS) $(EXTRA_FCFLAGS) |
| 222 |
|
| 223 |
GCC12_CC_VERSION = $(shell $(GCC12_CC) -dumpversion 2>/dev/null) |
| 224 |
|
| 225 |
|
| 226 |
# Active compiler variables (used by gar.lib.mk) |
| 227 |
CC := $($(GARCOMPILER)_CC) |
| 228 |
CXX := $($(GARCOMPILER)_CXX) |
| 229 |
F77 ?= $($(GARCOMPILER)_F77) |
| 230 |
FC ?= $($(GARCOMPILER)_FC) |
| 231 |
CC_FLAGS ?= $($(GARCOMPILER)_CC_FLAGS) |
| 232 |
CXX_FLAGS ?= $($(GARCOMPILER)_CXX_FLAGS) |
| 233 |
LD_FLAGS ?= $($(GARCOMPILER)_LD_FLAGS) |
| 234 |
FFLAGS ?= $($(GARCOMPILER)_FFLAGS) |
| 235 |
FCFLAGS ?= $($(GARCOMPILER)_FCFLAGS) |
| 236 |
|
| 237 |
# Compiler version info |
| 238 |
GCC9_CC_VERSION = $(shell $(GCC9_CC) -dumpversion 2>/dev/null) |
| 239 |
|
| 240 |
# PATH used during builds - include bootstrap compiler and OZSW bin |
| 241 |
BUILD_PATH ?= $(BUILD_PREFIX)/bin:$($(GARCOMPILER)_CC_HOME)/bin:/usr/bin:/bin:/usr/sfw/bin |
| 242 |
|
| 243 |
export CC CXX F77 FC |
| 244 |
export CFLAGS=$(CC_FLAGS) |
| 245 |
export CXXFLAGS=$(CXX_FLAGS) |
| 246 |
export FFLAGS |
| 247 |
export FCFLAGS |
| 248 |
export LDFLAGS=$(LD_FLAGS) |
| 249 |
|
| 250 |
# GNU tool locations (may come from OZSW or OS) |
| 251 |
TAR ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/gtar /usr/sfw/bin/gtar) gtar) |
| 252 |
MAKE ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/gmake /usr/bin/gmake) gmake) |
| 253 |
PATCH ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/gpatch /usr/bin/gpatch /usr/sfw/bin/gpatch) gpatch) |
| 254 |
|
| 255 |
# Wget/curl for fetching |
| 256 |
# Use ozsw-fetch (curl wrapper) since system wget is too old for TLS 1.2+ |
| 257 |
WGET ?= $(GARDIR)/bin/ozsw-fetch |
| 258 |
CURL ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/curl /usr/bin/curl) curl) |
| 259 |
|
| 260 |
# Default fetch command |
| 261 |
FETCHCMD ?= $(if $(wildcard $(BUILD_PREFIX)/bin/wget $(firstword $(wildcard /usr/sfw/bin/wget))),$(WGET),$(CURL) -L -O) |
| 262 |
|
| 263 |
# Checksum tool |
| 264 |
CHECKSUM_CMD ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/sha256sum /usr/bin/sha256sum) sha256sum) |
| 265 |
|
| 266 |
# SVR4 packaging tools (standard on Solaris) |
| 267 |
PKGMK ?= /usr/bin/pkgmk |
| 268 |
PKGPROTO ?= /usr/bin/pkgproto |
| 269 |
PKGTRANS ?= /usr/bin/pkgtrans |
| 270 |
PKGADD ?= /usr/sbin/pkgadd |
| 271 |
|
| 272 |
# Output spool directory for built packages |
| 273 |
PKG_SPOOL ?= /export/home/ai/src/ozone/ozone/out/Spool |
| 274 |
|
| 275 |
# SVN (kept for compat, may not be used) |
| 276 |
SVN ?= svn |
| 277 |
|
| 278 |
|
| 279 |
# Set PATH so builds always find bootstrap compiler and OZSW tools. |
| 280 |
# This propagates into CONFIGURE_ENV/BUILD_ENV via STANDARD_EXPORTS. |
| 281 |
# /opt/oz/bin is kept as a bootstrap fallback for tools (ginstall, curl, etc.) |
| 282 |
# that aren't yet built under OZSW. Remove once coreutils and curl are built. |
| 283 |
PATH = $(BUILD_PREFIX)/bin:$($(GARCOMPILER)_CC_HOME)/bin:$(GARBIN):/opt/oz/bin:/usr/bin:/bin:/usr/sfw/bin:/usr/ccs/bin |
| 284 |
export PATH |
| 285 |
|
| 286 |
# Default number of parallel make jobs |
| 287 |
PARALLELMFLAGS ?= -j$(shell /bin/nproc 2>/dev/null || /usr/bin/getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2) |
| 288 |
|
| 289 |
# Do not build source packages by default |
| 290 |
NOSOURCEPACKAGE ?= 1 |
| 291 |
|
| 292 |
# Preprocessor: prefer OZSW headers over system /usr/include (which may have stale 3rd-party headers) |
| 293 |
CPPFLAGS ?= -I$(BUILD_PREFIX)/include |
| 294 |
|
| 295 |
# Set EXTENSIONS = 1 in a package Makefile to enable Solaris extension macros. |
| 296 |
# These unlock XPG6/POSIX:2001 interfaces (wprintf, mbstowcs, pthreads, etc.) |
| 297 |
# that are hidden behind feature-test macros on Solaris by default. |
| 298 |
ifneq ($(EXTENSIONS),) |
| 299 |
CPPFLAGS += -D__XOPEN_OR_POSIX -D_XPG6 -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS |
| 300 |
endif |
| 301 |
|
| 302 |
# pkg-config: only look in OZSW tree, not system /usr/lib/pkgconfig |
| 303 |
PKG_CONFIG_PATH ?= $(BUILD_PREFIX)/lib/pkgconfig:$(BUILD_PREFIX)/share/pkgconfig |
| 304 |
export PKG_CONFIG_PATH |
| 305 |
|
| 306 |
# ========================= ENVIRONMENT EXPORTS ========================= |
| 307 |
# These control what variables are passed into configure/build/install envs. |
| 308 |
# Builds run under "env -i" so only explicitly exported vars are visible. |
| 309 |
|
| 310 |
STANDARD_EXPORTS ?= HOME PATH |
| 311 |
LANG_EXPORTS ?= LC_ALL |
| 312 |
|
| 313 |
CONFIGURE_ENV_LC_ALL ?= C |
| 314 |
BUILD_ENV_LC_ALL ?= C |
| 315 |
INSTALL_ENV_LC_ALL ?= C |
| 316 |
|
| 317 |
DIRECTORY_EXPORTS = prefix exec_prefix bindir sbindir libexecdir |
| 318 |
DIRECTORY_EXPORTS += datadir sysconfdir sharedstatedir localstatedir libdir |
| 319 |
DIRECTORY_EXPORTS += infodir includedir mandir docdir sourcedir |
| 320 |
|
| 321 |
# Key compiler vars; CPPFLAGS is included so -I$(BUILD_PREFIX)/include is passed |
| 322 |
COMPILER_EXPORTS = CPPFLAGS CFLAGS CXXFLAGS LDFLAGS |
| 323 |
COMPILER_EXPORTS += FFLAGS FCFLAGS F77 FC CC CXX |
| 324 |
|
| 325 |
# Solaris /usr/bin/sed truncates output with many -e flags; gnulib-based packages |
| 326 |
# use SED during configure to substitute their generated headers. Always point |
| 327 |
# configure at gsed so the generated Makefiles use it instead of system sed. |
| 328 |
SED ?= /usr/bin/gsed |
| 329 |
TOOL_EXPORTS ?= SED |
| 330 |
|
| 331 |
GARPKG_EXPORTS += GARCH GAROSREL |
| 332 |
|
| 333 |
# Propagate bash SHELL as a command-line override to package submakes so it |
| 334 |
# takes precedence over the "SHELL = /bin/sh" that autoconf-generated |
| 335 |
# Makefiles set unconditionally. |
| 336 |
BUILD_OVERRIDE_VARS += SHELL |
| 337 |
BUILD_OVERRIDE_VAR_SHELL = /usr/bin/bash |
| 338 |
INSTALL_OVERRIDE_VARS += SHELL |
| 339 |
INSTALL_OVERRIDE_VAR_SHELL = /usr/bin/bash |
| 340 |
|
| 341 |
COMMON_EXPORTS ?= $(STANDARD_EXPORTS) $(LANG_EXPORTS) $(DIRECTORY_EXPORTS) $(COMPILER_EXPORTS) $(TOOL_EXPORTS) $(GARPKG_EXPORTS) $(EXTRA_COMMON_EXPORTS) |
| 342 |
|
| 343 |
CONFIGURE_EXPORTS ?= $(COMMON_EXPORTS) $(EXTRA_CONFIGURE_EXPORTS) PKG_CONFIG_PATH DESTDIR |
| 344 |
BUILD_EXPORTS ?= $(COMMON_EXPORTS) $(EXTRA_BUILD_EXPORTS) |
| 345 |
INSTALL_EXPORTS ?= $(COMMON_EXPORTS) $(EXTRA_INSTALL_EXPORTS) DESTDIR |
| 346 |
|
| 347 |
CONFIGURE_ENV ?= $(foreach TTT,$(filter-out $(NO_CONFIGURE_EXPORTS),$(CONFIGURE_EXPORTS)),$(TTT)="$(or $(CONFIGURE_ENV_$(TTT)),$($(TTT)))") $(EXTRA_CONFIGURE_ENV) |
| 348 |
BUILD_ENV ?= $(foreach TTT,$(filter-out $(NO_BUILD_EXPORTS),$(BUILD_EXPORTS)),$(TTT)="$(or $(BUILD_ENV_$(TTT)),$($(TTT)))") $(EXTRA_BUILD_ENV) |
| 349 |
INSTALL_ENV ?= $(foreach TTT,$(filter-out $(NO_INSTALL_EXPORTS),$(INSTALL_EXPORTS)),$(TTT)="$(or $(INSTALL_ENV_$(TTT)),$($(TTT)))") $(EXTRA_INSTALL_ENV) |
| 350 |
|
| 351 |
# Standard scripts (may be overridden per package) |
| 352 |
CONFIGURE_SCRIPTS ?= $(WORKSRC)/configure |
| 353 |
BUILD_SCRIPTS ?= $(WORKSRC)/Makefile |
| 354 |
TEST_SCRIPTS = |
| 355 |
INSTALL_SCRIPTS ?= $(WORKSRC)/Makefile |
| 356 |
|
| 357 |
# GitHub URL support: define host so findstring/case patterns work correctly |
| 358 |
GITHUB_HOST ?= github.com |
| 359 |
GITHUB_REFERENCE ?= |
| 360 |
|
| 361 |
# ========================= ISA CONFIGURATION ========================= |
| 362 |
# OpenSolaris i386 only (snv_111b). No SPARC, no 64-bit by default. |
| 363 |
|
| 364 |
ISALIST_i386 = pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 |
| 365 |
ISALIST_amd64 = amd64 $(ISALIST_i386) |
| 366 |
ISALIST = $(ISALIST_amd64) |
| 367 |
|
| 368 |
# GCC9 compiler flags per ISA |
| 369 |
ARCHFLAGS_GCC9_pentium_pro+mmx ?= -m32 -march=pentium-mmx |
| 370 |
ARCHFLAGS_GCC9_pentium_pro ?= -m32 -march=pentiumpro |
| 371 |
ARCHFLAGS_GCC9_pentium+mmx ?= -m32 -march=pentium-mmx |
| 372 |
ARCHFLAGS_GCC9_pentium ?= -m32 -march=pentium |
| 373 |
ARCHFLAGS_GCC9_i486 ?= -m32 -march=i486 |
| 374 |
ARCHFLAGS_GCC9_i386 ?= -m32 -march=i386 |
| 375 |
ARCHFLAGS_GCC9_amd64 ?= -m64 -march=x86-64 |
| 376 |
|
| 377 |
MEMORYMODEL_pentium_pro+mmx = 32 |
| 378 |
MEMORYMODEL_pentium_pro = 32 |
| 379 |
MEMORYMODEL_pentium+mmx = 32 |
| 380 |
MEMORYMODEL_pentium = 32 |
| 381 |
MEMORYMODEL_i486 = 32 |
| 382 |
MEMORYMODEL_i386 = 32 |
| 383 |
MEMORYMODEL_amd64 = 64 |
| 384 |
|
| 385 |
MEMORYMODEL = $(MEMORYMODEL_$(ISA)) |
| 386 |
|
| 387 |
MEMORYMODEL_LIBDIR_32 = . |
| 388 |
MEMORYMODEL_LIBDIR_64 = 64 |
| 389 |
MEMORYMODEL_BINDIR_32 = $(ISABINDIR_$(ISA_DEFAULT_$(GARCH))) |
| 390 |
MEMORYMODEL_BINDIR_64 = $(ISABINDIR_$(ISA_DEFAULT64_$(GARCH))) |
| 391 |
|
| 392 |
MM_LIBDIR = $(MEMORYMODEL_LIBDIR_$(MEMORYMODEL)) |
| 393 |
MM_BINDIR = $(MEMORYMODEL_BINDIR_$(MEMORYMODEL)) |
| 394 |
|
| 395 |
# Build optimization flags |
| 396 |
OPT_FLAGS_GCC ?= -O2 -pipe -fno-omit-frame-pointer |
| 397 |
OPT_FLAGS_GCC9 ?= $(OPT_FLAGS_GCC) |
| 398 |
OPT_FLAGS_GCC9_i386 ?= $(OPT_FLAGS_GCC9) |
| 399 |
DBG_FLAGS_GCC9 ?= -g |
| 400 |
DBG_FLAGS_GCC9_i386 ?= $(DBG_FLAGS_GCC9) |
| 401 |
|
| 402 |
FLAVOR_FLAGS ?= $($(GARFLAVOR)_ISAFLAGS_$(GARCOMPILER)_$(ISA)) $($(GARFLAVOR)_FLAGS_$(GARCOMPILER)_$(GARCH)) |
| 403 |
FLAVOR_FLAGS += $(EXTRA_$(GARFLAVOR)_FLAGS_$(GARCOMPILER)_$(GARCH)) $(EXTRA_$(GARFLAVOR)_FLAGS_$(GARCOMPILER)) |
| 404 |
|
| 405 |
# ISA defaults per OS release (GAROSREL = 5.11 on OpenSolaris) |
| 406 |
ISA_DEFAULT_i386-5.11 ?= i386 |
| 407 |
ISA_DEFAULT64_i386-5.11 ?= amd64 |
| 408 |
ISA_DEFAULT_i386 ?= $(ISA_DEFAULT_i386-$(GAROSREL)) |
| 409 |
ISA_DEFAULT64_i386 ?= $(ISA_DEFAULT64_i386-$(GAROSREL)) |
| 410 |
|
| 411 |
ISA_DEFAULT ?= $(ISA_DEFAULT_$(GARCH)) |
| 412 |
ISA_DEFAULT64 ?= $(ISA_DEFAULT64_$(GARCH)) |
| 413 |
|
| 414 |
# Populate per-compiler ISALIST from ARCHFLAGS (exclude ERROR entries) |
| 415 |
$(foreach C,$(GARCOMPILERS),$(eval ISALIST_$(C) ?= $(foreach I,$(ISALIST),$(if $(filter-out ERROR,$(ARCHFLAGS_$C_$I)),$I)))) |
| 416 |
|
| 417 |
# Library and binary subdirectories per ISA |
| 418 |
ISALIBDIR_$(ISA_DEFAULT_i386) ?= . |
| 419 |
$(foreach I,$(ISALIST),$(eval ISALIBDIR_$(I) ?= $I)) |
| 420 |
ISALIBDIR ?= $(ISALIBDIR_$(ISA)) |
| 421 |
|
| 422 |
$(foreach I,$(ISALIST),$(eval ISABINDIR_$(I) ?= $(ISALIBDIR_$(I)))) |
| 423 |
ISABINDIR ?= $(ISABINDIR_$(ISA)) |
| 424 |
|
| 425 |
# Compute what ISAs to build (32-bit only by default; set BUILD64=1 for 64-bit) |
| 426 |
remove-duplicates = $(if $1,$(firstword $1) $(call remove-duplicates,$(filter-out $(firstword $1),$1))) |
| 427 |
REQUESTED_ISAS ?= $(strip $(call remove-duplicates,\ |
| 428 |
$(foreach A,$(GARCHLIST),\ |
| 429 |
$(if $(BUILD64_ONLY),,$(ISA_DEFAULT_$A)) \ |
| 430 |
$(if $(or $(BUILD64),$(BUILD64_LIBS_ONLY)),$(ISA_DEFAULT64_$A)) \ |
| 431 |
$(EXTRA_BUILD_ISAS_$A)) \ |
| 432 |
$(EXTRA_BUILD_ISAS))) |
| 433 |
|
| 434 |
KERNELISA := $(shell isainfo -k 2>/dev/null || echo i386) |
| 435 |
|
| 436 |
NEEDED_ISAS ?= $(strip \ |
| 437 |
$(filter $(ISALIST_$(KERNELISA)),$(filter $(ISALIST_$(ISA_DEFAULT64_$(GARCH))),$(REQUESTED_ISAS))) \ |
| 438 |
$(filter-out $(ISALIST_$(KERNELISA)),$(filter $(ISALIST_$(ISA_DEFAULT64_$(GARCH))),$(REQUESTED_ISAS)))) |
| 439 |
BUILD_ISAS ?= $(filter $(ISALIST_$(KERNELISA)),$(NEEDED_ISAS)) |
| 440 |
|
| 441 |
# ISA sanity check - verify we can build the requested ISA on this kernel |
| 442 |
verify-isa: |
| 443 |
ifeq (,$(filter $(ISA),$(ISALIST_$(KERNELISA)))) |
| 444 |
$(error The ISA '$(ISA)' cannot be built on kernel arch '$(KERNELISA)') |
| 445 |
endif |
| 446 |
@$(MAKECOOKIE) |
| 447 |
|
| 448 |
# Disable git snapshotting (no git identity on build host) |
| 449 |
NOGITPATCH ?= 1 |
| 450 |
|
| 451 |
# Disable checkpkg (requires Python 2.6+, system has 2.4) |
| 452 |
ENABLE_CHECK ?= 0 |