ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ozone/mgar/pkg/gcc12/Makefile
Revision: 27
Committed: Mon Jun 22 05:25:10 2026 UTC (4 weeks, 1 day ago) by operz
File size: 5116 byte(s)
Log Message:
gcc12: add GCC 12.5.0 recipe (C, C++, Fortran) for OpenSolaris

- Bootstrap via OZSWgcc9; out-of-tree build in ../gcc-build
- post-extract: POSIX_HDR/SUN_PROC_STUB libiberty fixes, O_DIRECTORY
  guard for c++tools/resolver.cc, madvise/MADV_RANDOM decl in
  gcc/cp/module.cc, libiberty/ansidecl.h PTR shim, COMPILE.c
  flag reorder in libiberty/Makefile.in (INCDIR before CPPFLAGS)
- pre-configure: patches download_prerequisites for ftp:// + gtar
- Go disabled (getrandom/getgrouplist absent on snv_111b)
- Splits into OZSWgcc12rt (shared runtime libs) + OZSWgcc12 (compiler)

File Contents

# Content
1 # vim: ft=make ts=4 sw=4 noet
2 .DEFAULT_GOAL := all
3
4 NAME = gcc
5 VERSION = 12.5.0
6 GARTYPE = v2
7
8 DESCRIPTION = GNU Compiler Collection 12.x
9 define BLURB
10 GCC 12.x C, C++, and Fortran compiler. Builds into /opt/ozsw using
11 GCC 9.x (OZSWgcc9) as the bootstrap compiler.
12 After installation, update GCC12_CC_HOME = /opt/ozsw in garrc and set
13 GARCOMPILER = GCC12.
14 endef
15
16 MASTER_SITES = http://ftp.gnu.org/gnu/gcc/gcc-$(VERSION)/
17 DISTFILES += $(DISTNAME).tar.gz
18
19 LICENSE = COPYING3
20
21 BUILD_DEP_PKGS += OZSWbinutils OZSWzlib OZSWgcc9
22
23 # -----------------------------------------------------------------------
24 # OZSWgcc12rt - GCC 12 runtime libraries only.
25 # -----------------------------------------------------------------------
26 PACKAGES += OZSWgcc12rt
27 SPKG_DESC_OZSWgcc12rt = GCC 12.x runtime libraries (libgcc_s, libstdc++, libgfortran, libgomp, ...)
28 CATALOGNAME_OZSWgcc12rt = gcc12rt
29 RUNTIME_DEP_PKGS_OZSWgcc12rt += OZSWzlib
30 PKGFILES_OZSWgcc12rt = .*/lib/libgcc_s\.so.*
31 PKGFILES_OZSWgcc12rt += .*/lib/libstdc\+\+\.so.*
32 PKGFILES_OZSWgcc12rt += .*/lib/libgfortran\.so.*
33 PKGFILES_OZSWgcc12rt += .*/lib/libgomp\.so.*
34 PKGFILES_OZSWgcc12rt += .*/lib/libquadmath\.so.*
35 PKGFILES_OZSWgcc12rt += .*/lib/libitm\.so.*
36 PKGFILES_OZSWgcc12rt += .*/lib/libatomic\.so.*
37 PKGFILES_OZSWgcc12rt += .*/lib/libssp\.so.*
38
39 # -----------------------------------------------------------------------
40 # OZSWgcc12 - the compiler, headers, static support libs, and tools.
41 # -----------------------------------------------------------------------
42 PACKAGES += OZSWgcc12
43 SPKG_DESC_OZSWgcc12 = GNU Compiler Collection 12.x (C, C++, Fortran) - compiler
44 CATALOGNAME_OZSWgcc12 = gcc12
45 RUNTIME_DEP_PKGS_OZSWgcc12 += OZSWgcc12rt OZSWzlib
46
47 # -----------------------------------------------------------------------
48 # Build configuration
49 # -----------------------------------------------------------------------
50
51 OBJDIR = ../gcc-build
52
53 PARALLELMFLAGS = -j4
54
55 # Expose madvise, O_CLOEXEC, etc. from Solaris system headers
56 EXTENSIONS = 1
57
58 POSIX_HDR = \#ifndef _XOPEN_SOURCE\n\#define _XOPEN_SOURCE 600\n\#endif\n\#ifndef _POSIX_C_SOURCE\n\#define _POSIX_C_SOURCE 200112L\n\#endif\n\#include <sys/types.h>\n\#include <sys/stat.h>\n\#include <unistd.h>
59 SUN_PROC_STUB = \#ifdef __sun\n\#define PROC_UNSUPPORTED 1\n\#endif
60
61 post-extract:
62 @echo "==> Applying Solaris libiberty compatibility fixes"
63 @for f in getpwd.c pex-common.c pex-common.h unlink-if-ordinary.c; do \
64 gsed -i "1s|^|$(POSIX_HDR)\n|" $(WORKSRC)/libiberty/$$f; \
65 done
66 @for f in pex-unix.c regex.c; do \
67 gsed -i "1s|^|$(SUN_PROC_STUB)\n\n|" $(WORKSRC)/libiberty/$$f; \
68 done
69 @echo "==> Applying Solaris c++tools/module compatibility fixes"
70 @gsed -i '1s|^|#ifndef O_DIRECTORY\n# define O_DIRECTORY 0\n#endif\n|' \
71 $(WORKSRC)/c++tools/resolver.cc
72 @echo "==> Creating libiberty/ansidecl.h shim (modern OZSWbinutils ansidecl.h dropped PTR)"
73 @printf '#ifndef PTR\n# define PTR void *\n#endif\n#include_next "ansidecl.h"\n' \
74 > $(WORKSRC)/libiberty/ansidecl.h
75 @gsed -i 's|^/\* Some open(2) flag differences|/* Solaris: madvise() and MADV_RANDOM are hidden when _POSIX_C_SOURCE > 2\n * or _XPG4_2 is defined (the POSIX mmap path). Add explicit declarations. */\n#if defined (__sun) \&\& MAPPED_READING\nextern "C" int madvise (char *, size_t, int);\n# ifndef MADV_RANDOM\n# define MADV_RANDOM 1\n# endif\n#endif\n\n/* Some open(2) flag differences|' \
76 $(WORKSRC)/gcc/cp/module.cc
77 @$(MAKECOOKIE)
78
79 post-configure:
80 @echo "==> Reordering COMPILE.c in libiberty Makefiles (INCDIR before CPPFLAGS)"
81 @for mk in \
82 $(OBJDIR)/libiberty/Makefile \
83 $(OBJDIR)/build-i386-pc-solaris2.11/libiberty/Makefile; do \
84 test -f $$mk && \
85 gsed -i 's|^\(COMPILE.c = \$$(CC) -c -DHAVE_CONFIG_H \$$(CFLAGS)\) \$$(CPPFLAGS) \(-I. -I\$$(INCDIR)\)|\1 \2 $$(CPPFLAGS)|' $$mk || true; \
86 done
87 @echo "==> Patching runtime_sysinfo.go: add _O_CLOEXEC=0 (absent from snv_111b fcntl.h)"
88 @gsed -i '/^const _FD_CLOEXEC/a const _O_CLOEXEC = 0' \
89 $(OBJDIR)/i386-pc-solaris2.11/libgo/runtime_sysinfo.go || true
90 @$(MAKECOOKIE)
91
92 # Download GCC prerequisites (GMP, MPFR, MPC, ISL) into the source tree.
93 # Patch the script to use ftp:// and gtar (required on OpenSolaris).
94 pre-configure:
95 @echo "==> Patching contrib/download_prerequisites for OpenSolaris"
96 gsed -i 's|https\?:|ftp:|g' $(WORKSRC)/contrib/download_prerequisites
97 gsed -i 's/tar -x/gtar -x/g' $(WORKSRC)/contrib/download_prerequisites
98 cd $(WORKSRC) && sh contrib/download_prerequisites --no-verify
99 @$(MAKECOOKIE)
100
101 CONFIGURE_ARGS = --prefix=$(prefix)
102 CONFIGURE_ARGS += --enable-languages=c,c++,fortran
103 CONFIGURE_ARGS += --with-gnu-as
104 CONFIGURE_ARGS += --with-as=$(bindir)/as
105 CONFIGURE_ARGS += --with-gnu-ld
106 CONFIGURE_ARGS += --with-ld=$(bindir)/ld
107 CONFIGURE_ARGS += --disable-libsanitizer
108 CONFIGURE_ARGS += --disable-multilib
109 CONFIGURE_ARGS += --with-zlib=$(BUILD_PREFIX)
110 CONFIGURE_ARGS += LDFLAGS_FOR_TARGET="-Wl,-R,$(BUILD_PREFIX)/lib"
111
112 # Keep GCC's internal static libs in OZSWgcc12
113 MERGE_EXCLUDE_STATICLIBS =
114
115 EXTRA_CC_FLAGS = -fPIC
116 EXTRA_CXX_FLAGS = -fPIC
117
118 include gar/category.mk