amdfwtool: Remove the misleading option characters

Change-Id: I8b0d53d5e5eb494741b7fac32029cf16cabe66d8
Signed-off-by: Zheng Bao <fishbaozi@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/52657
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin Roth <martinroth@google.com>
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
This commit is contained in:
Zheng Bao 2021-04-27 17:21:54 +08:00 committed by David Hendricks
parent 69f0df2c54
commit 806892a347
1 changed files with 150 additions and 109 deletions

View File

@ -153,50 +153,50 @@ static uint32_t fletcher32(const void *data, int length)
static void usage(void) static void usage(void)
{ {
printf("amdfwtool: Create AMD Firmware combination\n"); printf("amdfwtool: Create AMD Firmware combination\n");
printf("Usage: amdfwtool [options] -f <size> -o <filename>\n"); printf("Usage: amdfwtool [options] --flashsize <size> --output <filename>\n");
printf("-x | --xhci <FILE> Add XHCI blob\n"); printf("--xhci <FILE> Add XHCI blob\n");
printf("-i | --imc <FILE> Add IMC blob\n"); printf("--imc <FILE> Add IMC blob\n");
printf("-g | --gec <FILE> Add GEC blob\n"); printf("--gec <FILE> Add GEC blob\n");
printf("\nPSP options:\n"); printf("\nPSP options:\n");
printf("-A | --combo-capable Place PSP directory pointer at Embedded Firmware\n"); printf("--combo-capable Place PSP directory pointer at Embedded\n");
printf(" Firmware\n");
printf(" offset able to support combo directory\n"); printf(" offset able to support combo directory\n");
printf("-M | --multilevel Generate primary and secondary tables\n"); printf("--multilevel Generate primary and secondary tables\n");
printf("-n | --nvram <FILE> Add nvram binary\n"); printf("--nvram <FILE> Add nvram binary\n");
printf("-T | --soft-fuse Set soft fuse\n"); printf("--soft-fuse Set soft fuse\n");
printf("-U | --token-unlock Set token unlock\n"); printf("--token-unlock Set token unlock\n");
printf("-W | --whitelist Set if there is a whitelist\n"); printf("--whitelist Set if there is a whitelist\n");
printf("-S | --use-pspsecureos Set if psp secure OS is needed\n"); printf("--use-pspsecureos Set if psp secure OS is needed\n");
printf("-p | --load-mp2-fw Set if load MP2 firmware\n"); printf("--load-mp2-fw Set if load MP2 firmware\n");
printf("-L | --load-s0i3 Set if load s0i3 firmware\n"); printf("--load-s0i3 Set if load s0i3 firmware\n");
printf("-Z | --verstage <FILE> Add verstage\n"); printf("--verstage <FILE> Add verstage\n");
printf("-E | --verstage_sig Add verstage signature\n"); printf("--verstage_sig Add verstage signature\n");
printf("\nBIOS options:\n"); printf("\nBIOS options:\n");
printf("-I | --instance <number> Sets instance field for the next BIOS\n"); printf("--instance <number> Sets instance field for the next BIOS\n");
printf(" firmware\n"); printf(" firmware\n");
printf("-a | --apcb <FILE> Add AGESA PSP customization block\n"); printf("--apcb <FILE> Add AGESA PSP customization block\n");
printf("-Q | --apob-base <HEX_VAL> Destination for AGESA PSP output block\n"); printf("--apob-base <HEX_VAL> Destination for AGESA PSP output block\n");
printf("-F | --apob-nv-base <HEX_VAL> Location of S3 resume data\n"); printf("--apob-nv-base <HEX_VAL> Location of S3 resume data\n");
printf("-H | --apob-nv-size <HEX_VAL> Size of S3 resume data\n"); printf("--apob-nv-size <HEX_VAL> Size of S3 resume data\n");
printf("-O | --ucode <FILE> Add microcode patch\n"); printf("--ucode <FILE> Add microcode patch\n");
printf("-V | --bios-bin <FILE> Add compressed image; auto source address\n"); printf("--bios-bin <FILE> Add compressed image; auto source address\n");
printf("-e | --bios-bin-src <HEX_VAL> Address in flash of source if -V not used\n"); printf("--bios-bin-src <HEX_VAL> Address in flash of source if -V not used\n");
printf("-v | --bios-bin-dest <HEX_VAL> Destination for uncompressed BIOS\n"); printf("--bios-bin-dest <HEX_VAL> Destination for uncompressed BIOS\n");
printf("-j | --bios-uncomp-size <HEX> Uncompressed size of BIOS image\n"); printf("--bios-uncomp-size <HEX> Uncompressed size of BIOS image\n");
printf("-o | --output <filename> Output filename\n"); printf("--output <filename> output filename\n");
printf("-f | --flashsize <HEX_VAL> ROM size in bytes\n"); printf("--flashsize <HEX_VAL> ROM size in bytes\n");
printf(" size must be larger than %dKB\n", printf(" size must be larger than %dKB\n",
MIN_ROM_KB); MIN_ROM_KB);
printf(" and must a multiple of 1024\n"); printf(" and must a multiple of 1024\n");
printf("-l | --location Location of Directory\n"); printf("--location Location of Directory\n");
printf("-q | --anywhere Use any 64-byte aligned addr for Directory\n"); printf("--anywhere Use any 64-byte aligned addr for Directory\n");
printf("-R | --sharedmem Location of PSP/FW shared memory\n"); printf("--sharedmem Location of PSP/FW shared memory\n");
printf("-P | --sharedmem-size Maximum size of the PSP/FW shared memory\n"); printf("--sharedmem-size Maximum size of the PSP/FW shared memory\n");
printf(" area\n"); printf(" area\n");
printf("-C | --soc-name <socname> Specify SOC name. Supported names are\n"); printf("--soc-name <socname> Specify SOC name. Supported names are\n");
printf(" Stoneyridge, Raven, Picasso, Renoir, Cezanne\n"); printf(" Stoneyridge, Raven, Picasso, Renoir, Cezanne\n");
printf(" or Lucienne\n"); printf(" or Lucienne\n");
printf("-h | --help Show this help\n");
printf("\nEmbedded Firmware Structure options used by the PSP:\n"); printf("\nEmbedded Firmware Structure options used by the PSP:\n");
printf("--spi-speed <HEX_VAL> SPI fast speed to place in EFS Table\n"); printf("--spi-speed <HEX_VAL> SPI fast speed to place in EFS Table\n");
printf(" 0x0 66.66Mhz\n"); printf(" 0x0 66.66Mhz\n");
@ -219,9 +219,11 @@ static void usage(void)
printf(" 0x1 Micron parts are always used\n"); printf(" 0x1 Micron parts are always used\n");
printf(" 0x2 Micron parts optional, this option is only\n"); printf(" 0x2 Micron parts optional, this option is only\n");
printf(" supported with RN/LCN SOC\n"); printf(" supported with RN/LCN SOC\n");
printf("-c | --config <config file> Config file\n"); printf("\nGeneral options:\n");
printf("-d | --debug Print debug message\n"); printf("-c|--config <config file> Config file\n");
printf("-D | --depend List out the firmware files\n"); printf("-d|--debug Print debug message\n");
printf("-l|--list List out the firmware files\n");
printf("-h|--help Show this help\n");
} }
amd_fw_entry amd_psp_fw_table[] = { amd_fw_entry amd_psp_fw_table[] = {
@ -1068,60 +1070,99 @@ static void integrate_bios_firmwares(context *ctx,
} }
enum { enum {
AMDFW_OPT_CONFIG = 'c',
AMDFW_OPT_DEBUG = 'd',
AMDFW_OPT_HELP = 'h',
AMDFW_OPT_LIST_DEPEND = 'l',
AMDFW_OPT_XHCI = 128,
AMDFW_OPT_IMC,
AMDFW_OPT_GEC,
AMDFW_OPT_COMBO,
AMDFW_OPT_MULTILEVEL,
AMDFW_OPT_NVRAM,
AMDFW_OPT_FUSE,
AMDFW_OPT_UNLOCK,
AMDFW_OPT_WHITELIST,
AMDFW_OPT_USE_PSPSECUREOS,
AMDFW_OPT_LOAD_MP2FW,
AMDFW_OPT_LOAD_S0I3,
AMDFW_OPT_VERSTAGE,
AMDFW_OPT_VERSTAGE_SIG,
AMDFW_OPT_INSTANCE,
AMDFW_OPT_APCB,
AMDFW_OPT_APOBBASE,
AMDFW_OPT_BIOSBIN,
AMDFW_OPT_BIOSBIN_SOURCE,
AMDFW_OPT_BIOSBIN_DEST,
AMDFW_OPT_BIOS_UNCOMP_SIZE,
AMDFW_OPT_UCODE,
AMDFW_OPT_APOB_NVBASE,
AMDFW_OPT_APOB_NVSIZE,
AMDFW_OPT_OUTPUT,
AMDFW_OPT_FLASHSIZE,
AMDFW_OPT_LOCATION,
AMDFW_OPT_ANYWHERE,
AMDFW_OPT_SHAREDMEM,
AMDFW_OPT_SHAREDMEM_SIZE,
AMDFW_OPT_SOC_NAME,
/* begin after ASCII characters */ /* begin after ASCII characters */
LONGOPT_SPI_READ_MODE = 256, LONGOPT_SPI_READ_MODE = 256,
LONGOPT_SPI_SPEED = 257, LONGOPT_SPI_SPEED = 257,
LONGOPT_SPI_MICRON_FLAG = 258, LONGOPT_SPI_MICRON_FLAG = 258,
}; };
/* Unused values: BGJKNXYbkmprstuwyz*/ static char const optstring[] = {AMDFW_OPT_CONFIG, ':',
static const char *optstring = "x:i:g:AMn:T:SPLUW:I:a:Q:V:e:v:j:O:F:" AMDFW_OPT_DEBUG, AMDFW_OPT_HELP, AMDFW_OPT_LIST_DEPEND
"H:o:f:l:hZ:qR:C:c:E:dD"; };
static struct option long_options[] = { static struct option long_options[] = {
{"xhci", required_argument, 0, 'x' }, {"xhci", required_argument, 0, AMDFW_OPT_XHCI },
{"imc", required_argument, 0, 'i' }, {"imc", required_argument, 0, AMDFW_OPT_IMC },
{"gec", required_argument, 0, 'g' }, {"gec", required_argument, 0, AMDFW_OPT_GEC },
/* PSP Directory Table items */ /* PSP Directory Table items */
{"combo-capable", no_argument, 0, 'A' }, {"combo-capable", no_argument, 0, AMDFW_OPT_COMBO },
{"multilevel", no_argument, 0, 'M' }, {"multilevel", no_argument, 0, AMDFW_OPT_MULTILEVEL },
{"nvram", required_argument, 0, 'n' }, {"nvram", required_argument, 0, AMDFW_OPT_NVRAM },
{"soft-fuse", required_argument, 0, 'T' }, {"soft-fuse", required_argument, 0, AMDFW_OPT_FUSE },
{"token-unlock", no_argument, 0, 'U' }, {"token-unlock", no_argument, 0, AMDFW_OPT_UNLOCK },
{"whitelist", required_argument, 0, 'W' }, {"whitelist", required_argument, 0, AMDFW_OPT_WHITELIST },
{"use-pspsecureos", no_argument, 0, 'S' }, {"use-pspsecureos", no_argument, 0, AMDFW_OPT_USE_PSPSECUREOS },
{"load-mp2-fw", no_argument, 0, 'p' }, {"load-mp2-fw", no_argument, 0, AMDFW_OPT_LOAD_MP2FW },
{"load-s0i3", no_argument, 0, 'L' }, {"load-s0i3", no_argument, 0, AMDFW_OPT_LOAD_S0I3 },
{"verstage", required_argument, 0, 'Z' }, {"verstage", required_argument, 0, AMDFW_OPT_VERSTAGE },
{"verstage_sig", required_argument, 0, 'E' }, {"verstage_sig", required_argument, 0, AMDFW_OPT_VERSTAGE_SIG },
/* BIOS Directory Table items */ /* BIOS Directory Table items */
{"instance", required_argument, 0, 'I' }, {"instance", required_argument, 0, AMDFW_OPT_INSTANCE },
{"apcb", required_argument, 0, 'a' }, {"apcb", required_argument, 0, AMDFW_OPT_APCB },
{"apob-base", required_argument, 0, 'Q' }, {"apob-base", required_argument, 0, AMDFW_OPT_APOBBASE },
{"bios-bin", required_argument, 0, 'V' }, {"bios-bin", required_argument, 0, AMDFW_OPT_BIOSBIN },
{"bios-bin-src", required_argument, 0, 'e' }, {"bios-bin-src", required_argument, 0, AMDFW_OPT_BIOSBIN_SOURCE },
{"bios-bin-dest", required_argument, 0, 'v' }, {"bios-bin-dest", required_argument, 0, AMDFW_OPT_BIOSBIN_DEST },
{"bios-uncomp-size", required_argument, 0, 'j' }, {"bios-uncomp-size", required_argument, 0, AMDFW_OPT_BIOS_UNCOMP_SIZE },
{"ucode", required_argument, 0, 'O' }, {"ucode", required_argument, 0, AMDFW_OPT_UCODE },
{"apob-nv-base", required_argument, 0, 'F' }, {"apob-nv-base", required_argument, 0, AMDFW_OPT_APOB_NVBASE },
{"apob-nv-size", required_argument, 0, 'H' }, {"apob-nv-size", required_argument, 0, AMDFW_OPT_APOB_NVSIZE },
/* Embedded Firmware Structure items*/ /* Embedded Firmware Structure items*/
{"spi-read-mode", required_argument, 0, LONGOPT_SPI_READ_MODE }, {"spi-read-mode", required_argument, 0, LONGOPT_SPI_READ_MODE },
{"spi-speed", required_argument, 0, LONGOPT_SPI_SPEED }, {"spi-speed", required_argument, 0, LONGOPT_SPI_SPEED },
{"spi-micron-flag", required_argument, 0, LONGOPT_SPI_MICRON_FLAG }, {"spi-micron-flag", required_argument, 0, LONGOPT_SPI_MICRON_FLAG },
/* other */ /* other */
{"output", required_argument, 0, 'o' }, {"output", required_argument, 0, AMDFW_OPT_OUTPUT },
{"flashsize", required_argument, 0, 'f' }, {"flashsize", required_argument, 0, AMDFW_OPT_FLASHSIZE },
{"location", required_argument, 0, 'l' }, {"location", required_argument, 0, AMDFW_OPT_LOCATION },
{"anywhere", no_argument, 0, 'q' }, {"anywhere", no_argument, 0, AMDFW_OPT_ANYWHERE },
{"sharedmem", required_argument, 0, 'R' }, {"sharedmem", required_argument, 0, AMDFW_OPT_SHAREDMEM },
{"sharedmem-size", required_argument, 0, 'P' }, {"sharedmem-size", required_argument, 0, AMDFW_OPT_SHAREDMEM_SIZE },
{"soc-name", required_argument, 0, 'C' }, {"soc-name", required_argument, 0, AMDFW_OPT_SOC_NAME },
{"config", required_argument, 0, 'c' }, {"config", required_argument, 0, AMDFW_OPT_CONFIG },
{"debug", no_argument, 0, 'd' }, {"debug", no_argument, 0, AMDFW_OPT_DEBUG },
{"help", no_argument, 0, 'h' }, {"help", no_argument, 0, AMDFW_OPT_HELP },
{"depend", no_argument, 0, 'D' }, {"list", no_argument, 0, AMDFW_OPT_LIST_DEPEND },
{NULL, 0, 0, 0 } {NULL, 0, 0, 0 }
}; };
@ -1340,48 +1381,48 @@ int main(int argc, char **argv)
break; break;
switch (c) { switch (c) {
case 'x': case AMDFW_OPT_XHCI:
register_fw_filename(AMD_FW_XHCI, sub, optarg); register_fw_filename(AMD_FW_XHCI, sub, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'i': case AMDFW_OPT_IMC:
register_fw_filename(AMD_FW_IMC, sub, optarg); register_fw_filename(AMD_FW_IMC, sub, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'g': case AMDFW_OPT_GEC:
register_fw_filename(AMD_FW_GEC, sub, optarg); register_fw_filename(AMD_FW_GEC, sub, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'A': case AMDFW_OPT_COMBO:
comboable = 1; comboable = 1;
break; break;
case 'M': case AMDFW_OPT_MULTILEVEL:
multi = 1; multi = 1;
break; break;
case 'U': case AMDFW_OPT_UNLOCK:
register_fw_token_unlock(); register_fw_token_unlock();
cb_config.unlock_secure = 1; cb_config.unlock_secure = 1;
sub = instance = 0; sub = instance = 0;
break; break;
case 'S': case AMDFW_OPT_USE_PSPSECUREOS:
cb_config.use_secureos = 1; cb_config.use_secureos = 1;
break; break;
case 'I': case AMDFW_OPT_INSTANCE:
instance = strtoul(optarg, &tmp, 16); instance = strtoul(optarg, &tmp, 16);
break; break;
case 'p': case AMDFW_OPT_LOAD_MP2FW:
cb_config.load_mp2_fw = 1; cb_config.load_mp2_fw = 1;
break; break;
case 'n': case AMDFW_OPT_NVRAM:
register_fw_filename(AMD_FW_PSP_NVRAM, sub, optarg); register_fw_filename(AMD_FW_PSP_NVRAM, sub, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'T': case AMDFW_OPT_FUSE:
register_fw_fuse(optarg); register_fw_fuse(optarg);
fuse_defined = 1; fuse_defined = 1;
sub = 0; sub = 0;
break; break;
case 'a': case AMDFW_OPT_APCB:
if ((instance & 0xF0) == 0) if ((instance & 0xF0) == 0)
register_bdt_data(AMD_BIOS_APCB, sub, instance & 0xF, optarg); register_bdt_data(AMD_BIOS_APCB, sub, instance & 0xF, optarg);
else else
@ -1389,62 +1430,62 @@ int main(int argc, char **argv)
instance & 0xF, optarg); instance & 0xF, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'Q': case AMDFW_OPT_APOBBASE:
/* APOB destination */ /* APOB destination */
register_fw_addr(AMD_BIOS_APOB, 0, optarg, 0); register_fw_addr(AMD_BIOS_APOB, 0, optarg, 0);
sub = instance = 0; sub = instance = 0;
break; break;
case 'F': case AMDFW_OPT_APOB_NVBASE:
/* APOB NV source */ /* APOB NV source */
register_fw_addr(AMD_BIOS_APOB_NV, optarg, 0, 0); register_fw_addr(AMD_BIOS_APOB_NV, optarg, 0, 0);
sub = instance = 0; sub = instance = 0;
break; break;
case 'H': case AMDFW_OPT_APOB_NVSIZE:
/* APOB NV size */ /* APOB NV size */
register_fw_addr(AMD_BIOS_APOB_NV, 0, 0, optarg); register_fw_addr(AMD_BIOS_APOB_NV, 0, 0, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'V': case AMDFW_OPT_BIOSBIN:
register_bdt_data(AMD_BIOS_BIN, sub, instance, optarg); register_bdt_data(AMD_BIOS_BIN, sub, instance, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'e': case AMDFW_OPT_BIOSBIN_SOURCE:
/* BIOS source */ /* BIOS source */
register_fw_addr(AMD_BIOS_BIN, optarg, 0, 0); register_fw_addr(AMD_BIOS_BIN, optarg, 0, 0);
sub = instance = 0; sub = instance = 0;
break; break;
case 'v': case AMDFW_OPT_BIOSBIN_DEST:
/* BIOS destination */ /* BIOS destination */
register_fw_addr(AMD_BIOS_BIN, 0, optarg, 0); register_fw_addr(AMD_BIOS_BIN, 0, optarg, 0);
sub = instance = 0; sub = instance = 0;
break; break;
case 'j': case AMDFW_OPT_BIOS_UNCOMP_SIZE:
/* BIOS destination size */ /* BIOS destination size */
register_fw_addr(AMD_BIOS_BIN, 0, 0, optarg); register_fw_addr(AMD_BIOS_BIN, 0, 0, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'O': case AMDFW_OPT_UCODE:
register_bdt_data(AMD_BIOS_UCODE, sub, register_bdt_data(AMD_BIOS_UCODE, sub,
instance, optarg); instance, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'L': case AMDFW_OPT_LOAD_S0I3:
cb_config.s0i3 = 1; cb_config.s0i3 = 1;
break; break;
case 'W': case AMDFW_OPT_WHITELIST:
register_fw_filename(AMD_FW_PSP_WHITELIST, sub, optarg); register_fw_filename(AMD_FW_PSP_WHITELIST, sub, optarg);
sub = instance = 0; sub = instance = 0;
cb_config.have_whitelist = 1; cb_config.have_whitelist = 1;
break; break;
case 'Z': case AMDFW_OPT_VERSTAGE:
register_fw_filename(AMD_FW_PSP_VERSTAGE, sub, optarg); register_fw_filename(AMD_FW_PSP_VERSTAGE, sub, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'E': case AMDFW_OPT_VERSTAGE_SIG:
register_fw_filename(AMD_FW_VERSTAGE_SIG, sub, optarg); register_fw_filename(AMD_FW_VERSTAGE_SIG, sub, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'C': case AMDFW_OPT_SOC_NAME:
soc_id = identify_platform(optarg); soc_id = identify_platform(optarg);
if (soc_id == PLATFORM_UNKNOWN) { if (soc_id == PLATFORM_UNKNOWN) {
fprintf(stderr, "Error: Invalid SOC name specified\n\n"); fprintf(stderr, "Error: Invalid SOC name specified\n\n");
@ -1464,10 +1505,10 @@ int main(int argc, char **argv)
efs_spi_micron_flag = strtoull(optarg, NULL, 16); efs_spi_micron_flag = strtoull(optarg, NULL, 16);
sub = instance = 0; sub = instance = 0;
break; break;
case 'o': case AMDFW_OPT_OUTPUT:
output = optarg; output = optarg;
break; break;
case 'f': case AMDFW_OPT_FLASHSIZE:
ctx.rom_size = (uint32_t)strtoul(optarg, &tmp, 16); ctx.rom_size = (uint32_t)strtoul(optarg, &tmp, 16);
if (*tmp != '\0') { if (*tmp != '\0') {
fprintf(stderr, "Error: ROM size specified" fprintf(stderr, "Error: ROM size specified"
@ -1475,7 +1516,7 @@ int main(int argc, char **argv)
retval = 1; retval = 1;
} }
break; break;
case 'l': case AMDFW_OPT_LOCATION:
dir_location = (uint32_t)strtoul(optarg, &tmp, 16); dir_location = (uint32_t)strtoul(optarg, &tmp, 16);
if (*tmp != '\0') { if (*tmp != '\0') {
fprintf(stderr, "Error: Directory Location specified" fprintf(stderr, "Error: Directory Location specified"
@ -1483,30 +1524,30 @@ int main(int argc, char **argv)
retval = 1; retval = 1;
} }
break; break;
case 'q': case AMDFW_OPT_ANYWHERE:
any_location = 1; any_location = 1;
break; break;
case 'R': case AMDFW_OPT_SHAREDMEM:
/* shared memory destination */ /* shared memory destination */
register_fw_addr(AMD_BIOS_PSP_SHARED_MEM, 0, optarg, 0); register_fw_addr(AMD_BIOS_PSP_SHARED_MEM, 0, optarg, 0);
sub = instance = 0; sub = instance = 0;
break; break;
case 'P': case AMDFW_OPT_SHAREDMEM_SIZE:
/* shared memory size */ /* shared memory size */
register_fw_addr(AMD_BIOS_PSP_SHARED_MEM, NULL, NULL, optarg); register_fw_addr(AMD_BIOS_PSP_SHARED_MEM, NULL, NULL, optarg);
sub = instance = 0; sub = instance = 0;
break; break;
case 'c': case AMDFW_OPT_CONFIG:
config = optarg; config = optarg;
break; break;
case 'd': case AMDFW_OPT_DEBUG:
debug = 1; debug = 1;
break; break;
case 'h': case AMDFW_OPT_HELP:
usage(); usage();
return 0; return 0;
case 'D': case AMDFW_OPT_LIST_DEPEND:
list_deps = 1; list_deps = 1;
break; break;
default: default: