NAME
    perldos - Perl under DOS, W31, W95. 
    
SYNOPSIS
    These are instructions for building Perl under DOS (or w??),
    using DJGPP v2.01 or later. Under w95 long filenames are
    supported.

DESCRIPTION
    Before you start, you should glance through the README file
    found in the top-level directory where the Perl distribution was
    extracted. Make sure you read and understand the terms under
    which this software is being distributed.

    This port currently supports MakeMaker (the set of modules that
    is used to build extensions to perl). Therefore, you should be
    able to build and install most extensions found in the CPAN
    sites.

  Prerequisites

    DJGPP
        DJGPP is a port of GNU C/C++ compiler and development tools
        to 32-bit, protected-mode environment on Intel 32-bit CPUs
        running MS-DOS and compatible operating systems, by DJ
        Delorie <dj@delorie.com> and friends.

        For more details (FAQ), check out the home of DJGPP at:

                http://www.delorie.com/djgpp/

        If you have questions about DJGPP, try posting to the DJGPP
        newsgroup: comp.os.msdos.djgpp, or use the email gateway
        djgpp@delorie.com.

        You can find the full DJGPP distribution on any SimTel.Net
        mirror all over the world. Like:

                ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2*

        You need the following files to build perl (or add new
        modules):

                v2/djdev201.zip
                v2/bnu27b.zip
                v2gnu/gcc2721b.zip
                v2gnu/bsh1147b.zip
                v2gnu/mak3761b.zip
                v2gnu/fil316b.zip
                v2gnu/sed118b.zip
                v2gnu/txt122b.zip
                v2gnu/dif271b.zip
                v2gnu/grep21b.zip
                v2gnu/shl112b.zip
                v2gnu/gawk303b.zip
                v2misc/csdpmi4b.zip 

        or any newer version.

    Pthreads
        If you want multithreading support in perl, you need a
        pthread library that supports DJGPP. One of them can be
        found at:

                ftp://ftp.cs.fsu.edu/pub/PART/PTHREADS/pthreads.zip

        But thread support is still in alpha, it may be unstable.
        For more information see below.

  Shortcomings of Perl under DOS

    Perl under DOS lacks some features of perl under UNIX because of
    deficiencies in the UNIX-emulation, most notably:

    *   fork() and pipe()

    *   some features of the UNIX filesystem regarding link count and
        file dates

    *   in-place operation is a little bit broken with short filenames

    *   sockets

  Building

    *   Unpack the source package perl5.00?_??.tar.gz with djtarx. If
        you want to use long file names under w95, don't forget to
        use

                set LFN=y
                
        before unpacking the archive.

    *   Create a "symlink" or copy your bash.exe to sh.exe in your
        `($DJDIR)/bin' directory.

                ln -s bash.exe sh.exe

        And make the `SHELL' environment variable point to this
        sh.exe:

                set SHELL=c:/djgpp/bin/sh.exe (use full path name!)

        You can do this in djgpp.env too. Add this line BEFORE any
        section definition:

                +SHELL=%DJDIR%/bin/sh.exe

    *   If you have split.exe and gsplit.exe in your path, then rename
        split.exe to djsplit.exe, and gsplit.exe to split.exe. Copy
        or link gecho.exe to echo.exe if you don't have echo.exe.
        Copy or link gawk.exe to awk.exe if you don't have awk.exe.

    *   Chdir to the djgpp subdirectory of perl toplevel and type the
        following command:

                configure.bat

        This will do some preprocessing then run the Configure
        script for you. The Configure script is interactive, but in
        most cases you just need to press ENTER.

        If the script says that your package is incomplete, and asks
        whether to continue, just answer with Y (this can only
        happen if you don't use long filenames).

        When Configure asks about the extensions, I suggest IO and
        Fcntl, and if you want database handling then SDBM_File or
        GDBM_File (you need to install gdbm for this one). If you
        want to use the POSIX extension (this is the default), make
        sure that the stack size of your cc1.exe is at least
        512kbyte (you can check this with: `stubedit cc1.exe').

        You can use the Configure script in non-interactive mode
        too. When I built my perl.exe, I used something like this:

                configure.bat -Uuseposix -des

        You can find more info about Configure's command line
        switches in the INSTALL file.

        When the script ends, and you want to change some values in
        the generated config.sh file, then run

                sh Configure -S

        after you made your modifications.

        IMPORTANT: if you use this `-S' switch, be sure to delete
        the CONFIG environment variable before running the script:

                set CONFIG=

    *   Now you can compile Perl. Type:

                make

  Testing

    Type:

            make test

    You should see "All tests successful" if you configured a
    database manager, and 1 failed test script if not
    (lib/anydbm.t). If you configured POSIX you will see 1
    additional failed subtest in lib/posix.t.

  Installation

    Type:

            make install

    This will copy the newly compiled perl and libraries into your
    DJGPP directory structure. Perl.exe and the utilities go into
    `($DJDIR)/bin', and the library goes under `($DJDIR)/lib/perl5'.
    The pod documentation goes under `($DJDIR)/lib/perl5/pod'.

  Threaded perl under dos-djgpp

    Multithreading support is considered alpha, because some of the
    tests in `ext/Thread' still die with SIGSEGV (patches are
    welcome). But if you want to give it a try, here are the
    necessary steps:

        1. You will need a pthread library which supports djgpp. Go, and
        download FSU's version from:

              ftp://ftp.cs.fsu.edu/pub/PART/PTHREADS/pthreads.zip

        The latest version is 3.5, released in Feb 98.

        2. Unzip the file, cd to `threads\src' and run configur.bat.

        3. Add `RAND_SWITCH' or `MUTEX_SWITCH' or `RR_SWITCH' to
        `CFLAGS' in the makefile. Note that using these values,
        multithreading will NOT be preemptive. This is necessary,
        since djgpp's libc is not thread safe.

        4. Apply the following patch:

            *** include/pthread/signal.h~       Wed Feb  4 10:51:24 1998
            --- include/pthread/signal.h        Tue Feb 10 22:40:32 1998
            ***************
            *** 364,368 ****
            --- 364,370 ----
              
              #ifndef SA_ONSTACK
            + #ifdef  SV_ONSTACK
              #define SA_ONSTACK SV_ONSTACK
            + #endif
              #endif /* !SA_ONSTACK */

        5. run make (before you do this, you must make sure your `SHELL'
        environment variable does NOT point to bash).

        6. Install the library and header files into your djgpp
        directory structure.

        7. Add `-Dusethreads' to the commmand line of perl's
        configure.bat.

AUTHOR
    Laszlo Molnar, molnarl@cdata.tvnet.hu

SEE ALSO
    perl(1).

