| Building and installing GNU Texinfo with DJGPP v2.x | |
| =================================================== | |
| This directory holds files required for building Texinfo with DJGPP | |
| tools for MS-DOS and MS-Windows. If you got this file with a binary | |
| distribution, look for the "Installation" section below. | |
| 1. Building Texinfo | |
| ---------------- | |
| a. To compile Texinfo, you will need the following tools: | |
| - basic DJGPP development environment: GCC, Binutils and djdev; | |
| - a DJGPP port of GNU Make version 3.78 or later; | |
| - a DJGPP port of Bash 2.04 or later; | |
| - a port of GNU Sed 3.02 or later; | |
| - DJGPP ports of Fileutils, Textutils, Sh-utils, Diffutils, | |
| Gawk and Grep; | |
| - etags (from the Emacs distribution) and mkid (from ID-utils) | |
| if you need the TAGS and ID targets of the Makefile's. | |
| All of the above are available from the DJGPP ftp sites on | |
| SimTel.NET mirrors, in the v2gnu directory. | |
| b. From the root of your DJGPP installation, unzip the source package: | |
| - if you are unpacking the official GNU source distribution: | |
| tar -xvzf texinfo-X.YZ.tar.gz | |
| or | |
| djtar -x texinfo-X.YZ.tar.gz | |
| where X.YZ is the version number. (Users of MS-DOS and | |
| MS-Windows 3.X, which don't support long file names, will need | |
| to rename the archive to something like texi-XYZ.tgz.) | |
| - if you are unpacking a source distribution from a DJGPP ftp | |
| site: | |
| unzip txiXYZs | |
| or | |
| pkunzip -d txiXYZs | |
| If you build Texinfo on Windows 9X, Windows ME, Windows 2000 or | |
| Windows XP, you are advised to use a version of Unzip which | |
| supports long filenames, so that the original long filenames of | |
| the source files will be preserved. Otherwise, the build | |
| procedure will most probably fail. | |
| Do NOT use an unzip program which supports long file names on | |
| Windows NT 4, as DJGPP doesn't support long names there. | |
| The program unzip32.exe, available from the SimTel.NET site, | |
| will deal correctly with long file names on any platform, so it | |
| is the recommended way of unzipping txiXYZs.zip archives. | |
| c. If the source distribution comes with a ready Makefile (this is | |
| usually the case with archives downloaded from the DJGPP sites), | |
| and all you need is to build Texinfo, you may skip the configure | |
| step below and go directly to step e. | |
| d. To build the official GNU distribution, or to configure Texinfo | |
| for any environment but stock DJGPP v2.x, run djgpp\config.bat | |
| first, like this: | |
| SRCDIR\djgpp\config SRCDIR | |
| Here SRCDIR is the directory where you unpacked the sources. If | |
| you are configuring from the source directory itself, you may | |
| omit the argument to the config.bat file. If you do supply the | |
| argument, you MUST use forward slashes in it, or else the batch | |
| file might fail. | |
| config.bat sets some environment variables, then invokes the | |
| configure script. The script will run for a few minutes and | |
| create Makefile's in all the directories, and the config.h file. | |
| e. Run `Make'. This builds the programs and the Info files. | |
| 2. Installation | |
| ------------ | |
| a. If you are installing the binary distribution, then go to your | |
| main DJGPP directory and unzip the files. For instance, if your | |
| DJGPP installation is rooted on C:\DJGPP, then type this (XYZ is | |
| the version number): | |
| cd c:\djgpp | |
| unzip txiXYZb | |
| or, if you prefer `pkunzip': | |
| pkunzip -d txiXYZb | |
| b. If you downloaded and built Texinfo from sources, install by | |
| invoking Make: | |
| make install | |
| This requires a port of Unix-like program `install.exe'. It is | |
| available from the DJGPP port of GNU Fileutils on SimTel.NET. | |
| c. Info needs a file named DIR with the top-level menu of all the | |
| Info files installed on your system. If you installed the DJGPP | |
| development environment (djdevNN.zip), then you already have | |
| this file in the info/ subdirectory of your DJGPP installation. | |
| Otherwise, you will need to create it. A minimal DIR file is | |
| available in this distribution under the name `dir-example', | |
| which you can use as a starting point. Copy it to the directory | |
| where you install the Info files from this distribution. | |
| Even if you already have a DIR file, you should review it to | |
| make sure it is consistent with the names of the Info file you | |
| are installing. Here's how your Texinfo-related entries in DIR | |
| should look like: | |
| * Info: (info). | |
| Documentation browsing system. This topic teaches you about | |
| how to use the online help information. | |
| * Info-Standalone: (info-stnd). | |
| This topic helps you use the standalone Info-Program (info.exe) | |
| * infokey: (info-stnd)Invoking infokey. | |
| Compile Info key customizations. | |
| * Makeinfo: (texinfo)Invoking makeinfo. | |
| Convert a .texinfo file (.txi) to an info file suitable for the | |
| info reader or Emacs, into plain ASCII, into HTML, into XML, | |
| or into DocBook. | |
| * Texinfo: (texinfo). | |
| With one source file, make either a printed manual (through TeX) | |
| or an on-line manual (through makeinfo). This topic includes | |
| a full description of the Texinfo language and related | |
| facilities, including Emacs commands to work with Texinfo files. | |
| * install-info: (texinfo)Invoking install-info. | |
| How to update info/dir entries when installing GNU packages. | |
| * texi2dvi: (texinfo)Format with texi2dvi. | |
| Printing Texinfo documentation with TeX. | |
| * texindex: (texinfo)Format with tex/texindex. | |
| Sorting Texinfo index files automatically. | |
| Note that the asterisk `*' should be flushed all the way to the | |
| left, it is indented here just to make reading more convenient. | |
| If your DIR file entries differ from these, I suggest to edit them | |
| so they are as shown above. Otherwise, Info might not be able to | |
| find some of the files. You HAVE been warned! | |
| d. Optionally, set up environment variables for Info. These are: | |
| * INFO_LINES -- screen size for Info. | |
| * INFO_COLORS -- screen colors for Info. | |
| (If you have DJGPP installed on your system, the file djgpp.env | |
| which comes with it already has entries for Info, see the [info] | |
| section there.) | |
| INFO_LINES can be one of 25 (the default), 28, 35, 40, 43, or 50 | |
| (that's if you have a VGA; EGAs only support 25, 35 and 43 lines). | |
| I recommend 40 if your monitor is 17" or larger, and at least 28 | |
| lines for smaller monitors (I work with 40 lines even on 14" | |
| monitors). | |
| INFO_COLORS should have the following syntax: | |
| set INFO_COLORS=XX.YY | |
| where XX is the text attribute for text displayed in the text | |
| windows and the echo area, and YY is the text attribute for the | |
| modeline (aka the status line). Each attribute is a numeric | |
| value of a byte which describes the desired combination of | |
| foreground and background colors. The individual bits in the | |
| attribute byte are defined as follows: | |
| bBBBFFFF | |
| where `b' is the blink bit, `BBB' are the 3 bits for background | |
| color and `FFFF' are the 4 bits for the foreground color. This is | |
| the usual PC text attribute byte structure, and is further explained | |
| in any standard reference on text-mode programming for the PC. | |
| My favorite setting for INFO_COLORS is `0x1e.0x31'. This makes | |
| Info use yellow foreground on blue background for the text and | |
| blue foreground on cyan background for the modelines. | |
| After you've played with these variables and have chosen the values | |
| you like, it's a good idea to put them on the DJGPP.ENV file, in the | |
| [info] section. | |
| e. Beginning with version 3.6, GNU Info can read Unix man pages. If | |
| you have a `man' clone on your system and would like to be able to | |
| read man pages with Info, read the chapter ``Reading Man Pages'' | |
| below. One such clone is available as v2apps/manXYb.zip from | |
| the DJGPP sites (XY is the version number). | |
| f. This port supports compressed Info files, like what Info under Unix | |
| gives you. For this to work, you will need to install a DOS port of | |
| GNU `Gzip' package and to observe certain rules of file naming, so | |
| that Info will find the compressed files working around the DOS 8.3 | |
| filename restriction. The chapter ``Compressed Info Files'' below | |
| explains the details of this. | |
| g. If you need to use the `print-node' command, read the chapter | |
| ``Printing Nodes'' below. | |
| h. That's it! You are now ready to use Info, Makeinfo, and Texindex. | |
| To learn about them, type `Info' and press [Enter]. You will be | |
| presented with the top-level menu of GNU/DJGPP hypertext | |
| documentation. If you are unfamiliar with Info, press `?' to see | |
| the available commands. Pressing `h' will cause Info to take you on | |
| a guided tour through its features (recommended for first-time | |
| users). | |
| i. If you are used to Info ports of versions before 3.6, you should | |
| know that the command bindings to PC-specific keys has changed: the | |
| numeric keypad keys invoke the same commands as their extended | |
| namesakes. That is, e.g., the key `PgUp' on the numeric keypad | |
| invokes the same command as the grey `PgUp' key on the extended | |
| keypad. This was done at DJ's request, because laptop machines | |
| don't have extended keys. Commands to move between nodes | |
| (previously bound to numeric keypad) are now bound to Ctrl- | |
| varieties of numeric keypad keys (e.g., `next-node' is on | |
| `Ctrl-PgDn', `prev-node' is on `Ctrl-PgUp', etc.). You can use | |
| the `Alt-x describe-key' command to see which command is invoked | |
| by a particular key. | |
| j. There are several MSDOS-specific changes in Texinfo, relative to | |
| previous Texinfo ports (for other changes, see the file NEWS): | |
| * Full support for both forward and backslashes in all file | |
| names. Previously, Info was sensitive to the style of | |
| slashes in directories mentioned in the INFOPATH environment | |
| variable. | |
| * The default operation of the `print-node' command has been | |
| changed so that it automatically prints to the local printer | |
| device connected to the PRN port. (If your printer is | |
| connected to another port, set the INFO_PRINT_COMMAND | |
| environment variable like this: | |
| set INFO_PRINT_COMMAND=>LPT2 | |
| In other words, if the value of INFO_PRINT_COMMAND begins | |
| wih a `>' character, Info will write to the file or device | |
| whose name follows the `>' character. (Don't leave any | |
| blanks between `>' and the device name!). | |
| Note that some old versions of stock DOS shell won't let you | |
| use the `>' character in environment variables set from the | |
| DOS prompt or batch files, but you can set it in the [info] | |
| section of your DJGPP.ENV file. | |
| * The `set-screen-height' command now actually changes the | |
| screen dimensions from within Info if you specify one of the | |
| sizes supported by your video hardware. | |
| * If you don't have a `man' clone installed, and you invoke | |
| Info with a name of a document which Info cannot find, it | |
| will no longer wait for 15 seconds. | |
| * Several bugs in handling of man pages were corrected. | |
| * Info opens the dribble and input files in BINARY mode. This | |
| allows to record keystrokes and restore them in another Info | |
| session, thus using dribble files as a startup or init file | |
| which changes default behavior, binds keys, etc. | |
| * Info recognizes a new DOS-specific command-line option `-b' | |
| or `--speech-friendly'. This option causes Info to use DOS | |
| I/O functions (`printf', `puts', etc.) instead of direct | |
| screen writes, which is required to enable speech | |
| synthesizer software (used by visually-impaired people) to | |
| grab the output. When this option is given, the screen | |
| colors defined by the `INFO_COLORS' environment variable and | |
| the visible-bell feature will be disabled, because stdio | |
| functions don't support neither color text nor inverting | |
| screen colors. This improvement was suggested and | |
| originally implemented by Hans-Bernhard Broeker | |
| <Broeker@physik.rwth-aachen.de>. | |
| * Makeinfo now generates full .info-NN filenames when long | |
| filenames are supported (e.g. on Win9x) and short .iNN | |
| filenames otherwise. When the Texinfo source or the | |
| command-line parameter -o specify an output file with no | |
| extension (like `texinfo'), and long filenames aren't | |
| supported, Makeinfo will make sure the generated names will | |
| be unique (it will create e.g. `texinf-1', `texin-10' etc.). | |
| * The texi2dvi script is now fully compatible with | |
| MS-DOS/MS-Windows and with the DJGPP port of TeX. | |
| 3. Reading Man Pages | |
| ----------------- | |
| Yes, Info can now read man pages! This port supports that feature, | |
| but for it to work, you will have to make sure your `man' clone is | |
| set up correctly: | |
| a. You should have an executable file named `man.exe', `man.com' | |
| etc. somewhere on your PATH. | |
| b. When invoked with redirected stdout, that executable should | |
| print the contents of the file it gets as its argument to stdout | |
| and exit. If your man command calls some pager, that pager | |
| should have this behavior (various ports of Unix command `more' | |
| and the DJGPP port of GNU Less behave that way). | |
| One `man' clone is available as v2apps/manNNb.zip from the DJGPP | |
| sites on SimTel.NET. | |
| 4. Compressed Info Files | |
| --------------------- | |
| Info allows you to hold your Info files in compressed form, to save | |
| disk space. When a file Info wants cannot be found, it will | |
| automatically try to find that file in compressed form. Info does | |
| this by trying to find the original file with specific extensions. | |
| Each extension tells Info which program should be called to | |
| decompress the file. | |
| This port supports compression by the GNU Gzip program. When Info | |
| cannot find a file `foo', it will first try to find `foo.z' or | |
| `foo.gz'. If this fails, and the file has an extension, the last | |
| one or two characters of the extension are replaced by `z' and `gz' | |
| respectively, and Info tries again. If it finds any of these, it | |
| will call the `GUnzip' program to decompress the file, catch its | |
| output and display it. (The original compressed file stays | |
| intact.) | |
| So, to use this feature, compress your files with Gzip and call the | |
| compressed files using the following as guidelines: | |
| foo --> foo.gz | |
| foo.inf --> foo.igz | |
| foo.i5 --> foo.i5z | |
| foo.25 --> foo.25z | |
| If you have a package whose Info docs are split into more than 9 | |
| sub-files and you need to compress those files, you will have to | |
| rename the sub-files from `foo.iNN' to `foo.NN' so that there will | |
| be place for the trailing `z' in the compressed names. Don't | |
| forget to edit the indirect file table in the main Info file and | |
| change the sub-file filenames there too! | |
| An alternative for those packages which have more than 99 Info | |
| sub-files is to generate them from the Texinfo sources and force | |
| Makeinfo to produce files without the .iNN extensions, like this: | |
| makeinfo -o foo foo.txi | |
| This causes Makeinfo to generate file names like foo-1, foo-2, | |
| etc., which leave more place for the numeric index. If necessary, | |
| Makeinfo will automatically remove characters from the end of the | |
| argument to `-o'. For example, "-o texinfo" produces files | |
| texinf-1, ..., texin-10, ..., texi-100, etc. on platforms which | |
| only support 8+3 file names. | |
| Saying "@setfilename foo" near the beginning of the Texinfo source | |
| file is another way of forcing Makeinfo to produce files without | |
| the .iNN extensions. | |
| Using Makeinfo to produce files whose names are "compression-ready" | |
| is more convenient, since you don't need to edit the the indirect | |
| file table to reflect the changes in file names. | |
| On platforms which support long filenames, the usual Info behavior | |
| of appending `.gz' or `.Z' to the original filename also works; | |
| this is done *before* Info checks the above butchered names. | |
| Special considerations apply if you are installing Info on dual | |
| DOS/Windows 9X/ME/2K/XP system, where you'd like Info to work with | |
| the same files both in plain DOS and from the Windows DOS box. In | |
| this case, you should make sure your compressed Info files follow | |
| the 8+3 DOS naming conventions outlined above, even though Info | |
| supports long file names on Windows 9X. Also, you need to turn off | |
| the generation of numeric tails in short 8+3 aliases Windows | |
| creates for long names (if you don't know how, the DJGPP FAQ list | |
| explains it). | |
| Please note: for the automatic decompression to work, Info must be | |
| able to find the file it looks for with an extension which | |
| indicates that the file is compressed. Do NOT call the compressed | |
| files as the original uncompressed files were called, or Info | |
| won't be able to find them! File names like bison-1, gcc.i10 or | |
| make.info-3 have nothing in them to suggest that they are | |
| compressed, so don't expect Info to uncompress them. | |
| 5. Printing Nodes | |
| -------------- | |
| Info has a `print-node' command. It works by piping the contents of | |
| the current node through a program which is named by the environment | |
| variable INFO_PRINT_COMMAND. That command should read its standard | |
| input and write it to your printer. Find any such program, put its | |
| name into the above environment variable, and you can print nodes from | |
| within Info. | |
| If the value of INFO_PRINT_COMMAND begins with a redirection | |
| character `>', Info will write the contents of the node to the file | |
| whose name follows the `>' character. | |
| If INFO_PRINT_COMMAND is not defined, the DJGPP port will use | |
| ">PRN" as the default, which causes it to print to the local printer | |
| device, PRN. | |
| 6. Bug Reports | |
| ----------- | |
| If you see any bugs which seem specific to this DOS port, please tell | |
| me about them. | |
| Enjoy, | |
| Eli Zaretskii <eliz@is.elta.co.il> |