This is a port of GNU Bison 1.35 to MSDOS/DJGPP.


1.:     DJGPP specific changes.
        =======================

        The DJGPP port of Bison offers LFN and SFN support depending on which
        OS it is running. If LFN support is available or not is determinated at
        run time. If LFN support is available (DOS session under Win9X), the
        standard posix file name extensions will be used. These are: y.tab.c,
        y.tab.c++, y.tab.h, y.output, etc. If only SFN support is available
        (plain DOS), then the standard MSDOS short file names will be used.
        These are: y_tab.c, y_tab.h, y.out, etc.


2.:     Installing the binary package.
        ==============================

2.1.:   If you have downloaded a precompiled binary distribution from some
        Simtel.NET mirror, copy the binary distribution into the top DJGPP
        installation directory. If you are installing Bison on a dual DOS/
        WINDOWS 9X system, you *MUST* first turn off the generation of numeric
        tails for the 8.3 aliases Windows creats for long file names.
        For information about how to do this, please read the DJGPP FAQ List
        V 2.30, chapter 22.19: "How to Set Up a Dual DOS/Windows Installation".
        It must be noticed that bison.exe does not contain any code to handle
        8.3 aliases with numeric tails. This implies that if you install the
        binary distribution in a DOS session of Win9X (LFN) **WITHOUT** turning
        off the numeric tail generation you will **NOT** be able to use Bison
        on plain DOS. The reason for this is that aliases like BISON~1.SIM and
        BISON~1.HAI will be created for the parser files bison.simple and
        bison.hairy instead of the appropiate ones BISON.SIM and BISON.HAI.
        After having installed the package, you can turn on numerical tail
        generation again if you wish. If this is not done, Bison will not be
        able to find its parser files when you switch to plain DOS.

2.2.:   Copy the binary distribution into the top DJGPP installation directory,
        just unzip it preserving the directory structure running *ONE* of the
        following commands:
          unzip32 bsn135b.zip      or
          djtarx bsn135b.zip       or
          pkunzip -d bsn135b.zip

