ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ozone/mgar/gar/gar.conf.mk
Revision: 28
Committed: Mon Jun 22 05:41:08 2026 UTC (4 weeks, 1 day ago) by operz
File size: 17495 byte(s)
Log Message:
gar.conf.mk: add GCC12 compiler block, switch GARCOMPILER default path

- Add GCC12 to GARCOMPILERS; add GCC12_{CC,CXX,F77,FC,*_FLAGS,CC_VERSION} vars
- PATH and BUILD_PATH now use $(GARCOMPILER)_CC_HOME instead of hardcoded GCC9
- garrc sets GARCOMPILER=GCC12, GCC12_CC_HOME=/opt/ozsw

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 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