mkimage: fix argument parsing on BSD systems
The getopt(3) optstring '-' is a GNU extension which is not available on BSD systems like OS X. Remove this dependency by implementing argument parsing in another way. This will also change the lately introduced '-b' switch behaviour. Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
f1ab00fb53
commit
7a439cadcf
2
Makefile
2
Makefile
|
@ -898,7 +898,7 @@ ifdef CONFIG_SPL_LOAD_FIT
|
||||||
MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
|
MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
|
||||||
-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
|
-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
|
||||||
-n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -E \
|
-n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -E \
|
||||||
-b $(patsubst %,arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST)))
|
$(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST)))
|
||||||
else
|
else
|
||||||
MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \
|
MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \
|
||||||
-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
|
-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
|
||||||
|
|
|
@ -97,8 +97,8 @@ Set XIP (execute in place) flag.
|
||||||
.B Create FIT image:
|
.B Create FIT image:
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.BI "\-b
|
.BI "\-b [" "device tree file" "]
|
||||||
Specifies that the following arguments are device tree binary files (.dtb).
|
Appends the device tree binary file (.dtb) to the FIT.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.BI "\-c [" "comment" "]"
|
.BI "\-c [" "comment" "]"
|
||||||
|
@ -211,7 +211,7 @@ automatic mode. No .its file is required.
|
||||||
.B mkimage -f auto -A arm -O linux -T kernel -C none -a 43e00000 -e 0 \\\\
|
.B mkimage -f auto -A arm -O linux -T kernel -C none -a 43e00000 -e 0 \\\\
|
||||||
.br
|
.br
|
||||||
.B -c """Kernel 4.4 image for production devices""" -d vmlinuz \\\\
|
.B -c """Kernel 4.4 image for production devices""" -d vmlinuz \\\\
|
||||||
.B -b /path/to/rk3288-firefly.dtb /path/to/rk3288-jerry.dtb kernel.itb
|
.B -b /path/to/rk3288-firefly.dtb -b /path/to/rk3288-jerry.dtb kernel.itb
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
.SH HOMEPAGE
|
.SH HOMEPAGE
|
||||||
|
|
|
@ -85,8 +85,8 @@ static void usage(const char *msg)
|
||||||
" -x ==> set XIP (execute in place)\n",
|
" -x ==> set XIP (execute in place)\n",
|
||||||
params.cmdname);
|
params.cmdname);
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
" %s [-D dtc_options] [-f fit-image.its|-f auto|-F] [-b <dtb_list>] fit-image\n"
|
" %s [-D dtc_options] [-f fit-image.its|-f auto|-F] [-b <dtb> [-b <dtb>]] fit-image\n"
|
||||||
" <dtb_list> is used with -f auto, and is a space-separated list of .dtb files\n",
|
" <dtb> file is used with -f auto, it may occour multiple times.\n",
|
||||||
params.cmdname);
|
params.cmdname);
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
" -D => set all options for device tree compiler\n"
|
" -D => set all options for device tree compiler\n"
|
||||||
|
@ -138,7 +138,7 @@ static void process_args(int argc, char **argv)
|
||||||
|
|
||||||
expecting = IH_TYPE_COUNT; /* Unknown */
|
expecting = IH_TYPE_COUNT; /* Unknown */
|
||||||
while ((opt = getopt(argc, argv,
|
while ((opt = getopt(argc, argv,
|
||||||
"-a:A:bcC:d:D:e:Ef:Fk:K:ln:O:rR:sT:vVx")) != -1) {
|
"a:A:b:cC:d:D:e:Ef:Fk:K:ln:O:rR:sT:vVx")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'a':
|
case 'a':
|
||||||
params.addr = strtoull(optarg, &ptr, 16);
|
params.addr = strtoull(optarg, &ptr, 16);
|
||||||
|
@ -155,6 +155,12 @@ static void process_args(int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
expecting = IH_TYPE_FLATDT;
|
expecting = IH_TYPE_FLATDT;
|
||||||
|
if (add_content(expecting, optarg)) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"%s: Out of memory adding content '%s'",
|
||||||
|
params.cmdname, optarg);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
params.comment = optarg;
|
params.comment = optarg;
|
||||||
|
@ -243,29 +249,14 @@ static void process_args(int argc, char **argv)
|
||||||
case 'x':
|
case 'x':
|
||||||
params.xflag++;
|
params.xflag++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
|
||||||
if (expecting == type || optind == argc) {
|
|
||||||
params.imagefile = optarg;
|
|
||||||
expecting = IH_TYPE_INVALID;
|
|
||||||
} else if (expecting == IH_TYPE_INVALID) {
|
|
||||||
fprintf(stderr,
|
|
||||||
"%s: Unknown content type: use -b before device tree files",
|
|
||||||
params.cmdname);
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
} else {
|
|
||||||
if (add_content(expecting, optarg)) {
|
|
||||||
fprintf(stderr,
|
|
||||||
"%s: Out of memory adding content '%s'",
|
|
||||||
params.cmdname, optarg);
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
usage("Invalid option");
|
usage("Invalid option");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (optind < argc && expecting == type)
|
||||||
|
params.imagefile = argv[optind];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For auto-generated FIT images we need to know the image type to put
|
* For auto-generated FIT images we need to know the image type to put
|
||||||
* in the FIT, which is separate from the file's image type (which
|
* in the FIT, which is separate from the file's image type (which
|
||||||
|
|
Loading…
Reference in New Issue