Tue Sep 13 07:59:15 2016 UTC ()
Add logic so GCC_REQD+=6.x works

ok jperkin@


(maya)
diff -r1.168 -r1.169 pkgsrc/mk/compiler/gcc.mk

cvs diff -r1.168 -r1.169 pkgsrc/mk/compiler/gcc.mk (expand / switch to unified diff)

--- pkgsrc/mk/compiler/gcc.mk 2016/06/13 13:26:42 1.168
+++ pkgsrc/mk/compiler/gcc.mk 2016/09/13 07:59:15 1.169
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1# $NetBSD: gcc.mk,v 1.168 2016/06/13 13:26:42 jperkin Exp $ 1# $NetBSD: gcc.mk,v 1.169 2016/09/13 07:59:15 maya 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#
@@ -95,27 +95,27 @@ GCC_REQD+= 2.8.0 @@ -95,27 +95,27 @@ GCC_REQD+= 2.8.0
95# gcc2 doesn't support c99 and amd64 95# gcc2 doesn't support c99 and amd64
96.if !empty(USE_LANGUAGES:Mc99) || ${MACHINE_ARCH} == "x86_64" 96.if !empty(USE_LANGUAGES:Mc99) || ${MACHINE_ARCH} == "x86_64"
97GCC_REQD+= 3.0 97GCC_REQD+= 3.0
98.endif 98.endif
99 99
100# Only one compiler defined here supports Ada: lang/gcc-aux 100# Only one compiler defined here supports Ada: lang/gcc-aux
101# If the Ada language is requested, force lang/gcc-aux to be selected 101# If the Ada language is requested, force lang/gcc-aux to be selected
102.if !empty(USE_LANGUAGES:Mada) 102.if !empty(USE_LANGUAGES:Mada)
103GCC_REQD+= 20120614 103GCC_REQD+= 20120614
104.endif 104.endif
105 105
106# _GCC_DIST_VERSION is the highest version of GCC installed by the pkgsrc 106# _GCC_DIST_VERSION is the highest version of GCC installed by the pkgsrc
107# without the PKGREVISIONs. 107# without the PKGREVISIONs.
108_GCC_DIST_NAME:= gcc5 108_GCC_DIST_NAME:= gcc6
109.include "../../lang/${_GCC_DIST_NAME}/version.mk" 109.include "../../lang/${_GCC_DIST_NAME}/version.mk"
110_GCC_DIST_VERSION:= ${${_GCC_DIST_NAME:tu}_DIST_VERSION} 110_GCC_DIST_VERSION:= ${${_GCC_DIST_NAME:tu}_DIST_VERSION}
111 111
112# _GCC2_PATTERNS matches N s.t. N <= 2.95.3. 112# _GCC2_PATTERNS matches N s.t. N <= 2.95.3.
113_GCC2_PATTERNS= [0-1].* 2.[0-9] 2.[0-9].* 2.[1-8][0-9] 2.[1-8][0-9].* \ 113_GCC2_PATTERNS= [0-1].* 2.[0-9] 2.[0-9].* 2.[1-8][0-9] 2.[1-8][0-9].* \
114 2.9[0-4] 2.9[0-4].* 2.95 2.95.[0-3] 114 2.9[0-4] 2.9[0-4].* 2.95 2.95.[0-3]
115 115
116# _GCC3_PATTERNS matches N s.t. 2.95.3 < N < 3.4. 116# _GCC3_PATTERNS matches N s.t. 2.95.3 < N < 3.4.
117_GCC3_PATTERNS= 2.95.[4-9]* 2.95.[1-9][0-9]* 2.9[6-9] 2.9[6-9].* \ 117_GCC3_PATTERNS= 2.95.[4-9]* 2.95.[1-9][0-9]* 2.9[6-9] 2.9[6-9].* \
118 2.[1-9][0-9][0-9]* 3.[0-3] 3.[0-3].* 118 2.[1-9][0-9][0-9]* 3.[0-3] 3.[0-3].*
119 119
120# _GCC34_PATTERNS matches N s.t. 3.4 <= N < 4. 120# _GCC34_PATTERNS matches N s.t. 3.4 <= N < 4.
121_GCC34_PATTERNS= 3.[4-9] 3.[4-9].* 3.[1-9][0-9]* 121_GCC34_PATTERNS= 3.[4-9] 3.[4-9].* 3.[1-9][0-9]*
@@ -131,26 +131,29 @@ _GCC46_PATTERNS= 4.6 4.6.* @@ -131,26 +131,29 @@ _GCC46_PATTERNS= 4.6 4.6.*
131 131
132# _GCC47_PATTERNS matches N s.t. 4.7 <= N < 4.8. 132# _GCC47_PATTERNS matches N s.t. 4.7 <= N < 4.8.
133_GCC47_PATTERNS= 4.7 4.7.* 133_GCC47_PATTERNS= 4.7 4.7.*
134 134
135# _GCC48_PATTERNS matches N s.t. 4.8 <= N < 4.9. 135# _GCC48_PATTERNS matches N s.t. 4.8 <= N < 4.9.
136_GCC48_PATTERNS= 4.8 4.8.* 136_GCC48_PATTERNS= 4.8 4.8.*
137 137
138# _GCC49_PATTERNS matches N s.t. 4.9 <= N < 4.10. 138# _GCC49_PATTERNS matches N s.t. 4.9 <= N < 4.10.
139_GCC49_PATTERNS= 4.9 4.9.* 139_GCC49_PATTERNS= 4.9 4.9.*
140 140
141# _GCC5_PATTERNS matches N s.t. 5.0 <= N < 6. 141# _GCC5_PATTERNS matches N s.t. 5.0 <= N < 6.
142_GCC5_PATTERNS= 5.* 142_GCC5_PATTERNS= 5.*
143 143
 144# _GCC6_PATTERNS matches N s.t. 6.0 <= N < 7.
 145_GCC6_PATTERNS= 6.*
 146
