# Copyright 1998, 1999 Michael Elizabeth Chastain, <mailto:mec@shout.net>
# Licensed under the Gnu Public License, version 2.
#
# text text, glorious text!

mainmenu_option next_comment
comment 'Release Notes'
  text 'version 0.17'
  text ''
  text ' Simplify the lexer.  It was fun to write all that hand-tuned character'
  text ' comparison code but someone might want to read the source someday.'
  text ' The lexer and parser still run in about 0.020 seconds on my 366 MHz'
  text ' Intel Celeron.'
  text ''
  text ' Separate the parsers.  There are actually two languages here:'
  text ' the language of Config.in files is completely disjoint from the'
  text ' language of .config and defconfig files.'
  text ''
  text ' Fix line numbers reported for error messages.'
  text ''
  text ' Rewrite the symbol table (this is really tough on Jim, sorry Jim).'
  text ' Change pedigree to origin.  The code ought to behave about the same.'
  text ''
  text 'version 0.16'
  text ''
  text ' This is a stutter release to put expr_not back into the parser,'
  text ' so that the parser can run to completion (on i386 at least).'
  text ''
  text 'version 0.15'
  text ''
  text ' Linux kernel version 2.2.2 runs split-include just before compiling,'
  text ' rather than just after configuration.  So split-include is completely'
  text ' out of my domain.'
  text ''
  text 'version 0.14'
  text ''
  text ' Tweak the arguments.  In particular, defconfig is gone.'
  text ''
  text ' mconfig reads only one configuration file, not one configuration file'
  text ' on top of one defconfig file.'
  text ''
  text ' add a bunch of def_* and dep_* verbs.'
  text ''
  text 'version 0.13'
  text ''
  text '  More frotz to support 2.0.37-pre4.'
  text ''
  text '  New output.c with full error checking and reporting, .config.old'
  text '  file, and asm symlink.'
  text ''
  text '  --mode minimum and --mode maximum.'
  text ''
  text 'version 0.12'
  text ''
  text '  I have succesfully dogfooded this version -- I built a zImage,'
  text '  although I have not booted the result yet.  I still have to run'
  text '  scripts/split-include by hand.  I am going to incorporate that soon.'
  text ''
  text '  This version has a help system.  Let me know if it is helpful.'
  text ''
  text '  Alan:  --mode syntax is for you.  Check out the x-syntax script.'
  text '  Arjan: --mode random is for you.  Check out the x-random script.'
  text ''
  text '  The screen full of warnings at the start is for real.  I wrote some'
  text '  notes about it at the start of x-syntax.'
endmenu

mainmenu_option next_comment
comment 'Commands'
  text 'No help available for commands yet.'
endmenu

mainmenu_option next_comment
comment 'Command Line Options'
  text 'Here are all the mconfig command line options.'
  text ''
  text 'I designed mconfig to be scriptable, so there are options to control'
  text 'all its input files, all its output files, and many other parameters.'
  text 'Many of the options have short names and long names, and the option'
  text 'parser accepts several kinds of abbreviations on top of that.'
  text ''
  text 'For basic interactive use, you do not need any options at all.'
  text 'Sometimes --dir-source, also known as -ds, is convenient.'
  text ''
  text '--help'
  text ''
  text '    Print a list of all the options and exit successfully.'
  text ''
  text '--version'
  text ''
  text '    Print the current version and exit successfully.'
  text ''
  text '-m MODE, --mode MODE'
  text ''
  text '    modes: menu line old x'
  text '    modes: syntax random mutate minimum maximum'
  text ''
  text '    See the Major Modes page for information on the modes.'
  text ''
  text '    Default value: mode --menu.'
  text ''
  text '-a ARCH, --architecture ARCH'
  text ''
  text '    Select the architecture to configure.  This affects the default'
  text '    locations of some input files: arch/$ARCH/Config.in and'
  text '    arch/$ARCH/defconfig.'
  text ''
  text '    Default value: the native architecture of your machine.'
  text ''
  text '--seed SEED'
  text ''
  text '    Specify the random number generator seed for those modes that use'
  text '    random numbers.  If you do not specify a seed, mconfig picks its'
  text '    own seed.  Whatever its source, mconfig reports the seed value in'
  text '    its output files.'
  text ''
  text '    Default value: something random.'
  text ''
  text '--title TITLE'
  text ''
  text '    Specify the title for this configuration.  Menu mode shows the'
  text '    title on the first line of the screen.  Also, mconfig writes the'
  text '    title into the output files.'
  text ''
  text '    Default value: mconfig makes a nice default title including the'
  text '    architecture name and the kernel version number (which it gets by'
  text '    reading the top-level Makefile).'
  text ''
  text '--ds DIR, --dir-source DIR'
  text ''
  text '    Specify the directory of the kernel source.'
  text ''
  text '    Default value: the current directory.'
  text ''
  text '--dt DIR, --dir-target DIR'
  text ''
  text '    Specify the target directory, where mconfig writes all its output'
  text '    files.  mconfig reads all its input files from the source tree and'
  text '    writes all its output files to the target tree.  So if you use this'
  text '    option, you can make configuration files for a read-only source'
  text '    tree.  (You cannot actually build a kernel this way yet; that'
  text '    will require some Makefile changes).'
  text ''
  text '    Default value: the same as $dir-source'
  text ''
  text '--fs FILE, --file-script FILE'
  text ''
  text '    Specify the script file.  This is a file which defines the options'
  text '    and menus you see during configuration.  Usually, you just use the'
  text '    provided script file for your architecture.'
  text ''
  text '    Default value: $dir-source/$arch/config.in'
  text ''
  text '--fci FILE, --file-config-in FILE'
  text '--no-fci, --no-file-config-in'
  text ''
  text '    Specify the input name of your .config file, or specify that you'
  text '    have no existing .config file.  If you use --dt, note that although'
  text '    this file is an input file, the default value is in the target'
  text '    tree.  This is because this file is your file, not part of the'
  text '    kernel source.'
  text ''
  text '    Default value: $dir-target/.config.  If this file does not exist,'
  text '    fall back to $dir-source/arch/$ARCH/defconfig.'
  text ''
  text '--fco FILE, --file-config-out FILE'
  text '--no-fco, --no-file-config-out'
  text ''
  text '    Specify the output name for your configuration file.  This is'
  text '    useful when editing configurations which are not the current'
  text '    configuration.'
  text ''
  text '    Default value: $dir-target/.config.  Note that this option does'
  text '    *NOT* default to the input name.'
  text ''
  text '--fac FILE, --file-autoconf-h FILE'
  text '--no-fac, --no-file-autoconf-h'
  text ''
  text '    Specify the output name for the C header output file.  You need'
  text '    this file in order to build the kernel.  You may want to suppress'
  text '    this with --no-fac, but you probably do not want to change this.'
  text ''
  text '    Default value: $dir-target/include/linux/autoconf.h'
  text ''
  text '--no-asm-symlink'
  text ''
  text '    When mconfig writes its output files, it looks for a symbolic link'
  text '    from $dir-target/include/asm to $dir-source/include/asm-$arch.'
  text '    (If $dir-target is the same as $dir-source, which it usually is,'
  text '    the value of the link is simply asm-$arch).  You need this symlink'
  text '    to build the kernel.'
  text ''
  text '    If mconfig does not find the asm symlink with the right value, it'
  text '    creates one.  This option suppresses the creation.'
  text ''
  text '    Default value: make the asm symlink if needed.'
  text ''
  text '--no-backup'
  text ''
  text '    When mconfig writes the configuration file, it makes a backup file'
  text '    with the name ${file-target-config-out}.old, and it uses a'
  text '    temporary file ${file-target-config-out}.new.  You can suppress'
  text '    these files if you want.  Non-interactive modes such as random mode'
  text '    or maximum modes always enable this flag.'
