svn commit: r515276 - in head/devel: aarch64-none-elf-gcc arm-none-eabi-gcc powerpc64-gcc powerpc64-gcc/files
John Baldwin
jhb at FreeBSD.org
Wed Oct 23 17:44:30 UTC 2019
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 at 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 <bsd.port.pre.mk>
-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 <bsd.port.post.mk>
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 <bsd.port.options.mk>
.include <bsd.port.pre.mk>
-.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, "<base><arg>*");
++ which produces: reg=3<BITTWO,BITONE>
++ 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)
More information about the svn-ports-head
mailing list