diff options
author | Patrick Georgi <patrick.georgi@coresystems.de> | 2010-01-29 17:40:52 +0000 |
---|---|---|
committer | Patrick Georgi <patrick.georgi@coresystems.de> | 2010-01-29 17:40:52 +0000 |
commit | 6bba29f84a725c67f548290bb3a9832c793797cc (patch) | |
tree | 9e0bfe361ecf639c2a55a975576b4f39bd281a6d | |
parent | cccbb898e2568178ea251b9c19242809a79efc62 (diff) | |
download | coreboot-6bba29f84a725c67f548290bb3a9832c793797cc.tar.xz |
Add the BSD-licensed getopt tool to crossgcc, to use
if there's no native getopt around.
Use $PATCH instead of the hardcoded "patch" for patching
files (after we already looked it up)
Ignore various temporary files via svn:ignore
Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de>
Acked-by: Ronald G. Minnich <rminnich@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5063 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rwxr-xr-x | util/crossgcc/buildgcc | 6 | ||||
-rw-r--r-- | util/crossgcc/getopt.c | 64 |
2 files changed, 69 insertions, 1 deletions
diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc index 7174bf90a7..427af4d5f3 100755 --- a/util/crossgcc/buildgcc +++ b/util/crossgcc/buildgcc @@ -132,6 +132,10 @@ EOF printf "${blue}Welcome to the ${red}coresystems${blue} cross toolchain builder v$CROSSGCC_VERSION ($CROSSGCC_DATE)${NC}\n\n" +# Look if we have getopt. If not, build it. +export PATH=$PATH:. +getopt - > /dev/null 2>/dev/null || gcc -o getopt getopt.c + # parse parameters.. try to find out whether we're running GNU getopt getoptbrand="`getopt -V`" if [ "${getoptbrand:0:6}" == "getopt" ]; then @@ -205,7 +209,7 @@ for PACKAGE in GMP MPFR GCC BINUTILS GDB $MINGW_PACKAGES; do for patch in patches/${!dir}_*.patch; do test -r $patch || continue printf " o `basename $patch`\n" - patch -s -N -p0 < `echo $patch` + $PATCH -s -N -p0 < `echo $patch` done ) done diff --git a/util/crossgcc/getopt.c b/util/crossgcc/getopt.c new file mode 100644 index 0000000000..847628511e --- /dev/null +++ b/util/crossgcc/getopt.c @@ -0,0 +1,64 @@ +/* +Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + The DragonFly Project. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. +3. Neither the name of The DragonFly Project nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific, prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +*/ + +/* $FreeBSD: src/usr.bin/getopt/getopt.c,v 1.4.2.2 2001/07/30 10:16:38 dd Exp $ */ +/* $DragonFly: src/usr.bin/getopt/getopt.c,v 1.4 2004/10/23 13:33:36 eirikn Exp $ */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +int +main(int argc, char **argv) +{ + int c; + int status = 0; + + optind = 2; /* Past the program name and the option letters. */ + while ((c = getopt(argc, argv, argv[1])) != -1) + switch (c) { + case '?': + status = 1; /* getopt routine gave message */ + break; + default: + if (optarg != NULL) + printf(" -%c %s", c, optarg); + else + printf(" -%c", c); + break; + } + printf(" --"); + for (; optind < argc; optind++) + printf(" %s", argv[optind]); + printf("\n"); + return(status); +} |