Sat May 30 22:45:36 2020 UTC ()
mk/compiler: Fix version check for GCC 10

Caused SSP flags to be omitted in GCC 10. Check flipped because all new
GCC versions can be expected to support it.


(sjmulder)
diff -r1.210 -r1.211 pkgsrc/mk/compiler/gcc.mk

cvs diff -r1.210 -r1.211 pkgsrc/mk/compiler/gcc.mk (switch to unified diff)

--- pkgsrc/mk/compiler/gcc.mk 2020/03/30 09:39:24 1.210
+++ pkgsrc/mk/compiler/gcc.mk 2020/05/30 22:45:36 1.211
@@ -1,1070 +1,1070 @@ @@ -1,1070 +1,1070 @@
1# $NetBSD: gcc.mk,v 1.210 2020/03/30 09:39:24 nia Exp $ 1# $NetBSD: gcc.mk,v 1.211 2020/05/30 22:45:36 sjmulder Exp $
2# 2#
3# This is the compiler definition for the GNU Compiler Collection. 3# This is the compiler definition for the GNU Compiler Collection.
4# 4#
5# User-settable variables: 5# User-settable variables:
6# 6#
7# GCCBASE 7# GCCBASE
8# If using a native GCC and the compiler is not in $PATH then 8# If using a native GCC and the compiler is not in $PATH then
9# this should be set to the base installation directory. 9# this should be set to the base installation directory.
10# 10#
11# USE_NATIVE_GCC 11# USE_NATIVE_GCC
12# When set to "yes", the native gcc is used, no matter which 12# When set to "yes", the native gcc is used, no matter which
13# compiler version a package requires. 13# compiler version a package requires.
14# 14#
15# USE_PKGSRC_GCC 15# USE_PKGSRC_GCC
16# When set to "yes", use an appropriate version of GCC from 16# When set to "yes", use an appropriate version of GCC from
17# pkgsrc based on GCC_REQD instead of the native compiler. 17# pkgsrc based on GCC_REQD instead of the native compiler.
18# 18#
19# USE_PKGSRC_GCC_RUNTIME 19# USE_PKGSRC_GCC_RUNTIME
20# When set to "yes", the runtime gcc libraries (libgcc, libstdc++ 20# When set to "yes", the runtime gcc libraries (libgcc, libstdc++
21# etc) will be used from pkgsrc rather than the native compiler. 21# etc) will be used from pkgsrc rather than the native compiler.
22# 22#
23# GCC_VERSION_SUFFIX 23# GCC_VERSION_SUFFIX
24# Optional suffix for GCC binaries, i.e. if the installed names are like 24# Optional suffix for GCC binaries, i.e. if the installed names are like
25# /usr/bin/g++-5, /usr/bin/gcc-5 etc. 25# /usr/bin/g++-5, /usr/bin/gcc-5 etc.
26 26
27# Package-settable variables: 27# Package-settable variables:
28# 28#
29# GCC_REQD 29# GCC_REQD
30# The minimum version of the GNU Compiler Collection that is 30# The minimum version of the GNU Compiler Collection that is
31# required to build this package. Setting this variable doesn't 31# required to build this package. Setting this variable doesn't
32# change the compiler that is used for building packages. See 32# change the compiler that is used for building packages. See
33# ONLY_FOR_COMPILER for that purpose. This is a list of version 33# ONLY_FOR_COMPILER for that purpose. This is a list of version
34# numbers, of which the maximum version is the definitive one. 34# numbers, of which the maximum version is the definitive one.
35# 35#
36# This variable can also be set by the user when USE_PKGSRC_GCC 36# This variable can also be set by the user when USE_PKGSRC_GCC
37# is in effect to ensure that a specific compiler is used for 37# is in effect to ensure that a specific compiler is used for
38# packages which do not specify a higher version. 38# packages which do not specify a higher version.
39# 39#
40# USE_GCC_RUNTIME 40# USE_GCC_RUNTIME
41# Packages which build shared libraries but do not use libtool to 41# Packages which build shared libraries but do not use libtool to
42# do so should define this variable. It is used to determine whether 42# do so should define this variable. It is used to determine whether
43# the gcc runtime should be depended upon when a user has enabled 43# the gcc runtime should be depended upon when a user has enabled
44# USE_PKGSRC_GCC_RUNTIME. 44# USE_PKGSRC_GCC_RUNTIME.
45# 45#
46# System-defined variables: 46# System-defined variables:
47# 47#
48# CC_VERSION 48# CC_VERSION
49# A string of the form "gcc-4.3.2" 49# A string of the form "gcc-4.3.2"
50# 50#
51# CC_VERSION_STRING 51# CC_VERSION_STRING
52# The same(?) as CC_VERSION. FIXME: What's the difference between 52# The same(?) as CC_VERSION. FIXME: What's the difference between
53# the two? 53# the two?
54# 54#
55# Keywords: gcc 55# Keywords: gcc
56# 56#
57 57
58.if !defined(COMPILER_GCC_MK) 58.if !defined(COMPILER_GCC_MK)
59COMPILER_GCC_MK= defined 59COMPILER_GCC_MK= defined
60 60
61_VARGROUPS+= gcc 61_VARGROUPS+= gcc
62_USER_VARS.gcc= \ 62_USER_VARS.gcc= \
63 USE_NATIVE_GCC USE_PKGSRC_GCC USE_PKGSRC_GCC_RUNTIME \ 63 USE_NATIVE_GCC USE_PKGSRC_GCC USE_PKGSRC_GCC_RUNTIME \
64 GCCBASE GCC_VERSION_SUFFIX \ 64 GCCBASE GCC_VERSION_SUFFIX \
65 USE_CROSS_COMPILE \ 65 USE_CROSS_COMPILE \
66 PKGSRC_USE_FORTIFY PKGSRC_USE_RELRO PKGSRC_USE_SSP \ 66 PKGSRC_USE_FORTIFY PKGSRC_USE_RELRO PKGSRC_USE_SSP \
67 COMPILER_USE_SYMLINKS CC 67 COMPILER_USE_SYMLINKS CC
68_PKG_VARS.gcc= \ 68_PKG_VARS.gcc= \
69 GCC_REQD USE_GCC_RUNTIME USE_LANGUAGES 69 GCC_REQD USE_GCC_RUNTIME USE_LANGUAGES
70_SYS_VARS.gcc= \ 70_SYS_VARS.gcc= \
71 CC_VERSION CC_VERSION_STRING LANGUAGES.gcc \ 71 CC_VERSION CC_VERSION_STRING LANGUAGES.gcc \
72 CCPATH CPPPATH CXXPATH F77PATH FCPATH \ 72 CCPATH CPPPATH CXXPATH F77PATH FCPATH \
73 PKG_CC PKG_CPP PKG_CXX PKG_FC FC PKGSRC_FORTRAN \ 73 PKG_CC PKG_CPP PKG_CXX PKG_FC FC PKGSRC_FORTRAN \
74 ADAPATH GMKPATH GLKPATH GBDPATH CHPPATH GLSPATH GNTPATH PRPPATH 74 ADAPATH GMKPATH GLKPATH GBDPATH CHPPATH GLSPATH GNTPATH PRPPATH
75_DEF_VARS.gcc= \ 75_DEF_VARS.gcc= \
76 MAKEFLAGS IMAKEOPTS \ 76 MAKEFLAGS IMAKEOPTS \
77 CFLAGS LDFLAGS \ 77 CFLAGS LDFLAGS \
78 PREPEND_PATH \ 78 PREPEND_PATH \
79 COMPILER_INCLUDE_DIRS COMPILER_LIB_DIRS \ 79 COMPILER_INCLUDE_DIRS COMPILER_LIB_DIRS \
80 CWRAPPERS_APPEND.cc CWRAPPERS_APPEND.cxx CWRAPPERS_APPEND.ld \ 80 CWRAPPERS_APPEND.cc CWRAPPERS_APPEND.cxx CWRAPPERS_APPEND.ld \
81 PKG_ADA PKG_GMK PKG_GLK PKG_GBD PKG_CHP PKG_GNT PKG_GLS PKG_PRP \ 81 PKG_ADA PKG_GMK PKG_GLK PKG_GBD PKG_CHP PKG_GNT PKG_GLS PKG_PRP \
82 PKGSRC_ADA PKGSRC_GMK PKGSRC_GLK PKGSRC_GBD PKGSRC_CHP PKGSRC_GNT PKGSRC_GLS PKGSRC_PRP \ 82 PKGSRC_ADA PKGSRC_GMK PKGSRC_GLK PKGSRC_GBD PKGSRC_CHP PKGSRC_GNT PKGSRC_GLS PKGSRC_PRP \
83 _CC _COMPILER_RPATH_FLAG _COMPILER_STRIP_VARS \ 83 _CC _COMPILER_RPATH_FLAG _COMPILER_STRIP_VARS \
84 _GCCBINDIR _GCC_ARCHDIR _GCC_BIN_PREFIX _GCC_CFLAGS \ 84 _GCCBINDIR _GCC_ARCHDIR _GCC_BIN_PREFIX _GCC_CFLAGS \
85 _GCC_CC _GCC_CPP _GCC_CXX _GCC_DEPENDENCY _GCC_DEPENDS \ 85 _GCC_CC _GCC_CPP _GCC_CXX _GCC_DEPENDENCY _GCC_DEPENDS \
86 _GCC_DIST_NAME _GCC_DIST_VERSION \ 86 _GCC_DIST_NAME _GCC_DIST_VERSION \
87 _GCC_FC _GCC_LDFLAGS _GCC_LIBDIRS _GCC_PKG \ 87 _GCC_FC _GCC_LDFLAGS _GCC_LIBDIRS _GCC_PKG \
88 _GCC_PKGBASE _GCC_PKGSRCDIR _GCC_PKG_SATISFIES_DEP \ 88 _GCC_PKGBASE _GCC_PKGSRCDIR _GCC_PKG_SATISFIES_DEP \
89 _GCC_PREFIX _GCC_REQD _GCC_STRICTEST_REQD _GCC_SUBPREFIX \ 89 _GCC_PREFIX _GCC_REQD _GCC_STRICTEST_REQD _GCC_SUBPREFIX \
90 _GCC_TEST_DEPENDS _GCC_NEEDS_A_FORTRAN _GCC_VARS _GCC_VERSION \ 90 _GCC_TEST_DEPENDS _GCC_NEEDS_A_FORTRAN _GCC_VARS _GCC_VERSION \
91 _GCC_VERSION_STRING \ 91 _GCC_VERSION_STRING \
92 _GCC_ADA _GCC_GMK _GCC_GLK _GCC_GBD _GCC_CHP _GCC_GLS _GCC_GNT _GCC_PRP \ 92 _GCC_ADA _GCC_GMK _GCC_GLK _GCC_GBD _GCC_CHP _GCC_GLS _GCC_GNT _GCC_PRP \
93 _IGNORE_GCC _IGNORE_GCC3CXX _IGNORE_GCC3F77 _IGNORE_GCC3OBJC \ 93 _IGNORE_GCC _IGNORE_GCC3CXX _IGNORE_GCC3F77 _IGNORE_GCC3OBJC \
94 _IS_BUILTIN_GCC \ 94 _IS_BUILTIN_GCC \
95 _LANGUAGES.gcc \ 95 _LANGUAGES.gcc \
96 _LINKER_RPATH_FLAG \ 96 _LINKER_RPATH_FLAG \
97 _NEED_GCC2 _NEED_GCC3 _NEED_GCC34 _NEED_GCC44 \ 97 _NEED_GCC2 _NEED_GCC3 _NEED_GCC34 _NEED_GCC44 \
98 _NEED_GCC48 _NEED_GCC49 _NEED_GCC5 _NEED_GCC6 \ 98 _NEED_GCC48 _NEED_GCC49 _NEED_GCC5 _NEED_GCC6 \
99 _NEED_GCC7 _NEED_GCC8 _NEED_GCC_AUX _NEED_NEWER_GCC \ 99 _NEED_GCC7 _NEED_GCC8 _NEED_GCC_AUX _NEED_NEWER_GCC \
100 _PKGSRC_GCC_VERSION \ 100 _PKGSRC_GCC_VERSION \
101 _USE_GCC_SHLIB _USE_PKGSRC_GCC \ 101 _USE_GCC_SHLIB _USE_PKGSRC_GCC \
102 _WRAP_EXTRA_ARGS.CC \ 102 _WRAP_EXTRA_ARGS.CC \
103 _EXTRA_CC_DIRS \ 103 _EXTRA_CC_DIRS \
104 _CXX_STD_VERSIONS \ 104 _CXX_STD_VERSIONS \
105 ${_CXX_STD_VERSIONS:@std@_CXX_STD_FLAG.${std}@} \ 105 ${_CXX_STD_VERSIONS:@std@_CXX_STD_FLAG.${std}@} \
106 _MKPIE_CFLAGS.gcc _MKPIE_LDFLAGS.gcc \ 106 _MKPIE_CFLAGS.gcc _MKPIE_LDFLAGS.gcc \
107 _FORTIFY_CFLAGS _RELRO_LDFLAGS _STACK_CHECK_CFLAGS \ 107 _FORTIFY_CFLAGS _RELRO_LDFLAGS _STACK_CHECK_CFLAGS \
108 _CTF_CFLAGS \ 108 _CTF_CFLAGS \
109 _GCC_DIR \ 109 _GCC_DIR \
110 _ALIASES.CC _ALIASES.CPP _ALIASES.CXX _ALIASES.FC \ 110 _ALIASES.CC _ALIASES.CPP _ALIASES.CXX _ALIASES.FC \
111 _ALIASES.ADA _ALIASES.GMK _ALIASES.GLK _ALIASES.GBD \ 111 _ALIASES.ADA _ALIASES.GMK _ALIASES.GLK _ALIASES.GBD \
112 _ALIASES.CHP _ALIASES.PRP _ALIASES.GLS _ALIASES.GNT \ 112 _ALIASES.CHP _ALIASES.PRP _ALIASES.GLS _ALIASES.GNT \
113 _COMPILER_ABI_FLAG.32 _COMPILER_ABI_FLAG.64 \ 113 _COMPILER_ABI_FLAG.32 _COMPILER_ABI_FLAG.64 \
114 _COMPILER_ABI_FLAG.n32 _COMPILER_ABI_FLAG.o32 \ 114 _COMPILER_ABI_FLAG.n32 _COMPILER_ABI_FLAG.o32 \
115 _SSP_CFLAGS \ 115 _SSP_CFLAGS \
116 _CXX_STD_FLAG.c++03 _CXX_STD_FLAG.gnu++03 116 _CXX_STD_FLAG.c++03 _CXX_STD_FLAG.gnu++03
117_USE_VARS.gcc= \ 117_USE_VARS.gcc= \
118 MACHINE_ARCH PATH DRAGONFLY_CCVER OPSYS LOCALBASE \ 118 MACHINE_ARCH PATH DRAGONFLY_CCVER OPSYS LOCALBASE \
119 USE_LIBTOOL \ 119 USE_LIBTOOL \
120 LIBABISUFFIX \ 120 LIBABISUFFIX \
121 COMPILER_RPATH_FLAG \ 121 COMPILER_RPATH_FLAG \
122 MACHINE_GNU_PLATFORM \ 122 MACHINE_GNU_PLATFORM \
123 WRKDIR MACHINE_PLATFORM PKGPATH \ 123 WRKDIR MACHINE_PLATFORM PKGPATH \
124 _PKGSRC_MKPIE _PKGSRC_MKREPRO _MKREPRO_CFLAGS.gcc \ 124 _PKGSRC_MKPIE _PKGSRC_MKREPRO _MKREPRO_CFLAGS.gcc \
125 _PKGSRC_USE_FORTIFY _PKGSRC_USE_RELRO _PKGSRC_USE_STACK_CHECK \ 125 _PKGSRC_USE_FORTIFY _PKGSRC_USE_RELRO _PKGSRC_USE_STACK_CHECK \
126 _OPSYS_INCLUDE_DIRS _OPSYS_LIB_DIRS 126 _OPSYS_INCLUDE_DIRS _OPSYS_LIB_DIRS
127_IGN_VARS.gcc= \ 127_IGN_VARS.gcc= \
128 _GCC2_PATTERNS _GCC3_PATTERNS _GCC34_PATTERNS _GCC44_PATTERNS \ 128 _GCC2_PATTERNS _GCC3_PATTERNS _GCC34_PATTERNS _GCC44_PATTERNS \
129 _GCC48_PATTERNS _GCC49_PATTERNS _GCC5_PATTERNS _GCC6_PATTERNS \ 129 _GCC48_PATTERNS _GCC49_PATTERNS _GCC5_PATTERNS _GCC6_PATTERNS \
130 _GCC7_PATTERNS _GCC8_PATTERNS _GCC_AUX_PATTERNS 130 _GCC7_PATTERNS _GCC8_PATTERNS _GCC_AUX_PATTERNS
131_LISTED_VARS.gcc= \ 131_LISTED_VARS.gcc= \
132 MAKEFLAGS IMAKEOPTS LDFLAGS PREPEND_PATH 132 MAKEFLAGS IMAKEOPTS LDFLAGS PREPEND_PATH
133.include "../../mk/bsd.prefs.mk" 133.include "../../mk/bsd.prefs.mk"
134 134
135USE_NATIVE_GCC?= no 135USE_NATIVE_GCC?= no
136USE_PKGSRC_GCC?= no 136USE_PKGSRC_GCC?= no
137USE_PKGSRC_GCC_RUNTIME?=no 137USE_PKGSRC_GCC_RUNTIME?=no
138 138
139GCC_REQD+= 2.8.0 139GCC_REQD+= 2.8.0
140 140
141# gcc2 doesn't support c99 and amd64 141# gcc2 doesn't support c99 and amd64
142.if !empty(USE_LANGUAGES:Mc99) || ${MACHINE_ARCH} == "x86_64" 142.if !empty(USE_LANGUAGES:Mc99) || ${MACHINE_ARCH} == "x86_64"
143GCC_REQD+= 3.0 143GCC_REQD+= 3.0
144.endif 144.endif
145 145
146# Only one compiler defined here supports Ada: lang/gcc5-aux 146# Only one compiler defined here supports Ada: lang/gcc5-aux
147# If the Ada language is requested, force lang/gcc5-aux to be selected 147# If the Ada language is requested, force lang/gcc5-aux to be selected
148.if !empty(USE_LANGUAGES:Mada) 148.if !empty(USE_LANGUAGES:Mada)
149GCC_REQD+= 20120614 149GCC_REQD+= 20120614
150.endif 150.endif
151 151
152# _GCC_DIST_VERSION is the highest version of GCC installed by the pkgsrc 152# _GCC_DIST_VERSION is the highest version of GCC installed by the pkgsrc
153# without the PKGREVISIONs. 153# without the PKGREVISIONs.
154_GCC_DIST_NAME:= gcc8 154_GCC_DIST_NAME:= gcc8
155.include "../../lang/${_GCC_DIST_NAME}/version.mk" 155.include "../../lang/${_GCC_DIST_NAME}/version.mk"
156_GCC_DIST_VERSION:= ${${_GCC_DIST_NAME:tu}_DIST_VERSION} 156_GCC_DIST_VERSION:= ${${_GCC_DIST_NAME:tu}_DIST_VERSION}
157 157
158# _GCC2_PATTERNS matches N s.t. N <= 2.95.3. 158# _GCC2_PATTERNS matches N s.t. N <= 2.95.3.
159_GCC2_PATTERNS= [0-1].* 2.[0-9] 2.[0-9].* 2.[1-8][0-9] 2.[1-8][0-9].* \ 159_GCC2_PATTERNS= [0-1].* 2.[0-9] 2.[0-9].* 2.[1-8][0-9] 2.[1-8][0-9].* \
160 2.9[0-4] 2.9[0-4].* 2.95 2.95.[0-3] 160 2.9[0-4] 2.9[0-4].* 2.95 2.95.[0-3]
161 161
162# _GCC3_PATTERNS matches N s.t. 2.95.3 < N < 3.4. 162# _GCC3_PATTERNS matches N s.t. 2.95.3 < N < 3.4.
163_GCC3_PATTERNS= 2.95.[4-9]* 2.95.[1-9][0-9]* 2.9[6-9] 2.9[6-9].* \ 163_GCC3_PATTERNS= 2.95.[4-9]* 2.95.[1-9][0-9]* 2.9[6-9] 2.9[6-9].* \
164 2.[1-9][0-9][0-9]* 3.[0-3] 3.[0-3].* 164 2.[1-9][0-9][0-9]* 3.[0-3] 3.[0-3].*
165 165
166# _GCC34_PATTERNS matches N s.t. 3.4 <= N < 4. 166# _GCC34_PATTERNS matches N s.t. 3.4 <= N < 4.
167_GCC34_PATTERNS= 3.[4-9] 3.[4-9].* 3.[1-9][0-9]* 167_GCC34_PATTERNS= 3.[4-9] 3.[4-9].* 3.[1-9][0-9]*
168 168
169# _GCC44_PATTERNS matches N s.t. 4.0 <= N < 4.5. 169# _GCC44_PATTERNS matches N s.t. 4.0 <= N < 4.5.
170_GCC44_PATTERNS= 4.[0-4] 4.[0-4].* 170_GCC44_PATTERNS= 4.[0-4] 4.[0-4].*
171 171
172# _GCC48_PATTERNS matches N s.t. 4.5 <= N < 4.9. 172# _GCC48_PATTERNS matches N s.t. 4.5 <= N < 4.9.
173_GCC48_PATTERNS= 4.[5-8] 4.[5-8].* 173_GCC48_PATTERNS= 4.[5-8] 4.[5-8].*
174 174
175# _GCC49_PATTERNS matches N s.t. 4.9 <= N < 4.10. 175# _GCC49_PATTERNS matches N s.t. 4.9 <= N < 4.10.
176_GCC49_PATTERNS= 4.9 4.9.* 176_GCC49_PATTERNS= 4.9 4.9.*
177 177
178# _GCC5_PATTERNS matches N s.t. 5.0 <= N < 6. 178# _GCC5_PATTERNS matches N s.t. 5.0 <= N < 6.
179_GCC5_PATTERNS= 5 5.* 179_GCC5_PATTERNS= 5 5.*
180 180
181# _GCC6_PATTERNS matches N s.t. 6.0 <= N < 7. 181# _GCC6_PATTERNS matches N s.t. 6.0 <= N < 7.
182_GCC6_PATTERNS= 6 6.* 182_GCC6_PATTERNS= 6 6.*
183 183
184# _GCC7_PATTERNS matches N s.t. 7.0 <= N < 8. 184# _GCC7_PATTERNS matches N s.t. 7.0 <= N < 8.
185_GCC7_PATTERNS= 7 7.* 185_GCC7_PATTERNS= 7 7.*
186 186
187# _GCC8_PATTERNS matches N s.t. 8.0 <= N < 9. 187# _GCC8_PATTERNS matches N s.t. 8.0 <= N < 9.
188_GCC8_PATTERNS= 8 8.* 188_GCC8_PATTERNS= 8 8.*
189 189
190# _GCC_AUX_PATTERNS matches 8-digit date YYYYMMDD* 190# _GCC_AUX_PATTERNS matches 8-digit date YYYYMMDD*
191_GCC_AUX_PATTERNS= 20[1-2][0-9][0-1][0-9][0-3][0-9]* 191_GCC_AUX_PATTERNS= 20[1-2][0-9][0-1][0-9][0-3][0-9]*
192 192
193# Override the default from sys.mk if necessary. 193# Override the default from sys.mk if necessary.
194.if ${CC} == cc && ${GCCBASE:U} && !exists(${GCCBASE}/bin/${CC}) && exists(${GCCBASE}/bin/gcc) 194.if ${CC} == cc && ${GCCBASE:U} && !exists(${GCCBASE}/bin/${CC}) && exists(${GCCBASE}/bin/gcc)
195CC= gcc 195CC= gcc
196.endif 196.endif
197 197
198# _CC is the full path to the compiler named by ${CC} if it can be found. 198# _CC is the full path to the compiler named by ${CC} if it can be found.
199.if !defined(_CC) 199.if !defined(_CC)
200_CC:= ${CC:[1]} 200_CC:= ${CC:[1]}
201. if !empty(GCCBASE) && exists(${GCCBASE}/bin) 201. if !empty(GCCBASE) && exists(${GCCBASE}/bin)
202_EXTRA_CC_DIRS= ${GCCBASE}/bin 202_EXTRA_CC_DIRS= ${GCCBASE}/bin
203. endif 203. endif
204. for _dir_ in ${_EXTRA_CC_DIRS} ${PATH:C/\:/ /g} 204. for _dir_ in ${_EXTRA_CC_DIRS} ${PATH:C/\:/ /g}
205. if empty(_CC:M/*) 205. if empty(_CC:M/*)
206. if exists(${_dir_}/${CC:[1]}) 206. if exists(${_dir_}/${CC:[1]})
207_CC:= ${_dir_}/${CC:[1]} 207_CC:= ${_dir_}/${CC:[1]}
208. endif 208. endif
209. endif 209. endif
210. endfor 210. endfor
211. if empty(USE_CROSS_COMPILE:M[yY][eE][sS]) 211. if empty(USE_CROSS_COMPILE:M[yY][eE][sS])
212# Pass along _CC only if we're working on native packages -- don't pass 212# Pass along _CC only if we're working on native packages -- don't pass
213# the cross-compiler on to submakes for building native packages. 213# the cross-compiler on to submakes for building native packages.
214MAKEFLAGS+= _CC=${_CC:Q} 214MAKEFLAGS+= _CC=${_CC:Q}
215. endif 215. endif
216.endif 216.endif
217 217
218.if !defined(_GCC_VERSION) 218.if !defined(_GCC_VERSION)
219# 219#
220# FIXME: Ideally we'd use PKGSRC_SETENV here, but not enough of the tools 220# FIXME: Ideally we'd use PKGSRC_SETENV here, but not enough of the tools
221# infrastructure is loaded for SETENV to be defined when mk/compiler.mk is 221# infrastructure is loaded for SETENV to be defined when mk/compiler.mk is
222# included first. LC_ALL is required here for similar reasons, as ALL_ENV 222# included first. LC_ALL is required here for similar reasons, as ALL_ENV
223# is not defined at this stage. 223# is not defined at this stage.
224# 224#
225_GCC_VERSION_STRING!= \ 225_GCC_VERSION_STRING!= \
226 ( env LC_ALL=C ${_CC} -v 2>&1 | ${GREP} 'gcc version') 2>/dev/null || ${ECHO} 0 226 ( env LC_ALL=C ${_CC} -v 2>&1 | ${GREP} 'gcc version') 2>/dev/null || ${ECHO} 0
227. if !empty(_GCC_VERSION_STRING:Megcs*) 227. if !empty(_GCC_VERSION_STRING:Megcs*)
228_GCC_VERSION= 2.8.1 # egcs is considered to be gcc-2.8.1. 228_GCC_VERSION= 2.8.1 # egcs is considered to be gcc-2.8.1.
229. elif !empty(DRAGONFLY_CCVER) && ${OPSYS} == "DragonFly" 229. elif !empty(DRAGONFLY_CCVER) && ${OPSYS} == "DragonFly"
230_GCC_VERSION!= env CCVER=${DRAGONFLY_CCVER} ${_CC} -dumpversion 230_GCC_VERSION!= env CCVER=${DRAGONFLY_CCVER} ${_CC} -dumpversion
231. elif !empty(_GCC_VERSION_STRING:Mgcc*) 231. elif !empty(_GCC_VERSION_STRING:Mgcc*)
232_GCC_VERSION!= ${_CC} -dumpversion 232_GCC_VERSION!= ${_CC} -dumpversion
233. else 233. else
234_GCC_VERSION= 0 234_GCC_VERSION= 0
235. endif 235. endif
236.endif 236.endif
237_GCC_PKG= gcc-${_GCC_VERSION:C/-.*$//} 237_GCC_PKG= gcc-${_GCC_VERSION:C/-.*$//}
238 238
239.for _version_ in ${_CXX_STD_VERSIONS} 239.for _version_ in ${_CXX_STD_VERSIONS}
240_CXX_STD_FLAG.${_version_}?= -std=${_version_} 240_CXX_STD_FLAG.${_version_}?= -std=${_version_}
241. if !empty(_GCC_VERSION:M[34].[1234].*) 241. if !empty(_GCC_VERSION:M[34].[1234].*)
242_CXX_STD_FLAG.c++03= -std=c++0x 242_CXX_STD_FLAG.c++03= -std=c++0x
243_CXX_STD_FLAG.gnu++03= -std=gnu++0x 243_CXX_STD_FLAG.gnu++03= -std=gnu++0x
244. endif 244. endif
245.endfor 245.endfor
246 246
247.if !empty(_CC:M${LOCALBASE}/*) 247.if !empty(_CC:M${LOCALBASE}/*)
248_IS_BUILTIN_GCC= NO 248_IS_BUILTIN_GCC= NO
249GCC_REQD+= ${_GCC_VERSION} 249GCC_REQD+= ${_GCC_VERSION}
250.else 250.else
251. if !empty(_CC:M/*) 251. if !empty(_CC:M/*)
252# 252#
253# GCC in older versions of Darwin report "Apple Computer ... based on gcc 253# GCC in older versions of Darwin report "Apple Computer ... based on gcc
254# version ...", so we can't just grep for "^gcc". 254# version ...", so we can't just grep for "^gcc".
255# 255#
256. if ${_GCC_VERSION} != "0" 256. if ${_GCC_VERSION} != "0"
257_IS_BUILTIN_GCC= YES 257_IS_BUILTIN_GCC= YES
258. else 258. else
259_IS_BUILTIN_GCC= NO 259_IS_BUILTIN_GCC= NO
260. endif 260. endif
261. else 261. else
262_IS_BUILTIN_GCC= NO 262_IS_BUILTIN_GCC= NO
263. endif 263. endif
264.endif 264.endif
265 265
266# Distill the GCC_REQD list into a single _GCC_REQD value that is the 266# Distill the GCC_REQD list into a single _GCC_REQD value that is the
267# highest version of GCC required. 267# highest version of GCC required.
268# 268#
269_GCC_STRICTEST_REQD?= none 269_GCC_STRICTEST_REQD?= none
270.for _version_ in ${GCC_REQD} 270.for _version_ in ${GCC_REQD}
271. for _pkg_ in gcc-${_version_} 271. for _pkg_ in gcc-${_version_}
272. if ${_GCC_STRICTEST_REQD} == "none" 272. if ${_GCC_STRICTEST_REQD} == "none"
273_GCC_PKG_SATISFIES_DEP= YES 273_GCC_PKG_SATISFIES_DEP= YES
274. for _vers_ in ${GCC_REQD} 274. for _vers_ in ${GCC_REQD}
275. if !empty(_GCC_PKG_SATISFIES_DEP:M[yY][eE][sS]) 275. if !empty(_GCC_PKG_SATISFIES_DEP:M[yY][eE][sS])
276_GCC_PKG_SATISFIES_DEP!= \ 276_GCC_PKG_SATISFIES_DEP!= \
277 if ${PKG_ADMIN} pmatch 'gcc>=${_vers_}' ${_pkg_} 2>/dev/null; then \ 277 if ${PKG_ADMIN} pmatch 'gcc>=${_vers_}' ${_pkg_} 2>/dev/null; then \
278 ${ECHO} "YES"; \ 278 ${ECHO} "YES"; \
279 else \ 279 else \
280 ${ECHO} "NO"; \ 280 ${ECHO} "NO"; \
281 fi 281 fi
282. endif 282. endif
283. endfor 283. endfor
284. if !empty(_GCC_PKG_SATISFIES_DEP:M[yY][eE][sS]) 284. if !empty(_GCC_PKG_SATISFIES_DEP:M[yY][eE][sS])
285_GCC_STRICTEST_REQD= ${_version_} 285_GCC_STRICTEST_REQD= ${_version_}
286. endif 286. endif
287. endif 287. endif
288. endfor 288. endfor
289.endfor 289.endfor
290_GCC_REQD= ${_GCC_STRICTEST_REQD} 290_GCC_REQD= ${_GCC_STRICTEST_REQD}
291 291
292# Determine whether we require GCC-2.x or GCC-3.x by examining _GCC_REQD. 292# Determine whether we require GCC-2.x or GCC-3.x by examining _GCC_REQD.
293_NEED_GCC2?= no 293_NEED_GCC2?= no
294.for _pattern_ in ${_GCC2_PATTERNS} 294.for _pattern_ in ${_GCC2_PATTERNS}
295. if !empty(_GCC_REQD:M${_pattern_}) 295. if !empty(_GCC_REQD:M${_pattern_})
296_NEED_GCC2= yes 296_NEED_GCC2= yes
297. endif 297. endif
298.endfor 298.endfor
299_NEED_GCC3?= no 299_NEED_GCC3?= no
300.for _pattern_ in ${_GCC3_PATTERNS} 300.for _pattern_ in ${_GCC3_PATTERNS}
301. if !empty(_GCC_REQD:M${_pattern_}) 301. if !empty(_GCC_REQD:M${_pattern_})
302_NEED_GCC3= yes 302_NEED_GCC3= yes
303. endif 303. endif
304.endfor 304.endfor
305_NEED_GCC34?= no 305_NEED_GCC34?= no
306.for _pattern_ in ${_GCC34_PATTERNS} 306.for _pattern_ in ${_GCC34_PATTERNS}
307. if !empty(_GCC_REQD:M${_pattern_}) 307. if !empty(_GCC_REQD:M${_pattern_})
308_NEED_GCC34= yes 308_NEED_GCC34= yes
309. endif 309. endif
310.endfor 310.endfor
311_NEED_GCC44?= no 311_NEED_GCC44?= no
312.for _pattern_ in ${_GCC44_PATTERNS} 312.for _pattern_ in ${_GCC44_PATTERNS}
313. if !empty(_GCC_REQD:M${_pattern_}) 313. if !empty(_GCC_REQD:M${_pattern_})
314_NEED_GCC44= yes 314_NEED_GCC44= yes
315. endif 315. endif
316.endfor 316.endfor
317_NEED_GCC48?= no 317_NEED_GCC48?= no
318.for _pattern_ in ${_GCC48_PATTERNS} 318.for _pattern_ in ${_GCC48_PATTERNS}
319. if !empty(_GCC_REQD:M${_pattern_}) 319. if !empty(_GCC_REQD:M${_pattern_})
320_NEED_GCC48= yes 320_NEED_GCC48= yes
321. endif 321. endif
322.endfor 322.endfor
323_NEED_GCC49?= no 323_NEED_GCC49?= no
324.for _pattern_ in ${_GCC49_PATTERNS} 324.for _pattern_ in ${_GCC49_PATTERNS}
325. if !empty(_GCC_REQD:M${_pattern_}) 325. if !empty(_GCC_REQD:M${_pattern_})
326_NEED_GCC49= yes 326_NEED_GCC49= yes
327. endif 327. endif
328.endfor 328.endfor
329_NEED_GCC5?= no 329_NEED_GCC5?= no
330.for _pattern_ in ${_GCC5_PATTERNS} 330.for _pattern_ in ${_GCC5_PATTERNS}
331. if !empty(_GCC_REQD:M${_pattern_}) 331. if !empty(_GCC_REQD:M${_pattern_})
332_NEED_GCC5= yes 332_NEED_GCC5= yes
333. endif 333. endif
334.endfor 334.endfor
335_NEED_GCC6?= no 335_NEED_GCC6?= no
336.for _pattern_ in ${_GCC6_PATTERNS} 336.for _pattern_ in ${_GCC6_PATTERNS}
337. if !empty(_GCC_REQD:M${_pattern_}) 337. if !empty(_GCC_REQD:M${_pattern_})
338_NEED_GCC6= yes 338_NEED_GCC6= yes
339. endif 339. endif
340.endfor 340.endfor
341_NEED_GCC7?= no 341_NEED_GCC7?= no
342.for _pattern_ in ${_GCC7_PATTERNS} 342.for _pattern_ in ${_GCC7_PATTERNS}
343. if !empty(_GCC_REQD:M${_pattern_}) 343. if !empty(_GCC_REQD:M${_pattern_})
344_NEED_GCC7= yes 344_NEED_GCC7= yes
345. endif 345. endif
346.endfor 346.endfor
347_NEED_GCC8?= no 347_NEED_GCC8?= no
348.for _pattern_ in ${_GCC8_PATTERNS} 348.for _pattern_ in ${_GCC8_PATTERNS}
349. if !empty(_GCC_REQD:M${_pattern_}) 349. if !empty(_GCC_REQD:M${_pattern_})
350_NEED_GCC8= yes 350_NEED_GCC8= yes
351. endif 351. endif
352.endfor 352.endfor
353_NEED_GCC_AUX?= no 353_NEED_GCC_AUX?= no
354.for _pattern_ in ${_GCC_AUX_PATTERNS} 354.for _pattern_ in ${_GCC_AUX_PATTERNS}
355. if !empty(_GCC_REQD:M${_pattern_}) 355. if !empty(_GCC_REQD:M${_pattern_})
356_NEED_GCC_AUX= yes 356_NEED_GCC_AUX= yes
357_NEED_NEWER_GCC=NO 357_NEED_NEWER_GCC=NO
358. endif 358. endif
359.endfor 359.endfor
360.if !empty(_NEED_GCC2:M[nN][oO]) && !empty(_NEED_GCC3:M[nN][oO]) && \ 360.if !empty(_NEED_GCC2:M[nN][oO]) && !empty(_NEED_GCC3:M[nN][oO]) && \
361 !empty(_NEED_GCC34:M[nN][oO]) && !empty(_NEED_GCC44:M[nN][oO]) && \ 361 !empty(_NEED_GCC34:M[nN][oO]) && !empty(_NEED_GCC44:M[nN][oO]) && \
362 !empty(_NEED_GCC48:M[nN][oO]) && !empty(_NEED_GCC49:M[nN][oO]) && \ 362 !empty(_NEED_GCC48:M[nN][oO]) && !empty(_NEED_GCC49:M[nN][oO]) && \
363 !empty(_NEED_GCC5:M[nN][oO]) && !empty(_NEED_GCC6:M[nN][oO]) && \ 363 !empty(_NEED_GCC5:M[nN][oO]) && !empty(_NEED_GCC6:M[nN][oO]) && \
364 !empty(_NEED_GCC7:M[nN][oO]) && !empty(_NEED_GCC8:M[nN][oO]) && \ 364 !empty(_NEED_GCC7:M[nN][oO]) && !empty(_NEED_GCC8:M[nN][oO]) && \
365 !empty(_NEED_GCC_AUX:M[nN][oO]) 365 !empty(_NEED_GCC_AUX:M[nN][oO])
366_NEED_GCC8= yes 366_NEED_GCC8= yes
367.endif 367.endif
368 368
369# Assume by default that GCC will only provide a C compiler. 369# Assume by default that GCC will only provide a C compiler.
370LANGUAGES.gcc?= c 370LANGUAGES.gcc?= c
371.if !empty(_NEED_GCC2:M[yY][eE][sS]) 371.if !empty(_NEED_GCC2:M[yY][eE][sS])
372LANGUAGES.gcc= c c++ fortran77 objc 372LANGUAGES.gcc= c c++ fortran77 objc
373.elif !empty(_NEED_GCC3:M[yY][eE][sS]) 373.elif !empty(_NEED_GCC3:M[yY][eE][sS])
374LANGUAGES.gcc= c c++ fortran77 java objc 374LANGUAGES.gcc= c c++ fortran77 java objc
375.elif !empty(_NEED_GCC34:M[yY][eE][sS]) 375.elif !empty(_NEED_GCC34:M[yY][eE][sS])
376LANGUAGES.gcc= c c++ fortran77 objc 376LANGUAGES.gcc= c c++ fortran77 objc
377.elif !empty(_NEED_GCC44:M[yY][eE][sS]) 377.elif !empty(_NEED_GCC44:M[yY][eE][sS])
378LANGUAGES.gcc= c c++ fortran fortran77 java objc 378LANGUAGES.gcc= c c++ fortran fortran77 java objc
379.elif !empty(_NEED_GCC48:M[yY][eE][sS]) 379.elif !empty(_NEED_GCC48:M[yY][eE][sS])
380LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 380LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
381.elif !empty(_NEED_GCC49:M[yY][eE][sS]) 381.elif !empty(_NEED_GCC49:M[yY][eE][sS])
382LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 382LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
383.elif !empty(_NEED_GCC5:M[yY][eE][sS]) 383.elif !empty(_NEED_GCC5:M[yY][eE][sS])
384LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 384LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
385.elif !empty(_NEED_GCC6:M[yY][eE][sS]) 385.elif !empty(_NEED_GCC6:M[yY][eE][sS])
386LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 386LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
387.elif !empty(_NEED_GCC7:M[yY][eE][sS]) 387.elif !empty(_NEED_GCC7:M[yY][eE][sS])
388LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 388LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
389.elif !empty(_NEED_GCC8:M[yY][eE][sS]) 389.elif !empty(_NEED_GCC8:M[yY][eE][sS])
390LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 390LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
391.elif !empty(_NEED_GCC_AUX:M[yY][eE][sS]) 391.elif !empty(_NEED_GCC_AUX:M[yY][eE][sS])
392LANGUAGES.gcc= c c++ fortran fortran77 objc ada 392LANGUAGES.gcc= c c++ fortran fortran77 objc ada
393.endif 393.endif
394_LANGUAGES.gcc= # empty 394_LANGUAGES.gcc= # empty
395.for _lang_ in ${USE_LANGUAGES} 395.for _lang_ in ${USE_LANGUAGES}
396_LANGUAGES.gcc+= ${LANGUAGES.gcc:M${_lang_}} 396_LANGUAGES.gcc+= ${LANGUAGES.gcc:M${_lang_}}
397.endfor 397.endfor
398 398
399.if !empty(USE_LANGUAGES:Mc99) 399.if !empty(USE_LANGUAGES:Mc99)
400_WRAP_EXTRA_ARGS.CC+= -std=gnu99 400_WRAP_EXTRA_ARGS.CC+= -std=gnu99
401CWRAPPERS_APPEND.cc+= -std=gnu99 401CWRAPPERS_APPEND.cc+= -std=gnu99
402.endif 402.endif
403 403
404.if ${OPSYS} == "NetBSD" 404.if ${OPSYS} == "NetBSD"
405_MKPIE_CFLAGS.gcc= -fPIC 405_MKPIE_CFLAGS.gcc= -fPIC
406# XXX for executables it should be: 406# XXX for executables it should be:
407#_MKPIE_CFLAGS.gcc= -fPIE 407#_MKPIE_CFLAGS.gcc= -fPIE
408# XXX for libraries a sink wrapper around gcc is required and used instead 408# XXX for libraries a sink wrapper around gcc is required and used instead
409_MKPIE_LDFLAGS.gcc= -pie 409_MKPIE_LDFLAGS.gcc= -pie
410.endif 410.endif
411 411
412.if ${_PKGSRC_MKPIE} == "yes" 412.if ${_PKGSRC_MKPIE} == "yes"
413_GCC_CFLAGS+= ${_MKPIE_CFLAGS.gcc} 413_GCC_CFLAGS+= ${_MKPIE_CFLAGS.gcc}
414#_GCC_LDFLAGS+= ${_MKPIE_LDFLAGS.gcc} 414#_GCC_LDFLAGS+= ${_MKPIE_LDFLAGS.gcc}
415CWRAPPERS_APPEND.cc+= ${_MKPIE_CFLAGS.gcc} 415CWRAPPERS_APPEND.cc+= ${_MKPIE_CFLAGS.gcc}
416CWRAPPERS_APPEND.cxx+= ${_MKPIE_CFLAGS.gcc} 416CWRAPPERS_APPEND.cxx+= ${_MKPIE_CFLAGS.gcc}
417# this differs for libraries and executables (handled in mk/cwrappers.mk) 417# this differs for libraries and executables (handled in mk/cwrappers.mk)
418# CWRAPPERS_APPEND.ld+= ${_MKPIE_LDFLAGS.gcc} 418# CWRAPPERS_APPEND.ld+= ${_MKPIE_LDFLAGS.gcc}
419.endif 419.endif
420 420
421.if ${_PKGSRC_MKREPRO} == "yes" 421.if ${_PKGSRC_MKREPRO} == "yes"
422.export WRKDIR 422.export WRKDIR
423# XXX the dollar sign should not be expanded by the shell 423# XXX the dollar sign should not be expanded by the shell
424_GCC_CFLAGS+= -fdebug-prefix-map=$$$$WRKDIR/= 424_GCC_CFLAGS+= -fdebug-prefix-map=$$$$WRKDIR/=
425.endif 425.endif
426 426
427.if ${_PKGSRC_MKREPRO} == "yes" 427.if ${_PKGSRC_MKREPRO} == "yes"
428_GCC_CFLAGS+= ${_MKREPRO_CFLAGS.gcc} 428_GCC_CFLAGS+= ${_MKREPRO_CFLAGS.gcc}
429CWRAPPERS_APPEND.cc+= ${_MKREPRO_CFLAGS.gcc} 429CWRAPPERS_APPEND.cc+= ${_MKREPRO_CFLAGS.gcc}
430.endif 430.endif
431 431
432# The user can choose the level of FORTIFY. 432# The user can choose the level of FORTIFY.
433.if ${PKGSRC_USE_FORTIFY} == "weak" 433.if ${PKGSRC_USE_FORTIFY} == "weak"
434_FORTIFY_CFLAGS= -D_FORTIFY_SOURCE=1 434_FORTIFY_CFLAGS= -D_FORTIFY_SOURCE=1
435.else 435.else
436_FORTIFY_CFLAGS= -D_FORTIFY_SOURCE=2 436_FORTIFY_CFLAGS= -D_FORTIFY_SOURCE=2
437.endif 437.endif
438 438
439.if ${_PKGSRC_USE_FORTIFY} == "yes" 439.if ${_PKGSRC_USE_FORTIFY} == "yes"
440_GCC_CFLAGS+= ${_FORTIFY_CFLAGS} 440_GCC_CFLAGS+= ${_FORTIFY_CFLAGS}
441CWRAPPERS_APPEND.cc+= ${_FORTIFY_CFLAGS} 441CWRAPPERS_APPEND.cc+= ${_FORTIFY_CFLAGS}
442.endif 442.endif
443 443
444# The user can choose the level of RELRO. 444# The user can choose the level of RELRO.
445.if ${PKGSRC_USE_RELRO} == "partial" 445.if ${PKGSRC_USE_RELRO} == "partial"
446_RELRO_LDFLAGS= -Wl,-z,relro 446_RELRO_LDFLAGS= -Wl,-z,relro
447.else 447.else
448_RELRO_LDFLAGS= -Wl,-z,relro -Wl,-z,now 448_RELRO_LDFLAGS= -Wl,-z,relro -Wl,-z,now
449.endif 449.endif
450 450
451_STACK_CHECK_CFLAGS= -fstack-check 451_STACK_CHECK_CFLAGS= -fstack-check
452 452
453.if ${_PKGSRC_USE_STACK_CHECK} == "yes" 453.if ${_PKGSRC_USE_STACK_CHECK} == "yes"
454_GCC_CFLAGS+= ${_STACK_CHECK_CFLAGS} 454_GCC_CFLAGS+= ${_STACK_CHECK_CFLAGS}
455.endif 455.endif
456 456
457_CTF_CFLAGS= -gdwarf-2 457_CTF_CFLAGS= -gdwarf-2
458 458
459# GCC has this annoying behaviour where it advocates in a multi-line 459# GCC has this annoying behaviour where it advocates in a multi-line
460# banner the use of "#include" over "#import" when including headers. 460# banner the use of "#include" over "#import" when including headers.
461# This generates a huge number of warnings when building practically all 461# This generates a huge number of warnings when building practically all
462# Objective-C code where it is convention to use "#import". Suppress 462# Objective-C code where it is convention to use "#import". Suppress
463# the warning if we're building Objective-C code using GCC. 463# the warning if we're building Objective-C code using GCC.
464# 464#
465.if !empty(_LANGUAGES.gcc:Mobjc) 465.if !empty(_LANGUAGES.gcc:Mobjc)
466CFLAGS+= -Wno-import 466CFLAGS+= -Wno-import
467.endif 467.endif
468 468
469CFLAGS+= ${_GCC_CFLAGS} 469CFLAGS+= ${_GCC_CFLAGS}
470 470
471.if !empty(_NEED_GCC2:M[yY][eE][sS]) 471.if !empty(_NEED_GCC2:M[yY][eE][sS])
472# 472#
473# We require gcc-2.x in the lang/gcc2 directory. 473# We require gcc-2.x in the lang/gcc2 directory.
474# 474#
475_GCC_PKGBASE= gcc2 475_GCC_PKGBASE= gcc2
476. if ${PKGPATH} == lang/gcc2 476. if ${PKGPATH} == lang/gcc2
477_IGNORE_GCC= yes 477_IGNORE_GCC= yes
478MAKEFLAGS+= _IGNORE_GCC=yes 478MAKEFLAGS+= _IGNORE_GCC=yes
479. endif 479. endif
480. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 480. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
481_GCC_PKGSRCDIR= ../../lang/gcc2 481_GCC_PKGSRCDIR= ../../lang/gcc2
482_GCC_DEPENDENCY= gcc2>=${_GCC_REQD}:../../lang/gcc2 482_GCC_DEPENDENCY= gcc2>=${_GCC_REQD}:../../lang/gcc2
483. if !empty(_LANGUAGES.gcc:Mc++) || \ 483. if !empty(_LANGUAGES.gcc:Mc++) || \
484 !empty(_LANGUAGES.gcc:Mfortran77) || \ 484 !empty(_LANGUAGES.gcc:Mfortran77) || \
485 !empty(_LANGUAGES.gcc:Mobjc) 485 !empty(_LANGUAGES.gcc:Mobjc)
486_USE_GCC_SHLIB?= yes 486_USE_GCC_SHLIB?= yes
487. endif 487. endif
488. endif 488. endif
489.elif !empty(_NEED_GCC3:M[yY][eE][sS]) 489.elif !empty(_NEED_GCC3:M[yY][eE][sS])
490# 490#
491# We require gcc-3.x in the lang/gcc3-* directories. 491# We require gcc-3.x in the lang/gcc3-* directories.
492# 492#
493_GCC_PKGBASE= gcc3-c 493_GCC_PKGBASE= gcc3-c
494. if ${PKGPATH} == lang/gcc3-c 494. if ${PKGPATH} == lang/gcc3-c
495_IGNORE_GCC= yes 495_IGNORE_GCC= yes
496MAKEFLAGS+= _IGNORE_GCC=yes 496MAKEFLAGS+= _IGNORE_GCC=yes
497. endif 497. endif
498. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc:Mc) 498. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc:Mc)
499_GCC_PKGSRCDIR= ../../lang/gcc3-c 499_GCC_PKGSRCDIR= ../../lang/gcc3-c
500_GCC_DEPENDENCY= gcc3-c>=${_GCC_REQD}:../../lang/gcc3-c 500_GCC_DEPENDENCY= gcc3-c>=${_GCC_REQD}:../../lang/gcc3-c
501. endif 501. endif
502.elif !empty(_NEED_GCC34:M[yY][eE][sS]) 502.elif !empty(_NEED_GCC34:M[yY][eE][sS])
503# 503#
504# We require gcc-3.4.x in the lang/gcc34 directory. 504# We require gcc-3.4.x in the lang/gcc34 directory.
505# 505#
506_GCC_PKGBASE= gcc34 506_GCC_PKGBASE= gcc34
507. if ${PKGPATH} == lang/gcc34 507. if ${PKGPATH} == lang/gcc34
508_IGNORE_GCC= yes 508_IGNORE_GCC= yes
509MAKEFLAGS+= _IGNORE_GCC=yes 509MAKEFLAGS+= _IGNORE_GCC=yes
510. endif 510. endif
511. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 511. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
512_GCC_PKGSRCDIR= ../../lang/gcc34 512_GCC_PKGSRCDIR= ../../lang/gcc34
513_GCC_DEPENDENCY= gcc34>=${_GCC_REQD}:../../lang/gcc34 513_GCC_DEPENDENCY= gcc34>=${_GCC_REQD}:../../lang/gcc34
514. if !empty(_LANGUAGES.gcc:Mc++) || \ 514. if !empty(_LANGUAGES.gcc:Mc++) || \
515 !empty(_LANGUAGES.gcc:Mfortran77) || \ 515 !empty(_LANGUAGES.gcc:Mfortran77) || \
516 !empty(_LANGUAGES.gcc:Mobjc) 516 !empty(_LANGUAGES.gcc:Mobjc)
517_USE_GCC_SHLIB?= yes 517_USE_GCC_SHLIB?= yes
518. endif 518. endif
519. endif 519. endif
520.elif !empty(_NEED_GCC44:M[yY][eE][sS]) 520.elif !empty(_NEED_GCC44:M[yY][eE][sS])
521# 521#
522# We require gcc-4.4.x in the lang/gcc44 directory. 522# We require gcc-4.4.x in the lang/gcc44 directory.
523# 523#
524_GCC_PKGBASE= gcc44 524_GCC_PKGBASE= gcc44
525. if ${PKGPATH} == lang/gcc44 525. if ${PKGPATH} == lang/gcc44
526_IGNORE_GCC= yes 526_IGNORE_GCC= yes
527MAKEFLAGS+= _IGNORE_GCC=yes 527MAKEFLAGS+= _IGNORE_GCC=yes
528. endif 528. endif
529. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 529. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
530_GCC_PKGSRCDIR= ../../lang/gcc44 530_GCC_PKGSRCDIR= ../../lang/gcc44
531_GCC_DEPENDENCY= gcc44>=${_GCC_REQD}:../../lang/gcc44 531_GCC_DEPENDENCY= gcc44>=${_GCC_REQD}:../../lang/gcc44
532. if !empty(_LANGUAGES.gcc:Mc++) || \ 532. if !empty(_LANGUAGES.gcc:Mc++) || \
533 !empty(_LANGUAGES.gcc:Mfortran) || \ 533 !empty(_LANGUAGES.gcc:Mfortran) || \
534 !empty(_LANGUAGES.gcc:Mfortran77) || \ 534 !empty(_LANGUAGES.gcc:Mfortran77) || \
535 !empty(_LANGUAGES.gcc:Mobjc) 535 !empty(_LANGUAGES.gcc:Mobjc)
536_USE_GCC_SHLIB?= yes 536_USE_GCC_SHLIB?= yes
537. endif 537. endif
538. endif 538. endif
539.elif !empty(_NEED_GCC48:M[yY][eE][sS]) 539.elif !empty(_NEED_GCC48:M[yY][eE][sS])
540# 540#
541# We require gcc-4.8.x in the lang/gcc48 directory. 541# We require gcc-4.8.x in the lang/gcc48 directory.
542# 542#
543_GCC_PKGBASE= gcc48 543_GCC_PKGBASE= gcc48
544. if ${PKGPATH} == lang/gcc48 544. if ${PKGPATH} == lang/gcc48
545_IGNORE_GCC= yes 545_IGNORE_GCC= yes
546MAKEFLAGS+= _IGNORE_GCC=yes 546MAKEFLAGS+= _IGNORE_GCC=yes
547. endif 547. endif
548. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 548. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
549_GCC_PKGSRCDIR= ../../lang/gcc48 549_GCC_PKGSRCDIR= ../../lang/gcc48
550_GCC_DEPENDENCY= gcc48>=${_GCC_REQD}:../../lang/gcc48 550_GCC_DEPENDENCY= gcc48>=${_GCC_REQD}:../../lang/gcc48
551. if !empty(_LANGUAGES.gcc:Mc++) || \ 551. if !empty(_LANGUAGES.gcc:Mc++) || \
552 !empty(_LANGUAGES.gcc:Mfortran) || \ 552 !empty(_LANGUAGES.gcc:Mfortran) || \
553 !empty(_LANGUAGES.gcc:Mfortran77) || \ 553 !empty(_LANGUAGES.gcc:Mfortran77) || \
554 !empty(_LANGUAGES.gcc:Mgo) || \ 554 !empty(_LANGUAGES.gcc:Mgo) || \
555 !empty(_LANGUAGES.gcc:Mobjc) || \ 555 !empty(_LANGUAGES.gcc:Mobjc) || \
556 !empty(_LANGUAGES.gcc:Mobj-c++) 556 !empty(_LANGUAGES.gcc:Mobj-c++)
557_USE_GCC_SHLIB?= yes 557_USE_GCC_SHLIB?= yes
558. endif 558. endif
559. endif 559. endif
560.elif !empty(_NEED_GCC49:M[yY][eE][sS]) 560.elif !empty(_NEED_GCC49:M[yY][eE][sS])
561# 561#
562# We require gcc-4.9.x in the lang/gcc49-* directory. 562# We require gcc-4.9.x in the lang/gcc49-* directory.
563# 563#
564_GCC_PKGBASE= gcc49 564_GCC_PKGBASE= gcc49
565. if ${PKGPATH} == lang/gcc49 565. if ${PKGPATH} == lang/gcc49
566_IGNORE_GCC= yes 566_IGNORE_GCC= yes
567MAKEFLAGS+= _IGNORE_GCC=yes 567MAKEFLAGS+= _IGNORE_GCC=yes
568. endif 568. endif
569. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 569. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
570_GCC_PKGSRCDIR= ../../lang/gcc49 570_GCC_PKGSRCDIR= ../../lang/gcc49
571_GCC_DEPENDENCY= gcc49>=${_GCC_REQD}:../../lang/gcc49 571_GCC_DEPENDENCY= gcc49>=${_GCC_REQD}:../../lang/gcc49
572. if !empty(_LANGUAGES.gcc:Mc++) || \ 572. if !empty(_LANGUAGES.gcc:Mc++) || \
573 !empty(_LANGUAGES.gcc:Mfortran) || \ 573 !empty(_LANGUAGES.gcc:Mfortran) || \
574 !empty(_LANGUAGES.gcc:Mfortran77) || \ 574 !empty(_LANGUAGES.gcc:Mfortran77) || \
575 !empty(_LANGUAGES.gcc:Mgo) || \ 575 !empty(_LANGUAGES.gcc:Mgo) || \
576 !empty(_LANGUAGES.gcc:Mobjc) || \ 576 !empty(_LANGUAGES.gcc:Mobjc) || \
577 !empty(_LANGUAGES.gcc:Mobj-c++) 577 !empty(_LANGUAGES.gcc:Mobj-c++)
578_USE_GCC_SHLIB?= yes 578_USE_GCC_SHLIB?= yes
579. endif 579. endif
580. endif 580. endif
581.elif !empty(_NEED_GCC5:M[yY][eE][sS]) 581.elif !empty(_NEED_GCC5:M[yY][eE][sS])
582# 582#
583# We require gcc-5.x in the lang/gcc5-* directory. 583# We require gcc-5.x in the lang/gcc5-* directory.
584# 584#
585_GCC_PKGBASE= gcc5 585_GCC_PKGBASE= gcc5
586. if ${PKGPATH} == lang/gcc5 586. if ${PKGPATH} == lang/gcc5
587_IGNORE_GCC= yes 587_IGNORE_GCC= yes
588MAKEFLAGS+= _IGNORE_GCC=yes 588MAKEFLAGS+= _IGNORE_GCC=yes
589. endif 589. endif
590. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 590. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
591_GCC_PKGSRCDIR= ../../lang/gcc5 591_GCC_PKGSRCDIR= ../../lang/gcc5
592_GCC_DEPENDENCY= gcc5>=${_GCC_REQD}:../../lang/gcc5 592_GCC_DEPENDENCY= gcc5>=${_GCC_REQD}:../../lang/gcc5
593. if !empty(_LANGUAGES.gcc:Mc++) || \ 593. if !empty(_LANGUAGES.gcc:Mc++) || \
594 !empty(_LANGUAGES.gcc:Mfortran) || \ 594 !empty(_LANGUAGES.gcc:Mfortran) || \
595 !empty(_LANGUAGES.gcc:Mfortran77) || \ 595 !empty(_LANGUAGES.gcc:Mfortran77) || \
596 !empty(_LANGUAGES.gcc:Mgo) || \ 596 !empty(_LANGUAGES.gcc:Mgo) || \
597 !empty(_LANGUAGES.gcc:Mobjc) || \ 597 !empty(_LANGUAGES.gcc:Mobjc) || \
598 !empty(_LANGUAGES.gcc:Mobj-c++) 598 !empty(_LANGUAGES.gcc:Mobj-c++)
599_USE_GCC_SHLIB?= yes 599_USE_GCC_SHLIB?= yes
600. endif 600. endif
601. endif 601. endif
602.elif !empty(_NEED_GCC6:M[yY][eE][sS]) 602.elif !empty(_NEED_GCC6:M[yY][eE][sS])
603# 603#
604# We require gcc-6.x in the lang/gcc6-* directory. 604# We require gcc-6.x in the lang/gcc6-* directory.
605# 605#
606_GCC_PKGBASE= gcc6 606_GCC_PKGBASE= gcc6
607. if ${PKGPATH} == lang/gcc6 607. if ${PKGPATH} == lang/gcc6
608_IGNORE_GCC= yes 608_IGNORE_GCC= yes
609MAKEFLAGS+= _IGNORE_GCC=yes 609MAKEFLAGS+= _IGNORE_GCC=yes
610. endif 610. endif
611. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 611. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
612_GCC_PKGSRCDIR= ../../lang/gcc6 612_GCC_PKGSRCDIR= ../../lang/gcc6
613_GCC_DEPENDENCY= gcc6>=${_GCC_REQD}:../../lang/gcc6 613_GCC_DEPENDENCY= gcc6>=${_GCC_REQD}:../../lang/gcc6
614. if !empty(_LANGUAGES.gcc:Mc++) || \ 614. if !empty(_LANGUAGES.gcc:Mc++) || \
615 !empty(_LANGUAGES.gcc:Mfortran) || \ 615 !empty(_LANGUAGES.gcc:Mfortran) || \
616 !empty(_LANGUAGES.gcc:Mfortran77) || \ 616 !empty(_LANGUAGES.gcc:Mfortran77) || \
617 !empty(_LANGUAGES.gcc:Mgo) || \ 617 !empty(_LANGUAGES.gcc:Mgo) || \
618 !empty(_LANGUAGES.gcc:Mobjc) || \ 618 !empty(_LANGUAGES.gcc:Mobjc) || \
619 !empty(_LANGUAGES.gcc:Mobj-c++) 619 !empty(_LANGUAGES.gcc:Mobj-c++)
620_USE_GCC_SHLIB?= yes 620_USE_GCC_SHLIB?= yes
621. endif 621. endif
622. endif 622. endif
623.elif !empty(_NEED_GCC7:M[yY][eE][sS]) 623.elif !empty(_NEED_GCC7:M[yY][eE][sS])
624# 624#
625# We require gcc-7.x in the lang/gcc7-* directory. 625# We require gcc-7.x in the lang/gcc7-* directory.
626# 626#
627_GCC_PKGBASE= gcc7 627_GCC_PKGBASE= gcc7
628. if ${PKGPATH} == lang/gcc7 628. if ${PKGPATH} == lang/gcc7
629_IGNORE_GCC= yes 629_IGNORE_GCC= yes
630MAKEFLAGS+= _IGNORE_GCC=yes 630MAKEFLAGS+= _IGNORE_GCC=yes
631. endif 631. endif
632. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 632. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
633_GCC_PKGSRCDIR= ../../lang/gcc7 633_GCC_PKGSRCDIR= ../../lang/gcc7
634_GCC_DEPENDENCY= gcc7>=${_GCC_REQD}:../../lang/gcc7 634_GCC_DEPENDENCY= gcc7>=${_GCC_REQD}:../../lang/gcc7
635. if !empty(_LANGUAGES.gcc:Mc++) || \ 635. if !empty(_LANGUAGES.gcc:Mc++) || \
636 !empty(_LANGUAGES.gcc:Mfortran) || \ 636 !empty(_LANGUAGES.gcc:Mfortran) || \
637 !empty(_LANGUAGES.gcc:Mfortran77) || \ 637 !empty(_LANGUAGES.gcc:Mfortran77) || \
638 !empty(_LANGUAGES.gcc:Mgo) || \ 638 !empty(_LANGUAGES.gcc:Mgo) || \
639 !empty(_LANGUAGES.gcc:Mobjc) || \ 639 !empty(_LANGUAGES.gcc:Mobjc) || \
640 !empty(_LANGUAGES.gcc:Mobj-c++) 640 !empty(_LANGUAGES.gcc:Mobj-c++)
641_USE_GCC_SHLIB?= yes 641_USE_GCC_SHLIB?= yes
642. endif 642. endif
643. endif 643. endif
644.elif !empty(_NEED_GCC8:M[yY][eE][sS]) 644.elif !empty(_NEED_GCC8:M[yY][eE][sS])
645# 645#
646# We require gcc-8.x in the lang/gcc8-* directory. 646# We require gcc-8.x in the lang/gcc8-* directory.
647# 647#
648_GCC_PKGBASE= gcc8 648_GCC_PKGBASE= gcc8
649. if ${PKGPATH} == lang/gcc8 649. if ${PKGPATH} == lang/gcc8
650_IGNORE_GCC= yes 650_IGNORE_GCC= yes
651MAKEFLAGS+= _IGNORE_GCC=yes 651MAKEFLAGS+= _IGNORE_GCC=yes
652. endif 652. endif
653. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 653. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
654_GCC_PKGSRCDIR= ../../lang/gcc8 654_GCC_PKGSRCDIR= ../../lang/gcc8
655_GCC_DEPENDENCY= gcc8>=${_GCC_REQD}:../../lang/gcc8 655_GCC_DEPENDENCY= gcc8>=${_GCC_REQD}:../../lang/gcc8
656. if !empty(_LANGUAGES.gcc:Mc++) || \ 656. if !empty(_LANGUAGES.gcc:Mc++) || \
657 !empty(_LANGUAGES.gcc:Mfortran) || \ 657 !empty(_LANGUAGES.gcc:Mfortran) || \
658 !empty(_LANGUAGES.gcc:Mfortran77) || \ 658 !empty(_LANGUAGES.gcc:Mfortran77) || \
659 !empty(_LANGUAGES.gcc:Mgo) || \ 659 !empty(_LANGUAGES.gcc:Mgo) || \
660 !empty(_LANGUAGES.gcc:Mobjc) || \ 660 !empty(_LANGUAGES.gcc:Mobjc) || \
661 !empty(_LANGUAGES.gcc:Mobj-c++) 661 !empty(_LANGUAGES.gcc:Mobj-c++)
662_USE_GCC_SHLIB?= yes 662_USE_GCC_SHLIB?= yes
663. endif 663. endif
664. endif 664. endif
665.elif !empty(_NEED_GCC_AUX:M[yY][eE][sS]) 665.elif !empty(_NEED_GCC_AUX:M[yY][eE][sS])
666# 666#
667# We require Ada-capable compiler in the lang/gcc5-aux directory. 667# We require Ada-capable compiler in the lang/gcc5-aux directory.
668# 668#
669_GCC_PKGBASE= gcc5-aux 669_GCC_PKGBASE= gcc5-aux
670. if ${PKGPATH} == lang/gcc5-aux 670. if ${PKGPATH} == lang/gcc5-aux
671_IGNORE_GCC= yes 671_IGNORE_GCC= yes
672MAKEFLAGS+= _IGNORE_GCC=yes 672MAKEFLAGS+= _IGNORE_GCC=yes
673. endif 673. endif
674. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 674. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
675_GCC_PKGSRCDIR= ../../lang/gcc5-aux 675_GCC_PKGSRCDIR= ../../lang/gcc5-aux
676_GCC_DEPENDENCY= gcc5-aux>=${_GCC_REQD}:../../lang/gcc5-aux 676_GCC_DEPENDENCY= gcc5-aux>=${_GCC_REQD}:../../lang/gcc5-aux
677. if !empty(_LANGUAGES.gcc:Mc++) || \ 677. if !empty(_LANGUAGES.gcc:Mc++) || \
678 !empty(_LANGUAGES.gcc:Mfortran) || \ 678 !empty(_LANGUAGES.gcc:Mfortran) || \
679 !empty(_LANGUAGES.gcc:Mfortran77) || \ 679 !empty(_LANGUAGES.gcc:Mfortran77) || \
680 !empty(_LANGUAGES.gcc:Mada) || \ 680 !empty(_LANGUAGES.gcc:Mada) || \
681 !empty(_LANGUAGES.gcc:Mobjc) 681 !empty(_LANGUAGES.gcc:Mobjc)
682_USE_GCC_SHLIB?= yes 682_USE_GCC_SHLIB?= yes
683. endif 683. endif
684. endif 684. endif
685.endif 685.endif
686_GCC_DEPENDS= ${_GCC_PKGBASE}>=${_GCC_REQD} 686_GCC_DEPENDS= ${_GCC_PKGBASE}>=${_GCC_REQD}
687 687
688.if !empty(_NEED_GCC3:M[yY][eE][sS]) 688.if !empty(_NEED_GCC3:M[yY][eE][sS])
689. if ${PKGPATH} == "lang/gcc3-c++" 689. if ${PKGPATH} == "lang/gcc3-c++"
690_IGNORE_GCC3CXX= yes 690_IGNORE_GCC3CXX= yes
691MAKEFLAGS+= _IGNORE_GCC3CXX=yes 691MAKEFLAGS+= _IGNORE_GCC3CXX=yes
692. endif 692. endif
693. if !defined(_IGNORE_GCC3CXX) && !empty(_LANGUAGES.gcc:Mc++) 693. if !defined(_IGNORE_GCC3CXX) && !empty(_LANGUAGES.gcc:Mc++)
694_GCC_PKGSRCDIR+= ../../lang/gcc3-c++ 694_GCC_PKGSRCDIR+= ../../lang/gcc3-c++
695_GCC_DEPENDENCY+= gcc3-c++>=${_GCC_REQD}:../../lang/gcc3-c++ 695_GCC_DEPENDENCY+= gcc3-c++>=${_GCC_REQD}:../../lang/gcc3-c++
696_USE_GCC_SHLIB?= yes 696_USE_GCC_SHLIB?= yes
697. endif 697. endif
698. if ${PKGPATH} == lang/gcc3-f77 698. if ${PKGPATH} == lang/gcc3-f77
699_IGNORE_GCC3F77= yes 699_IGNORE_GCC3F77= yes
700MAKEFLAGS+= _IGNORE_GCC3F77=yes 700MAKEFLAGS+= _IGNORE_GCC3F77=yes
701. endif 701. endif
702. if !defined(_IGNORE_GCC3F77) && !empty(_LANGUAGES.gcc:Mfortran77) 702. if !defined(_IGNORE_GCC3F77) && !empty(_LANGUAGES.gcc:Mfortran77)
703_GCC_PKGSRCDIR+= ../../lang/gcc3-f77 703_GCC_PKGSRCDIR+= ../../lang/gcc3-f77
704_GCC_DEPENDENCY+= gcc3-f77>=${_GCC_REQD}:../../lang/gcc3-f77 704_GCC_DEPENDENCY+= gcc3-f77>=${_GCC_REQD}:../../lang/gcc3-f77
705_USE_GCC_SHLIB?= yes 705_USE_GCC_SHLIB?= yes
706. endif 706. endif
707. if ${PKGPATH} == lang/gcc3-objc 707. if ${PKGPATH} == lang/gcc3-objc
708_IGNORE_GCC3OBJC= yes 708_IGNORE_GCC3OBJC= yes
709MAKEFLAGS+= _IGNORE_GCC3OBJC=yes 709MAKEFLAGS+= _IGNORE_GCC3OBJC=yes
710. endif 710. endif
711. if !defined(_IGNORE_GCC3OBJC) && !empty(_LANGUAGES.gcc:Mobjc) 711. if !defined(_IGNORE_GCC3OBJC) && !empty(_LANGUAGES.gcc:Mobjc)
712_GCC_PKGSRCDIR+= ../../lang/gcc3-objc 712_GCC_PKGSRCDIR+= ../../lang/gcc3-objc
713_GCC_DEPENDENCY+= gcc3-objc>=${_GCC_REQD}:../../lang/gcc3-objc 713_GCC_DEPENDENCY+= gcc3-objc>=${_GCC_REQD}:../../lang/gcc3-objc
714_USE_GCC_SHLIB?= yes 714_USE_GCC_SHLIB?= yes
715. endif 715. endif
716.endif 716.endif
717 717
718# When not using the GNU linker, gcc will always link shared libraries against 718# When not using the GNU linker, gcc will always link shared libraries against
719# the shared version of libgcc, and so _USE_GCC_SHLIB needs to be enabled on 719# the shared version of libgcc, and so _USE_GCC_SHLIB needs to be enabled on
720# platforms with non-GNU linkers, such as SunOS. 720# platforms with non-GNU linkers, such as SunOS.
721# 721#
722# However, we cannot simply do this by default as it will create circular 722# However, we cannot simply do this by default as it will create circular
723# dependencies in packages which are required to build gcc itself, and so we 723# dependencies in packages which are required to build gcc itself, and so we
724# enable it based on USE_LIBTOOL for the majority of packages, and support 724# enable it based on USE_LIBTOOL for the majority of packages, and support
725# USE_GCC_RUNTIME for packages which create shared libraries but do not use 725# USE_GCC_RUNTIME for packages which create shared libraries but do not use
726# libtool to do so. 726# libtool to do so.
727# 727#
728.if (${OPSYS} == "Darwin" || ${OPSYS} == "SunOS") && \ 728.if (${OPSYS} == "Darwin" || ${OPSYS} == "SunOS") && \
729 (defined(USE_LIBTOOL) || defined(USE_GCC_RUNTIME)) 729 (defined(USE_LIBTOOL) || defined(USE_GCC_RUNTIME))
730_USE_GCC_SHLIB= yes 730_USE_GCC_SHLIB= yes
731.endif 731.endif
732 732
733.if !empty(USE_NATIVE_GCC:M[yY][eE][sS]) && !empty(_IS_BUILTIN_GCC:M[yY][eE][sS]) 733.if !empty(USE_NATIVE_GCC:M[yY][eE][sS]) && !empty(_IS_BUILTIN_GCC:M[yY][eE][sS])
734_USE_PKGSRC_GCC= no 734_USE_PKGSRC_GCC= no
735.elif !empty(USE_PKGSRC_GCC:M[yY][eE][sS]) 735.elif !empty(USE_PKGSRC_GCC:M[yY][eE][sS])
736# For environments where there is an external gcc too, but pkgsrc 736# For environments where there is an external gcc too, but pkgsrc
737# should use the pkgsrc one for consistency. 737# should use the pkgsrc one for consistency.
738_USE_PKGSRC_GCC= yes 738_USE_PKGSRC_GCC= yes
739.endif 739.endif
740 740
741.if defined(_IGNORE_GCC) 741.if defined(_IGNORE_GCC)
742_USE_PKGSRC_GCC= NO 742_USE_PKGSRC_GCC= NO
743.endif 743.endif
744 744
745.if !defined(_USE_PKGSRC_GCC) 745.if !defined(_USE_PKGSRC_GCC)
746_USE_PKGSRC_GCC= YES 746_USE_PKGSRC_GCC= YES
747. if !empty(_IS_BUILTIN_GCC:M[yY][eE][sS]) 747. if !empty(_IS_BUILTIN_GCC:M[yY][eE][sS])
748_GCC_TEST_DEPENDS= gcc>=${_GCC_REQD} 748_GCC_TEST_DEPENDS= gcc>=${_GCC_REQD}
749_USE_PKGSRC_GCC!= \ 749_USE_PKGSRC_GCC!= \
750 if ${PKG_ADMIN} pmatch '${_GCC_TEST_DEPENDS}' ${_GCC_PKG} 2>/dev/null; then \ 750 if ${PKG_ADMIN} pmatch '${_GCC_TEST_DEPENDS}' ${_GCC_PKG} 2>/dev/null; then \
751 ${ECHO} "NO"; \ 751 ${ECHO} "NO"; \
752 else \ 752 else \
753 ${ECHO} "YES"; \ 753 ${ECHO} "YES"; \
754 fi 754 fi
755. endif 755. endif
756.endif 756.endif
757 757
758# Check if any of the versions of GCC in pkgsrc can satisfy the _GCC_REQD 758# Check if any of the versions of GCC in pkgsrc can satisfy the _GCC_REQD
759# requirement. 759# requirement.
760# 760#
761.if !defined(_NEED_NEWER_GCC) 761.if !defined(_NEED_NEWER_GCC)
762_PKGSRC_GCC_VERSION= ${_GCC_PKGBASE}-${_GCC_DIST_VERSION} 762_PKGSRC_GCC_VERSION= ${_GCC_PKGBASE}-${_GCC_DIST_VERSION}
763_NEED_NEWER_GCC!= \ 763_NEED_NEWER_GCC!= \
764 if ${PKG_ADMIN} pmatch '${_GCC_DEPENDS}' ${_PKGSRC_GCC_VERSION} 2>/dev/null; then \ 764 if ${PKG_ADMIN} pmatch '${_GCC_DEPENDS}' ${_PKGSRC_GCC_VERSION} 2>/dev/null; then \
765 ${ECHO} "NO"; \ 765 ${ECHO} "NO"; \
766 else \ 766 else \
767 ${ECHO} "YES"; \ 767 ${ECHO} "YES"; \
768 fi 768 fi
769#MAKEFLAGS+= _NEED_NEWER_GCC=${_NEED_NEWER_GCC} 769#MAKEFLAGS+= _NEED_NEWER_GCC=${_NEED_NEWER_GCC}
770.endif 770.endif
771.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS]) && \ 771.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS]) && \
772 !empty(_NEED_NEWER_GCC:M[yY][eE][sS]) 772 !empty(_NEED_NEWER_GCC:M[yY][eE][sS])
773PKG_FAIL_REASON+= "Unable to satisfy dependency: ${_GCC_DEPENDS}" 773PKG_FAIL_REASON+= "Unable to satisfy dependency: ${_GCC_DEPENDS}"
774.endif 774.endif
775 775
776# GNU ld option used to set the rpath 776# GNU ld option used to set the rpath
777_LINKER_RPATH_FLAG= -R 777_LINKER_RPATH_FLAG= -R
778 778
779# GCC passes rpath directives to the linker using "-Wl,-R". 779# GCC passes rpath directives to the linker using "-Wl,-R".
780_COMPILER_RPATH_FLAG= -Wl,${_LINKER_RPATH_FLAG} 780_COMPILER_RPATH_FLAG= -Wl,${_LINKER_RPATH_FLAG}
781 781
782.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS]) 782.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS])
783# 783#
784# Ensure that the correct rpath is passed to the linker if we need to 784# Ensure that the correct rpath is passed to the linker if we need to
785# link against gcc shared libs. 785# link against gcc shared libs.
786# 786#
787_GCC_SUBPREFIX!= \ 787_GCC_SUBPREFIX!= \
788 if ${PKG_INFO} -qe ${_GCC_PKGBASE}; then \ 788 if ${PKG_INFO} -qe ${_GCC_PKGBASE}; then \
789 ${PKG_INFO} -f ${_GCC_PKGBASE} | \ 789 ${PKG_INFO} -f ${_GCC_PKGBASE} | \
790 ${GREP} "File:.*bin/gcc" | \ 790 ${GREP} "File:.*bin/gcc" | \
791 ${GREP} -v "/gcc[0-9][0-9]*-.*" | \ 791 ${GREP} -v "/gcc[0-9][0-9]*-.*" | \
792 ${SED} -e "s/.*File: *//;s/bin\/gcc.*//;q"; \ 792 ${SED} -e "s/.*File: *//;s/bin\/gcc.*//;q"; \
793 else \ 793 else \
794 case ${_CC} in \ 794 case ${_CC} in \
795 ${LOCALBASE}/*) \ 795 ${LOCALBASE}/*) \
796 subprefix="${_CC:H:S/\/bin$//:S/${LOCALBASE}\///:S/${LOCALBASE}//}"; \ 796 subprefix="${_CC:H:S/\/bin$//:S/${LOCALBASE}\///:S/${LOCALBASE}//}"; \
797 case "$${subprefix}" in \ 797 case "$${subprefix}" in \
798 "") ${ECHO} "$${subprefix}" ;; \ 798 "") ${ECHO} "$${subprefix}" ;; \
799 *) ${ECHO} "$${subprefix}/" ;; \ 799 *) ${ECHO} "$${subprefix}/" ;; \
800 esac; \ 800 esac; \
801 ;; \ 801 ;; \
802 *) \ 802 *) \
803 ${ECHO} "_GCC_SUBPREFIX_not_found/"; \ 803 ${ECHO} "_GCC_SUBPREFIX_not_found/"; \
804 ;; \ 804 ;; \
805 esac; \ 805 esac; \
806 fi 806 fi
807_GCC_PREFIX= ${LOCALBASE}/${_GCC_SUBPREFIX} 807_GCC_PREFIX= ${LOCALBASE}/${_GCC_SUBPREFIX}
808_GCC_ARCHDIR!= \ 808_GCC_ARCHDIR!= \
809 if [ -x ${_GCC_PREFIX}bin/gcc ]; then \ 809 if [ -x ${_GCC_PREFIX}bin/gcc ]; then \
810 ${DIRNAME} `${_GCC_PREFIX}bin/gcc -print-libgcc-file-name 2>/dev/null`; \ 810 ${DIRNAME} `${_GCC_PREFIX}bin/gcc -print-libgcc-file-name 2>/dev/null`; \
811 else \ 811 else \
812 ${ECHO} "_GCC_ARCHDIR_not_found"; \ 812 ${ECHO} "_GCC_ARCHDIR_not_found"; \
813 fi 813 fi
814_GCC_LIBDIRS= ${_GCC_ARCHDIR} 814_GCC_LIBDIRS= ${_GCC_ARCHDIR}
815. if empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss]) 815. if empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss])
816_GCC_LIBDIRS+= ${_GCC_PREFIX}lib${LIBABISUFFIX} 816_GCC_LIBDIRS+= ${_GCC_PREFIX}lib${LIBABISUFFIX}
817. endif 817. endif
818_GCC_LDFLAGS= # empty 818_GCC_LDFLAGS= # empty
819. for _dir_ in ${_GCC_LIBDIRS:N*not_found*} 819. for _dir_ in ${_GCC_LIBDIRS:N*not_found*}
820_GCC_LDFLAGS+= -L${_dir_} ${COMPILER_RPATH_FLAG}${_dir_} 820_GCC_LDFLAGS+= -L${_dir_} ${COMPILER_RPATH_FLAG}${_dir_}
821. endfor 821. endfor
822.endif 822.endif
823 823
824.if ${_PKGSRC_USE_RELRO} == "yes" 824.if ${_PKGSRC_USE_RELRO} == "yes"
825_GCC_LDFLAGS+= ${_RELRO_LDFLAGS} 825_GCC_LDFLAGS+= ${_RELRO_LDFLAGS}
826CWRAPPERS_APPEND.ld+= ${_RELRO_LDFLAGS} 826CWRAPPERS_APPEND.ld+= ${_RELRO_LDFLAGS}
827.endif 827.endif
828 828
829LDFLAGS+= ${_GCC_LDFLAGS} 829LDFLAGS+= ${_GCC_LDFLAGS}
830 830
831# Point the variables that specify the compiler to the installed 831# Point the variables that specify the compiler to the installed
832# GCC executables. 832# GCC executables.
833# 833#
834_GCC_DIR= ${WRKDIR}/.gcc 834_GCC_DIR= ${WRKDIR}/.gcc
835_GCC_VARS= # empty 835_GCC_VARS= # empty
836 836
837.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS]) 837.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS])
838_GCCBINDIR= ${_GCC_PREFIX}bin 838_GCCBINDIR= ${_GCC_PREFIX}bin
839.elif !empty(_IS_BUILTIN_GCC:M[yY][eE][sS]) 839.elif !empty(_IS_BUILTIN_GCC:M[yY][eE][sS])
840_GCCBINDIR= ${_CC:H} 840_GCCBINDIR= ${_CC:H}
841.endif 841.endif
842.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) 842.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
843_GCC_BIN_PREFIX= ${MACHINE_GNU_PLATFORM}- 843_GCC_BIN_PREFIX= ${MACHINE_GNU_PLATFORM}-
844.endif 844.endif
845.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}gcc${GCC_VERSION_SUFFIX}) 845.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}gcc${GCC_VERSION_SUFFIX})
846_GCC_VARS+= CC 846_GCC_VARS+= CC
847_GCC_CC= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gcc${GCC_VERSION_SUFFIX} 847_GCC_CC= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gcc${GCC_VERSION_SUFFIX}
848_ALIASES.CC= cc gcc 848_ALIASES.CC= cc gcc
849CCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gcc${GCC_VERSION_SUFFIX} 849CCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gcc${GCC_VERSION_SUFFIX}
850PKG_CC:= ${_GCC_CC} 850PKG_CC:= ${_GCC_CC}
851.endif 851.endif
852.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}cpp${GCC_VERSION_SUFFIX}) 852.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}cpp${GCC_VERSION_SUFFIX})
853_GCC_VARS+= CPP 853_GCC_VARS+= CPP
854_GCC_CPP= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}cpp${GCC_VERSION_SUFFIX} 854_GCC_CPP= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}cpp${GCC_VERSION_SUFFIX}
855_ALIASES.CPP= cpp 855_ALIASES.CPP= cpp
856CPPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}cpp${GCC_VERSION_SUFFIX} 856CPPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}cpp${GCC_VERSION_SUFFIX}
857PKG_CPP:= ${_GCC_CPP} 857PKG_CPP:= ${_GCC_CPP}
858.endif 858.endif
859.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}g++${GCC_VERSION_SUFFIX}) 859.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}g++${GCC_VERSION_SUFFIX})
860_GCC_VARS+= CXX 860_GCC_VARS+= CXX
861_GCC_CXX= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}g++${GCC_VERSION_SUFFIX} 861_GCC_CXX= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}g++${GCC_VERSION_SUFFIX}
862_ALIASES.CXX= c++ g++ 862_ALIASES.CXX= c++ g++
863CXXPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g++${GCC_VERSION_SUFFIX} 863CXXPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g++${GCC_VERSION_SUFFIX}
864PKG_CXX:= ${_GCC_CXX} 864PKG_CXX:= ${_GCC_CXX}
865.endif 865.endif
866.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX}) 866.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX})
867_GCC_VARS+= FC 867_GCC_VARS+= FC
868_GCC_FC= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX} 868_GCC_FC= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX}
869_ALIASES.FC= f77 g77 869_ALIASES.FC= f77 g77
870FC= g77 870FC= g77
871FCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX} 871FCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX}
872F77PATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX} 872F77PATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX}
873PKG_FC:= ${_GCC_FC} 873PKG_FC:= ${_GCC_FC}
874PKGSRC_FORTRAN?= g77 874PKGSRC_FORTRAN?= g77
875.endif 875.endif
876.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX}) 876.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX})
877_GCC_VARS+= FC 877_GCC_VARS+= FC
878_GCC_FC= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX} 878_GCC_FC= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX}
879_ALIASES.FC= gfortran 879_ALIASES.FC= gfortran
880FC= gfortran 880FC= gfortran
881FCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX} 881FCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX}
882F77PATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX} 882F77PATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX}
883PKG_FC:= ${_GCC_FC} 883PKG_FC:= ${_GCC_FC}
884PKGSRC_FORTRAN?= gfortran 884PKGSRC_FORTRAN?= gfortran
885.endif 885.endif
886.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}ada) 886.if exists(${_GCCBINDIR}/${_GCC_BIN_PREFIX}ada)
887_GCC_VARS+= ADA GMK GLK GBD CHP PRP GLS GNT 887_GCC_VARS+= ADA GMK GLK GBD CHP PRP GLS GNT
888_GCC_ADA= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}ada 888_GCC_ADA= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}ada
889_GCC_GMK= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatmake 889_GCC_GMK= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatmake
890_GCC_GLK= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatlink 890_GCC_GLK= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatlink
891_GCC_GBD= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatbind 891_GCC_GBD= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatbind
892_GCC_CHP= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatchop 892_GCC_CHP= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatchop
893_GCC_PRP= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatprep 893_GCC_PRP= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatprep
894_GCC_GLS= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatls 894_GCC_GLS= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnatls
895_GCC_GNT= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnat 895_GCC_GNT= ${_GCC_DIR}/bin/${_GCC_BIN_PREFIX}gnat
896_ALIASES.ADA= ada 896_ALIASES.ADA= ada
897_ALIASES.GMK= gnatmake 897_ALIASES.GMK= gnatmake
898_ALIASES.GLK= gnatlink 898_ALIASES.GLK= gnatlink
899_ALIASES.GBD= gnatbind 899_ALIASES.GBD= gnatbind
900_ALIASES.CHP= gnatchop 900_ALIASES.CHP= gnatchop
901_ALIASES.PRP= gnatprep 901_ALIASES.PRP= gnatprep
902_ALIASES.GLS= gnatls 902_ALIASES.GLS= gnatls
903_ALIASES.GNT= gnat 903_ALIASES.GNT= gnat
904ADAPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}ada 904ADAPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}ada
905GMKPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatmake 905GMKPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatmake
906GLKPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatlink 906GLKPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatlink
907GBDPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatbind 907GBDPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatbind
908CHPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatchop 908CHPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatchop
909PRPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatprep 909PRPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatprep
910GLSPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatls 910GLSPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatls
911GNTPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnat 911GNTPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnat
912PKG_ADA:= ${_GCC_ADA} 912PKG_ADA:= ${_GCC_ADA}
913PKG_GMK:= ${_GCC_GMK} 913PKG_GMK:= ${_GCC_GMK}
914PKG_GLK:= ${_GCC_GLK} 914PKG_GLK:= ${_GCC_GLK}
915PKG_GBD:= ${_GCC_GBD} 915PKG_GBD:= ${_GCC_GBD}
916PKG_CHP:= ${_GCC_CHP} 916PKG_CHP:= ${_GCC_CHP}
917PKG_PRP:= ${_GCC_PRP} 917PKG_PRP:= ${_GCC_PRP}
918PKG_GLS:= ${_GCC_GLS} 918PKG_GLS:= ${_GCC_GLS}
919PKG_GNT:= ${_GCC_GNT} 919PKG_GNT:= ${_GCC_GNT}
920PKGSRC_ADA?= ada 920PKGSRC_ADA?= ada
921PKGSRC_GMK?= gnatmake 921PKGSRC_GMK?= gnatmake
922PKGSRC_GLK?= gnatlink 922PKGSRC_GLK?= gnatlink
923PKGSRC_GBD?= gnatbind 923PKGSRC_GBD?= gnatbind
924PKGSRC_CHP?= gnatchop 924PKGSRC_CHP?= gnatchop
925PKGSRC_PRP?= gnatprep 925PKGSRC_PRP?= gnatprep
926PKGSRC_GLS?= gnatls 926PKGSRC_GLS?= gnatls
927PKGSRC_GNT?= gnat 927PKGSRC_GNT?= gnat
928.endif 928.endif
929_COMPILER_STRIP_VARS+= ${_GCC_VARS} 929_COMPILER_STRIP_VARS+= ${_GCC_VARS}
930 930
931# Pass the required flags to imake to tell it we're using gcc on Solaris. 931# Pass the required flags to imake to tell it we're using gcc on Solaris.
932.if ${OPSYS} == "SunOS" 932.if ${OPSYS} == "SunOS"
933IMAKEOPTS+= -DHasGcc2=YES -DHasGcc2ForCplusplus=YES 933IMAKEOPTS+= -DHasGcc2=YES -DHasGcc2ForCplusplus=YES
934.endif 934.endif
935 935
936.if ${OPSYS} == "AIX" 936.if ${OPSYS} == "AIX"
937# On AIX the GCC toolchain recognizes -maix32 and -maix64, 937# On AIX the GCC toolchain recognizes -maix32 and -maix64,
938# -m32 or -m64 are not recognized. 938# -m32 or -m64 are not recognized.
939_COMPILER_ABI_FLAG.32= -maix32 939_COMPILER_ABI_FLAG.32= -maix32
940_COMPILER_ABI_FLAG.64= -maix64 940_COMPILER_ABI_FLAG.64= -maix64
941# On HP-UX the GCC toolchain must be specifically targeted to an ABI, 941# On HP-UX the GCC toolchain must be specifically targeted to an ABI,
942# -m32 or -m64 are not recognized. 942# -m32 or -m64 are not recognized.
943.elif ${OPSYS} == "HPUX" 943.elif ${OPSYS} == "HPUX"
944_COMPILER_ABI_FLAG.32= # empty 944_COMPILER_ABI_FLAG.32= # empty
945_COMPILER_ABI_FLAG.64= # empty 945_COMPILER_ABI_FLAG.64= # empty
946.elif !empty(MACHINE_ARCH:Mmips*) 946.elif !empty(MACHINE_ARCH:Mmips*)
947_COMPILER_ABI_FLAG.32= -mabi=n32 # ABI == "32" == "n32" 947_COMPILER_ABI_FLAG.32= -mabi=n32 # ABI == "32" == "n32"
948_COMPILER_ABI_FLAG.n32= -mabi=n32 948_COMPILER_ABI_FLAG.n32= -mabi=n32
949_COMPILER_ABI_FLAG.o32= -mabi=32 949_COMPILER_ABI_FLAG.o32= -mabi=32
950_COMPILER_ABI_FLAG.64= -mabi=64 950_COMPILER_ABI_FLAG.64= -mabi=64
951.elif !empty(MACHINE_ARCH:Maarch64*) 951.elif !empty(MACHINE_ARCH:Maarch64*)
952_COMPILER_ABI_FLAG.32= -m32 952_COMPILER_ABI_FLAG.32= -m32
953_COMPILER_ABI_FLAG.64= # empty 953_COMPILER_ABI_FLAG.64= # empty
954.else 954.else
955_COMPILER_ABI_FLAG.32= -m32 955_COMPILER_ABI_FLAG.32= -m32
956_COMPILER_ABI_FLAG.64= -m64 956_COMPILER_ABI_FLAG.64= -m64
957.endif 957.endif
958 958
959.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS]) 959.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS])
960. if exists(${CCPATH}) 960. if exists(${CCPATH})
961CC_VERSION_STRING!= ${CCPATH} -v 2>&1 961CC_VERSION_STRING!= ${CCPATH} -v 2>&1
962CC_VERSION!= \ 962CC_VERSION!= \
963 if ${CCPATH} -dumpversion > /dev/null 2>&1; then \ 963 if ${CCPATH} -dumpversion > /dev/null 2>&1; then \
964 ${ECHO} "gcc-`${CCPATH} -dumpversion`"; \ 964 ${ECHO} "gcc-`${CCPATH} -dumpversion`"; \
965 else \ 965 else \
966 ${ECHO} "gcc-${_GCC_REQD}"; \ 966 ${ECHO} "gcc-${_GCC_REQD}"; \
967 fi 967 fi
968 968
969. else 969. else
970CC_VERSION_STRING= ${CC_VERSION} 970CC_VERSION_STRING= ${CC_VERSION}
971CC_VERSION= gcc-${_GCC_REQD} 971CC_VERSION= gcc-${_GCC_REQD}
972. endif 972. endif
973.else 973.else
974CC_VERSION_STRING= ${CC_VERSION} 974CC_VERSION_STRING= ${CC_VERSION}
975CC_VERSION= ${_GCC_PKG} 975CC_VERSION= ${_GCC_PKG}
976.endif 976.endif
977 977
978# The user can choose the level of stack smashing protection. 978# The user can choose the level of stack smashing protection.
979.if !empty(CC_VERSION:Mgcc-[4-9]*) 979.if empty(CC_VERSION:Mgcc-[1-3].*)
980. if ${PKGSRC_USE_SSP} == "all" 980. if ${PKGSRC_USE_SSP} == "all"
981_SSP_CFLAGS= -fstack-protector-all 981_SSP_CFLAGS= -fstack-protector-all
982. elif ${PKGSRC_USE_SSP} == "strong" 982. elif ${PKGSRC_USE_SSP} == "strong"
983_SSP_CFLAGS= -fstack-protector-strong 983_SSP_CFLAGS= -fstack-protector-strong
984. else 984. else
985_SSP_CFLAGS= -fstack-protector 985_SSP_CFLAGS= -fstack-protector
986. endif 986. endif
987.endif 987.endif
988 988
989# Prepend the path to the compiler to the PATH. 989# Prepend the path to the compiler to the PATH.
990.if !empty(_LANGUAGES.gcc) 990.if !empty(_LANGUAGES.gcc)
991PREPEND_PATH+= ${_GCC_DIR}/bin 991PREPEND_PATH+= ${_GCC_DIR}/bin
992.endif 992.endif
993 993
994# Add the dependency on GCC. 994# Add the dependency on GCC.
995.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS]) 995.if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS])
996. for _dir_ in ${_GCC_PKGSRCDIR} 996. for _dir_ in ${_GCC_PKGSRCDIR}
997. include "${_dir_}/buildlink3.mk" 997. include "${_dir_}/buildlink3.mk"
998. endfor 998. endfor
999.endif 999.endif
1000 1000
1001# Add dependency on GCC libraries if requested. 1001# Add dependency on GCC libraries if requested.
1002.if (defined(_USE_GCC_SHLIB) && !empty(_USE_GCC_SHLIB:M[Yy][Ee][Ss])) && !empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss]) 1002.if (defined(_USE_GCC_SHLIB) && !empty(_USE_GCC_SHLIB:M[Yy][Ee][Ss])) && !empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss])
1003# Special case packages which are themselves a dependency of gcc runtime. 1003# Special case packages which are themselves a dependency of gcc runtime.
1004. if ${PKGPATH} != devel/libtool-base && ${PKGPATH} != devel/binutils && \ 1004. if ${PKGPATH} != devel/libtool-base && ${PKGPATH} != devel/binutils && \
1005 empty(PKGPATH:Mlang/gcc4?) && empty(PKGPATH:Mlang/gcc[5-9]) 1005 empty(PKGPATH:Mlang/gcc4?) && empty(PKGPATH:Mlang/gcc[5-9])
1006. if !empty(_GCC_PKGBASE:Mgcc48) 1006. if !empty(_GCC_PKGBASE:Mgcc48)
1007. include "../../lang/gcc48-libs/buildlink3.mk" 1007. include "../../lang/gcc48-libs/buildlink3.mk"
1008. elif !empty(_GCC_PKGBASE:Mgcc49) 1008. elif !empty(_GCC_PKGBASE:Mgcc49)
1009. include "../../lang/gcc49-libs/buildlink3.mk" 1009. include "../../lang/gcc49-libs/buildlink3.mk"
1010. elif !empty(_GCC_PKGBASE:Mgcc5) 1010. elif !empty(_GCC_PKGBASE:Mgcc5)
1011. include "../../lang/gcc5-libs/buildlink3.mk" 1011. include "../../lang/gcc5-libs/buildlink3.mk"
1012. elif !empty(_GCC_PKGBASE:Mgcc6) 1012. elif !empty(_GCC_PKGBASE:Mgcc6)
1013. include "../../lang/gcc6-libs/buildlink3.mk" 1013. include "../../lang/gcc6-libs/buildlink3.mk"
1014. elif !empty(_GCC_PKGBASE:Mgcc7) 1014. elif !empty(_GCC_PKGBASE:Mgcc7)
1015. include "../../lang/gcc7-libs/buildlink3.mk" 1015. include "../../lang/gcc7-libs/buildlink3.mk"
1016. elif !empty(_GCC_PKGBASE:Mgcc8) 1016. elif !empty(_GCC_PKGBASE:Mgcc8)
1017. include "../../lang/gcc8-libs/buildlink3.mk" 1017. include "../../lang/gcc8-libs/buildlink3.mk"
1018. else 1018. else
1019PKG_FAIL_REASON+= "No USE_PKGSRC_GCC_RUNTIME support for ${CC_VERSION}" 1019PKG_FAIL_REASON+= "No USE_PKGSRC_GCC_RUNTIME support for ${CC_VERSION}"
1020. endif 1020. endif
1021. endif 1021. endif
1022.endif 1022.endif
1023 1023
1024.for _var_ in ${_GCC_VARS} 1024.for _var_ in ${_GCC_VARS}
1025. if !target(${_GCC_${_var_}}) 1025. if !target(${_GCC_${_var_}})
1026override-tools: ${_GCC_${_var_}} 1026override-tools: ${_GCC_${_var_}}
1027${_GCC_${_var_}}: 1027${_GCC_${_var_}}:
1028 ${RUN}${MKDIR} ${.TARGET:H} 1028 ${RUN}${MKDIR} ${.TARGET:H}
1029. if !empty(COMPILER_USE_SYMLINKS:M[Yy][Ee][Ss]) 1029. if !empty(COMPILER_USE_SYMLINKS:M[Yy][Ee][Ss])
1030 ${RUN}${RM} -f ${.TARGET} 1030 ${RUN}${RM} -f ${.TARGET}
1031 ${RUN}${LN} -s ${_GCCBINDIR}/${.TARGET:T} ${.TARGET} 1031 ${RUN}${LN} -s ${_GCCBINDIR}/${.TARGET:T} ${.TARGET}
1032. else 1032. else
1033 ${RUN} \ 1033 ${RUN} \
1034 (${ECHO} '#!${TOOLS_SHELL}'; \ 1034 (${ECHO} '#!${TOOLS_SHELL}'; \
1035 ${ECHO} 'exec ${_GCCBINDIR}/${.TARGET:T} "$$@"'; \ 1035 ${ECHO} 'exec ${_GCCBINDIR}/${.TARGET:T} "$$@"'; \
1036 ) > ${.TARGET} 1036 ) > ${.TARGET}
1037 ${RUN}${CHMOD} +x ${.TARGET} 1037 ${RUN}${CHMOD} +x ${.TARGET}
1038. endif 1038. endif
1039. for _alias_ in ${_ALIASES.${_var_}:S/^/${.TARGET:H}\//} 1039. for _alias_ in ${_ALIASES.${_var_}:S/^/${.TARGET:H}\//}
1040 ${RUN} \ 1040 ${RUN} \
1041 if [ ! -x "${_alias_}" ]; then \ 1041 if [ ! -x "${_alias_}" ]; then \
1042 ${LN} -f -s ${.TARGET:T} ${_alias_}; \ 1042 ${LN} -f -s ${.TARGET:T} ${_alias_}; \
1043 fi 1043 fi
1044. endfor 1044. endfor
1045. endif 1045. endif
1046.endfor 1046.endfor
1047 1047
1048# On systems without a Fortran compiler, pull one in if needed. 1048# On systems without a Fortran compiler, pull one in if needed.
1049PKGSRC_FORTRAN?=gfortran 1049PKGSRC_FORTRAN?=gfortran
1050 1050
1051_GCC_NEEDS_A_FORTRAN= no 1051_GCC_NEEDS_A_FORTRAN= no
1052.if empty(_USE_PKGSRC_GCC:M[yY][eE][sS]) && !exists(${FCPATH}) 1052.if empty(_USE_PKGSRC_GCC:M[yY][eE][sS]) && !exists(${FCPATH})
1053_GCC_NEEDS_A_FORTRAN= yes 1053_GCC_NEEDS_A_FORTRAN= yes
1054.else 1054.else
1055. for _pattern_ in 0.* 1.[0-4] 1.[0-4].* 1055. for _pattern_ in 0.* 1.[0-4] 1.[0-4].*
1056. if !empty(MACHINE_PLATFORM:MNetBSD-${_pattern_}-*) 1056. if !empty(MACHINE_PLATFORM:MNetBSD-${_pattern_}-*)
1057_GCC_NEEDS_A_FORTRAN= yes 1057_GCC_NEEDS_A_FORTRAN= yes
1058. endif 1058. endif
1059. endfor 1059. endfor
1060.endif 1060.endif
1061.if !empty(_GCC_NEEDS_A_FORTRAN:M[yY][eE][sS]) 1061.if !empty(_GCC_NEEDS_A_FORTRAN:M[yY][eE][sS])
1062. include "../../mk/compiler/${PKGSRC_FORTRAN}.mk" 1062. include "../../mk/compiler/${PKGSRC_FORTRAN}.mk"
1063.endif 1063.endif
1064 1064
1065.if ${OPSYS} == "Interix" && !empty(_GCCBINDIR:M/opt/gcc.*) 1065.if ${OPSYS} == "Interix" && !empty(_GCCBINDIR:M/opt/gcc.*)
1066COMPILER_INCLUDE_DIRS= ${_GCCBINDIR:H}/include ${_OPSYS_INCLUDE_DIRS} 1066COMPILER_INCLUDE_DIRS= ${_GCCBINDIR:H}/include ${_OPSYS_INCLUDE_DIRS}
1067COMPILER_LIB_DIRS= ${_GCCBINDIR:H}/lib ${_OPSYS_LIB_DIRS} 1067COMPILER_LIB_DIRS= ${_GCCBINDIR:H}/lib ${_OPSYS_LIB_DIRS}
1068.endif 1068.endif
1069 1069
1070.endif # COMPILER_GCC_MK 1070.endif # COMPILER_GCC_MK