144# _GCC_AUX_PATTERNS matches 8-digit date YYYYMMDD* 147# _GCC_AUX_PATTERNS matches 8-digit date YYYYMMDD*
145_GCC_AUX_PATTERNS= 20[1-2][0-9][0-1][0-9][0-3][0-9]* 148_GCC_AUX_PATTERNS= 20[1-2][0-9][0-1][0-9][0-3][0-9]*
146 149
147# _CC is the full path to the compiler named by ${CC} if it can be found. 150# _CC is the full path to the compiler named by ${CC} if it can be found.
148.if !defined(_CC) 151.if !defined(_CC)
149_CC:= ${CC:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//} 152_CC:= ${CC:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//}
150. if !empty(GCCBASE) && exists(${GCCBASE}/bin) 153. if !empty(GCCBASE) && exists(${GCCBASE}/bin)
151_EXTRA_CC_DIRS= ${GCCBASE}/bin 154_EXTRA_CC_DIRS= ${GCCBASE}/bin
152. endif 155. endif
153. for _dir_ in ${_EXTRA_CC_DIRS} ${PATH:C/\:/ /g} 156. for _dir_ in ${_EXTRA_CC_DIRS} ${PATH:C/\:/ /g}
154. if empty(_CC:M/*) 157. if empty(_CC:M/*)
155. if exists(${_dir_}/${CC:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//}) 158. if exists(${_dir_}/${CC:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//})
156_CC:= ${_dir_}/${CC:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//} 159_CC:= ${_dir_}/${CC:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//}
@@ -277,64 +280,72 @@ _NEED_GCC48= yes @@ -277,64 +280,72 @@ _NEED_GCC48= yes
277.endfor 280.endfor
278_NEED_GCC49?= no 281_NEED_GCC49?= no
279.for _pattern_ in ${_GCC49_PATTERNS} 282.for _pattern_ in ${_GCC49_PATTERNS}
280. if !empty(_GCC_REQD:M${_pattern_}) 283. if !empty(_GCC_REQD:M${_pattern_})
281_NEED_GCC49= yes 284_NEED_GCC49= yes
282. endif 285. endif
283.endfor 286.endfor
284_NEED_GCC5?= no 287_NEED_GCC5?= no
285.for _pattern_ in ${_GCC5_PATTERNS} 288.for _pattern_ in ${_GCC5_PATTERNS}
286. if !empty(_GCC_REQD:M${_pattern_}) 289. if !empty(_GCC_REQD:M${_pattern_})
287_NEED_GCC5= yes 290_NEED_GCC5= yes
288. endif 291. endif
289.endfor 292.endfor
 293_NEED_GCC6?= no
 294.for _pattern_ in ${_GCC6_PATTERNS}
 295. if !empty(_GCC_REQD:M${_pattern_})
 296_NEED_GCC6= yes
 297. endif
 298.endfor
290_NEED_GCC_AUX?= no 299_NEED_GCC_AUX?= no
291.for _pattern_ in ${_GCC_AUX_PATTERNS} 300.for _pattern_ in ${_GCC_AUX_PATTERNS}
292. if !empty(_GCC_REQD:M${_pattern_}) 301. if !empty(_GCC_REQD:M${_pattern_})
293_NEED_GCC_AUX= yes 302_NEED_GCC_AUX= yes
294_NEED_NEWER_GCC=NO 303_NEED_NEWER_GCC=NO
295. endif 304. endif
296.endfor 305.endfor
297.if !empty(_NEED_GCC2:M[nN][oO]) && !empty(_NEED_GCC3:M[nN][oO]) && \ 306.if !empty(_NEED_GCC2:M[nN][oO]) && !empty(_NEED_GCC3:M[nN][oO]) && \
298 !empty(_NEED_GCC34:M[nN][oO]) && !empty(_NEED_GCC44:M[nN][oO]) && \ 307 !empty(_NEED_GCC34:M[nN][oO]) && !empty(_NEED_GCC44:M[nN][oO]) && \
299 !empty(_NEED_GCC45:M[nN][oO]) && !empty(_NEED_GCC46:M[nN][oO]) && \ 308 !empty(_NEED_GCC45:M[nN][oO]) && !empty(_NEED_GCC46:M[nN][oO]) && \
300 !empty(_NEED_GCC47:M[nN][oO]) && !empty(_NEED_GCC48:M[nN][oO]) && \ 309 !empty(_NEED_GCC47:M[nN][oO]) && !empty(_NEED_GCC48:M[nN][oO]) && \
301 !empty(_NEED_GCC49:M[nN][oO]) && !empty(_NEED_GCC5:M[nN][oO]) && \ 310 !empty(_NEED_GCC49:M[nN][oO]) && !empty(_NEED_GCC5:M[nN][oO]) && \
302 !empty(_NEED_GCC_AUX:M[nN][oO]) 311 !empty(_NEED_GCC6:M[nN][oO]) && !empty(_NEED_GCC_AUX:M[nN][oO])
303_NEED_GCC5= yes 312_NEED_GCC6= yes
304.endif 313.endif
305 314
306# Assume by default that GCC will only provide a C compiler. 315# Assume by default that GCC will only provide a C compiler.
307LANGUAGES.gcc?= c 316LANGUAGES.gcc?= c
308.if !empty(_NEED_GCC2:M[yY][eE][sS]) 317.if !empty(_NEED_GCC2:M[yY][eE][sS])
309LANGUAGES.gcc= c c++ fortran77 objc 318LANGUAGES.gcc= c c++ fortran77 objc
310.elif !empty(_NEED_GCC3:M[yY][eE][sS]) 319.elif !empty(_NEED_GCC3:M[yY][eE][sS])
311LANGUAGES.gcc= c c++ fortran77 java objc 320LANGUAGES.gcc= c c++ fortran77 java objc
312.elif !empty(_NEED_GCC34:M[yY][eE][sS]) 321.elif !empty(_NEED_GCC34:M[yY][eE][sS])
313LANGUAGES.gcc= c c++ fortran77 objc 322LANGUAGES.gcc= c c++ fortran77 objc
314.elif !empty(_NEED_GCC44:M[yY][eE][sS]) 323.elif !empty(_NEED_GCC44:M[yY][eE][sS])
315LANGUAGES.gcc= c c++ fortran fortran77 java objc 324LANGUAGES.gcc= c c++ fortran fortran77 java objc
316.elif !empty(_NEED_GCC45:M[yY][eE][sS]) 325.elif !empty(_NEED_GCC45:M[yY][eE][sS])
317LANGUAGES.gcc= c c++ fortran fortran77 java objc 326LANGUAGES.gcc= c c++ fortran fortran77 java objc
318.elif !empty(_NEED_GCC46:M[yY][eE][sS]) 327.elif !empty(_NEED_GCC46:M[yY][eE][sS])
319LANGUAGES.gcc= c c++ fortran fortran77 java objc 328LANGUAGES.gcc= c c++ fortran fortran77 java objc
320.elif !empty(_NEED_GCC47:M[yY][eE][sS]) 329.elif !empty(_NEED_GCC47:M[yY][eE][sS])
321LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 330LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
322.elif !empty(_NEED_GCC48:M[yY][eE][sS]) 331.elif !empty(_NEED_GCC48:M[yY][eE][sS])
323LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 332LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
324.elif !empty(_NEED_GCC49:M[yY][eE][sS]) 333.elif !empty(_NEED_GCC49:M[yY][eE][sS])
325LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 334LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
326.elif !empty(_NEED_GCC5:M[yY][eE][sS]) 335.elif !empty(_NEED_GCC5:M[yY][eE][sS])
327LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++ 336LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
 337.elif !empty(_NEED_GCC6:M[yY][eE][sS])
 338LANGUAGES.gcc= c c++ fortran fortran77 go java objc obj-c++
328.elif !empty(_NEED_GCC_AUX:M[yY][eE][sS]) 339.elif !empty(_NEED_GCC_AUX:M[yY][eE][sS])
329LANGUAGES.gcc= c c++ fortran fortran77 objc ada 340LANGUAGES.gcc= c c++ fortran fortran77 objc ada
330.endif 341.endif
331_LANGUAGES.gcc= # empty 342_LANGUAGES.gcc= # empty
332.for _lang_ in ${USE_LANGUAGES} 343.for _lang_ in ${USE_LANGUAGES}
333_LANGUAGES.gcc+= ${LANGUAGES.gcc:M${_lang_}} 344_LANGUAGES.gcc+= ${LANGUAGES.gcc:M${_lang_}}
334.endfor 345.endfor
335 346
336.if !empty(USE_LANGUAGES:Mc99) 347.if !empty(USE_LANGUAGES:Mc99)
337_WRAP_EXTRA_ARGS.CC+= -std=gnu99 348_WRAP_EXTRA_ARGS.CC+= -std=gnu99
338CWRAPPERS_APPEND.cc+= -std=gnu99 349CWRAPPERS_APPEND.cc+= -std=gnu99
339.endif 350.endif
340 351
@@ -579,26 +590,47 @@ MAKEFLAGS+= _IGNORE_GCC=yes @@ -579,26 +590,47 @@ MAKEFLAGS+= _IGNORE_GCC=yes
579. endif 590. endif
580. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 591. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
581_GCC_PKGSRCDIR= ../../lang/gcc5 592_GCC_PKGSRCDIR= ../../lang/gcc5
582_GCC_DEPENDENCY= gcc5>=${_GCC_REQD}:../../lang/gcc5 593_GCC_DEPENDENCY= gcc5>=${_GCC_REQD}:../../lang/gcc5
583. if !empty(_LANGUAGES.gcc:Mc++) || \ 594. if !empty(_LANGUAGES.gcc:Mc++) || \
584 !empty(_LANGUAGES.gcc:Mfortran) || \ 595 !empty(_LANGUAGES.gcc:Mfortran) || \
585 !empty(_LANGUAGES.gcc:Mfortran77) || \ 596 !empty(_LANGUAGES.gcc:Mfortran77) || \
586 !empty(_LANGUAGES.gcc:Mgo) || \ 597 !empty(_LANGUAGES.gcc:Mgo) || \
587 !empty(_LANGUAGES.gcc:Mobjc) || \ 598 !empty(_LANGUAGES.gcc:Mobjc) || \
588 !empty(_LANGUAGES.gcc:Mobj-c++) 599 !empty(_LANGUAGES.gcc:Mobj-c++)
589_USE_GCC_SHLIB?= yes 600_USE_GCC_SHLIB?= yes
590. endif 601. endif
591. endif 602. endif
 603.elif !empty(_NEED_GCC6:M[yY][eE][sS])
 604#
 605# We require gcc-6.x in the lang/gcc6-* directory.
 606#
 607_GCC_PKGBASE= gcc6
 608. if !empty(PKGPATH:Mlang/gcc6)
 609_IGNORE_GCC= yes
 610MAKEFLAGS+= _IGNORE_GCC=yes
 611. endif
 612. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
 613_GCC_PKGSRCDIR= ../../lang/gcc6
 614_GCC_DEPENDENCY= gcc6>=${_GCC_REQD}:../../lang/gcc6
 615. if !empty(_LANGUAGES.gcc:Mc++) || \
 616 !empty(_LANGUAGES.gcc:Mfortran) || \
 617 !empty(_LANGUAGES.gcc:Mfortran77) || \
 618 !empty(_LANGUAGES.gcc:Mgo) || \
 619 !empty(_LANGUAGES.gcc:Mobjc) || \
 620 !empty(_LANGUAGES.gcc:Mobj-c++)
 621_USE_GCC_SHLIB?= yes
 622. endif
 623. endif
592.elif !empty(_NEED_GCC_AUX:M[yY][eE][sS]) 624.elif !empty(_NEED_GCC_AUX:M[yY][eE][sS])
593# 625#
594# We require Ada-capable compiler in the lang/gcc-aux directory. 626# We require Ada-capable compiler in the lang/gcc-aux directory.
595# 627#
596_GCC_PKGBASE= gcc-aux 628_GCC_PKGBASE= gcc-aux
597. if !empty(PKGPATH:Mlang/gcc-aux) 629. if !empty(PKGPATH:Mlang/gcc-aux)
598_IGNORE_GCC= yes 630_IGNORE_GCC= yes
599MAKEFLAGS+= _IGNORE_GCC=yes 631MAKEFLAGS+= _IGNORE_GCC=yes
600. endif 632. endif
601. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc) 633. if !defined(_IGNORE_GCC) && !empty(_LANGUAGES.gcc)
602_GCC_PKGSRCDIR= ../../lang/gcc-aux 634_GCC_PKGSRCDIR= ../../lang/gcc-aux
603_GCC_DEPENDENCY= gcc-aux>=${_GCC_REQD}:../../lang/gcc-aux 635_GCC_DEPENDENCY= gcc-aux>=${_GCC_REQD}:../../lang/gcc-aux
604. if !empty(_LANGUAGES.gcc:Mc++) || \ 636. if !empty(_LANGUAGES.gcc:Mc++) || \
@@ -921,26 +953,28 @@ PREPEND_PATH+= ${_GCC_DIR}/bin @@ -921,26 +953,28 @@ PREPEND_PATH+= ${_GCC_DIR}/bin
921.if (defined(_USE_GCC_SHLIB) && !empty(_USE_GCC_SHLIB:M[Yy][Ee][Ss])) && !empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss]) 953.if (defined(_USE_GCC_SHLIB) && !empty(_USE_GCC_SHLIB:M[Yy][Ee][Ss])) && !empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss])
922# Special case packages which are themselves a dependency of gcc runtime. 954# Special case packages which are themselves a dependency of gcc runtime.
923. if empty(PKGPATH:Mdevel/libtool-base) && empty(PKGPATH:Mdevel/binutils) && empty(PKGPATH:Mlang/gcc??) 955. if empty(PKGPATH:Mdevel/libtool-base) && empty(PKGPATH:Mdevel/binutils) && empty(PKGPATH:Mlang/gcc??)
924. if !empty(CC_VERSION:Mgcc-4.6*) 956. if !empty(CC_VERSION:Mgcc-4.6*)
925. include "../../lang/gcc46-libs/buildlink3.mk" 957. include "../../lang/gcc46-libs/buildlink3.mk"
926. elif !empty(CC_VERSION:Mgcc-4.7*) 958. elif !empty(CC_VERSION:Mgcc-4.7*)
927. include "../../lang/gcc47-libs/buildlink3.mk" 959. include "../../lang/gcc47-libs/buildlink3.mk"
928. elif !empty(CC_VERSION:Mgcc-4.8*) 960. elif !empty(CC_VERSION:Mgcc-4.8*)
929. include "../../lang/gcc48-libs/buildlink3.mk" 961. include "../../lang/gcc48-libs/buildlink3.mk"
930. elif !empty(CC_VERSION:Mgcc-4.9*) 962. elif !empty(CC_VERSION:Mgcc-4.9*)
931. include "../../lang/gcc49-libs/buildlink3.mk" 963. include "../../lang/gcc49-libs/buildlink3.mk"
932. elif !empty(CC_VERSION:Mgcc-5.*) 964. elif !empty(CC_VERSION:Mgcc-5.*)
933. include "../../lang/gcc5-libs/buildlink3.mk" 965. include "../../lang/gcc5-libs/buildlink3.mk"
 966. elif !empty(CC_VERSION:Mgcc-6.*)
 967. include "../../lang/gcc6-libs/buildlink3.mk"
934. else 968. else
935PKG_FAIL_REASON+= "No USE_PKGSRC_GCC_RUNTIME support for ${CC_VERSION}" 969PKG_FAIL_REASON+= "No USE_PKGSRC_GCC_RUNTIME support for ${CC_VERSION}"
936. endif 970. endif
937. endif 971. endif
938.endif 972.endif
939 973
940.for _var_ in ${_GCC_VARS} 974.for _var_ in ${_GCC_VARS}
941. if !target(${_GCC_${_var_}}) 975. if !target(${_GCC_${_var_}})
942override-tools: ${_GCC_${_var_}} 976override-tools: ${_GCC_${_var_}}
943${_GCC_${_var_}}: 977${_GCC_${_var_}}:
944 ${RUN}${MKDIR} ${.TARGET:H} 978 ${RUN}${MKDIR} ${.TARGET:H}
945. if !empty(COMPILER_USE_SYMLINKS:M[Yy][Ee][Ss]) 979. if !empty(COMPILER_USE_SYMLINKS:M[Yy][Ee][Ss])
946 ${RUN}${RM} -f ${.TARGET} 980 ${RUN}${RM} -f ${.TARGET}