2.3.:   The NLS controling environment variables, LANG and LANGUAGE, must be
        set to their appropiate values. The exact way how these variables
        should be set depends on your operating system:

        * For Windows 98 systems:
          - Click START;
          - Choose Programs->Accessories->System Tools->System Information;
          - Click Tools in the menu-bar, then choose "System Configuration";
          - Use the tab provided there for editing your AUTOEXEC.BAT as
            explained below.

        * For Windows NT systems:
          - Right-click "My Computer", then select "Properties";
          - Click the "Environment" tab;
          - Add a new variables LANG and LANGUAGE and set their values to the
            wanted language codes file as explained below.

        * For all other systems (DOS, Windows 3.X and Windows 95): use any
          text editor, e.g. the standard EDIT, to edit the file AUTOEXEC.BAT
          in the root directory of the boot drive (usually, C:).

        The values of the two environment variables LANG and LANGUAGE should be
        set like this:

          set LANG=xx
          set LANGUAGE=yy:zz

        xx, yy and zz are place holders for the wanted language codes. For
        posible values, please read below.
        The LANG entry is obligatory, the LANGUAGE entry may be omited. The
        LANG variable selects the locale charsets (dos codepage) to be used to
        display the program's output and the catalog (.mo file) that contains
        the translated strings to be used. The LANGUAGE variable allows you to
        select an alternate catalog than the one stipulated by LANG. Replace
        xx, yy and zz by the language code of the catalogs you want to use. It
        should be noticed that LANGUAGE has *ALWAYS* higher priority than LANG.
        The LANG variable not only selects a catalog, it also specifies the dos
        codepage that will be used as locale charset. All this means that the
        translation strings contained in the catalogs (.mo files) will be
        recoded at runtime to the dos codepage stipulated by the value of LANG.
        This runtime recoding is needed because the .mo files may have been
        written using a charset that is not compatible with the charset that
        will be used on the machine and OS where the .mo files contents will be
        displayed. The .po files of the GNU packages, from which the .mo files
        are generated, are typical examples of this. Usualy, they have been
        written using some ISO-8859-nn charset (an unix charset) and shall be
        displayed on a DOS/WIN95 machine that uses some dos codepage.

        Some examples:
        If you only want to use the catalog containing the translations for
        your mother tongue (in my case the spanish translations) the above
        lines will only use the LANG variable and will look like this:

          set LANG=es

        In this case, LANG defines the locale charset (CP850 in this case) to
        be used for the on-the-fly recoding of the catalog (.mo file) contents
        **AND AT THE SAME TIME** the translation/language (.mo file) to be used.

        If you want to use the spanish (es) and german (de) catalogs the above
        lines will look like this:

          set LANG=es
          set LANGUAGE=es:de

        In this case a DJGPP binary that has been compiled with NLS support
        will first search for the spanish translation of a string. If a
        translation for that particular string can not be found in the spanish
        .mo file then it will search for a german translation of that string in
        the german .mo file and if a german translation of that string can also
        not been found it will default to display the build-in english string.
        No mather if a spanish, a german or an english build-in string is
        selected, the string is always recoded to the dos codepage stipulated
        by LANG. In this case: CP850. In the above example, LANGUAGE defines
        the set of languages to be used and their priority (from left to right).
        At the same time, LANG defines the locale charset (dos codepage) to be
        used to recode **ALL** translated string, no matter which language
        (.mo file) is used.
        If you want to reverse this search order the above lines would look
        like this one:

          set LANG=es
          set LANGUAGE=de:es

        Now let us assume that an user wants to use the swedish catalogs on
        a machine that loads codepage CP437 when it is booted. It should be
        noticed that the locale charset for Sweden is CP850 and not CP437.
        In this case, the lines must look like this:

          set LANG=en_US
          set LANGUAGE=sv

        LANG reflects the available codepage/charset and LANGUAGE selects the
        wanted translation catalog. en_US means CP437. Now, the contents of the
        catalog are recoded to CP437 instead to CP850 because CP437 is the
        codepage used to display messages on screen. Of course, not every
        combination of catalogs and locale charset (dos codepages) makes sense.
        E.G.: selecting as locale charset chinese (LANG=zh_TW) and the french
        translations (LANGUAGE=fr) will certainly not generate an usefull
        screen output.

        The content of LANG is a language code. Examples are fr for french,
        en_US for US english, etc. This language code is an alias for the
        locale charset to be used for runtime recoding. The complete list of
        all available aliases can be found in %DJDIR%/lib/charset.alias. This
        file is a table with two entries: left entry is the alias (en_US,
        de_AT, etc.), right entry is the corresponding dos codepage that will
        be used for that language code (alias). It should be noticed that it is
        also possible to select a codepage directely. E.G.: Instead of setting:

          set LANG=en_US

        you may directely set:

          set LANG=CP437

        cp437 or 437 are also valid settings for CP437. This overwrites any
        settings in charset.alias. The settings in the environment always
        overwrite the settings in charset.alias. Please note that if you omit
        LANG, LANGUAGE will not be honored at all. Because the information
        about which locale charset shall be used for recoding is needed,
        if LANG is omitted by the user this information will not be available
        and consequently LANGUAGE will be ignored and no translation at all
        will be done.
        If for some reason you want to disable NLS, then you should comment
        out the LANG variable or remove them from your AUTOEXEC.BAT file or
        select 'C' as your catalog:

          set LANG=C

        or clear it by setting:

          set LANG=

        You can also change during a DOS session in Win9X or on plain DOS the
        values of the LANG and LANGUAGE variables by setting or clearing them
        from the DOS prompt.

2.4.:   The binary distributed in this package have NLS support.
        E.G. run the command:
          bison
        and the binary should talk to you in your mother tonge, if
        supported.
        For futher information about GNU bison please read the info docs and
        the NEWS file.


3.:     Building the binaries from sources.
        ===================================

3.1.:   To build the binaries you will need the following binary packages:
          djdev203.zip (or a later but NOT a prior version)
          bsh204b.zip  (or a later but NOT a prior version)
          gcc303b.zip, bnu2112b.zip, mak3791b.zip,
          fil40b.zip, shl20jb.zip, txt20b.zip,
          txi40b.zip, grep24b.zip, sed3028b.zip,
          m4-14b.zip, gtxt040b.zip and licv17b.zip.

        If you want to run the check you will need also:
          dif272b.zip

        All this packages can be found in the v2gnu directory of any
        Simtel.NET mirror.
        If you want NLS you must have gtxt040b.zip and licv17b.zip or later
        versions installed before configuring or compiling the package or the
        configuration and build process will fail.
        You will need bsh203b.zip or later and *NOT* a prior version or the
        build will fail. The same applies to djdev203.zip.
        This updated versions have been recompiled with djdev203.zip and know
        about the "/dev/env" functionality introduced with djdev203.zip. All the
        other packages are the ones I have used to build the binaries from this
        sources. Previuos versions of this packages may do the job as well but
        I have not tested this.

