From patchwork Sun Sep 11 02:34:37 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Terry Guo X-Patchwork-Id: 114206 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id C52D3B7245 for ; Sun, 11 Sep 2011 12:35:08 +1000 (EST) Received: (qmail 30853 invoked by alias); 11 Sep 2011 02:35:04 -0000 Received: (qmail 30590 invoked by uid 22791); 11 Sep 2011 02:35:02 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL, BAYES_00, MSGID_MULTIPLE_AT, RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from cam-admin0.cambridge.arm.com (HELO cam-admin0.cambridge.arm.com) (217.140.96.50) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 11 Sep 2011 02:34:47 +0000 Received: from geoffrey.Emea.Arm.com (geoffrey.emea.arm.com [10.1.255.46]) by cam-admin0.cambridge.arm.com (8.12.6/8.12.6) with ESMTP id p8B2Y711021893 for ; Sun, 11 Sep 2011 03:34:09 +0100 (BST) Received: from cam-owa1.Emea.Arm.com ([10.1.255.62]) by geoffrey.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Sun, 11 Sep 2011 03:34:43 +0100 Received: from Terrysh02 ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0); Sun, 11 Sep 2011 03:34:43 +0100 From: "Terry Guo" To: Subject: [arm-embedded] Make GCC more easier for user to build extra libraries for ARM. Date: Sun, 11 Sep 2011 10:34:37 +0800 Message-ID: <003501cc702b$5ae1e4c0$10a5ae40$@guo@arm.com> MIME-Version: 1.0 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hello, This patch adds a little bit extension to current GCC configure system to make it more convenient for user to select and build extra libraries for ARM embedded targets. Typically a comma-separated target list is supported. Extra libraries will be built for targets in that list. Committed into ARM/embedded-4_6-branch. BR, Terry 2011-09-08 Terry Guo * config.gcc: Support --with-extra-multilibs option for ARM EABI. * configure.ac: Handle --with-extra-multilibs option. * configure: Add help message and support for that option. * doc/install.texi: Document that option. * config/arm/t-arm-elf (MULTILIB_OSDIRNAMES): Added to support build extra multilibs with user-specified directory name. * config/arm/t-armv6s-m: New fragment for building extra multilib for ARM armv6s-m architecture. * config/arm/t-armv7-m: New fragment for building extra multilib for ARM armv7-m architecture. * config/arm/t-armv7e-m: New fragment for building extra multilib for ARM armv7e-m architecture. * config/arm/t-thumb1: New fragment for building extra multilib for ARM Thumb-1. * config/arm/t-thumb2: New fragment for building extra multilib for ARM Thumb-2. #MULTILIB_DIRNAMES += fa526 fa626 fa606te fa626te fmp626 fa726te @@ -56,6 +57,7 @@ MULTILIB_OPTIONS += mfloat-abi=hard MULTILIB_DIRNAMES += fpu MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard* +MULTILIB_OSDIRNAMES += mfloat-abi.hard=!fpu marm/mfloat-abi.hard=!arm/fpu #MULTILIB_EXCEPTIONS += *mcpu=fa526/*mfloat-abi=hard* #MULTILIB_EXCEPTIONS += *mcpu=fa626/*mfloat-abi=hard* Index: gcc/doc/install.texi =================================================================== --- gcc/doc/install.texi (revision 178754) +++ gcc/doc/install.texi (working copy) @@ -1068,6 +1068,24 @@ --with-multilib-list=sh4al,!mb/m4al @end smallexample +@item --with-extra-multilibs=@var{list} +@itemx --without-extra-multilibs +Specify what extra multilibs to build besides the default library set. +Currently only implemented for arm*-*-eabi. + +@var{list} is a comma separated list of ARM architecture names. +Currently the available names are thumb1, thumb2, armv6s-m, armv7-m +and armv7e-m. + +If @option{--with-extra-multilibs} or @var{list} is not given, +then no extra multilibs will be built. + +Example: to configure a compiler for arm-none-eabi with additional multilib +support for thumb1, thumb2 and armv6s-m: +@smallexample +--target=arm-none-eabi --with-extra-multilibs=thumb1,thumb2,armv6s-m +@end smallexample + @item --with-endian=@var{endians} Specify what endians to use. Currently only implemented for sh*-*-*. Index: gcc/configure =================================================================== --- gcc/configure (revision 178754) +++ gcc/configure (working copy) @@ -1650,6 +1650,7 @@ --with-pkgversion=PKG Use PKG in the version string in place of "GCC" --with-bugurl=URL Direct users to URL to report a bug --with-multilib-list Select multilibs (SH only) + --with-extra-multilibs Select extra multilibs (ARM only) --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir @@ -7198,6 +7199,12 @@ with_multilib_list=default fi +# Check whether --with-extra-multilibs was given. +if test "${with_extra_multilibs+set}" = set; then : + withval=$with_extra_multilibs; : +else + with_extra_multilibs=default +fi # ------------------------- # Checks for other programs Index: gcc/configure.ac =================================================================== --- gcc/configure.ac (revision 178754) +++ gcc/configure.ac (working copy) @@ -790,6 +790,11 @@ :, with_multilib_list=default) +AC_ARG_WITH(extra-multilibs, +[ --with-extra-multilibs Select extra multilibs (ARM only)], +:, +with_extra_multilibs=default) + # ------------------------- # Checks for other programs # ------------------------- Index: gcc/config.gcc =================================================================== --- gcc/config.gcc (revision 178754) +++ gcc/config.gcc (working copy) @@ -883,6 +883,32 @@ arm*-*-eabi*) tm_file="$tm_file newlib-stdint.h" tmake_file="${tmake_file} arm/t-bpabi" + arm_multilibs="${with_extra_multilibs}" + if test $arm_multilibs != "default"; then + arm_multilibs=`echo $arm_multilibs | sed -e 's/,/ /g'` + for arm_multilib in ${arm_multilibs}; do + case ${arm_multilib} in + thumb1) + tmake_file="${tmake_file} arm/t-thumb1" + ;; + thumb2) + tmake_file="${tmake_file} arm/t-thumb2" + ;; + armv6s-m) + tmake_file="${tmake_file} arm/t-armv6s-m" + ;; + armv7-m) + tmake_file="${tmake_file} arm/t-armv7-m" + ;; + armv7e-m) + tmake_file="${tmake_file} arm/t-armv7e-m" + ;; + *) + echo "--with-extra-multilibs=${arm_multilib} not supported." + exit 1 + esac + done + fi use_gcc_stdint=wrap ;; arm*-*-symbianelf*) Index: gcc/config/arm/t-arm-elf =================================================================== --- gcc/config/arm/t-arm-elf (revision 178754) +++ gcc/config/arm/t-arm-elf (working copy) @@ -35,6 +35,7 @@ MULTILIB_DIRNAMES = arm thumb MULTILIB_EXCEPTIONS = MULTILIB_MATCHES = +MULTILIB_OSDIRNAMES = marm=!arm mthumb=!thumb #MULTILIB_OPTIONS += mcpu=fa526/mcpu=fa626/mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te