ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ozone/mgar/pkg/py311/gar/gar.conf.mk
Revision: 11
Committed: Sat Jun 20 21:40:57 2026 UTC (4 weeks, 2 days ago) by operz
File size: 16563 byte(s)
Log Message:
Add Python 3.11.15 recipe (OZSWpy311); update readline to link against ncurses (for Python curses module)

File Contents

# Content
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
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 # Active compiler variables (used by gar.lib.mk)
209 CC := $($(GARCOMPILER)_CC)
210 CXX := $($(GARCOMPILER)_CXX)
211 F77 ?= $($(GARCOMPILER)_F77)
212 FC ?= $($(GARCOMPILER)_FC)
213 CC_FLAGS ?= $($(GARCOMPILER)_CC_FLAGS)
214 CXX_FLAGS ?= $($(GARCOMPILER)_CXX_FLAGS)
215 LD_FLAGS ?= $($(GARCOMPILER)_LD_FLAGS)
216 FFLAGS ?= $($(GARCOMPILER)_FFLAGS)
217 FCFLAGS ?= $($(GARCOMPILER)_FCFLAGS)
218
219 # Compiler version info
220 GCC9_CC_VERSION = $(shell $(GCC9_CC) -dumpversion 2>/dev/null)
221
222 # PATH used during builds - include bootstrap compiler and OZSW bin
223 BUILD_PATH ?= $(BUILD_PREFIX)/bin:$(GCC9_CC_HOME)/bin:/usr/bin:/bin:/usr/sfw/bin
224
225 export CC CXX F77 FC
226 export CFLAGS=$(CC_FLAGS)
227 export CXXFLAGS=$(CXX_FLAGS)
228 export FFLAGS
229 export FCFLAGS
230 export LDFLAGS=$(LD_FLAGS)
231
232 # GNU tool locations (may come from OZSW or OS)
233 TAR ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/gtar /usr/sfw/bin/gtar) gtar)
234 MAKE ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/gmake /usr/bin/gmake) gmake)
235 PATCH ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/gpatch /usr/bin/gpatch /usr/sfw/bin/gpatch) gpatch)
236
237 # Wget/curl for fetching
238 # Use ozsw-fetch (curl wrapper) since system wget is too old for TLS 1.2+
239 WGET ?= $(GARDIR)/bin/ozsw-fetch
240 CURL ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/curl /usr/bin/curl) curl)
241
242 # Default fetch command
243 FETCHCMD ?= $(if $(wildcard $(BUILD_PREFIX)/bin/wget $(firstword $(wildcard /usr/sfw/bin/wget))),$(WGET),$(CURL) -L -O)
244
245 # Checksum tool
246 CHECKSUM_CMD ?= $(firstword $(wildcard $(BUILD_PREFIX)/bin/sha256sum /usr/bin/sha256sum) sha256sum)
247
248 # SVR4 packaging tools (standard on Solaris)
249 PKGMK ?= /usr/bin/pkgmk
250 PKGPROTO ?= /usr/bin/pkgproto
251 PKGTRANS ?= /usr/bin/pkgtrans
252 PKGADD ?= /usr/sbin/pkgadd
253
254 # Output spool directory for built packages
255 PKG_SPOOL ?= /export/home/ai/src/ozone/ozone/out/Spool
256
257 # SVN (kept for compat, may not be used)
258 SVN ?= svn
259
260
261 # Set PATH so builds always find bootstrap compiler and OZSW tools.
262 # This propagates into CONFIGURE_ENV/BUILD_ENV via STANDARD_EXPORTS.
263 # /opt/oz/bin is kept as a bootstrap fallback for tools (ginstall, curl, etc.)
264 # that aren't yet built under OZSW. Remove once coreutils and curl are built.
265 PATH = $(BUILD_PREFIX)/bin:$(GCC9_CC_HOME)/bin:$(GARBIN):/opt/oz/bin:/usr/bin:/bin:/usr/sfw/bin:/usr/ccs/bin
266 export PATH
267
268 # Default number of parallel make jobs
269 PARALLELMFLAGS ?= -j$(shell /bin/nproc 2>/dev/null || /usr/bin/getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2)
270
271 # Do not build source packages by default
272 NOSOURCEPACKAGE ?= 1
273
274 # Preprocessor: prefer OZSW headers over system /usr/include (which may have stale 3rd-party headers)
275 CPPFLAGS ?= -I$(BUILD_PREFIX)/include
276
277 # Set EXTENSIONS = 1 in a package Makefile to enable Solaris extension macros.
278 # These unlock XPG6/POSIX:2001 interfaces (wprintf, mbstowcs, pthreads, etc.)
279 # that are hidden behind feature-test macros on Solaris by default.
280 ifneq ($(EXTENSIONS),)
281 CPPFLAGS += -D__XOPEN_OR_POSIX -D_XPG6 -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS
282 endif
283
284 # pkg-config: only look in OZSW tree, not system /usr/lib/pkgconfig
285 PKG_CONFIG_PATH ?= $(BUILD_PREFIX)/lib/pkgconfig:$(BUILD_PREFIX)/share/pkgconfig
286 export PKG_CONFIG_PATH
287
288 # ========================= ENVIRONMENT EXPORTS =========================
289 # These control what variables are passed into configure/build/install envs.
290 # Builds run under "env -i" so only explicitly exported vars are visible.
291
292 STANDARD_EXPORTS ?= HOME PATH
293 LANG_EXPORTS ?= LC_ALL
294
295 CONFIGURE_ENV_LC_ALL ?= C
296 BUILD_ENV_LC_ALL ?= C
297 INSTALL_ENV_LC_ALL ?= C
298
299 DIRECTORY_EXPORTS = prefix exec_prefix bindir sbindir libexecdir
300 DIRECTORY_EXPORTS += datadir sysconfdir sharedstatedir localstatedir libdir
301 DIRECTORY_EXPORTS += infodir includedir mandir docdir sourcedir
302
303 # Key compiler vars; CPPFLAGS is included so -I$(BUILD_PREFIX)/include is passed
304 COMPILER_EXPORTS = CPPFLAGS CFLAGS CXXFLAGS LDFLAGS
305 COMPILER_EXPORTS += FFLAGS FCFLAGS F77 FC CC CXX
306
307 # Solaris /usr/bin/sed truncates output with many -e flags; gnulib-based packages
308 # use SED during configure to substitute their generated headers. Always point
309 # configure at gsed so the generated Makefiles use it instead of system sed.
310 SED ?= /usr/bin/gsed
311 TOOL_EXPORTS ?= SED
312
313 GARPKG_EXPORTS += GARCH GAROSREL
314
315 # Propagate bash SHELL as a command-line override to package submakes so it
316 # takes precedence over the "SHELL = /bin/sh" that autoconf-generated
317 # Makefiles set unconditionally.
318 BUILD_OVERRIDE_VARS += SHELL
319 BUILD_OVERRIDE_VAR_SHELL = /usr/bin/bash
320 INSTALL_OVERRIDE_VARS += SHELL
321 INSTALL_OVERRIDE_VAR_SHELL = /usr/bin/bash
322
323 COMMON_EXPORTS ?= $(STANDARD_EXPORTS) $(LANG_EXPORTS) $(DIRECTORY_EXPORTS) $(COMPILER_EXPORTS) $(TOOL_EXPORTS) $(GARPKG_EXPORTS) $(EXTRA_COMMON_EXPORTS)
324
325 CONFIGURE_EXPORTS ?= $(COMMON_EXPORTS) $(EXTRA_CONFIGURE_EXPORTS) PKG_CONFIG_PATH DESTDIR
326 BUILD_EXPORTS ?= $(COMMON_EXPORTS) $(EXTRA_BUILD_EXPORTS)
327 INSTALL_EXPORTS ?= $(COMMON_EXPORTS) $(EXTRA_INSTALL_EXPORTS) DESTDIR
328
329 CONFIGURE_ENV ?= $(foreach TTT,$(filter-out $(NO_CONFIGURE_EXPORTS),$(CONFIGURE_EXPORTS)),$(TTT)="$(or $(CONFIGURE_ENV_$(TTT)),$($(TTT)))") $(EXTRA_CONFIGURE_ENV)
330 BUILD_ENV ?= $(foreach TTT,$(filter-out $(NO_BUILD_EXPORTS),$(BUILD_EXPORTS)),$(TTT)="$(or $(BUILD_ENV_$(TTT)),$($(TTT)))") $(EXTRA_BUILD_ENV)
331 INSTALL_ENV ?= $(foreach TTT,$(filter-out $(NO_INSTALL_EXPORTS),$(INSTALL_EXPORTS)),$(TTT)="$(or $(INSTALL_ENV_$(TTT)),$($(TTT)))") $(EXTRA_INSTALL_ENV)
332
333 # Standard scripts (may be overridden per package)
334 CONFIGURE_SCRIPTS ?= $(WORKSRC)/configure
335 BUILD_SCRIPTS ?= $(WORKSRC)/Makefile
336 TEST_SCRIPTS =
337 INSTALL_SCRIPTS ?= $(WORKSRC)/Makefile
338
339 # GitHub URL support: define host so findstring/case patterns work correctly
340 GITHUB_HOST ?= github.com
341 GITHUB_REFERENCE ?=
342
343 # ========================= ISA CONFIGURATION =========================
344 # OpenSolaris i386 only (snv_111b). No SPARC, no 64-bit by default.
345
346 ISALIST_i386 = pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386
347 ISALIST_amd64 = amd64 $(ISALIST_i386)
348 ISALIST = $(ISALIST_amd64)
349
350 # GCC9 compiler flags per ISA
351 ARCHFLAGS_GCC9_pentium_pro+mmx ?= -m32 -march=pentium-mmx
352 ARCHFLAGS_GCC9_pentium_pro ?= -m32 -march=pentiumpro
353 ARCHFLAGS_GCC9_pentium+mmx ?= -m32 -march=pentium-mmx
354 ARCHFLAGS_GCC9_pentium ?= -m32 -march=pentium
355 ARCHFLAGS_GCC9_i486 ?= -m32 -march=i486
356 ARCHFLAGS_GCC9_i386 ?= -m32 -march=i386
357 ARCHFLAGS_GCC9_amd64 ?= -m64 -march=x86-64
358
359 MEMORYMODEL_pentium_pro+mmx = 32
360 MEMORYMODEL_pentium_pro = 32
361 MEMORYMODEL_pentium+mmx = 32
362 MEMORYMODEL_pentium = 32
363 MEMORYMODEL_i486 = 32
364 MEMORYMODEL_i386 = 32
365 MEMORYMODEL_amd64 = 64
366
367 MEMORYMODEL = $(MEMORYMODEL_$(ISA))
368
369 MEMORYMODEL_LIBDIR_32 = .
370 MEMORYMODEL_LIBDIR_64 = 64
371 MEMORYMODEL_BINDIR_32 = $(ISABINDIR_$(ISA_DEFAULT_$(GARCH)))
372 MEMORYMODEL_BINDIR_64 = $(ISABINDIR_$(ISA_DEFAULT64_$(GARCH)))
373
374 MM_LIBDIR = $(MEMORYMODEL_LIBDIR_$(MEMORYMODEL))
375 MM_BINDIR = $(MEMORYMODEL_BINDIR_$(MEMORYMODEL))
376
377 # Build optimization flags
378 OPT_FLAGS_GCC ?= -O2 -pipe -fno-omit-frame-pointer
379 OPT_FLAGS_GCC9 ?= $(OPT_FLAGS_GCC)
380 OPT_FLAGS_GCC9_i386 ?= $(OPT_FLAGS_GCC9)
381 DBG_FLAGS_GCC9 ?= -g
382 DBG_FLAGS_GCC9_i386 ?= $(DBG_FLAGS_GCC9)
383
384 FLAVOR_FLAGS ?= $($(GARFLAVOR)_ISAFLAGS_$(GARCOMPILER)_$(ISA)) $($(GARFLAVOR)_FLAGS_$(GARCOMPILER)_$(GARCH))
385 FLAVOR_FLAGS += $(EXTRA_$(GARFLAVOR)_FLAGS_$(GARCOMPILER)_$(GARCH)) $(EXTRA_$(GARFLAVOR)_FLAGS_$(GARCOMPILER))
386
387 # ISA defaults per OS release (GAROSREL = 5.11 on OpenSolaris)
388 ISA_DEFAULT_i386-5.11 ?= i386
389 ISA_DEFAULT64_i386-5.11 ?= amd64
390 ISA_DEFAULT_i386 ?= $(ISA_DEFAULT_i386-$(GAROSREL))
391 ISA_DEFAULT64_i386 ?= $(ISA_DEFAULT64_i386-$(GAROSREL))
392
393 ISA_DEFAULT ?= $(ISA_DEFAULT_$(GARCH))
394 ISA_DEFAULT64 ?= $(ISA_DEFAULT64_$(GARCH))
395
396 # Populate per-compiler ISALIST from ARCHFLAGS (exclude ERROR entries)
397 $(foreach C,$(GARCOMPILERS),$(eval ISALIST_$(C) ?= $(foreach I,$(ISALIST),$(if $(filter-out ERROR,$(ARCHFLAGS_$C_$I)),$I))))
398
399 # Library and binary subdirectories per ISA
400 ISALIBDIR_$(ISA_DEFAULT_i386) ?= .
401 $(foreach I,$(ISALIST),$(eval ISALIBDIR_$(I) ?= $I))
402 ISALIBDIR ?= $(ISALIBDIR_$(ISA))
403
404 $(foreach I,$(ISALIST),$(eval ISABINDIR_$(I) ?= $(ISALIBDIR_$(I))))
405 ISABINDIR ?= $(ISABINDIR_$(ISA))
406
407 # Compute what ISAs to build (32-bit only by default; set BUILD64=1 for 64-bit)
408 remove-duplicates = $(if $1,$(firstword $1) $(call remove-duplicates,$(filter-out $(firstword $1),$1)))
409 REQUESTED_ISAS ?= $(strip $(call remove-duplicates,\
410 $(foreach A,$(GARCHLIST),\
411 $(if $(BUILD64_ONLY),,$(ISA_DEFAULT_$A)) \
412 $(if $(or $(BUILD64),$(BUILD64_LIBS_ONLY)),$(ISA_DEFAULT64_$A)) \
413 $(EXTRA_BUILD_ISAS_$A)) \
414 $(EXTRA_BUILD_ISAS)))
415
416 KERNELISA := $(shell isainfo -k 2>/dev/null || echo i386)
417
418 NEEDED_ISAS ?= $(strip \
419 $(filter $(ISALIST_$(KERNELISA)),$(filter $(ISALIST_$(ISA_DEFAULT64_$(GARCH))),$(REQUESTED_ISAS))) \
420 $(filter-out $(ISALIST_$(KERNELISA)),$(filter $(ISALIST_$(ISA_DEFAULT64_$(GARCH))),$(REQUESTED_ISAS))))
421 BUILD_ISAS ?= $(filter $(ISALIST_$(KERNELISA)),$(NEEDED_ISAS))
422
423 # ISA sanity check - verify we can build the requested ISA on this kernel
424 verify-isa:
425 ifeq (,$(filter $(ISA),$(ISALIST_$(KERNELISA))))
426 $(error The ISA '$(ISA)' cannot be built on kernel arch '$(KERNELISA)')
427 endif
428 @$(MAKECOOKIE)
429
430 # Disable git snapshotting (no git identity on build host)
431 NOGITPATCH ?= 1
432
433 # Disable checkpkg (requires Python 2.6+, system has 2.4)
434 ENABLE_CHECK ?= 0