Hi,
attached patch adds the getopt tool to crossgcc. In case it doesn't
exist in the system (eg. mingw), it's compiled and added to the path.
The getopt implementation is taken from dragonflybsd, thus cleanly
sublicensable to GPL, given that it's 3-clause BSD licensed.
Besides, it's never linked to any other code in our tree.
I wouldn't mind to have some GNU implementation, but I just didn't find
one in my short search.
Signed-off-by: Patrick Georgi <[email protected]>
Property changes on: util\crossgcc
___________________________________________________________________
Added: svn:ignore
+ getopt
getopt.exe
tarballs
xgcc
Index: util/crossgcc/getopt.c
===================================================================
--- util/crossgcc/getopt.c (revision 0)
+++ util/crossgcc/getopt.c (revision 0)
@@ -0,0 +1,32 @@
+/* $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);
+}
Index: util/crossgcc/buildgcc
===================================================================
--- util/crossgcc/buildgcc (revision 5060)
+++ util/crossgcc/buildgcc (working copy)
@@ -132,6 +132,10 @@
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 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
--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot