From patchwork Wed May 4 11:24:24 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Myers X-Patchwork-Id: 94000 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 57547B6FA0 for ; Wed, 4 May 2011 21:24:47 +1000 (EST) Received: (qmail 28359 invoked by alias); 4 May 2011 11:24:45 -0000 Received: (qmail 28343 invoked by uid 22791); 4 May 2011 11:24:42 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 04 May 2011 11:24:26 +0000 Received: (qmail 21560 invoked from network); 4 May 2011 11:24:25 -0000 Received: from unknown (HELO digraph.polyomino.org.uk) (joseph@127.0.0.2) by mail.codesourcery.com with ESMTPA; 4 May 2011 11:24:25 -0000 Received: from jsm28 (helo=localhost) by digraph.polyomino.org.uk with local-esmtp (Exim 4.72) (envelope-from ) id 1QHaBs-0007CU-0P; Wed, 04 May 2011 11:24:24 +0000 Date: Wed, 4 May 2011 11:24:24 +0000 (UTC) From: "Joseph S. Myers" To: gcc-patches@gcc.gnu.org cc: bonzini@gnu.org, dj@redhat.com, neroden@gcc.gnu.org, aoliva@redhat.com, Ralf.Wildenhues@gmx.de Subject: Toplevel newlib/libgloss disabling cleanup Message-ID: 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 This patch separates cases disabling newlib and libgloss for various target OSes from the main toplevel case statement over targets. By doing so, the logic is significantly simplified; there is now a single case for all *-*-linux* targets that disables newlib and libgloss for them, for example. (The only Linux port of newlib is for x86, so it's correct the disable newlib for all Linux targets except for x86 where the existing logic is retained.) Most empty cases in the main case statement can now be removed because once this disabling is done consistently on a per-OS basis there is no longer a possibility that an empty case has a use to stop falling through to later cases such as *-*-linux*. (A few empty cases need to be kept to stop falling through to cases such as mips*-*-*, however.) Where newlib and libgloss were disabled for an OS on multiple architectures I generally wrote a patter that matched all architectures for that OS. For sparc-*-sunos4* the logic disabled them only for cross compilers, but newlib and libgloss are disabled by default for native compilers anyway so I didn't keep any such conditional when moving that disabling up. While there's certainly scope for more splitting up of the big toplevel case statement (so each project sharing the toplevel has its own case statement, eventually coming from a subdirectory file), I think this patch may be the last piece involving substantial simplification through splitting up case statements. OK to commit? 2011-05-04 Joseph Myers * configure.ac (alpha*-dec-osf*, i[[3456789]]86-*-rdos*, sh*-*-pe|mips*-*-pe|arm-wince-pe, sparc-*-sunos4*, *-*-aix*, *-*-beos*, *-*-chorusos, *-*-dragonfly*, *-*-freebsd*, *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu, *-*-lynxos*, *-*-mingw*, *-*-netbsd*, *-*-netware*, *-*-tpf*, *-*-uclinux*, *-*-vxworks*): Disable newlib and libgloss in separate case statement. (i[[3456789]]86-*-linux*): Move logic allowing newlib to be built to separate case statement. (*-*-chorusos, *-*-dragonfly*, *-*-freebsd*, *-*-netbsd*, *-*-netware*, *-*-tpf*, *-*-uclinux*, *-*-vxworks*, alpha*-dec-osf*, alpha*-*-linux*, am33_2.0-*-linux*, sh-*-linux*, sh*-*-pe|mips*-*-pe|*arm-wince-pe, arm-*-coff, arm-*-elf* | arm*-*-eabi*, arm*-*-linux-gnueabi, arm*-*-symbianelf*, avr-*-*, bfin-*-*, cris-*-* | crisv32-*-*, frv-*-*, i[[3456789]]86-*-coff | i[[3456789]]86-*-elf, i[[3456789]]86-w64-mingw*, i[[3456789]]86-*-mingw*, x86_64-*-mingw*, i[[3456789]]86-*-interix*, i[[3456789]]86-*-beos*, i[[3456789]]86-*-rdos*, m32r-*-*, m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*, m68k-*-elf*, m68*-*-* | fido-*-*, powerpc-*-aix*, powerpc-*-beos*, powerpc-*-eabi, powerpc-*-eabi* | powerpcle-*-eabi* | powerpc-*-rtems*, rs6000-*-lynxos*, rs6000-*-aix*, mips*-*-linux*, sparclet-*-aout* | sparc86x-*-*, sparc-*-elf*, sparc64-*-elf*, sparclite-*-*, sparc-*-sunos4*, sparc-*-solaris* | sparc64-*-solaris* | sparcv9-*-solaris*, *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu, *-*-lynxos*, *-*-*): Don't disable newlib and libgloss in main case over targets. Remove most empty cases in main case over targets. * configure: Regenerate. Index: configure.ac =================================================================== --- configure.ac (revision 173360) +++ configure.ac (working copy) @@ -744,10 +744,76 @@ ;; esac +# Disable newlib and libgloss for various target OSes. case "${target}" in + alpha*-dec-osf*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + i[[3456789]]86-*-linux*) + # This section makes it possible to build newlib natively on linux. + # If we are using a cross compiler then don't configure newlib. + if test x${is_cross_compiler} != xno ; then + noconfigdirs="$noconfigdirs target-newlib" + fi + noconfigdirs="$noconfigdirs target-libgloss" + # If we are not using a cross compiler, do configure newlib. + # Note however, that newlib will only be configured in this situation + # if the --with-newlib option has been given, because otherwise + # 'target-newlib' will appear in skipdirs. + ;; + i[[3456789]]86-*-rdos*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + sh*-*-pe|mips*-*-pe|arm-wince-pe) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + sparc-*-sunos4*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-aix*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-beos*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; *-*-chorusos) noconfigdirs="$noconfigdirs target-newlib target-libgloss" ;; + *-*-dragonfly*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-freebsd*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-lynxos*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-mingw*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-netbsd*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-netware*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-tpf*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-uclinux*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; + *-*-vxworks*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; +esac + +case "${target}" in + *-*-chorusos) + ;; powerpc-*-darwin*) noconfigdirs="$noconfigdirs ld gas gdb gprof" noconfigdirs="$noconfigdirs sim target-rda" @@ -765,10 +831,8 @@ noconfigdirs="$noconfigdirs sim target-rda" ;; *-*-dragonfly*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" ;; *-*-freebsd*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" if test "x$with_gmp" = x && test "x$with_gmp_dir" = x \ && test -f /usr/local/include/gmp.h; then with_gmp=/usr/local @@ -779,76 +843,45 @@ noconfigdirs="$noconfigdirs target-libgloss" ;; *-*-netbsd*) - # Skip some stuff on all NetBSD configurations. - noconfigdirs="$noconfigdirs target-newlib target-libgloss" ;; *-*-netware*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" ;; *-*-rtems*) noconfigdirs="$noconfigdirs target-libgloss" ;; # The tpf target doesn't support gdb yet. *-*-tpf*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss gdb tcl tk libgui itcl" + noconfigdirs="$noconfigdirs gdb tcl tk libgui itcl" ;; *-*-uclinux*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda" + noconfigdirs="$noconfigdirs target-rda" ;; *-*-vxworks*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" ;; alpha*-dec-osf*) # ld works, but does not support shared libraries. - # newlib is not 64 bit ready. # gas doesn't generate exception information. - noconfigdirs="$noconfigdirs gas ld target-newlib target-libgloss" + noconfigdirs="$noconfigdirs gas ld" ;; alpha*-*-*vms*) noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss" ;; - alpha*-*-linux*) - # newlib is not 64 bit ready - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; alpha*-*-*) # newlib is not 64 bit ready noconfigdirs="$noconfigdirs target-newlib target-libgloss" ;; - am33_2.0-*-linux*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; - sh-*-linux*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; sh*-*-pe|mips*-*-pe|*arm-wince-pe) noconfigdirs="$noconfigdirs tcl tk itcl libgui sim" - noconfigdirs="$noconfigdirs target-newlib" ;; arc-*-*) noconfigdirs="$noconfigdirs target-libgloss" ;; - arm-*-coff) - ;; - arm-*-elf* | arm*-*-eabi* ) - ;; - arm*-*-linux-gnueabi) - case ${with_newlib} in - no) noconfigdirs="$noconfigdirs target-newlib target-libgloss" - esac - ;; - arm*-*-symbianelf*) - ;; arm-*-pe*) noconfigdirs="$noconfigdirs target-libgloss" ;; arm-*-riscix*) noconfigdirs="$noconfigdirs ld target-libgloss" ;; - avr-*-*) - ;; - bfin-*-*) - ;; c4x-*-* | tic4x-*-*) noconfigdirs="$noconfigdirs target-libgloss" ;; @@ -858,12 +891,6 @@ cr16-*-*) noconfigdirs="$noconfigdirs gdb" ;; - cris-*-* | crisv32-*-*) - case "${target}" in - *-*-linux*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss";; - esac - ;; d10v-*-*) noconfigdirs="$noconfigdirs target-libgloss" ;; @@ -873,8 +900,6 @@ fr30-*-elf*) noconfigdirs="$noconfigdirs gdb" ;; - frv-*-*) - ;; moxie-*-*) noconfigdirs="$noconfigdirs gprof" ;; @@ -918,30 +943,11 @@ # No gdb or ld support yet. noconfigdirs="$noconfigdirs readline libgui itcl gdb ld" ;; - i[[3456789]]86-*-coff | i[[3456789]]86-*-elf) - ;; - i[[3456789]]86-*-linux*) - # This section makes it possible to build newlib natively on linux. - # If we are using a cross compiler then don't configure newlib. - if test x${is_cross_compiler} != xno ; then - noconfigdirs="$noconfigdirs target-newlib" - fi - noconfigdirs="$noconfigdirs target-libgloss" - # If we are not using a cross compiler, do configure newlib. - # Note however, that newlib will only be configured in this situation - # if the --with-newlib option has been given, because otherwise - # 'target-newlib' will appear in skipdirs. - ;; i[[3456789]]86-w64-mingw*) - noconfigdirs="$noconfigdirs target-libgloss target-newlib" ;; i[[3456789]]86-*-mingw*) target_configdirs="$target_configdirs target-winsup" - noconfigdirs="$noconfigdirs target-libgloss target-newlib" ;; - x86_64-*-mingw*) - noconfigdirs="$noconfigdirs target-libgloss target-newlib" - ;; *-*-cygwin*) target_configdirs="$target_configdirs target-libtermcap target-winsup" noconfigdirs="$noconfigdirs target-libgloss" @@ -952,8 +958,6 @@ echo "Warning: winsup/cygwin is missing so newlib can't be built." fi ;; - i[[3456789]]86-*-interix* ) - ;; i[[3456789]]86-*-pe) noconfigdirs="$noconfigdirs target-libgloss" ;; @@ -972,19 +976,11 @@ noconfigdirs="$noconfigdirs target-libgloss" ;; i[[3456789]]86-*-beos*) - noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss" + noconfigdirs="$noconfigdirs gdb" ;; i[[3456789]]86-*-rdos*) - noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss" + noconfigdirs="$noconfigdirs gdb" ;; - m32r-*-*) - ;; - m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) - ;; - m68k-*-elf*) - ;; - m68*-*-* | fido-*-*) - ;; mmix-*-*) noconfigdirs="$noconfigdirs gdb" ;; @@ -993,7 +989,7 @@ ;; powerpc-*-aix*) # copied from rs6000-*-* entry - noconfigdirs="$noconfigdirs gprof target-libgloss target-newlib" + noconfigdirs="$noconfigdirs gprof" ;; powerpc*-*-winnt* | powerpc*-*-pe*) target_configdirs="$target_configdirs target-winsup" @@ -1006,17 +1002,13 @@ noconfigdirs="$noconfigdirs gdb sim tcl tk itcl" ;; powerpc-*-beos*) - noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss" + noconfigdirs="$noconfigdirs gdb" ;; - powerpc-*-eabi) - ;; - powerpc-*-eabi* | powerpcle-*-eabi* | powerpc-*-rtems* ) - ;; rs6000-*-lynxos*) - noconfigdirs="$noconfigdirs target-newlib gprof" + noconfigdirs="$noconfigdirs gprof" ;; rs6000-*-aix*) - noconfigdirs="$noconfigdirs gprof target-libgloss target-newlib" + noconfigdirs="$noconfigdirs gprof" ;; rs6000-*-*) noconfigdirs="$noconfigdirs gprof" @@ -1042,7 +1034,6 @@ noconfigdirs="$noconfigdirs gprof target-libgloss" ;; mips*-*-linux*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" ;; mips*-*-*) noconfigdirs="$noconfigdirs gprof" @@ -1055,23 +1046,11 @@ noconfigdirs="$noconfigdirs target-libgloss" ;; esac ;; - sparclet-*-aout* | sparc86x-*-*) - ;; - sparc-*-elf*) - ;; - sparc64-*-elf*) - ;; - sparclite-*-*) - ;; sparc-*-sunos4*) - if test x${is_cross_compiler} != xno ; then - noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss" - else + if test x${is_cross_compiler} = xno ; then use_gnu_ld=no fi ;; - sparc-*-solaris* | sparc64-*-solaris* | sparcv9-*-solaris*) - ;; tic6x-*-*) noconfigdirs="$noconfigdirs gdb sim" ;; @@ -1081,14 +1060,6 @@ vax-*-*) noconfigdirs="$noconfigdirs target-newlib target-libgloss" ;; - *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; - *-*-lynxos*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; - *-*-*) - ;; esac # If we aren't building newlib, then don't build libgloss, since libgloss