endmenu

mainmenu_option next_comment
comment 'Major Modes'
  text '    Modes: menu x line old'
  text '    Modes: syntax random mutate minimum maximum'
  text ''
  text '    mconfig has nine major modes: four interactive modes and five'
  text '    non-interactive modes.  Menu mode is the default mode.'
  text ''
  text '    Menu mode brings up a full-screen curses interface.  Most people'
  text '    most of the time will use menu mode.'
  text ''
  text '    X mode is not written yet, not even designed yet.  I am not'
  text '    an X programmer.  If you are, and you want to write a nice X'
  text '    interface for mconfig, e-mail me.'
  text ''
  text '    Line mode is a compatibility mode that looks like the old'
  text '    make configure.  It prompts for options one at a time,'
  text '    with no going back.'
  text ''
  text '    Old mode is like line mode, but it prompts only for options'
  text '    that do not already have values.  It looks like the old'
  text '    make oldconfig.  Old mode is useful if you patch your kernel'
  text '    and you want to be prompted only for new options.'
  text ''
  text '    Syntax mode is a useful non-interactive mode.  It reads all'
  text '    of its input files, writes out errors and warnings, and exits.'
  text '    Syntax mode never writes any files.  In syntax mode, mconfig'
  text '    writes all its diagnostic messages to stdout rather than stderr'
  text '    for your convenience in scripting.  Syntax mode returns an exit'
  text '    code of 0 if the input was clean, or 1 if the input has any'
  text '    errors or warnings.'
  text ''
  text '    Random mode non-interactively generates a random configuration.'
  text '    You can provide a seed for the random number generator, or you'
  text '    can let mconfig pick its own seed.  mconfig writes the seed to'
  text '    the output files for your convenience.'
  text ''
  text '    Mutate mode is like random mode.  It starts with an existing'
  text '    configuration and mutates N% of the existing choices.  You'
  text '    specify the mutation percentage and the optional seed.'
  text ''
  text '    Minimum mode answers N to all the boolean and tristate questions'
  text '    and chooses the first option in all choice lists.'
  text ''
  text '    Maximum mode answers Y to all the boolean and tristate questions'
  text '    that it can, falling back to M and N as required.  Maximum mode'
  text '    chooses the last option in all choice lists.'
endmenu

mainmenu_option next_comment
comment 'History and Credits'
  text 'Copyright 1998 Michael Elizabeth Chastain, <mailto:mec@shout.net>'
  text 'Licensed under the GNU Public License, version 2.'
  text ''
  text 'mconfig is a utility program to configure the linux kernel.'
  text 'It replaces the previous generation of kernel configuration tools:'
  text 'make configure, make oldconfig, make menuconfig, and make xconfig.'
  text ''
  text 'mconfig owes the most to Menuconfig by William Roadcap.  Menuconfig'
  text 'gave me the paradigm of repeatedly walking the script with different'
  text 'verb bindings to perform all the functions.'
  text ''
  text 'Thanks to the all the testers, specifically: Hannu Lyytinen.'
endmenu

text ''
text 'Quick command list:'
text ''
text ' +  Q   quit'
text ' +  h   help on mconfig (this screen)'
text '    ?   help on a CONFIG_* option'
text '    \   show source for this menu'
text ''
text '    w   write files (with dialog)'
text ' +  W   write files (no dialog, just do it)'
text ''
text '    r   read new .config file'
text '    D   reset all values to defconfig'
text ''
text 'I have implemented the commands marked with a plus sign.'
