| @@ -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) |
59 | COMPILER_GCC_MK= defined | | 59 | COMPILER_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 | |
135 | USE_NATIVE_GCC?= no | | 135 | USE_NATIVE_GCC?= no |
136 | USE_PKGSRC_GCC?= no | | 136 | USE_PKGSRC_GCC?= no |
137 | USE_PKGSRC_GCC_RUNTIME?=no | | 137 | USE_PKGSRC_GCC_RUNTIME?=no |
138 | | | 138 | |
139 | GCC_REQD+= 2.8.0 | | 139 | GCC_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" |
143 | GCC_REQD+= 3.0 | | 143 | GCC_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) |
149 | GCC_REQD+= 20120614 | | 149 | GCC_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) |
195 | CC= gcc | | 195 | CC= 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. |
214 | MAKEFLAGS+= _CC=${_CC:Q} | | 214 | MAKEFLAGS+= _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 |
249 | GCC_REQD+= ${_GCC_VERSION} | | 249 | GCC_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. |
370 | LANGUAGES.gcc?= c | | 370 | LANGUAGES.gcc?= c |
371 | .if !empty(_NEED_GCC2:M[yY][eE][sS]) | | 371 | .if !empty(_NEED_GCC2:M[yY][eE][sS]) |
372 | LANGUAGES.gcc= c c++ fortran77 objc | | 372 | LANGUAGES.gcc= c c++ fortran77 objc |
373 | .elif !empty(_NEED_GCC3:M[yY][eE][sS]) | | 373 | .elif !empty(_NEED_GCC3:M[yY][eE][sS]) |
374 | LANGUAGES.gcc= c c++ fortran77 java objc | | 374 | LANGUAGES.gcc= c c++ fortran77 java objc |
375 | .elif !empty(_NEED_GCC34:M[yY][eE][sS]) | | 375 | .elif !empty(_NEED_GCC34:M[yY][eE][sS]) |
376 | LANGUAGES.gcc= c c++ fortran77 objc | | 376 | LANGUAGES.gcc= c c++ fortran77 objc |
377 | .elif !empty(_NEED_GCC44:M[yY][eE][sS]) | | 377 | .elif !empty(_NEED_GCC44:M[yY][eE][sS]) |
378 | LANGUAGES.gcc= c c++ fortran fortran77 java objc | | 378 | LANGUAGES.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]) |
380 | LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ | | 380 | LANGUAGES.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]) |
382 | LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ | | 382 | LANGUAGES.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]) |
384 | LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ | | 384 | LANGUAGES.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]) |
386 | LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ | | 386 | LANGUAGES.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]) |
388 | LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ | | 388 | LANGUAGES.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]) |
390 | LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ | | 390 | LANGUAGES.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]) |
392 | LANGUAGES.gcc= c c++ fortran fortran77 objc ada | | 392 | LANGUAGES.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 |
401 | CWRAPPERS_APPEND.cc+= -std=gnu99 | | 401 | CWRAPPERS_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} |
415 | CWRAPPERS_APPEND.cc+= ${_MKPIE_CFLAGS.gcc} | | 415 | CWRAPPERS_APPEND.cc+= ${_MKPIE_CFLAGS.gcc} |
416 | CWRAPPERS_APPEND.cxx+= ${_MKPIE_CFLAGS.gcc} | | 416 | CWRAPPERS_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} |
429 | CWRAPPERS_APPEND.cc+= ${_MKREPRO_CFLAGS.gcc} | | 429 | CWRAPPERS_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} |
441 | CWRAPPERS_APPEND.cc+= ${_FORTIFY_CFLAGS} | | 441 | CWRAPPERS_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) |
466 | CFLAGS+= -Wno-import | | 466 | CFLAGS+= -Wno-import |
467 | .endif | | 467 | .endif |
468 | | | 468 | |
469 | CFLAGS+= ${_GCC_CFLAGS} | | 469 | CFLAGS+= ${_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 |
478 | MAKEFLAGS+= _IGNORE_GCC=yes | | 478 | MAKEFLAGS+= _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 |
496 | MAKEFLAGS+= _IGNORE_GCC=yes | | 496 | MAKEFLAGS+= _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 |
509 | MAKEFLAGS+= _IGNORE_GCC=yes | | 509 | MAKEFLAGS+= _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 |
527 | MAKEFLAGS+= _IGNORE_GCC=yes | | 527 | MAKEFLAGS+= _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 |
546 | MAKEFLAGS+= _IGNORE_GCC=yes | | 546 | MAKEFLAGS+= _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 |
567 | MAKEFLAGS+= _IGNORE_GCC=yes | | 567 | MAKEFLAGS+= _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 |
588 | MAKEFLAGS+= _IGNORE_GCC=yes | | 588 | MAKEFLAGS+= _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 |
609 | MAKEFLAGS+= _IGNORE_GCC=yes | | 609 | MAKEFLAGS+= _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 |
630 | MAKEFLAGS+= _IGNORE_GCC=yes | | 630 | MAKEFLAGS+= _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 |
651 | MAKEFLAGS+= _IGNORE_GCC=yes | | 651 | MAKEFLAGS+= _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 |
672 | MAKEFLAGS+= _IGNORE_GCC=yes | | 672 | MAKEFLAGS+= _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 |
691 | MAKEFLAGS+= _IGNORE_GCC3CXX=yes | | 691 | MAKEFLAGS+= _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 |
700 | MAKEFLAGS+= _IGNORE_GCC3F77=yes | | 700 | MAKEFLAGS+= _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 |
709 | MAKEFLAGS+= _IGNORE_GCC3OBJC=yes | | 709 | MAKEFLAGS+= _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]) |
773 | PKG_FAIL_REASON+= "Unable to satisfy dependency: ${_GCC_DEPENDS}" | | 773 | PKG_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} |
826 | CWRAPPERS_APPEND.ld+= ${_RELRO_LDFLAGS} | | 826 | CWRAPPERS_APPEND.ld+= ${_RELRO_LDFLAGS} |
827 | .endif | | 827 | .endif |
828 | | | 828 | |
829 | LDFLAGS+= ${_GCC_LDFLAGS} | | 829 | LDFLAGS+= ${_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 |
849 | CCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gcc${GCC_VERSION_SUFFIX} | | 849 | CCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gcc${GCC_VERSION_SUFFIX} |
850 | PKG_CC:= ${_GCC_CC} | | 850 | PKG_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 |
856 | CPPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}cpp${GCC_VERSION_SUFFIX} | | 856 | CPPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}cpp${GCC_VERSION_SUFFIX} |
857 | PKG_CPP:= ${_GCC_CPP} | | 857 | PKG_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++ |
863 | CXXPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g++${GCC_VERSION_SUFFIX} | | 863 | CXXPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g++${GCC_VERSION_SUFFIX} |
864 | PKG_CXX:= ${_GCC_CXX} | | 864 | PKG_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 |
870 | FC= g77 | | 870 | FC= g77 |
871 | FCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX} | | 871 | FCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX} |
872 | F77PATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX} | | 872 | F77PATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}g77${GCC_VERSION_SUFFIX} |
873 | PKG_FC:= ${_GCC_FC} | | 873 | PKG_FC:= ${_GCC_FC} |
874 | PKGSRC_FORTRAN?= g77 | | 874 | PKGSRC_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 |
880 | FC= gfortran | | 880 | FC= gfortran |
881 | FCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX} | | 881 | FCPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX} |
882 | F77PATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX} | | 882 | F77PATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gfortran${GCC_VERSION_SUFFIX} |
883 | PKG_FC:= ${_GCC_FC} | | 883 | PKG_FC:= ${_GCC_FC} |
884 | PKGSRC_FORTRAN?= gfortran | | 884 | PKGSRC_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 |
904 | ADAPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}ada | | 904 | ADAPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}ada |
905 | GMKPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatmake | | 905 | GMKPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatmake |
906 | GLKPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatlink | | 906 | GLKPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatlink |
907 | GBDPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatbind | | 907 | GBDPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatbind |
908 | CHPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatchop | | 908 | CHPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatchop |
909 | PRPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatprep | | 909 | PRPPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatprep |
910 | GLSPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatls | | 910 | GLSPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnatls |
911 | GNTPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnat | | 911 | GNTPATH= ${_GCCBINDIR}/${_GCC_BIN_PREFIX}gnat |
912 | PKG_ADA:= ${_GCC_ADA} | | 912 | PKG_ADA:= ${_GCC_ADA} |
913 | PKG_GMK:= ${_GCC_GMK} | | 913 | PKG_GMK:= ${_GCC_GMK} |
914 | PKG_GLK:= ${_GCC_GLK} | | 914 | PKG_GLK:= ${_GCC_GLK} |
915 | PKG_GBD:= ${_GCC_GBD} | | 915 | PKG_GBD:= ${_GCC_GBD} |
916 | PKG_CHP:= ${_GCC_CHP} | | 916 | PKG_CHP:= ${_GCC_CHP} |
917 | PKG_PRP:= ${_GCC_PRP} | | 917 | PKG_PRP:= ${_GCC_PRP} |
918 | PKG_GLS:= ${_GCC_GLS} | | 918 | PKG_GLS:= ${_GCC_GLS} |
919 | PKG_GNT:= ${_GCC_GNT} | | 919 | PKG_GNT:= ${_GCC_GNT} |
920 | PKGSRC_ADA?= ada | | 920 | PKGSRC_ADA?= ada |
921 | PKGSRC_GMK?= gnatmake | | 921 | PKGSRC_GMK?= gnatmake |
922 | PKGSRC_GLK?= gnatlink | | 922 | PKGSRC_GLK?= gnatlink |
923 | PKGSRC_GBD?= gnatbind | | 923 | PKGSRC_GBD?= gnatbind |
924 | PKGSRC_CHP?= gnatchop | | 924 | PKGSRC_CHP?= gnatchop |
925 | PKGSRC_PRP?= gnatprep | | 925 | PKGSRC_PRP?= gnatprep |
926 | PKGSRC_GLS?= gnatls | | 926 | PKGSRC_GLS?= gnatls |
927 | PKGSRC_GNT?= gnat | | 927 | PKGSRC_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" |
933 | IMAKEOPTS+= -DHasGcc2=YES -DHasGcc2ForCplusplus=YES | | 933 | IMAKEOPTS+= -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}) |
961 | CC_VERSION_STRING!= ${CCPATH} -v 2>&1 | | 961 | CC_VERSION_STRING!= ${CCPATH} -v 2>&1 |
962 | CC_VERSION!= \ | | 962 | CC_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 |
970 | CC_VERSION_STRING= ${CC_VERSION} | | 970 | CC_VERSION_STRING= ${CC_VERSION} |
971 | CC_VERSION= gcc-${_GCC_REQD} | | 971 | CC_VERSION= gcc-${_GCC_REQD} |
972 | . endif | | 972 | . endif |
973 | .else | | 973 | .else |
974 | CC_VERSION_STRING= ${CC_VERSION} | | 974 | CC_VERSION_STRING= ${CC_VERSION} |
975 | CC_VERSION= ${_GCC_PKG} | | 975 | CC_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) |
991 | PREPEND_PATH+= ${_GCC_DIR}/bin | | 991 | PREPEND_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 |
1019 | PKG_FAIL_REASON+= "No USE_PKGSRC_GCC_RUNTIME support for ${CC_VERSION}" | | 1019 | PKG_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_}}) |
1026 | override-tools: ${_GCC_${_var_}} | | 1026 | override-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. |
1049 | PKGSRC_FORTRAN?=gfortran | | 1049 | PKGSRC_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.*) |
1066 | COMPILER_INCLUDE_DIRS= ${_GCCBINDIR:H}/include ${_OPSYS_INCLUDE_DIRS} | | 1066 | COMPILER_INCLUDE_DIRS= ${_GCCBINDIR:H}/include ${_OPSYS_INCLUDE_DIRS} |
1067 | COMPILER_LIB_DIRS= ${_GCCBINDIR:H}/lib ${_OPSYS_LIB_DIRS} | | 1067 | COMPILER_LIB_DIRS= ${_GCCBINDIR:H}/lib ${_OPSYS_LIB_DIRS} |
1068 | .endif | | 1068 | .endif |
1069 | | | 1069 | |
1070 | .endif # COMPILER_GCC_MK | | 1070 | .endif # COMPILER_GCC_MK |