From a3adb7ad3bd9c517d569e7e23b249e7f7d616015 Mon Sep 17 00:00:00 2001 From: Michael Ellerman Date: Mon, 19 Dec 2011 17:19:31 +1100 Subject: vl.c: In qemu -h output, only print options for the arch we are running as Only print options in the help output that are accepted by our arch. This is less confusing for users and also for other programs that consume the help output. The options affected are: -g and -prom-env only displayed on PPC or SPARC -win2k-hack, -rtc-td-hack, -no-fd-bootchk, -no-acpi, -no-hpet, -acpitable, -smbios only displayed on i386 -semihosting only displayed on ARM, M68K or XTENSA -old-param only displayed on ARM Signed-off-by: Michael Ellerman Signed-off-by: Anthony Liguori --- qemu-options-wrapper.h | 15 ++++++++++++--- qemu-options.hx | 4 ++-- scripts/hxtool | 3 +++ vl.c | 21 +++++++++------------ 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/qemu-options-wrapper.h b/qemu-options-wrapper.h index 202f5af9b4..13bfea0294 100644 --- a/qemu-options-wrapper.h +++ b/qemu-options-wrapper.h @@ -4,18 +4,26 @@ #define DEF(option, opt_arg, opt_enum, opt_help, arch_mask) \ opt_enum, #define DEFHEADING(text) +#define ARCHHEADING(text, arch_mask) #elif defined(QEMU_OPTIONS_GENERATE_HELP) -#define DEF(option, opt_arg, opt_enum, opt_help, arch_mask) \ - opt_help -#define DEFHEADING(text) stringify(text) "\n" +#define DEF(option, opt_arg, opt_enum, opt_help, arch_mask) \ + if ((arch_mask) & arch_type) \ + fputs(opt_help, stdout); + +#define ARCHHEADING(text, arch_mask) \ + if ((arch_mask) & arch_type) \ + puts(stringify(text)); + +#define DEFHEADING(text) ARCHHEADING(text, QEMU_ARCH_ALL) #elif defined(QEMU_OPTIONS_GENERATE_OPTIONS) #define DEF(option, opt_arg, opt_enum, opt_help, arch_mask) \ { option, opt_arg, opt_enum, arch_mask }, #define DEFHEADING(text) +#define ARCHHEADING(text, arch_mask) #else #error "qemu-options-wrapper.h included with no option defined" @@ -25,6 +33,7 @@ #undef DEF #undef DEFHEADING +#undef ARCHHEADING #undef GEN_DOCS #undef QEMU_OPTIONS_GENERATE_ENUM diff --git a/qemu-options.hx b/qemu-options.hx index 087a3b9376..749aee1bb7 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -1070,9 +1070,9 @@ STEXI @end table ETEXI -DEFHEADING() +ARCHHEADING(, QEMU_ARCH_I386) -DEFHEADING(i386 target only:) +ARCHHEADING(i386 target only:, QEMU_ARCH_I386) STEXI @table @option ETEXI diff --git a/scripts/hxtool b/scripts/hxtool index 7ca83ed1ff..995bb7f08c 100644 --- a/scripts/hxtool +++ b/scripts/hxtool @@ -47,6 +47,9 @@ hxtotexi() DEFHEADING*) echo "$(expr "$str" : "DEFHEADING(\(.*\))")" ;; + ARCHHEADING*) + echo "$(expr "$str" : "ARCHHEADING(\(.*\),.*)")" + ;; *) test $flag -eq 1 && echo "$str" ;; diff --git a/vl.c b/vl.c index 25ec37b563..da69f94dd1 100644 --- a/vl.c +++ b/vl.c @@ -1492,24 +1492,21 @@ static void version(void) static void help(int exitcode) { - const char *options_help = + version(); + printf("usage: %s [options] [disk_image]\n\n" + "'disk_image' is a raw hard disk image for IDE hard disk 0\n\n", + error_get_progname()); + #define QEMU_OPTIONS_GENERATE_HELP #include "qemu-options-wrapper.h" - ; - version(); - printf("usage: %s [options] [disk_image]\n" - "\n" - "'disk_image' is a raw hard disk image for IDE hard disk 0\n" - "\n" - "%s\n" - "During emulation, the following keys are useful:\n" + + printf("\nDuring emulation, the following keys are useful:\n" "ctrl-alt-f toggle full screen\n" "ctrl-alt-n switch to virtual console 'n'\n" "ctrl-alt toggle mouse and keyboard grab\n" "\n" - "When using -nographic, press 'ctrl-a h' to get some help.\n", - error_get_progname(), - options_help); + "When using -nographic, press 'ctrl-a h' to get some help.\n"); + exit(exitcode); } -- cgit v1.2.3