3.2.:   Create a temporary directory and copy the source package into the
        directory. If you download the source distribution from one of the
        DJGPP archives, just unzip it preserving the directory structure
        running *ONE* of the following commands:
          unzip32 bsn135s.zip      or
          djtarx bsn135s.zip       or
          pkunzip -d bsn135s.zip

3.3.:   The DJGPP package is preconfigured for NLS support and for run time
        recoding using the functionality provided by libiconv.a. This implies
        that gtxt040b.zip licv17b.zip or later versions of these both packages
        *MUST* be installed *before* you try to compile the package or the
        build process will fail.
        If you compile this package with a later version of libc.a or if you
        prefer no NLS support at all you will have to reconfigure this package.
        The configuration batch file of this package, located in the djgpp
        directory, allows you to enable or disable NLS support, enable or
        disable the dependency tracking system and to compile from a different
        partition than from where the sources are located. config.bat always
        configures the package for NLS support enabled, dependency tracking
        system disabled and for in-place compilation if no options are given.
        The available NLS options are:
          NLS
          no-NLS
        and the dependency tracking options are:
          dep
          no-dep

        If for some reason you want some other package configuration than the
        default one you will have to reconfigure the package. For this purpose
        cd into the top srcdir (bison-1.35), remove the config.cache file
        located in the djgpp directory and run the following command:
          djgpp\config no-NLS dep

        You **MUST** specify "no-NLS" and "dep" or config.bat will default to
        "NLS" and "no-dep".
        To build the programs in a directory other than where the sources are,
        you must add a parameter that specifies the source directory,
        e.g:
          x:\src\gnu\bison-1.35\djgpp\config x:/src/gnu/bison-1.35 no-NLS

        Lets assume you want to build the binaries in a directory placed on a 
        different drive (z:\build in this case) from where the sources are,
        then you will run the following commands:
          z:
          cd \build
          x:\src\gnu\bison-1.35\djgpp\config x:/src/gnu/bison-1.35 no-NLS

        If you want NLS support you will omit "no-NLS" or replace it by
        "NLS" in the above examples. The order of the different options
        do *NOT* matter. You *MUST* use forward slashes to specify the
        source directory.

        This batch file will set same environment variables, make MSDOS
        specific modifications to the Makefile.ins and supply all other
        needed options to the configure script.

3.4.:   To compile the package run from the top srcdir the command:
          make

3.5.:   Now you can run the tests if you like.
        Before running the testsuite, you must edit your djgpp.env.
        Look for two lines like these ones:
BISON_HAIRY=%DJDIR%/lib/bison.hai
BISON_SIMPLE=%DJDIR%/lib/bison.sim

        Add a plus sign at the begining of every line:
+BISON_HAIRY=%DJDIR%/lib/bison.hai
+BISON_SIMPLE=%DJDIR%/lib/bison.sim
        This must be done so the testsuite can control the BISON_HAIRY and
        BISON_SIMPLE environment variables during the test.
        From the top srcdir run the command:
          make check

        Non test should fail.
        Please note that the testsuite only works with LFN available. On plain
        DOS, most of the tests will fail due to invalid DOS names.

3.6.:   To install the binaries, header, library, catalogs, and info docs
        run the following command from the top srcdir:
          make install CATALOGS="xx.gmo yy.gmo zz.gmo"
        or
          make install CATALOGS="xx.gmo yy.gmo zz.gmo" prefix=z:/some/other/place

        This will install the products into your DJGPP installation tree given
        by the default prefix "/dev/env/DJDIR". If you prefer to install them
        into some other directory you will have to set prefix to the appropiate
        value. Replace xx, yy and zz by the language codes of the catalogs you
        want to install.

3.7.:   Now you have to set the LANG environment variable.
        Please refer to section 2.3 for further information.



        Send GNU bison specific bug reports to <bug-bison@gnu.org>.
        Send suggestions and bug reports concerning the DJGPP port to
        comp.os.msdos.djgpp or <djgpp@delorie.com>.


Enjoy.

        Guerrero, Juan Manuel <st001906@hrz1.hrz.tu-darmstadt.de>
