From owner-svn-ports-head@freebsd.org Wed Oct 23 17:44:30 2019 Return-Path: Delivered-To: svn-ports-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 75E9215925B; Wed, 23 Oct 2019 17:44:30 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46yyRy3DdBz4PdY; Wed, 23 Oct 2019 17:44:30 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 534DD171; Wed, 23 Oct 2019 17:44:30 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x9NHiUJ2069093; Wed, 23 Oct 2019 17:44:30 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x9NHiSXk069086; Wed, 23 Oct 2019 17:44:28 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201910231744.x9NHiSXk069086@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Wed, 23 Oct 2019 17:44:28 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r515276 - in head/devel: aarch64-none-elf-gcc arm-none-eabi-gcc powerpc64-gcc powerpc64-gcc/files X-SVN-Group: ports-head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in head/devel: aarch64-none-elf-gcc arm-none-eabi-gcc powerpc64-gcc powerpc64-gcc/files X-SVN-Commit-Revision: 515276 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Oct 2019 17:44:30 -0000 Author: jhb (src,doc committer) Date: Wed Oct 23 17:44:28 2019 New Revision: 515276 URL: https://svnweb.freebsd.org/changeset/ports/515276 Log: Divorce the ARM bare-metal GCC ports from the FreeBSD GCC xtoolchain ports. In the past, changes to the FreeBSD GCC xtoolchain ports have broken the ARM bare-metal GCC ports by accident. In addition, we'd like to move to having multiple FreeBSD GCC xtoolchain ports for different GCC versions. It seems best if we make the two groups of ports independent so that changes to one do not affect the other. Reviewed by: manu Differential Revision: https://reviews.freebsd.org/D22064 Added: head/devel/aarch64-none-elf-gcc/distinfo (contents, props changed) head/devel/aarch64-none-elf-gcc/pkg-descr (contents, props changed) head/devel/powerpc64-gcc/files/patch-freebsd-format-extensions - copied unchanged from r515275, head/devel/powerpc64-gcc/files/freebsd-format-extensions head/devel/powerpc64-gcc/files/patch-freebsd-libdir - copied unchanged from r515275, head/devel/powerpc64-gcc/files/freebsd-libdir Deleted: head/devel/powerpc64-gcc/files/freebsd-format-extensions head/devel/powerpc64-gcc/files/freebsd-libdir Modified: head/devel/aarch64-none-elf-gcc/Makefile head/devel/arm-none-eabi-gcc/Makefile head/devel/powerpc64-gcc/Makefile Modified: head/devel/aarch64-none-elf-gcc/Makefile ============================================================================== --- head/devel/aarch64-none-elf-gcc/Makefile Wed Oct 23 17:19:56 2019 (r515275) +++ head/devel/aarch64-none-elf-gcc/Makefile Wed Oct 23 17:44:28 2019 (r515276) @@ -1,22 +1,99 @@ # $FreeBSD$ -PKGNAMEPREFIX= aarch64-none-elf- +PORTNAME= gcc +PORTVERSION= 6.4.0 +PORTREVISION= 7 +CATEGORIES= devel +MASTER_SITES= GCC +PKGNAMEPREFIX?= aarch64-none-elf- + +MAINTAINER= ports@FreeBSD.org COMMENT= GNU Compiler Collection for bare metal arm cross-development -GCC_TARGET= aarch64-none-elf -PLIST= ${.CURDIR}/pkg-plist +LICENSE= GPLv3 GPLv3RLE +LICENSE_COMB= multi + +BROKEN_mips= configure: error: cannot compute suffix of object files: cannot compile +BROKEN_mips64= configure: error: cannot compute suffix of object files: cannot compile + +LIB_DEPENDS= libgmp.so:math/gmp \ + libmpfr.so:math/mpfr \ + libmpc.so:math/mpc +BUILD_DEPENDS= ${GCC_TARGET}-as:devel/${PKGNAMEPREFIX}binutils +RUN_DEPENDS= ${GCC_TARGET}-as:devel/${PKGNAMEPREFIX}binutils + +USES= gmake iconv libtool tar:xz makeinfo compiler:c++11-lang + +PLIST_SUB= TARGETARCH=${PKGNAMEPREFIX:C/-//g} \ + OPSYS=${OPSYS:tl} \ + GCC_TARGET=${GCC_TARGET} \ + GCC_VERSION=${PORTVERSION} + +TARGETARCH= ${PKGNAMEPREFIX:C/-//g} + +GCC_TARGET?= aarch64-none-elf + +GNU_CONFIGURE= yes +CONFIGURE_OUTSOURCE= yes +CONFIGURE_ARGS+=--target=${GCC_TARGET} --disable-nls --enable-languages=c,c++ \ + --enable-gnu-indirect-function \ + --without-headers \ + --with-gmp=${LOCALBASE} \ + --with-pkgversion="FreeBSD Ports Collection for ${PKGNAMEPREFIX:C/-//g}" \ + --with-system-zlib \ + --with-gxx-include-dir=/usr/include/c++/v1/ \ + --with-sysroot="/" \ + --with-as=${LOCALBASE}/bin/${GCC_TARGET}-as \ + --with-ld=${LOCALBASE}/bin/${GCC_TARGET}-ld + # U-Boot requires libgcc, crossbuild and install it along with the compiler. ALL_TARGET= all-gcc all-target-libgcc INSTALL_TARGET= install-gcc install-target-libgcc -BROKEN_mips= configure: error: cannot compute suffix of object files: cannot compile -BROKEN_mips64= configure: error: cannot compute suffix of object files: cannot compile +.include -MASTERDIR= ${.CURDIR}/../powerpc64-gcc +post-patch: + @${REINPLACE_CMD} -e '/LIBSTDCXX/ s/stdc\+\+/c\+\+/g ' \ + ${WRKSRC}//gcc/cp/g++spec.c + @${REINPLACE_CMD} -e '/LOCAL_INCLUDE_DIR/ d ' \ + ${WRKSRC}//gcc/Makefile.in -.include "${MASTERDIR}/Makefile" +.if ${ARCH} == "amd64" +CONFIGURE_TARGET= x86_64-unknown-${OPSYS:tl}${OSREL} +.else +CONFIGURE_TARGET= ${ARCH}-unknown-${OPSYS:tl}${OSREL} +.endif # The following is required for clang to bootstrap gcc. .if ${COMPILER_TYPE} == clang MAKE_ARGS+= CXXFLAGS=-fbracket-depth=512 .endif + +.if ${ARCH} == "aarch64" +PLIST_SUB+= PLUGINS="@comment plugin does not build" +.else +PLIST_SUB+= PLUGINS="" +.endif + +post-install: +.for f in cpp gcov gcov-dump gcov-tool + @if [ -f ${STAGEDIR}${PREFIX}/bin/$f ] ; then \ + ${MV} ${STAGEDIR}${PREFIX}/bin/$f \ + ${STAGEDIR}${PREFIX}/bin/${GCC_TARGET}-$f ; \ + fi +.endfor +.for f in c++ cpp g++ gcc gcc-ar gcc-nm gcc-ranlib gcov gcov-dump gcov-tool + @if [ ! -f ${STAGEDIR}${PREFIX}/man/man1/${GCC_TARGET}-$f.1 ] ; then \ + if [ -f ${STAGEDIR}${PREFIX}/man/man1/$f.1 ] ; then \ + ${CP} ${STAGEDIR}${PREFIX}/man/man1/$f.1 \ + ${STAGEDIR}${PREFIX}/man/man1/${GCC_TARGET}-$f.1 ; \ + fi \ + fi + @${RM} ${STAGEDIR}${PREFIX}/bin/$f + @${RM} ${STAGEDIR}${PREFIX}/man/man1/$f.1 + @${RM} ${STAGEDIR}${PREFIX}/man/man1/$f.1.gz +.endfor + @${RM} ${STAGEDIR}${PREFIX}/share/info/* + @${RM} ${STAGEDIR}${PREFIX}/man/man7/* + +.include Added: head/devel/aarch64-none-elf-gcc/distinfo ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/aarch64-none-elf-gcc/distinfo Wed Oct 23 17:44:28 2019 (r515276) @@ -0,0 +1,3 @@ +TIMESTAMP = 1514072608 +SHA256 (gcc-6.4.0.tar.xz) = 850bf21eafdfe5cd5f6827148184c08c4a0852a37ccf36ce69855334d2c914d4 +SIZE (gcc-6.4.0.tar.xz) = 76156220 Added: head/devel/aarch64-none-elf-gcc/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/aarch64-none-elf-gcc/pkg-descr Wed Oct 23 17:44:28 2019 (r515276) @@ -0,0 +1,4 @@ +GCC, the GNU Compiler Collection supporting C and C++ for arm bare metal +crossbuilding. + +WWW: http://gcc.gnu.org/ Modified: head/devel/arm-none-eabi-gcc/Makefile ============================================================================== --- head/devel/arm-none-eabi-gcc/Makefile Wed Oct 23 17:19:56 2019 (r515275) +++ head/devel/arm-none-eabi-gcc/Makefile Wed Oct 23 17:44:28 2019 (r515276) @@ -1,26 +1,13 @@ # $FreeBSD$ PKGNAMEPREFIX= arm-none-eabi- -COMMENT= GNU Compiler Collection for bare metal arm cross-development GCC_TARGET= arm-none-eabi PLIST= ${.CURDIR}/pkg-plist -# U-Boot requires libgcc, crossbuild and install it along with the compiler. -ALL_TARGET= all-gcc all-target-libgcc -INSTALL_TARGET= install-gcc install-target-libgcc - # libstdcxx won't build, but we don't need it or multiple float-abi libs. CONFIGURE_ARGS= --disable-libstdcxx \ --disable-multilib -BROKEN_mips= configure: error: cannot compute suffix of object files: cannot compile -BROKEN_mips64= configure: error: cannot compute suffix of object files: cannot compile +MASTERDIR= ${.CURDIR}/../aarch64-none-elf-gcc -MASTERDIR= ${.CURDIR}/../powerpc64-gcc - .include "${MASTERDIR}/Makefile" - -# The following is required for clang to bootstrap gcc. -.if ${COMPILER_TYPE} == clang -MAKE_ARGS+= CXXFLAGS=-fbracket-depth=512 -.endif Modified: head/devel/powerpc64-gcc/Makefile ============================================================================== --- head/devel/powerpc64-gcc/Makefile Wed Oct 23 17:19:56 2019 (r515275) +++ head/devel/powerpc64-gcc/Makefile Wed Oct 23 17:44:28 2019 (r515276) @@ -27,18 +27,14 @@ PLIST_SUB= TARGETARCH=${PKGNAMEPREFIX:C/-//g} \ TARGETARCH= ${PKGNAMEPREFIX:C/-//g} -.if empty(GCC_TARGET) -# We are building for a FreeBSD target GCC_TARGET= ${PKGNAMEPREFIX:S/amd64/x86_64/}unknown-${OPSYS:tl}${OSREL} -EXTRA_PATCHES+= ${FILESDIR}/freebsd-format-extensions \ - ${FILESDIR}/freebsd-libdir -.endif BU_PREFIX?= ${GCC_TARGET} GNU_CONFIGURE= yes CONFIGURE_OUTSOURCE= yes CONFIGURE_ARGS+=--target=${GCC_TARGET} --disable-nls --enable-languages=c,c++ \ --enable-gnu-indirect-function \ + --enable-initfini-array \ --without-headers \ --with-gmp=${LOCALBASE} \ --with-pkgversion="FreeBSD Ports Collection for ${PKGNAMEPREFIX:C/-//g}" \ @@ -48,16 +44,11 @@ CONFIGURE_ARGS+=--target=${GCC_TARGET} --disable-nls - --with-as=${LOCALBASE}/bin/${BU_PREFIX}-as \ --with-ld=${LOCALBASE}/bin/${BU_PREFIX}-ld -ALL_TARGET?= all-gcc -INSTALL_TARGET?= install-gcc +ALL_TARGET= all-gcc +INSTALL_TARGET= install-gcc -.include .include -.if ${GCC_TARGET:M*${OPSYS:tl}*} != "" -CONFIGURE_ARGS+= --enable-initfini-array -.endif - post-patch: @${REINPLACE_CMD} -e '/LIBSTDCXX/ s/stdc\+\+/c\+\+/g ' \ ${WRKSRC}//gcc/cp/g++spec.c @@ -102,9 +93,7 @@ post-install: .endfor @${RM} ${STAGEDIR}${PREFIX}/share/info/* @${RM} ${STAGEDIR}${PREFIX}/man/man7/* -.if empty(PKGNAMEPREFIX:M*-*-) @${RM} -r ${STAGEDIR}${PREFIX}/lib/gcc/${GCC_TARGET}/${PORTVERSION}/include-fixed -.endif .if ${TARGETARCH} == "amd64" || ${TARGETARCH} == "i386" # Conflicts with sys/x86/include/float.h ${RM} ${STAGEDIR}${PREFIX}/lib/gcc/${GCC_TARGET}/${PORTVERSION}/include/float.h Copied: head/devel/powerpc64-gcc/files/patch-freebsd-format-extensions (from r515275, head/devel/powerpc64-gcc/files/freebsd-format-extensions) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/powerpc64-gcc/files/patch-freebsd-format-extensions Wed Oct 23 17:44:28 2019 (r515276, copy of r515275, head/devel/powerpc64-gcc/files/freebsd-format-extensions) @@ -0,0 +1,117 @@ +Index: gcc/c-family/c-format.c +=================================================================== +--- gcc/c-family/c-format.c (revision 216017) ++++ gcc/c-family/c-format.c (working copy) +@@ -622,6 +622,26 @@ + { NULL, 0, STD_C89, NOLENGTHS, NULL, NULL, NULL } + }; + ++static const format_char_info fbsd_ext_char_info = ++{ NULL, 1, STD_EXT, { T89_C, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "", "cR", NULL }; ++ ++static const format_char_info fbsd_print_char_table[] = ++{ ++ /* BSD conversion specifiers. */ ++ /* FreeBSD kernel extensions (src/sys/kern/subr_prf.c). ++ The format %b is supported to decode error registers. ++ Its usage is: printf("reg=%b\n", regval, "*"); ++ which produces: reg=3 ++ The format %D provides a hexdump given a pointer and separator string: ++ ("%6D", ptr, ":") -> XX:XX:XX:XX:XX:XX ++ ("%*D", len, ptr, " ") -> XX XX XX XX ... ++ */ ++ { "D", 1, STD_EXT, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "cR", &fbsd_ext_char_info }, ++ { "b", 0, STD_EXT, { T89_I, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "", &fbsd_ext_char_info }, ++ { "ry", 0, STD_EXT, { T89_I, BADLEN, BADLEN, T89_L, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0 +#", "i", NULL }, ++ { NULL, 0, STD_C89, NOLENGTHS, NULL, NULL, NULL } ++}; ++ + static const format_char_info asm_fprintf_char_table[] = + { + /* C89 conversion specifiers. */ +@@ -872,6 +892,12 @@ + strfmon_flag_specs, strfmon_flag_pairs, + FMT_FLAG_ARG_CONVERT, 'w', '#', 'p', 0, 'L', 0, + NULL, NULL ++ }, ++ { "printf0", printf_length_specs, print_char_table, " +#0-'I", NULL, ++ printf_flag_specs, printf_flag_pairs, ++ FMT_FLAG_ARG_CONVERT|FMT_FLAG_DOLLAR_MULTIPLE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_EMPTY_PREC_OK|FMT_FLAG_NULL_FORMAT_OK, ++ 'w', 0, 'p', 0, 'L', 0, ++ &integer_type_node, &integer_type_node + } + }; + +@@ -1426,6 +1452,9 @@ + + if (integer_zerop (format_tree)) + { ++ if (!(format_types[info->format_type].flags & FMT_FLAG_NULL_FORMAT_OK)) ++ warning (OPT_Wformat_, "null format string"); ++ + /* Skip to first argument to check, so we can see if this format + has any arguments (it shouldn't). */ + while (arg_num + 1 < info->first_arg_num) +@@ -1926,6 +1955,14 @@ + while (fli->name != 0 + && strncmp (fli->name, format_chars, strlen (fli->name))) + fli++; ++ /* ++ * Make sure FreeBSD's D format char takes preference ++ * over new DD length specifier if FreeBSD format ++ * extensions are requested. ++ */ ++ if (fli->index == FMT_LEN_D && flag_format_extensions ++ && fki->conversion_specs == print_char_table) ++ while (fli->name != 0) fli++; + if (fli->name != 0) + { + format_chars += strlen (fli->name); +@@ -1993,6 +2030,14 @@ + while (fci->format_chars != 0 + && strchr (fci->format_chars, format_char) == 0) + ++fci; ++ if (fci->format_chars == 0 && flag_format_extensions ++ && fki->conversion_specs == print_char_table) ++ { ++ fci = fbsd_print_char_table; ++ while (fci->format_chars != 0 ++ && strchr (fci->format_chars, format_char) == 0) ++ ++fci; ++ } + if (fci->format_chars == 0) + { + if (ISGRAPH (format_char)) +Index: gcc/c-family/c-format.h +=================================================================== +--- gcc/c-family/c-format.h (revision 216017) ++++ gcc/c-family/c-format.h (working copy) +@@ -75,11 +75,12 @@ + FMT_FLAG_DOLLAR_GAP_POINTER_OK = 128, + /* The format arg is an opaque object that will be parsed by an external + facility. */ +- FMT_FLAG_PARSE_ARG_CONVERT_EXTERNAL = 256 ++ FMT_FLAG_PARSE_ARG_CONVERT_EXTERNAL = 256, + /* Not included here: details of whether width or precision may occur + (controlled by width_char and precision_char); details of whether + '*' can be used for these (width_type and precision_type); details + of whether length modifiers can occur (length_char_specs). */ ++ FMT_FLAG_NULL_FORMAT_OK = 512 + }; + + /* Structure describing a length modifier supported in format checking, and +Index: gcc/config/freebsd.opt +=================================================================== +--- gcc/config/freebsd.opt (revision 216017) ++++ gcc/config/freebsd.opt (working copy) +@@ -34,6 +34,10 @@ + defsym= + Driver JoinedOrMissing + ++fformat-extensions ++Common Report Var(flag_format_extensions) Init(0) ++Allow FreeBSD kernel-specific printf format specifiers. ++ + posix + Driver + Copied: head/devel/powerpc64-gcc/files/patch-freebsd-libdir (from r515275, head/devel/powerpc64-gcc/files/freebsd-libdir) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/powerpc64-gcc/files/patch-freebsd-libdir Wed Oct 23 17:44:28 2019 (r515276, copy of r515275, head/devel/powerpc64-gcc/files/freebsd-libdir) @@ -0,0 +1,43 @@ +diff --git gcc/config/freebsd.h gcc/config/freebsd.h +index e7ea42370c5..191e7da2071 100644 +--- gcc/config/freebsd.h ++++ gcc/config/freebsd.h +@@ -44,6 +44,9 @@ along with GCC; see the file COPYING3. If not see + #undef LIB_SPEC + #define LIB_SPEC FBSD_LIB_SPEC + ++#undef STARTFILE_PREFIX_SPEC ++#define STARTFILE_PREFIX_SPEC "/usr/lib/ " ++ + #if defined(HAVE_LD_EH_FRAME_HDR) + #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} " + #endif +diff --git gcc/gcc.c gcc/gcc.c +index f70755679f4..890ef20fd43 100644 +--- gcc/gcc.c ++++ gcc/gcc.c +@@ -4298,10 +4298,12 @@ process_command (unsigned int decoded_options_count, + } + + set_std_prefix (gcc_exec_prefix, len); ++#if 0 + add_prefix (&exec_prefixes, gcc_libexec_prefix, "GCC", + PREFIX_PRIORITY_LAST, 0, 0); + add_prefix (&startfile_prefixes, gcc_exec_prefix, "GCC", + PREFIX_PRIORITY_LAST, 0, 0); ++#endif + } + + /* COMPILER_PATH and LIBRARY_PATH have values +@@ -4585,9 +4587,11 @@ process_command (unsigned int decoded_options_count, + add_prefix (&exec_prefixes, + concat (tooldir_prefix, "bin", dir_separator_str, NULL), + "BINUTILS", PREFIX_PRIORITY_LAST, 0, 0); ++#if 0 + add_prefix (&startfile_prefixes, + concat (tooldir_prefix, "lib", dir_separator_str, NULL), + "BINUTILS", PREFIX_PRIORITY_LAST, 0, 1); ++#endif + free (tooldir_prefix); + + #if defined(TARGET_SYSTEM_ROOT_RELOCATABLE) && !defined(VMS)