diff options
-rw-r--r-- | MANIFEST | 2 | ||||
-rw-r--r-- | README.amiga | 24 | ||||
-rw-r--r-- | README.apollo | 12 | ||||
-rw-r--r-- | README.beos | 56 | ||||
-rw-r--r-- | README.bs2000 | 16 | ||||
-rw-r--r-- | README.cygwin | 38 | ||||
-rw-r--r-- | README.dgux | 10 | ||||
-rw-r--r-- | README.dos | 665 | ||||
-rw-r--r-- | README.epoc | 12 | ||||
-rw-r--r-- | README.hpux | 16 | ||||
-rw-r--r-- | README.hurd | 34 | ||||
-rw-r--r-- | README.machten | 4 | ||||
-rw-r--r-- | README.macos | 2 | ||||
-rw-r--r-- | README.micro | 8 | ||||
-rw-r--r-- | README.mint | 24 | ||||
-rw-r--r-- | README.mpeix | 16 | ||||
-rw-r--r-- | README.os390 | 30 | ||||
-rw-r--r-- | README.plan9 | 153 | ||||
-rw-r--r-- | README.qnx | 100 | ||||
-rw-r--r-- | README.solaris | 26 | ||||
-rw-r--r-- | README.vmesa | 21 | ||||
-rw-r--r-- | README.vms | 24 | ||||
-rw-r--r-- | README.vos | 4 | ||||
-rw-r--r-- | README.win32 | 1432 | ||||
-rw-r--r-- | plan9/mkfile | 9 | ||||
-rw-r--r-- | plan9/perlplan9.doc | 91 | ||||
-rw-r--r-- | plan9/perlplan9.pod | 87 | ||||
-rw-r--r-- | pod/buildtoc.PL | 80 | ||||
-rw-r--r-- | pod/perl.pod | 8 | ||||
-rw-r--r-- | pod/perlport.pod | 11 | ||||
-rw-r--r-- | pod/perltoc.pod | 318 | ||||
-rw-r--r-- | win32/Makefile | 2261 | ||||
-rw-r--r-- | win32/makefile.mk | 2511 |
33 files changed, 4159 insertions, 3946 deletions
@@ -1298,8 +1298,6 @@ plan9/fndvers Plan9 port: update Perl version in config.plan9 plan9/genconfig.pl Plan9 port: generate config.sh plan9/mkfile Plan9 port: Mk driver for build plan9/myconfig.plan9 Plan9 port: script to print config summary -plan9/perlplan9.doc Plan9 port: Plan9-specific formatted documentation -plan9/perlplan9.pod Plan9 port: Plan9-specific pod documentation plan9/plan9.c Plan9 port: Plan9-specific C routines plan9/plan9ish.h Plan9 port: Plan9-specific C header file plan9/setup.rc Plan9 port: script for easy build+install diff --git a/README.amiga b/README.amiga index f94fe5c85e..b59f535e43 100644 --- a/README.amiga +++ b/README.amiga @@ -51,7 +51,7 @@ Contents =head1 DESCRIPTION -=head2 Prerequisites +=head2 Prerequisites for Compiling Perl on AmigaOS =over 6 @@ -131,7 +131,7 @@ For installation of the Unix emulation, read the appropriate docs. =head1 Accessing documentation -=head2 Manpages +=head2 Manpages for Perl on AmigaOS If you have C<man> installed on your system, and you installed perl manpages, use something like this: @@ -153,7 +153,7 @@ for packages, and as usual, sometimes you need to give the section - C<3> above - to avoid shadowing by the I<less(1) manpage>. -=head2 B<HTML> +=head2 Perl HTML Documentation on AmigaOS If you have some WWW browser available, you can build B<HTML> docs. Cd to directory with F<.pod> files, and do like this @@ -166,26 +166,26 @@ directory, and go ahead with reading docs. Alternatively you may be able to get these docs prebuilt from C<CPAN>. -=head2 B<GNU> C<info> files +=head2 Perl GNU Info Files on AmigaOS Users of C<Emacs> would appreciate it very much, especially with C<CPerl> mode loaded. You need to get latest C<pod2info> from C<CPAN>, or, alternately, prebuilt info pages. -=head2 C<LaTeX> docs +=head2 Perl LaTeX Documentation on AmigaOS -can be constructed using C<pod2latex>. +Can be constructed using C<pod2latex>. -=head1 BUILD +=head1 BUILDING PERL ON AMIGAOS Here we discuss how to build Perl under AmigaOS. -=head2 Build Prerequisites +=head2 Build Prerequisites for Perl on AmigaOS You need to have the latest B<ixemul> (Unix emulation for Amiga) from Aminet. -=head2 Getting the perl source +=head2 Getting the Perl Source for AmigaOS You can either get the latest perl-for-amiga source from Ninemoons and extract it with: @@ -204,7 +204,7 @@ You will see a message about errors while extracting F<Configure>. This is normal and expected. (There is a conflict with a similarly-named file F<configure>, but it causes no harm.) -=head2 Making +=head2 Making Perl on AmigaOS Remember to use a hefty wad of stack (I use 2000000) @@ -218,7 +218,7 @@ Now! make -=head2 Testing +=head2 Testing Perl on AmigaOS Now run @@ -229,7 +229,7 @@ Some tests will be skipped because they need the fork() function: F<io/pipe.t>, F<op/fork.t>, F<lib/filehand.t>, F<lib/open2.t>, F<lib/open3.t>, F<lib/io_pipe.t>, F<lib/io_sock.t> -=head2 Installing the built perl +=head2 Installing the built Perl on AmigaOS Run diff --git a/README.apollo b/README.apollo index 6de115c073..cc12e6a5cd 100644 --- a/README.apollo +++ b/README.apollo @@ -1,3 +1,13 @@ +If you read this file _as_is_, just ignore the funny characters you see. +It is written in the POD format (see pod/perlpod.pod) which is specially +designed to be readable as is. + +=head1 NAME + +README.apollo - Perl version 5 on Apollo DomainOS + +=head1 DESCRIPTION + The following tests are known to fail as of Perl 5.005_03: comp/decl..........FAILED at test 0 @@ -8,4 +18,6 @@ lib/findbin........stat(/ressel/ABT/USER/vta/jk/proj.local/perl/perl5.005_03-MAI stat(/ressel/ABT/USER/vta/jk/proj.local/perl/perl5.005_03-MAINT_TRIAL_5/t/lib/): No such file or directory at ../lib/FindBin.pm line 163 FAILED at test 1 +=head1 AUTHOR + Johann Klasek <jk@auto.tuwien.ac.at> diff --git a/README.beos b/README.beos index ccd9cbc6c6..7458672cee 100644 --- a/README.beos +++ b/README.beos @@ -1,39 +1,55 @@ -Notes on building perl under BeOS: +If you read this file _as_is_, just ignore the funny characters you see. +It is written in the POD format (see pod/perlpod.pod) which is specially +designed to be readable as is. -GENERAL ISSUES --------------- -how to compile perl: +=head1 NAME + +README.beos - Perl version 5 on BeOS + +=head1 DESCRIPTION + +Notes for building Perl under BeOS. + +=head2 General Issues with Perl on BeOS To compile perl under BeOS R4 x86: -`./Configure -d` and hit ^C when it asks you if you want to make changes -to config.sh; + ./Configure -d +and hit ^C when it asks you if you want to make changes to config.sh; edit config.sh and do the following: change d_socket='define' to ='undef'; remove SDBM, Errno, and Socket from dynamic_ext= and nonxs_ext=; - add '#define bool short' to x2p/a2p.h; -../Configure -S; make; make install + ../Configure -S; make; make install + + cd ~/config/lib; ln -s 5.00502/BeOS-BePC/CORE/libperl.so . -cd ~/config/lib; ln -s 5.00502/BeOS-BePC/CORE/libperl.so . (substitute 5.00502 with the appropriate filename) -OS RELEASE-SPECIFIC NOTES -------------------------- -R4 x86 - dynamic loading finally works! Yay! This means you can compile -your own modules into perl. However, Sockets and Errno still don't work. +=head2 BeOS Release-specific Notes + +=over 4 + +=item R4 x86 + +Dynamic loading finally works! Yay! This means you can compile your +own modules into perl. However, Sockets and Errno still don't work. (Hopefully, sockets will at least work by R5, if not sooner.) -R4 PPC - I have not tested this. I rather severely doubt that dynamic -loading will work. (My BeBox is in pieces right now, following a nasty -disk crash.) You may have to disable dynamic loading to get the thing -to compile at all. (use `./Configure` without -d, and say 'no' to -'Build a shared libperl.so'.) +=item R4 PPC + +I have not tested this. I rather severely doubt that dynamic loading +will work. (My BeBox is in pieces right now, following a nasty disk +crash.) You may have to disable dynamic loading to get the thing to +compile at all. (use `./Configure` without -d, and say 'no' to 'Build +a shared libperl.so'.) + +=back + +=head2 Contact Information -CONTACT INFORMATION -------------------- If you have comments, problem reports, or even patches or bugfixes (gasp!) please email me. diff --git a/README.bs2000 b/README.bs2000 index 566ba212de..1dad5ae7c1 100644 --- a/README.bs2000 +++ b/README.bs2000 @@ -20,12 +20,12 @@ and testing it with 3.1A and are currently using Version V4.0A. You may need the following GNU programs in order to install perl: -=head2 gzip +=head2 gzip on BS2000 We used version 1.2.4, which could be installed out of the box with one failure during 'make check'. -=head2 bison +=head2 bison on BS2000 The yacc coming with BS2000 POSIX didn't work for us. So we had to use bison. We had to make a few changes to perl in order to use the @@ -33,7 +33,7 @@ pure (reentrant) parser of bison. We used version 1.25, but we had to add a few changes due to EBCDIC. See below for more details concerning yacc. -=head2 Unpacking +=head2 Unpacking Perl Distribution on BS2000 To extract an ASCII tar archive on BS2000 POSIX you need an ASCII filesystem (we used the mountpoint /usr/local/ascii for this). Now @@ -55,7 +55,7 @@ cd /usr/local/src IO_CONVERSION=YES cp -r /usr/local/ascii/perl5.005_02 ./ -=head2 Compiling +=head2 Compiling Perl on BS2000 There is a "hints" file for BS2000 called hints.posix-bc (because posix-bc is the OS name given by `uname`) that specifies the correct @@ -102,7 +102,7 @@ ln -s /usr/bin/yacc /usr/local/bin/byacc We build perl using GNU make. We tried the native make once and it worked too. -=head2 Testing +=head2 Testing Perl on BS2000 We still got a few errors during C<make test>. Some of them are the result of using bison. Bison prints I<parser error> instead of I<syntax @@ -120,13 +120,13 @@ lib/complex.........FAILED tests 267, 487 lib/dumper..........FAILED tests 43, 45 Failed 11/231 test scripts, 95.24% okay. 57/10595 subtests failed, 99.46% okay. -=head2 Install +=head2 Installing Perl on BS2000 We have no nroff on BS2000 POSIX (yet), so we ignored any errors while installing the documentation. -=head2 Using Perl in the Posix-Shell +=head2 Using Perl in the Posix-Shell of BS2000 BS2000 POSIX doesn't support the shebang notation (C<#!/usr/local/bin/perl>), so you have to use the following lines @@ -158,7 +158,7 @@ checkfiles.pl %*.c>). Read your C/C++ manual for additional possibilities of the commandline prompt (look for PARAMETER-PROMPTING). -=head2 Floating point anomalies +=head2 Floating point anomalies on BS2000 There appears to be a bug in the floating point implementation on BS2000 POSIX systems such that calling int() on the product of a number and a small diff --git a/README.cygwin b/README.cygwin index 6264a15788..1a8d0b4553 100644 --- a/README.cygwin +++ b/README.cygwin @@ -18,7 +18,7 @@ customize the configuration, consider using one of these packages: http://cygutils.netpedia.net/ -=head1 PREREQUISITES +=head1 PREREQUISITES FOR COMPILING PERL ON CYGWIN =head2 Cygwin = GNU+Cygnus+Windows (Don't leave UNIX without it) @@ -84,7 +84,7 @@ a UNIX system. =back -=head1 CONFIGURE +=head1 CONFIGURE PERL ON CYGWIN The default options gathered by Configure with the assistance of F<hints/cygwin.sh> will build a Perl that supports dynamic loading @@ -97,7 +97,7 @@ This will run Configure and keep a record: If you are willing to accept all the defaults run Configure with B<-de>. However, several useful customizations are available. -=head2 Strip Binaries +=head2 Stripping Perl Binaries on Cygwin It is possible to strip the EXEs and DLLs created by the build process. The resulting binaries will be significantly smaller. If you want the @@ -112,7 +112,7 @@ prompts you, or you can edit F<hints/cygwin.sh> and uncomment the relevant variables near the end of the file. -=head2 Optional Libraries +=head2 Optional Libraries for Perl on Cygwin Several Perl functions and modules depend on the existence of some optional libraries. Configure will find them if they are @@ -168,7 +168,7 @@ CPAN modules). =back -=head2 Configure-time Options +=head2 Configure-time Options for Perl on Cygwin The F<INSTALL> document describes several Configure-time options. Some of these will work with Cygwin, others are not yet possible. Also, some of @@ -219,7 +219,7 @@ for internal size and position calculations. =back -=head2 Suspicious Warnings +=head2 Suspicious Warnings on Cygwin You may see some messages during Configure that seem suspicious. @@ -265,13 +265,13 @@ This failure does not seem to cause any problems. =back -=head1 MAKE +=head1 MAKE ON CYGWIN Simply run I<make> and wait: make 2>&1 | tee log.make -=head2 Warnings +=head2 Warnings on Cygwin Warnings like these are normal: @@ -281,7 +281,7 @@ Warnings like these are normal: dllwrap: no export definition file provided dllwrap: creating one, but that may not be what you want -=head2 ld2 +=head2 ld2 on Cygwin During `C<make>', I<ld2> will be created and installed in your $installbin directory (where you said to put public executables). It does not @@ -293,7 +293,7 @@ is not the case `C<make>' will fail at some point. If this happens, just manually copy I<ld2> from the source directory to somewhere in your C<PATH>. -=head1 TEST +=head1 TEST ON CYGWIN There are two steps to running the test suite: @@ -310,7 +310,7 @@ attempted and explainable test failures are documented. It is possible for Perl to pass all the tests, but it is more likely that some tests will fail for one of the reasons listed below. -=head2 File Permissions +=head2 File Permissions on Cygwin UNIX file permissions are based on sets of mode bits for {read,write,execute} for each {user,group,other}. By default Cygwin @@ -336,7 +336,7 @@ these options, these tests will fail: lib/sdbm.t 2 op/stat.t 9, 20 (.tmp not an executable extension) -=head2 Hard Links +=head2 Hard Links on Cygwin FAT partitions do not support hard links (whereas NTFS does), in which case Cygwin implements link() by copying the file. On remote (network) @@ -349,7 +349,7 @@ these tests will fail: io/fs.t 4 op/stat.t 3 -=head2 Filetime Granularity +=head2 Filetime Granularity on Cygwin On FAT partitions the filetime granularity is 2 seconds. The following test will fail: @@ -358,7 +358,7 @@ test will fail: ------------------------------------ io/fs.t 18 -=head2 Tainting Checks +=head2 Tainting Checks on Cygwin When Perl is running in taint mode, C<$ENV{PATH}> is considered tainted and not used, so DLLs not in the default system directories will not @@ -390,7 +390,7 @@ tests run: or one of the Windows system directories (although, this is B<not> recommended). -=head2 /etc/group +=head2 /etc/group on Cygwin Cygwin does not require F</etc/group>, in which case the F<op/grent.t> test will be skipped. The check performed by F<op/grent.t> expects to @@ -400,7 +400,7 @@ see entries that use the members field, otherwise this test will fail: ------------------------------------ op/grent.t 1 -=head2 Script Portability +=head2 Script Portability on Cygwin Cygwin does an outstanding job of providing UNIX-like semantics on top of Win32 systems. However, in addition to the items noted above, there are @@ -466,7 +466,7 @@ access by native Win32 programs). =back -=head1 INSTALL +=head1 INSTALL PERL ON CYGWIN This will install Perl, including I<man> pages. @@ -481,7 +481,7 @@ are not, you must have write access to the directories in question. Information on installing the Perl documentation in HTML format can be found in the F<INSTALL> document. -=head1 MANIFEST +=head1 MANIFEST ON CYGWIN These are the files in the Perl release that contain references to Cygwin. These very brief notes attempt to explain the reason for all conditional @@ -559,7 +559,7 @@ be kept as clean as possible. =back -=head1 BUGS +=head1 BUGS ON CYGWIN When I<make> starts, it warns about overriding commands for F<perlmain.o>. diff --git a/README.dgux b/README.dgux index 4b7b8fd0c5..b033b038cd 100644 --- a/README.dgux +++ b/README.dgux @@ -39,14 +39,14 @@ Contents Perl 5.7/8.x for DG/UX ix86 R4.20MU0x -=head1 BUILD +=head1 BUILDING PERL ON DG/UX -=head2 Non-threaded Case +=head2 Non-threaded Perl on DG/UX Just run ./Configure script from the top directory. Then give "make" to compile. -=head2 Threaded Case +=head2 Threaded Perl on DG/UX If you are using as compiler GCC-2.95.x rev(DG/UX) an easy solution for configuring perl in your DG/UX @@ -77,7 +77,7 @@ that comes with the DG/UX OS does NOT know the -pthread switch. So your build will fail if you choose the defaults. After configuration is done correctly give "make" to compile. -=head2 Testing +=head2 Testing Perl on DG/UX Issuing a "make test" will run all the tests. If the test lib/ftmp-security gives you as a result @@ -95,7 +95,7 @@ chmod +t /tmp (=set the sticky bit to /tmp). Then rerun the tests. This time all must be OK. -=head2 Installing the built perl +=head2 Installing the built perl on DG/UX Run the command "make install" diff --git a/README.dos b/README.dos index acdb5115d7..207325a3c6 100644 --- a/README.dos +++ b/README.dos @@ -1,333 +1,332 @@ -If you read this file _as_is_, just ignore the funny characters you -see. It is written in the POD format (see perlpod manpage) which is -specially designed to be readable as is. - -=head1 NAME - -perldos - Perl under DOS, W31, W95. - -=head1 SYNOPSIS - -These are instructions for building Perl under DOS (or w??), using -DJGPP v2.03 or later. Under w95 long filenames are supported. - -=head1 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. - -Detailed instructions on how to build and install perl extension -modules, including XS-type modules, is included. See 'BUILDING AND -INSTALLING MODULES'. - -=head2 Prerequisites - -=over 4 - -=item 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/djdev203.zip - v2/bnu2951b.zip - v2gnu/gcc2952b.zip - v2gnu/bsh204b.zip - v2gnu/mak3791b.zip - v2gnu/fil316b.zip - v2gnu/sed302b.zip - v2gnu/txt20b.zip - v2gnu/dif272b.zip - v2gnu/grep24b.zip - v2gnu/shl112b.zip - v2gnu/gawk303b.zip - v2misc/csdpmi4b.zip - -or possibly any newer version. - -=item Pthreads - -Thread support is not tested in this version of the djgpp perl. - -=back - -=head2 Shortcomings of Perl under DOS - -Perl under DOS lacks some features of perl under UNIX because of -deficiencies in the UNIX-emulation, most notably: - -=over 4 - -=item * - -fork() and pipe() - -=item * - -some features of the UNIX filesystem regarding link count and file dates - -=item * - -in-place operation is a little bit broken with short filenames - -=item * - -sockets - -=back - -=head2 Building - -=over 4 - -=item * - -Unpack the source package F<perl5.6*.tar.gz> with djtarx. If you want -to use long file names under w95 and also to get Perl to pass all its -tests, don't forget to use - - set LFN=y - set FNCASE=y - -before unpacking the archive. - -=item * - -Create a "symlink" or copy your bash.exe to sh.exe in your C<($DJDIR)/bin> -directory. - - ln -s bash.exe sh.exe - -[If you have the recommended version of bash for DJGPP, this is already -done for you.] - -And make the C<SHELL> environment variable point to this F<sh.exe>: - - set SHELL=c:/djgpp/bin/sh.exe (use full path name!) - -You can do this in F<djgpp.env> too. Add this line BEFORE any section -definition: - - +SHELL=%DJDIR%/bin/sh.exe - -=item * - -If you have F<split.exe> and F<gsplit.exe> in your path, then rename -F<split.exe> to F<djsplit.exe>, and F<gsplit.exe> to F<split.exe>. -Copy or link F<gecho.exe> to F<echo.exe> if you don't have F<echo.exe>. -Copy or link F<gawk.exe> to F<awk.exe> if you don't have F<awk.exe>. - -[If you have the recommended versions of djdev, shell utilities and -gawk, all these are already done for you, and you will not need to do -anything.] - -=item * - -Chdir to the djgpp subdirectory of perl toplevel and type the following -commands: - - set FNCASE=y - 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. The "set" command ensures that DJGPP preserves the letter -case of file names when reading directories. If you already issued this -set command when unpacking the archive, and you are in the same DOS -session as when you unpacked the archive, you don't have to issue the -set command again. This command is necessary *before* you start to -(re)configure or (re)build perl in order to ensure both that perl builds -correctly and that building XS-type modules can succeed. See the DJGPP -info entry for "_preserve_fncase" for more information: - - info libc alphabetical _preserve_fncase - -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 or forget to issue "set FNCASE=y" first). - -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 F<cc1.exe> is at least 512kbyte (you can check this -with: C<stubedit cc1.exe>). - -You can use the Configure script in non-interactive mode too. -When I built my F<perl.exe>, I used something like this: - - configure.bat -des - -You can find more info about Configure's command line switches in -the F<INSTALL> file. - -When the script ends, and you want to change some values in the -generated F<config.sh> file, then run - - sh Configure -S - -after you made your modifications. - -IMPORTANT: if you use this C<-S> switch, be sure to delete the CONFIG -environment variable before running the script: - - set CONFIG= - -=item * - -Now you can compile Perl. Type: - - make - -=back - -=head2 Testing - -Type: - - make test - -If you're lucky you should see "All tests successful". But there can be -a few failed subtests (less than 5 hopefully) depending on some external -conditions (e.g. some subtests fail under linux/dosemu or plain dos -with short filenames only). - -=head2 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 C<($DJDIR)/bin>, -and the library goes under C<($DJDIR)/lib/perl5>. The pod documentation -goes under C<($DJDIR)/lib/perl5/pod>. - -=head1 BUILDING AND INSTALLING MODULES - - -=head2 Building Prerequisites - -For building and installing non-XS modules, all you need is a working -perl under DJGPP. Non-XS modules do not require re-linking the perl -binary, and so are simpler to build and install. - -XS-type modules do require re-linking the perl binary, because part of -an XS module is written in "C", and has to be linked together with the -perl binary to be executed. This is required because perl under DJGPP -is built with the "static link" option, due to the lack of "dynamic -linking" in the DJGPP environment. - -Because XS modules require re-linking of the perl binary, you need both -the perl binary distribution and the perl source distribution to build -an XS extension module. In addition, you will have to have built your -perl binary from the source distribution so that all of the components -of the perl binary are available for the required link step. - -=head2 Unpacking CPAN Modules - -First, download the module package from CPAN (e.g., the "Comma Separated -Value" text package, Text-CSV-0.01.tar.gz). Then expand the contents of -the package into some location on your disk. Most CPAN modules are -built with an internal directory structure, so it is usually safe to -expand it in the root of your DJGPP installation. Some people prefer to -locate source trees under /usr/src (i.e., C<($DJDIR)/usr/src>), but you may -put it wherever seems most logical to you, *EXCEPT* under the same -directory as your perl source code. There are special rules that apply -to modules which live in the perl source tree that do not apply to most -of the modules in CPAN. - -Unlike other DJGPP packages, which are normal "zip" files, most CPAN -module packages are "gzipped tarballs". Recent versions of WinZip will -safely unpack and expand them, *UNLESS* they have zero-length files. It -is a known WinZip bug (as of v7.0) that it will not extract zero-length -files. - -From the command line, you can use the djtar utility provided with DJGPP -to unpack and expand these files. For example: - - C:\djgpp>djtarx -v Text-CSV-0.01.tar.gz - -This will create the new directory C<($DJDIR)/Text-CSV-0.01>, filling -it with the source for this module. - -=head2 Building Non-XS Modules - -To build a non-XS module, you can use the standard module-building -instructions distributed with perl modules. - - perl Makefile.PL - make - make test - make install - -This is sufficient because non-XS modules install only ".pm" files and -(sometimes) pod and/or man documentation. No re-linking of the perl -binary is needed to build, install or use non-XS modules. - -=head2 Building XS Modules - -To build an XS module, you must use the standard module-building -instructions distributed with perl modules *PLUS* three extra -instructions specific to the DJGPP "static link" build environment. - - set FNCASE=y - perl Makefile.PL - make - make perl - make test - make -f Makefile.aperl inst_perl MAP_TARGET=perl.exe - make install - -The first extra instruction sets DJGPP's FNCASE environment variable so -that the new perl binary which you must build for an XS-type module will -build correctly. The second extra instruction re-builds the perl binary -in your module directory before you run "make test", so that you are -testing with the new module code you built with "make". The third extra -instruction installs the perl binary from your module directory into the -standard DJGPP binary directory, C<($DJDIR)/bin>, replacing your -previous perl binary. - -Note that the MAP_TARGET value *must* have the ".exe" extension or you -will not create a "perl.exe" to replace the one in C<($DJDIR)/bin>. - -When you are done, the XS-module install process will have added information -to yout "perllocal" information telling that the perl binary has been replaced, -and what module was installed. you can view this information at any time -by using the command: - - perl -S perldoc perllocal - -=head1 AUTHOR - -Laszlo Molnar, F<laszlo.molnar@eth.ericsson.se> [Installing/building perl] - -Peter J. Farley III F<pjfarley@banet.net> [Building/installing modules] - -=head1 SEE ALSO - -perl(1). - -=cut - +If you read this file _as_is_, just ignore the funny characters you
+see. It is written in the POD format (see perlpod manpage) which is
+specially designed to be readable as is.
+
+=head1 NAME
+
+perldos - Perl under DOS, W31, W95.
+
+=head1 SYNOPSIS
+
+These are instructions for building Perl under DOS (or w??), using
+DJGPP v2.03 or later. Under w95 long filenames are supported.
+
+=head1 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.
+
+Detailed instructions on how to build and install perl extension
+modules, including XS-type modules, is included. See 'BUILDING AND
+INSTALLING MODULES'.
+
+=head2 Prerequisites for Compiling Perl on DOS
+
+=over 4
+
+=item 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/djdev203.zip
+ v2/bnu2951b.zip
+ v2gnu/gcc2952b.zip
+ v2gnu/bsh204b.zip
+ v2gnu/mak3791b.zip
+ v2gnu/fil316b.zip
+ v2gnu/sed302b.zip
+ v2gnu/txt20b.zip
+ v2gnu/dif272b.zip
+ v2gnu/grep24b.zip
+ v2gnu/shl112b.zip
+ v2gnu/gawk303b.zip
+ v2misc/csdpmi4b.zip
+
+or possibly any newer version.
+
+=item Pthreads
+
+Thread support is not tested in this version of the djgpp perl.
+
+=back
+
+=head2 Shortcomings of Perl under DOS
+
+Perl under DOS lacks some features of perl under UNIX because of
+deficiencies in the UNIX-emulation, most notably:
+
+=over 4
+
+=item *
+
+fork() and pipe()
+
+=item *
+
+some features of the UNIX filesystem regarding link count and file dates
+
+=item *
+
+in-place operation is a little bit broken with short filenames
+
+=item *
+
+sockets
+
+=back
+
+=head2 Building Perl on DOS
+
+=over 4
+
+=item *
+
+Unpack the source package F<perl5.6*.tar.gz> with djtarx. If you want
+to use long file names under w95 and also to get Perl to pass all its
+tests, don't forget to use
+
+ set LFN=y
+ set FNCASE=y
+
+before unpacking the archive.
+
+=item *
+
+Create a "symlink" or copy your bash.exe to sh.exe in your C<($DJDIR)/bin>
+directory.
+
+ ln -s bash.exe sh.exe
+
+[If you have the recommended version of bash for DJGPP, this is already
+done for you.]
+
+And make the C<SHELL> environment variable point to this F<sh.exe>:
+
+ set SHELL=c:/djgpp/bin/sh.exe (use full path name!)
+
+You can do this in F<djgpp.env> too. Add this line BEFORE any section
+definition:
+
+ +SHELL=%DJDIR%/bin/sh.exe
+
+=item *
+
+If you have F<split.exe> and F<gsplit.exe> in your path, then rename
+F<split.exe> to F<djsplit.exe>, and F<gsplit.exe> to F<split.exe>.
+Copy or link F<gecho.exe> to F<echo.exe> if you don't have F<echo.exe>.
+Copy or link F<gawk.exe> to F<awk.exe> if you don't have F<awk.exe>.
+
+[If you have the recommended versions of djdev, shell utilities and
+gawk, all these are already done for you, and you will not need to do
+anything.]
+
+=item *
+
+Chdir to the djgpp subdirectory of perl toplevel and type the following
+commands:
+
+ set FNCASE=y
+ 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. The "set" command ensures that DJGPP preserves the letter
+case of file names when reading directories. If you already issued this
+set command when unpacking the archive, and you are in the same DOS
+session as when you unpacked the archive, you don't have to issue the
+set command again. This command is necessary *before* you start to
+(re)configure or (re)build perl in order to ensure both that perl builds
+correctly and that building XS-type modules can succeed. See the DJGPP
+info entry for "_preserve_fncase" for more information:
+
+ info libc alphabetical _preserve_fncase
+
+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 or forget to issue "set FNCASE=y" first).
+
+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 F<cc1.exe> is at least 512kbyte (you can check this
+with: C<stubedit cc1.exe>).
+
+You can use the Configure script in non-interactive mode too.
+When I built my F<perl.exe>, I used something like this:
+
+ configure.bat -des
+
+You can find more info about Configure's command line switches in
+the F<INSTALL> file.
+
+When the script ends, and you want to change some values in the
+generated F<config.sh> file, then run
+
+ sh Configure -S
+
+after you made your modifications.
+
+IMPORTANT: if you use this C<-S> switch, be sure to delete the CONFIG
+environment variable before running the script:
+
+ set CONFIG=
+
+=item *
+
+Now you can compile Perl. Type:
+
+ make
+
+=back
+
+=head2 Testing Perl on DOS
+
+Type:
+
+ make test
+
+If you're lucky you should see "All tests successful". But there can be
+a few failed subtests (less than 5 hopefully) depending on some external
+conditions (e.g. some subtests fail under linux/dosemu or plain dos
+with short filenames only).
+
+=head2 Installation of Perl on DOS
+
+Type:
+
+ make install
+
+This will copy the newly compiled perl and libraries into your DJGPP
+directory structure. Perl.exe and the utilities go into C<($DJDIR)/bin>,
+and the library goes under C<($DJDIR)/lib/perl5>. The pod documentation
+goes under C<($DJDIR)/lib/perl5/pod>.
+
+=head1 BUILDING AND INSTALLING MODULES ON DOS
+
+=head2 Building Prerequisites for Perl on DOS
+
+For building and installing non-XS modules, all you need is a working
+perl under DJGPP. Non-XS modules do not require re-linking the perl
+binary, and so are simpler to build and install.
+
+XS-type modules do require re-linking the perl binary, because part of
+an XS module is written in "C", and has to be linked together with the
+perl binary to be executed. This is required because perl under DJGPP
+is built with the "static link" option, due to the lack of "dynamic
+linking" in the DJGPP environment.
+
+Because XS modules require re-linking of the perl binary, you need both
+the perl binary distribution and the perl source distribution to build
+an XS extension module. In addition, you will have to have built your
+perl binary from the source distribution so that all of the components
+of the perl binary are available for the required link step.
+
+=head2 Unpacking CPAN Modules on DOS
+
+First, download the module package from CPAN (e.g., the "Comma Separated
+Value" text package, Text-CSV-0.01.tar.gz). Then expand the contents of
+the package into some location on your disk. Most CPAN modules are
+built with an internal directory structure, so it is usually safe to
+expand it in the root of your DJGPP installation. Some people prefer to
+locate source trees under /usr/src (i.e., C<($DJDIR)/usr/src>), but you may
+put it wherever seems most logical to you, *EXCEPT* under the same
+directory as your perl source code. There are special rules that apply
+to modules which live in the perl source tree that do not apply to most
+of the modules in CPAN.
+
+Unlike other DJGPP packages, which are normal "zip" files, most CPAN
+module packages are "gzipped tarballs". Recent versions of WinZip will
+safely unpack and expand them, *UNLESS* they have zero-length files. It
+is a known WinZip bug (as of v7.0) that it will not extract zero-length
+files.
+
+From the command line, you can use the djtar utility provided with DJGPP
+to unpack and expand these files. For example:
+
+ C:\djgpp>djtarx -v Text-CSV-0.01.tar.gz
+
+This will create the new directory C<($DJDIR)/Text-CSV-0.01>, filling
+it with the source for this module.
+
+=head2 Building Non-XS Modules on DOS
+
+To build a non-XS module, you can use the standard module-building
+instructions distributed with perl modules.
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+This is sufficient because non-XS modules install only ".pm" files and
+(sometimes) pod and/or man documentation. No re-linking of the perl
+binary is needed to build, install or use non-XS modules.
+
+=head2 Building XS Modules on DOS
+
+To build an XS module, you must use the standard module-building
+instructions distributed with perl modules *PLUS* three extra
+instructions specific to the DJGPP "static link" build environment.
+
+ set FNCASE=y
+ perl Makefile.PL
+ make
+ make perl
+ make test
+ make -f Makefile.aperl inst_perl MAP_TARGET=perl.exe
+ make install
+
+The first extra instruction sets DJGPP's FNCASE environment variable so
+that the new perl binary which you must build for an XS-type module will
+build correctly. The second extra instruction re-builds the perl binary
+in your module directory before you run "make test", so that you are
+testing with the new module code you built with "make". The third extra
+instruction installs the perl binary from your module directory into the
+standard DJGPP binary directory, C<($DJDIR)/bin>, replacing your
+previous perl binary.
+
+Note that the MAP_TARGET value *must* have the ".exe" extension or you
+will not create a "perl.exe" to replace the one in C<($DJDIR)/bin>.
+
+When you are done, the XS-module install process will have added information
+to yout "perllocal" information telling that the perl binary has been replaced,
+and what module was installed. you can view this information at any time
+by using the command:
+
+ perl -S perldoc perllocal
+
+=head1 AUTHOR
+
+Laszlo Molnar, F<laszlo.molnar@eth.ericsson.se> [Installing/building perl]
+
+Peter J. Farley III F<pjfarley@banet.net> [Building/installing modules]
+
+=head1 SEE ALSO
+
+perl(1).
+
+=cut
+
diff --git a/README.epoc b/README.epoc index f688b46c05..8e12c25ca0 100644 --- a/README.epoc +++ b/README.epoc @@ -73,7 +73,7 @@ redirection. You will have to reboot the PDA! =head1 USING PERL ON EPOC -=head2 I/O Redirection +=head2 I/O Redirection on Epoc You can redirect the output with the UNIX bourne shell syntax (this is built into perl rather then eshell) For instance the following command @@ -85,7 +85,7 @@ perl test.pl >stdout_file <stdin_file 2>stderr_file Alternatively you can use 2>&1 in order to add the standard error output to stdout. -=head2 PATH Names +=head2 PATH Names on Epoc ESHELL looks for executables in ?:/System/Programs. The SIS file installs perl in this special folder directory. The default drive and @@ -107,16 +107,16 @@ internally in perl, so please use slashes for redirects. perl.exe C:/test.pl >C:/output.txt -=head2 Editors +=head2 Editors on Epoc A suitable text editor can be downloaded from symbian http://developer.epocworld.com/downloads/progs/Editor.zip -=head2 Features +=head2 Features of Perl on Epoc The built-in function EPOC::getcwd returns the current directory. -=head2 Restrictions +=head2 Restrictions of Perl on Epoc Features are left out, because of restrictions of the POSIX support in EPOC: @@ -214,7 +214,7 @@ Start again from scratch =back -=head1 SUPPORT STATUS +=head1 SUPPORT STATUS OF PERL ON EPOC I'm offering this port "as is". You can ask me questions, but I can't guarantee I'll be able to answer them. diff --git a/README.hpux b/README.hpux index 732fdec044..fcc9d02f2f 100644 --- a/README.hpux +++ b/README.hpux @@ -98,7 +98,7 @@ the PA-RISC 1.1 or 2.0 platforms. The command-line flags are accepted, but the resulting executable will not run when transferred to a PA-RISC 1.0 system. -=head2 Itanium Processor Family +=head2 Itanium Processor Family and HP-UX HP-UX also runs on the new Itanium processor. This requires the use of a different version of HP-UX (currently 11.20), and with the exception @@ -213,7 +213,7 @@ flag -Aa is added to the cpprun and cppstdin variables in the config.sh file (though see the section on 64-bit perl below). If you are using a recent version of the Perl distribution, these flags are set automatically. -=head2 Using Large Files with Perl +=head2 Using Large Files with Perl on HP-UX Beginning with HP-UX version 10.20, files larger than 2GB (2^31 bytes) may be created and manipulated. Three separate methods of doing this @@ -248,7 +248,7 @@ Configure. If you do not do this, but later answer the question about large files when Configure asks you, you may get a configuration that cannot be compiled, or that does not function as expected. -=head2 Threaded Perl +=head2 Threaded Perl on HP-UX It is possible to compile a version of threaded Perl on any version of HP-UX before 10.30, but it is strongly suggested that you be running on @@ -268,7 +268,7 @@ April 1999 (B3920-13941)" or the Freely available PTH package, available though worldwide HP-UX mirrors of precompiled packages (e.g. http://hpux.tn.tudelft.nl/hppd/hpux/alpha.html) -=head2 64-bit Perl +=head2 64-bit Perl on HP-UX Beginning with HP-UX 11.00, programs compiled under HP-UX can take advantage of the LP64 programming environment (LP64 means Longs and @@ -299,20 +299,20 @@ expected. compiler. If you want to compile Perl using gcc, you will have to get a version of the compiler that support 64-bit operations.) -=head2 GDBM and Threads +=head2 GDBM and Threads on HP-UX If you attempt to compile Perl with threads on an 11.X system and also link in the GDBM library, then Perl will immediately core dump when it starts up. The only workaround at this point is to relink the GDBM library under 11.X, then relink it into Perl. -=head2 NFS filesystems and utime(2) +=head2 NFS filesystems and utime(2) on HP-UX If you are compiling Perl on a remotely-mounted NFS filesystem, the test io/fs.t may fail on test #18. This appears to be a bug in HP-UX and no fix is currently available. -=head2 perl -P and // +=head2 perl -P and // and HP-UX In HP-UX Perl is compiled with flags that will cause problems if the -P flag of Perl (preprocess Perl code with the C preprocessor before @@ -331,7 +331,7 @@ like for example C<"!">: s!foo!!; -=head2 Kernel parameters (maxdsiz) +=head2 HP-UX Kernel Parameters (maxdsiz) for Compiling Perl By default, HP-UX comes configured with a maximum data segment size of 64MB. This is too small to correctly compile Perl with the maximum diff --git a/README.hurd b/README.hurd index 6db3ef3638..17e04b0353 100644 --- a/README.hurd +++ b/README.hurd @@ -1,13 +1,19 @@ -Notes on Perl on the Hurd -Last Updated: Fri, 29 Oct 1999 22:50:30 +0200 -Written by: Mark Kettenis <kettenis@gnu.org> +If you read this file _as_is_, just ignore the funny characters you see. +It is written in the POD format (see pod/perlpod.pod) which is specially +designed to be readable as is. + +=head1 NAME + +README.hurd - Perl version 5 on Hurd + +=head1 DESCRIPTION If you want to use Perl on the Hurd, I recommend using the Debian GNU/Hurd distribution (see http://www.debian.org), even if an official, stable release has not yet been made. The old `gnu-0.2' binary distribution will most certainly have additional problems. -* Known Problems +=head2 Known Problems with Perl on Hurd The Perl test suite may still report some errors on the Hurd. The `lib/anydbm' and `pragma/warnings' tests will almost certainly fail. @@ -21,12 +27,13 @@ information. Here are the statistics for Perl 5.005_62 on my system: -Failed Test Status Wstat Total Fail Failed List of failed -------------------------------------------------------------------------------- -lib/anydbm.t 12 1 8.33% 12 -pragma/warnings 333 1 0.30% 215 -8 tests and 24 subtests skipped. -Failed 2/229 test scripts, 99.13% okay. 2/10850 subtests failed, 99.98% okay. + Failed Test Status Wstat Total Fail Failed List of failed + ------------------------------------------------------------------------- + lib/anydbm.t 12 1 8.33% 12 + pragma/warnings 333 1 0.30% 215 + + 8 tests and 24 subtests skipped. + Failed 2/229 test scripts, 99.13% okay. 2/10850 subtests failed, 99.98% okay. There are quite a few systems out there that do worse! @@ -38,3 +45,10 @@ encounter more failures. Likely candidates are: `op/stat', `lib/io_pipe', In any way, if you're seeing failures beyond those mentioned in this document, please consider upgrading to the latest Hurd before reporting the failure as a bug. + +=head1 AUTHOR + +Mark Kettenis <kettenis@gnu.org> + +Last Updated: Fri, 29 Oct 1999 22:50:30 +0200 + diff --git a/README.machten b/README.machten index 8e14fc7117..a15b90790b 100644 --- a/README.machten +++ b/README.machten @@ -31,7 +31,7 @@ system before running the C<make> command. For much more information on building perl -- for example, on how to change the default installation directory -- see F<INSTALL>. -=head2 Failures during C<make test> +=head2 Failures during C<make test> on MachTen =over 4 @@ -57,7 +57,7 @@ and limited in its effect on practical Perl programs. =back -=head2 Building external modules +=head2 Building external modules on MachTen To add an external module to perl, build in the normal way, which is documented in L<ExtUtils::MakeMaker>, or which can be driven diff --git a/README.macos b/README.macos index ea6faf2300..a15cb61027 100644 --- a/README.macos +++ b/README.macos @@ -45,14 +45,12 @@ for all things having to do with MacPerl development. MacPerl 5.2.0r4 is available on the CPAN and on SourceForge. It is based on perl 5.004. - =head1 AUTHOR perl was ported to Mac OS by Matthias Neeracher E<lt>neeracher@mac.comE<gt>. It is currently maintained by Chris Nandor E<lt>pudge@pobox.comE<gt>. - =head1 DATE Last modified 2001.04.05. diff --git a/README.micro b/README.micro index da84453bf6..e495cdb701 100644 --- a/README.micro +++ b/README.micro @@ -4,6 +4,12 @@ on the other hand this means that interfaces between Perl and your operating system are left very -- minimal. All this is experimental. If you don't know what to do with microperl -you probably shouldn't. +you probably shouldn't. Do not report bugs in microperl; fix the bugs. + +If you are still reading this and you are itching to try out microperl: + + make -f Makefile.micro + + diff --git a/README.mint b/README.mint index 1915129ff8..b3955099b6 100644 --- a/README.mint +++ b/README.mint @@ -1,6 +1,12 @@ -########################################################################## -# *** README.mint -########################################################################## +If you read this file _as_is_, just ignore the funny characters you see. +It is written in the POD format (see pod/perlpod.pod) which is specially +designed to be readable as is. + +=head1 NAME + +README.mint - Perl version 5 on Atari MiNT + +=head1 DESCRIPTION If you want to build perl yourself on MiNT (or maybe on an Atari without MiNT) you may want to accept some advice from somebody who already did it... @@ -23,8 +29,7 @@ provided that the user has a Eunuchs-like environment (i.e. the standard envariables like $PATH, $HOME, ... are set, there is a POSIX compliant shell in /bin/sh, and...) -Known problems -============== +=head1 Known problems with Perl on MiNT The problems you may encounter when building perl on your machine are most probably due to deficiencies in MiNT resp. the Atari @@ -210,7 +215,10 @@ OK, this was my motto while working on Perl for MiNT, especially rule (1)... Have fun with Perl! +=head1 AUTHOR + Guido Flohr --- -mailto:gufl0000@stud.uni-sb.de -http://stud.uni-sb.de/~gufl0000 + + mailto:gufl0000@stud.uni-sb.de + http://stud.uni-sb.de/~gufl0000 + diff --git a/README.mpeix b/README.mpeix index 0351f3b2fd..6f9ee1425a 100644 --- a/README.mpeix +++ b/README.mpeix @@ -17,7 +17,7 @@ README.mpeix - Perl/iX for HP e3000 MPE This is a podified version of the above-mentioned web page, podified by Jarkko Hietaniemi 2001-Jan-01. -=head1 What's New +=head1 What's New in Perl ffor MPE/iX June 1, 2000 @@ -105,7 +105,7 @@ Migrated from cccd.edu to bixby.org. =back -=head1 Welcome +=head1 Welcome to Perl/iX This is the official home page for the HP e3000 MPE/iX (http://www.businessservers.hp.com/) port of the Perl scripting @@ -135,7 +135,7 @@ IMPORTANT NOTICE: Yes, I do work for the HP CSY R&D lab, but ALL of the software you download from bixby.org is my personal freeware that is NOT supported by HP. -=head1 System Requirements +=head1 System Requirements for Perl/iX =over 4 @@ -271,7 +271,7 @@ machines because the 6.0 or later update process does it for you. =back -=head1 Distribution Contents Highlights +=head1 Perl/iX Distribution Contents Highlights =over 4 @@ -436,11 +436,11 @@ GETPRIVMODE() solution similar to bind(). =back -=head1 Known Bugs Under Investigation +=head1 Known Perl/iX Bugs Under Investigation None. -=head1 To-Do List +=head1 Perl/iX To-Do List =over 4 @@ -463,7 +463,7 @@ MPE functions like GETPRIVMODE(), GETUSERMODE(), and sfcntl(). =back -=head1 Change History +=head1 Perl/iX Change History May 6, 1999 @@ -669,7 +669,7 @@ Porting begins. =back -=head1 Author +=head1 AUTHOR Mark Bixby, mark@bixby.org diff --git a/README.os390 b/README.os390 index 249ee032a4..fe0ee2cf73 100644 --- a/README.os390 +++ b/README.os390 @@ -1,9 +1,7 @@ - This document is written in pod format hence there are punctuation -characters in odd places. Do not worry, you've apparently got -the ASCII->EBCDIC translation worked out correctly. You can read -more about pod in pod/perlpod.pod or the short summary in the -INSTALL file. +characters in odd places. Do not worry, you've apparently got the +ASCII->EBCDIC translation worked out correctly. You can read more +about pod in pod/perlpod.pod or the short summary in the INSTALL file. =head1 NAME @@ -23,7 +21,7 @@ the ones we've tested it on. You may need to carry out some system configuration tasks before running the Configure script for Perl. -=head2 Unpacking +=head2 Unpacking Perl distribution on OS/390 Gunzip/gzip for OS/390 is discussed at: @@ -33,7 +31,7 @@ to extract an ASCII tar archive on OS/390, try this: pax -o to=IBM-1047,from=ISO8859-1 -r < latest.tar -=head2 Setup and utilities +=head2 Setup and utilities for Perl on OS/390 Be sure that your yacc installation is in place including any necessary parser template files. If you have not already done so then be sure to: @@ -87,7 +85,7 @@ to build its "Socket" extension. For successful testing you may need to turn on the sticky bit for your world readable /tmp directory if you have not already done so (see man chmod). -=head2 Configure +=head2 Configure Perl on OS/390 Once you've unpacked the distribution, run "sh Configure" (see INSTALL for a full discussion of the Configure options). There is a "hints" file @@ -156,7 +154,7 @@ properly set up your /etc networking files. =back -=head2 Build, test, install +=head2 Build, Test, Install Perl on OS/390 Simply put: @@ -172,7 +170,7 @@ this last step may or may not require UID=0 privileges depending on how you answered the questions that Configure asked and whether or not you have write access to the directories you specified. -=head2 build anomalies +=head2 Build Anomalies with Perl on OS/390 "Out of memory!" messages during the build of Perl are most often fixed by re building the GNU make utility for OS/390 from a source code kit. @@ -196,7 +194,7 @@ If the c89 compiler complains of syntax errors during the build of the Socket extension then be sure to fix the syntax error in the system header /usr/include/sys/socket.h. -=head2 testing anomalies +=head2 Testing Anomalies with Perl on OS/390 The `make test` step runs a Perl Verification Procedure, usually before installation. You might encounter STDERR messages even during a successful @@ -279,13 +277,13 @@ is needed to get through the test suite. =back -=head2 installation anomalies +=head2 Installation Anomalies with Perl on OS/390 The installman script will try to run on OS/390. There will be fewer errors if you have a roff utility installed. You can obtain GNU groff from the Redbook SG24-5944-00 ftp site. -=head2 Usage Hints +=head2 Usage Hints for Perl on OS/390 When using perl on OS/390 please keep in mind that the EBCDIC and ASCII character sets are different. See perlebcdic.pod for more on such character @@ -307,7 +305,7 @@ If you are having trouble with square brackets then consider switching your rlogin or telnet client. Try to avoid older 3270 emulators and ISHELL for working with Perl on USS. -=head2 Floating point anomalies +=head2 Floating Point Anomalies with Perl on OS/390 There appears to be a bug in the floating point implementation on S/390 systems such that calling int() on the product of a number and a small @@ -341,7 +339,7 @@ The problem can be further examined in a roughly equivalent C program: /* y is 0.000000e+00 and z is 1.000000e+05 (with c89) */ } -=head2 Modules and Extensions +=head2 Modules and Extensions for Perl on OS/390 Pure pure (that is non xs) modules may be installed via the usual: @@ -402,7 +400,7 @@ L<INSTALL>, L<perlport>, L<perlebcdic>, L<ExtUtils::MakeMaker>. http://publibz.boulder.ibm.com:80/cgi-bin/bookmgr_OS390/BOOKS/CBCUG030/ -=head2 Mailing list +=head2 Mailing list for Perl on OS/390 The Perl Institute (http://www.perl.org/) maintains a perl-mvs mailing list of interest to all folks building and/or diff --git a/README.plan9 b/README.plan9 index f10f1d9b92..5395ed0750 100644 --- a/README.plan9 +++ b/README.plan9 @@ -1,27 +1,146 @@ +If you read this file _as_is_, just ignore the funny characters you see. +It is written in the POD format (see pod/perlpod.pod) which is specially +designed to be readable as is. + +=head1 NAME + +perlplan9 - Plan 9-specific documentation for Perl + +=head1 DESCRIPTION + +These are a few notes describing features peculiar to +Plan 9 Perl. As such, it is not intended to be a replacement +for the rest of the Perl 5 documentation (which is both +copious and excellent). If you have any questions to +which you can't find answers in these man pages, contact +Luther Huffman at lutherh@stratcom.com and we'll try to +answer them. + +=head2 Invoking Perl + +Perl is invoked from the command line as described in +L<perl>. Most perl scripts, however, do have a first line +such as "#!/usr/local/bin/perl". This is known as a shebang +(shell-bang) statement and tells the OS shell where to find +the perl interpreter. In Plan 9 Perl this statement should be +"#!/bin/perl" if you wish to be able to directly invoke the +script by its name. + Alternatively, you may invoke perl with the command "Perl" +instead of "perl". This will produce Acme-friendly error +messages of the form "filename:18". + +Some scripts, usually identified with a *.PL extension, are +self-configuring and are able to correctly create their own +shebang path from config information located in Plan 9 +Perl. These you won't need to be worried about. + +=head2 What's in Plan 9 Perl + +Although Plan 9 Perl currently only provides static +loading, it is built with a number of useful extensions. +These include Opcode, FileHandle, Fcntl, and POSIX. Expect +to see others (and DynaLoading!) in the future. + +=head2 What's not in Plan 9 Perl + +As mentioned previously, dynamic loading isn't currently +available nor is MakeMaker. Both are high-priority items. + +=head2 Perl5 Functions not currently supported in Plan 9 Perl + +Some, such as C<chown> and C<umask> aren't provided +because the concept does not exist within Plan 9. Others, +such as some of the socket-related functions, simply +haven't been written yet. Many in the latter category +may be supported in the future. + +The functions not currently implemented include: + + chown, chroot, dbmclose, dbmopen, getsockopt, + setsockopt, recvmsg, sendmsg, getnetbyname, + getnetbyaddr, getnetent, getprotoent, getservent, + sethostent, setnetent, setprotoent, setservent, + endservent, endnetent, endprotoent, umask + +There may be several other functions that have undefined +behavior so this list shouldn't be considered complete. + +=head2 Signals in Plan 9 Perl + +For compatibility with perl scripts written for the Unix +environment, Plan 9 Perl uses the POSIX signal emulation +provided in Plan 9's ANSI POSIX Environment (APE). Signal stacking +isn't supported. The signals provided are: + + SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGABRT, + SIGFPE, SIGKILL, SIGSEGV, SIGPIPE, SIGPIPE, SIGALRM, + SIGTERM, SIGUSR1, SIGUSR2, SIGCHLD, SIGCONT, + SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU + +=head1 COMPILING AND INSTALLING PERL ON PLAN 9 + WELCOME to Plan 9 Perl, brave soul! - This is a preliminary alpha version of Plan 9 Perl. Still to be implemented are MakeMaker and DynaLoader. Many perl commands are missing or currently behave in an inscrutable manner. These gaps will, with perserverance and a modicum of luck, be remedied in the near future.To install this software: - 1. Create the source directories and libraries for perl by running the plan9/setup.rc command (i.e., located in the plan9 subdirectory). Note: the setup routine assumes that you haven't dearchived these files into /sys/src/cmd/perl. After running setup.rc you may delete the copy of the source you originally detarred, as source code has now been installed in /sys/src/cmd/perl. If you plan on installing perl binaries for all architectures, run "setup.rc -a". -After - 2. Making sure that you have adequate privileges to build system software, from /sys/src/cmd/perl/5.00301 run: -mk install - If you wish to install perl versions for all architectures (68020, mips, sparc and 386) run: -mk installall + This is a preliminary alpha version of Plan 9 Perl. Still to be +implemented are MakeMaker and DynaLoader. Many perl commands are +missing or currently behave in an inscrutable manner. These gaps will, +with perserverance and a modicum of luck, be remedied in the near +future.To install this software: + +1. Create the source directories and libraries for perl by running the +plan9/setup.rc command (i.e., located in the plan9 subdirectory). +Note: the setup routine assumes that you haven't dearchived these +files into /sys/src/cmd/perl. After running setup.rc you may delete +the copy of the source you originally detarred, as source code has now +been installed in /sys/src/cmd/perl. If you plan on installing perl +binaries for all architectures, run "setup.rc -a". + +2. After making sure that you have adequate privileges to build system +software, from /sys/src/cmd/perl/5.00301 (adjust version +appropriately) run: + + mk install + +If you wish to install perl versions for all architectures (68020, +mips, sparc and 386) run: + + mk installall + +3. Wait. The build process will take a *long* time because perl +bootstraps itself. A 75MHz Pentium, 16MB RAM machine takes roughly 30 +minutes to build the distribution from scratch. - 3. Wait. The build process will take a *long* time because perl bootstraps itself. A 75MHz Pentium, 16MB RAM machine takes roughly 30 minutes to build the distribution from scratch. +=head2 Installing Perl Documentation on Plan 9 + +This perl distribution comes with a tremendous amount of +documentation. To add these to the built-in manuals that come with +Plan 9, from /sys/src/cmd/perl/5.00301 (adjust version appropriately) +run: + + mk man -INSTALLING DOCUMENTATION -This perl distribution comes with a tremendous amount of documentation. To add these to the built-in manuals that come with Plan 9, from /sys/src/cmd/perl/5.00301 run: -mk man To begin your reading, start with: -man perl -This is a good introduction and will direct you towards other man pages that may interest you. For information specific to Plan 9 Perl, try: -man perlplan9 + + man perl + +This is a good introduction and will direct you towards other man +pages that may interest you. (Note: "mk man" may produce some extraneous noise. Fear not.) -Direct questions, comments, and the unlikely bug report (ahem) direct comments toward: -lutherh@stratcom.com +=head1 BUGS + +"As many as there are grains of sand on all the beaches of the +world . . ." - Carl Sagan + +=head1 Revision date + +This document was revised 09-October-1996 for Perl 5.003_7. + +=head1 AUTHOR + +Direct questions, comments, and the unlikely bug report (ahem) direct +comments toward: -Luther Huffman +Luther Huffman, lutherh@stratcom.com, Strategic Computer Solutions, Inc. diff --git a/README.qnx b/README.qnx index 0cfe3533ca..ebff5482a1 100644 --- a/README.qnx +++ b/README.qnx @@ -1,22 +1,96 @@ -README.qnx +If you read this file _as_is_, just ignore the funny characters you see. +It is written in the POD format (see pod/perlpod.pod) which is specially +designed to be readable as is. -Please see hints/qnx.sh for more detailed information about compiling -perl under QNX4. +=head1 NAME + +README.qnx - Perl version 5 on QNX + +=head1 DESCRIPTION + +As of perl5.004_04, all tests pass under: + + QNX 4.23A + Watcom 10.6 with Beta/970211.wcc.update.tar.F + socket3r.lib Nov21 1996. + +Update June 2001: Perl 5.6.1 most probably also works just fine in QNX. + +=head2 Required Software for Compiling Perl on QNX + +As with many unix ports, this one depends on a few "standard" +unix utilities which are not necessarily standard for QNX. + +=over 4 + +=item /bin/sh + +This is used heavily by Configure and then by +perl itself. QNX's version is fine, but Configure +will choke on the 16-bit version, so if you are +running QNX 4.22, link /bin/sh to /bin32/ksh + +=item ar + +This is the standard unix library builder. +We use wlib. With Watcom 10.6, when wlib is +linked as "ar", it behaves like ar and all is +fine. Under 9.5, a cover is required. One is +included in ../qnx + +=item nm + +This is used (optionally) by configure to list +the contents of libraries. I will generate +a cover function on the fly in the UU directory. + +=item cpp + +Configure and perl need a way to invoke a C +preprocessor. I have created a simple cover +for cc which does the right thing. Without this, +Configure will create it's own wrapper which works, +but it doesn't handle some of the command line arguments +that perl will throw at it. + +=item make + +You really need GNU make to compile this. GNU make +ships by default with QNX 4.23, but you can get it +from quics for earlier versions. + +=back + +=head2 Outstanding Issues with Perl on QNX + +There is currently no support for dynamically linked libraries. + +=head2 QNX auxiliary files The files in the "qnx" directory are: - * "qnx/ar" is a script that emulates the standard unix archive (aka - library) utility. Under Watcom 10.6, ar is linked to wlib and - provides the expected interface. With Watcom 9.5, a cover function - is required. This one is fairly crude but has proved adequate for - compiling perl. A more thorough version is available at: +=over 4 + +=item qnx/ar + +A script that emulates the standard unix archive (aka library) +utility. Under Watcom 10.6, ar is linked to wlib and provides the +expected interface. With Watcom 9.5, a cover function is +required. This one is fairly crude but has proved adequate for +compiling perl. A more thorough version is available at: http://www.fdma.com/pub/qnx/porting/ar - * "qnx/cpp" is a script that provides C preprocessing functionality. - Configure can generate a similar cover, but it doesn't handle all - the command-line options that perl throws at it. This might be - reasonably placed in /usr/local/bin. +=item qnx/cpp + +A script that provides C preprocessing functionality. Configure can +generate a similar cover, but it doesn't handle all the command-line +options that perl throws at it. This might be reasonably placed in +/usr/local/bin. + +=back + +=head1 AUTHOR --- Norton T. Allen (allen@huarp.harvard.edu) + diff --git a/README.solaris b/README.solaris index 1a36a8a94a..5231c0c393 100644 --- a/README.solaris +++ b/README.solaris @@ -73,7 +73,7 @@ All Solaris documentation is available on-line at L<http://docs.sun.com>. =head1 SETTING UP -=head2 File Extraction Problems. +=head2 File Extraction Problems on Solaris. Be sure to use a tar program compiled under Solaris (not SunOS 4.x) to extract the perl-5.x.x.tar.gz file. Do not use GNU tar compiled @@ -85,7 +85,7 @@ If you found this advice it too late and used a SunOS4-compiled tar anyway, you must find the incorrectly renamed file and move it back to lib/locale.pm. -=head2 Compiler and Related Tools. +=head2 Compiler and Related Tools on Solaris. You must use an ANSI C compiler to build perl. Perl can be compiled with either Sun's add-on C compiler or with gcc. The C compiler that @@ -197,7 +197,7 @@ Normally this is not a problem since the solaris hints file prevents Configure from even looking in /usr/ucblib for libraries, and also explicitly omits -lucb. -=head2 Environment +=head2 Environment for Compiling Perl on Solaris =head3 PATH @@ -234,7 +234,7 @@ See the INSTALL file for general information regarding Configure. Only Solaris-specific issues are discussed here. Usually, the defaults should be fine. -=head2 64-bit Issues. +=head2 64-bit Issues with Perl on Solaris. See the INSTALL file for general information regarding 64-bit compiles. In general, the defaults should be fine for most people. @@ -362,7 +362,7 @@ requested. As of 5.6.0, long doubles are not working. -=head2 Threads. +=head2 Threads in Perl on Solaris. It is possible to build a threaded version of perl on Solaris. The entire perl thread implementation is still experimental, however, so beware. @@ -370,7 +370,7 @@ Perl uses the sched_yield(3RT) function. In versions of Solaris up to 2.6, that function is in -lposix4. Starting with Solaris 7, it is in -lrt. The hints file should handle adding this automatically. -=head2 Malloc Issues. +=head2 Malloc Issues with Perl on Solaris. Starting from Perl 5.7.1 Perl uses the Solaris malloc, since the perl malloc breaks when dealing with more than 2GB of memory, and the Solaris @@ -431,14 +431,14 @@ directory. =head1 MAKE TEST -=head2 op/stat.t test 4 +=head2 op/stat.t test 4 in Solaris op/stat.t test 4 may fail if you are on a tmpfs of some sort. Building in /tmp sometimes shows this behavior. The test suite detects if you are building in /tmp, but it may not be able to catch all tmpfs situations. -=head1 PREBUILT BINARIES. +=head1 PREBUILT BINARIES OF PERL FOR SOLARIS. You can pick up prebuilt binaries for Solaris from L<http://www.sunfreeware.com/>, ActiveState L<http://www.activestate.com/>, @@ -446,9 +446,9 @@ and L<http://www.perl.com/> under the Binaries list at the top of the page. There are probably other sources as well. Please note that these sites are under the control of their respective owners, not the perl developers. -=head1 RUNTIME ISSUES. +=head1 RUNTIME ISSUES FOR PERL ON SOLARIS. -=head2 Limits on Numbers of Open Files. +=head2 Limits on Numbers of Open Files on Solaris. The stdio(3C) manpage notes that only 255 files may be opened using fopen(), and only file descriptors 0 through 255 can be used in a @@ -463,7 +463,7 @@ L<http://www.cpan.org/modules/by-module/Solaris/>. =head1 SOLARIS-SPECIFIC PROBLEMS WITH MODULES. -=head2 Proc::ProcessTable +=head2 Proc::ProcessTable on Solaris Proc::ProcessTable does not compile on Solaris with perl5.6.0 and higher if you have LARGEFILES defined. Since largefile support is the @@ -483,13 +483,13 @@ under the correct environment. Everything should then be OK as long as Proc::ProcessTable doesn't try to share off_t's with the rest of perl, or if it does they should be explicitly specified as off64_t. -=head2 BSD::Resource +=head2 BSD::Resource on Solairs BSD::Resource versions earlier than 1.09 do not compile on Solaris with perl 5.6.0 and higher, for the same reasons as Proc::ProcessTable. BSD::Resource versions starting from 1.09 have a workaround for the problem. -=head2 Net::SSLeay +=head2 Net::SSLeay on Soalris Net::SSLeay requires a /dev/urandom to be present. This device is not part of Solaris. You can either get the package SUNWski (packaged with diff --git a/README.vmesa b/README.vmesa index a67e6bff48..6b69de452a 100644 --- a/README.vmesa +++ b/README.vmesa @@ -26,20 +26,20 @@ the source code below /usr/local (though that is where it will be installed by default). You may need to worry about the networking configuration files discussed in the last bullet below. -=head2 Unpacking +=head2 Unpacking Perl Distribution on VM/ESA To extract an ASCII tar archive on VM/ESA, try this: pax -o to=IBM-1047,from=ISO8859-1 -r < latest.tar -=head2 Setup and utilities +=head2 Setup Perl and utilities on VM/ESA GNU make for VM/ESA, which may be required for the build of perl, is available from: http://pucc.princeton.edu/~neale/vmoe.html -=head2 Configure +=head2 Configure Perl on VM/ESA Once you've unpacked the distribution, run Configure (see INSTALL for full discussion of the Configure options), and then run make, then @@ -79,7 +79,7 @@ statements in the preprocessor output (.i) file. =back -=head2 testing anomalies +=head2 Testing Anomalies of Perl on VM/ESA The `make test` step runs a Perl Verification Procedure, usually before installation. As the 5.6.1 kit was was being assembled @@ -89,7 +89,7 @@ your results may differ: [the list of failures being compiled] -=head2 Usage Hints +=head2 Usage Hints for Perl on VM/ESA When using perl on VM/ESA please keep in mind that the EBCDIC and ASCII character sets are different. Perl builtin functions that may behave @@ -112,12 +112,13 @@ Neale Ferguson. L<INSTALL>, L<perlport>, L<perlebcdic>. -=head2 Mailing list +=head2 Mailing list for Perl on VM/ESA -If you are interested in the VM and OS/390 ports of perl then see the -perl-mvs mailing list: The Perl Institute (http://www.perl.org/) -maintains a mailing list of interest to all folks building and/or -using perl on EBCDIC platforms. To subscribe, send a message of: +If you are interested in the VM/ESA, z/OS (formerly known as OS/390) +and POSIX-BC (BS2000) ports of Perl then see the perl-mvs mailing list: +The Perl Institute (http://www.perl.org/) maintains a mailing list of +interest to all folks building and/or using perl on EBCDIC platforms. +To subscribe, send a message of: subscribe perl-mvs diff --git a/README.vms b/README.vms index 674432229d..524eb2f43a 100644 --- a/README.vms +++ b/README.vms @@ -36,7 +36,7 @@ but the media charges might prohibit an upgrade), consider getting Gnu C instead. -=head2 Introduction +=head2 Introduction to Perl on VMS The VMS port of Perl is as functionally complete as any other Perl port (and as complete as the ports on some Unix systems). The Perl binaries @@ -59,7 +59,7 @@ There are issues with various versions of DEC C, so if you're not running a relatively modern version, check the "DEC C issues" section later on in this document. -=head2 Other required software +=head2 Other required software for Compiling Perl on VMS In addition to VMS and DCL you will need two things: @@ -79,7 +79,7 @@ go ahead and use that. =back -=head2 Additional software that is optional +=head2 Additional software that is optional for Perl on VMS You may also want to have on hand: @@ -207,7 +207,7 @@ then be sure to also follow the advice in the "Cleaning up and starting fresh (optional)" and the checklist of items in the "CAVEATS" sections below. -=head2 Changing compile-time options (optional) +=head2 Changing compile-time options (optional) for Perl on VMS Most of the user definable features of Perl are enabled or disabled in [.VMS]CONFIG.VMS. There is code in there to Do The Right Thing, but that @@ -224,7 +224,7 @@ The one exception is the various *DIR install locations. Changing those requires changes in genconfig.pl as well. Be really careful if you need to change these, as they can cause some fairly subtle problems. -=head2 Socket Support (optional) +=head2 Socket Support (optional) for Perl on VMS Perl includes a number of functions for IP sockets, which are available if you choose to compile Perl with socket support. Since IP networking is an @@ -322,7 +322,7 @@ with DEC C, "gcc --version" with GNU CC). To obtain the version of MMS or MMK you are running try "MMS/ident" or "MMK /ident". The GNU make version can be identified with "make --version". -=head2 Cleaning up and starting fresh (optional) +=head2 Cleaning up and starting fresh (optional) installing Perl on VMS If you need to recompile from scratch, you have to make sure you clean up first. There is a procedure to do it--enter the *exact* MMS line you used @@ -408,7 +408,7 @@ is to simply copy it into the system shareable library directory with: See also the "INSTALLing images (optional)" section. -=head2 Installing Perl into DCLTABLES (optional) +=head2 Installing Perl into DCLTABLES (optional) on VMS Execute the following command file to define PERL as a DCL command. You'll need CMKRNL privilege to install the new dcltables.exe. @@ -426,7 +426,7 @@ You'll need CMKRNL privilege to install the new dcltables.exe. $ install replace sys$common:[syslib]dcltables.exe $ exit -=head2 INSTALLing images (optional) +=head2 INSTALLing Perl images (optional) on VMS On systems that are using perl quite a bit, and particularly those with minimal RAM, you can boost the performance of perl by INSTALLing it as @@ -494,7 +494,7 @@ A final thing that causes trouble is leftover pieces from a failed build. If things go wrong make sure you do a "(MMK|MMS|make) realclean" before you rebuild. -=head2 DEC C issues +=head2 DEC C issues with Perl on VMS Note to DEC C users: Some early versions (pre-5.2, some pre-4. If you're DEC C 5.x or higher, with current patches if any, you're fine) of the DECCRTL @@ -531,7 +531,7 @@ See also: Please note that in later versions "DEC C" may also be known as "Compaq C". -=head2 GNU issues +=head2 GNU issues with Perl on VMS It has been a while since the GNU utilities such as GCC or GNU make were used to build perl on VMS. Hence they may require a great deal @@ -555,11 +555,11 @@ to all subscribers of the list. There is a searchable archive of the list on the web at: http://www.xray.mpe.mpg.de/mailing-lists/vmsperl/ - + To unsubscribe from VMSPERL send a message to VMSPERL-UNSUBSCRIBE@PERL.ORG. Be sure to do so from the subscribed account that you are canceling. -=head2 Web sites +=head2 Web sites for Perl on VMS Vmsperl pages on the web include: diff --git a/README.vos b/README.vos index b44f3cf9f0..5a4cb78ef7 100644 --- a/README.vos +++ b/README.vos @@ -172,7 +172,7 @@ to see the order in which Perl searches these directories. =head1 USING PERL IN VOS -=head2 Unimplemented Features +=head2 Unimplemented Features of Perl on VOS If perl is built with the alpha version of VOS POSIX.1 support and if it attempts to call an unimplemented VOS POSIX.1 @@ -182,7 +182,7 @@ a list of the unimplemented POSIX.1 functions. To see what functions are unimplemented and what the error message looks like, compile and execute "test_vos_dummies.c". -=head2 Restrictions +=head2 Restrictions of Perl on VOS This port of Perl version 5 to VOS prefers Unix-style, slash-separated pathnames over VOS-style greater-than-separated diff --git a/README.win32 b/README.win32 index 49d2d62e35..e21281e3b4 100644 --- a/README.win32 +++ b/README.win32 @@ -1,716 +1,716 @@ -If you read this file _as_is_, just ignore the funny characters you -see. It is written in the POD format (see pod/perlpod.pod) which is -specially designed to be readable as is. - -=head1 NAME - -perlwin32 - Perl under Win32 - -=head1 SYNOPSIS - -These are instructions for building Perl under Windows (9x, NT and -2000). - -=head1 DESCRIPTION - -Before you start, you should glance through the README file -found in the top-level directory to which the Perl distribution -was extracted. Make sure you read and understand the terms under -which this software is being distributed. - -Also make sure you read L<BUGS AND CAVEATS> below for the -known limitations of this port. - -The INSTALL file in the perl top-level has much information that is -only relevant to people building Perl on Unix-like systems. In -particular, you can safely ignore any information that talks about -"Configure". - -You may also want to look at two other options for building -a perl that will work on Windows NT: the README.cygwin and -README.os2 files, each of which give a different set of rules to -build a Perl that will work on Win32 platforms. Those two methods -will probably enable you to build a more Unix-compatible perl, but -you will also need to download and use various other build-time and -run-time support software described in those files. - -This set of instructions is meant to describe a so-called "native" -port of Perl to Win32 platforms. The resulting Perl requires no -additional software to run (other than what came with your operating -system). Currently, this port is capable of using one of the -following compilers: - - Borland C++ version 5.02 or later - Microsoft Visual C++ version 4.2 or later - Mingw32 with GCC version 2.95.2 or better - -The last of these is a high quality freeware compiler. Support -for it is still experimental. (Older versions of GCC are known -not to work.) - -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. -See L<Usage Hints> below for general hints about this. - -=head2 Setting Up - -=over 4 - -=item Make - -You need a "make" program to build the sources. If you are using -Visual C++ under Windows NT or 2000, nmake will work. All other -builds need dmake. - -dmake is a freely available make that has very nice macro features -and parallelability. - -A port of dmake for Windows is available from: - - http://www.cpan.org/authors/id/GSAR/dmake-4.1pl1-win32.zip - -(This is a fixed version of the original dmake sources obtained from -http://www.wticorp.com/dmake/. As of version 4.1PL1, the original -sources did not build as shipped and had various other problems. -A patch is included in the above fixed version.) - -Fetch and install dmake somewhere on your path (follow the instructions -in the README.NOW file). - -There exists a minor coexistence problem with dmake and Borland C++ -compilers. Namely, if a distribution has C files named with mixed -case letters, they will be compiled into appropriate .obj-files named -with all lowercase letters, and every time dmake is invoked -to bring files up to date, it will try to recompile such files again. -For example, Tk distribution has a lot of such files, resulting in -needless recompiles everytime dmake is invoked. To avoid this, you -may use the script "sncfnmcs.pl" after a successful build. It is -available in the win32 subdirectory of the Perl source distribution. - -=item Command Shell - -Use the default "cmd" shell that comes with NT. Some versions of the -popular 4DOS/NT shell have incompatibilities that may cause you trouble. -If the build fails under that shell, try building again with the cmd -shell. - -The nmake Makefile also has known incompatibilities with the -"command.com" shell that comes with Windows 9x. You will need to -use dmake and makefile.mk to build under Windows 9x. - -The surest way to build it is on Windows NT, using the cmd shell. - -Make sure the path to the build directory does not contain spaces. The -build usually works in this circumstance, but some tests will fail. - -=item Borland C++ - -If you are using the Borland compiler, you will need dmake. -(The make that Borland supplies is seriously crippled and will not -work for MakeMaker builds.) - -See L</"Make"> above. - -=item Microsoft Visual C++ - -The nmake that comes with Visual C++ will suffice for building. -You will need to run the VCVARS32.BAT file, usually found somewhere -like C:\MSDEV4.2\BIN. This will set your build environment. - -You can also use dmake to build using Visual C++; provided, however, -you set OSRELEASE to "microsft" (or whatever the directory name -under which the Visual C dmake configuration lives) in your environment -and edit win32/config.vc to change "make=nmake" into "make=dmake". The -latter step is only essential if you want to use dmake as your default -make for building extensions using MakeMaker. - -=item Mingw32 with GCC - -GCC-2.95.2 binaries can be downloaded from: - - ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/ - -You also need dmake. See L</"Make"> above on how to get it. - -The GCC-2.95.2 bundle comes with Mingw32 libraries and headers. - -Make sure you install the binaries that work with MSVCRT.DLL as indicated -in the README for the GCC bundle. You may need to set up a few environment -variables (usually ran from a batch file). - -There are a couple of problems with the version of gcc-2.95.2-msvcrt.exe -released 7 November 1999: - -=over - -=item * - -It left out a fix for certain command line quotes. To fix this, be sure -to download and install the file fixes/quote-fix-msvcrt.exe from the above -ftp location. - -=item * - -The definition of the fpos_t type in stdio.h may be wrong. If your -stdio.h has this problem, you will see an exception when running the -test t/lib/io_xs.t. To fix this, change the typedef for fpos_t from -"long" to "long long" in the file i386-mingw32msvc/include/stdio.h, -and rebuild. - -=back - -A potentially simpler to install (but probably soon-to-be-outdated) bundle -of the above package with the mentioned fixes already applied is available -here: - - http://downloads.ActiveState.com/pub/staff/gsar/gcc-2.95.2-msvcrt.zip - ftp://ftp.ActiveState.com/pub/staff/gsar/gcc-2.95.2-msvcrt.zip - -=back - -=head2 Building - -=over 4 - -=item * - -Make sure you are in the "win32" subdirectory under the perl toplevel. -This directory contains a "Makefile" that will work with -versions of nmake that come with Visual C++, and a dmake "makefile.mk" -that will work for all supported compilers. The defaults in the dmake -makefile are setup to build using the GCC compiler. - -=item * - -Edit the makefile.mk (or Makefile, if you're using nmake) and change -the values of INST_DRV and INST_TOP. You can also enable various -build flags. These are explained in the makefiles. - -You will have to make sure that CCTYPE is set correctly and that -CCHOME points to wherever you installed your compiler. - -The default value for CCHOME in the makefiles for Visual C++ -may not be correct for some versions. Make sure the default exists -and is valid. - -If you have either the source or a library that contains des_fcrypt(), -enable the appropriate option in the makefile. des_fcrypt() is not -bundled with the distribution due to US Government restrictions -on the export of cryptographic software. Nevertheless, this routine -is part of the "libdes" library (written by Eric Young) which is widely -available worldwide, usually along with SSLeay (for example, -"ftp://fractal.mta.ca/pub/crypto/SSLeay/DES/"). Set CRYPT_SRC to the -name of the file that implements des_fcrypt(). Alternatively, if -you have built a library that contains des_fcrypt(), you can set -CRYPT_LIB to point to the library name. The location above contains -many versions of the "libdes" library, all with slightly different -implementations of des_fcrypt(). Older versions have a single, -self-contained file (fcrypt.c) that implements crypt(), so they may be -easier to use. A patch against the fcrypt.c found in libdes-3.06 is -in des_fcrypt.patch. - -Perl will also build without des_fcrypt(), but the crypt() builtin will -fail at run time. - -Be sure to read the instructions near the top of the makefiles carefully. - -=item * - -Type "dmake" (or "nmake" if you are using that make). - -This should build everything. Specifically, it will create perl.exe, -perl56.dll at the perl toplevel, and various other extension dll's -under the lib\auto directory. If the build fails for any reason, make -sure you have done the previous steps correctly. - -=back - -=head2 Testing - -Type "dmake test" (or "nmake test"). This will run most of the tests from -the testsuite (many tests will be skipped). - -There should be no test failures when running under Windows NT 4.0 or -Windows 2000. Many tests I<will> fail under Windows 9x due to the inferior -command shell. - -Some test failures may occur if you use a command shell other than the -native "cmd.exe", or if you are building from a path that contains -spaces. So don't do that. - -If you are running the tests from a emacs shell window, you may see -failures in op/stat.t. Run "dmake test-notty" in that case. - -If you're using the Borland compiler, you may see a failure in op/taint.t -arising from the inability to find the Borland Runtime DLLs on the system -default path. You will need to copy the DLLs reported by the messages -from where Borland chose to install it, into the Windows system directory -(usually somewhere like C:\WINNT\SYSTEM32) and rerun the test. - -If you're using Borland compiler versions 5.2 and below, you may run into -problems finding the correct header files when building extensions. For -example, building the "Tk" extension may fail because both perl and Tk -contain a header file called "patchlevel.h". The latest Borland compiler -(v5.5) is free of this misbehaviour, and it even supports an -option -VI- for backward (bugward) compatibility for using the old Borland -search algorithm to locate header files. - -Please report any other failures as described under L<BUGS AND CAVEATS>. - -=head2 Installation - -Type "dmake install" (or "nmake install"). This will put the newly -built perl and the libraries under whatever C<INST_TOP> points to in the -Makefile. It will also install the pod documentation under -C<$INST_TOP\$VERSION\lib\pod> and HTML versions of the same under -C<$INST_TOP\$VERSION\lib\pod\html>. To use the Perl you just installed, -you will need to add two components to your PATH environment variable, -C<$INST_TOP\$VERSION\bin> and C<$INST_TOP\$VERSION\bin\$ARCHNAME>. -For example: - - set PATH c:\perl\5.6.0\bin;c:\perl\5.6.0\bin\MSWin32-x86;%PATH% - -If you opt to comment out INST_VER and INST_ARCH in the makefiles, the -installation structure is much simpler. In that case, it will be -sufficient to add a single entry to the path, for instance: - - set PATH c:\perl\bin;%PATH% - -=head2 Usage Hints - -=over 4 - -=item Environment Variables - -The installation paths that you set during the build get compiled -into perl, so you don't have to do anything additional to start -using that perl (except add its location to your PATH variable). - -If you put extensions in unusual places, you can set PERL5LIB -to a list of paths separated by semicolons where you want perl -to look for libraries. Look for descriptions of other environment -variables you can set in L<perlrun>. - -You can also control the shell that perl uses to run system() and -backtick commands via PERL5SHELL. See L<perlrun>. - -Perl does not depend on the registry, but it can look up certain default -values if you choose to put them there. Perl attempts to read entries from -C<HKEY_CURRENT_USER\Software\Perl> and C<HKEY_LOCAL_MACHINE\Software\Perl>. -Entries in the former override entries in the latter. One or more of the -following entries (of type REG_SZ or REG_EXPAND_SZ) may be set: - - lib-$] version-specific standard library path to add to @INC - lib standard library path to add to @INC - sitelib-$] version-specific site library path to add to @INC - sitelib site library path to add to @INC - vendorlib-$] version-specific vendor library path to add to @INC - vendorlib vendor library path to add to @INC - PERL* fallback for all %ENV lookups that begin with "PERL" - -Note the C<$]> in the above is not literal. Substitute whatever version -of perl you want to honor that entry, e.g. C<5.6.0>. Paths must be -separated with semicolons, as usual on win32. - -=item File Globbing - -By default, perl handles file globbing using the File::Glob extension, -which provides portable globbing. - -If you want perl to use globbing that emulates the quirks of DOS -filename conventions, you might want to consider using File::DosGlob -to override the internal glob() implementation. See L<File::DosGlob> for -details. - -=item Using perl from the command line - -If you are accustomed to using perl from various command-line -shells found in UNIX environments, you will be less than pleased -with what Windows offers by way of a command shell. - -The crucial thing to understand about the Windows environment is that -the command line you type in is processed twice before Perl sees it. -First, your command shell (usually CMD.EXE on Windows NT, and -COMMAND.COM on Windows 9x) preprocesses the command line, to handle -redirection, environment variable expansion, and location of the -executable to run. Then, the perl executable splits the remaining -command line into individual arguments, using the C runtime library -upon which Perl was built. - -It is particularly important to note that neither the shell nor the C -runtime do any wildcard expansions of command-line arguments (so -wildcards need not be quoted). Also, the quoting behaviours of the -shell and the C runtime are rudimentary at best (and may, if you are -using a non-standard shell, be inconsistent). The only (useful) quote -character is the double quote ("). It can be used to protect spaces -and other special characters in arguments. - -The Windows NT documentation has almost no description of how the -quoting rules are implemented, but here are some general observations -based on experiments: The C runtime breaks arguments at spaces and -passes them to programs in argc/argv. Double quotes can be used to -prevent arguments with spaces in them from being split up. You can -put a double quote in an argument by escaping it with a backslash and -enclosing the whole argument within double quotes. The backslash and -the pair of double quotes surrounding the argument will be stripped by -the C runtime. - -The file redirection characters "<", ">", and "|" can be quoted by -double quotes (although there are suggestions that this may not always -be true). Single quotes are not treated as quotes by the shell or -the C runtime, they don't get stripped by the shell (just to make -this type of quoting completely useless). The caret "^" has also -been observed to behave as a quoting character, but this appears -to be a shell feature, and the caret is not stripped from the command -line, so Perl still sees it (and the C runtime phase does not treat -the caret as a quote character). - -Here are some examples of usage of the "cmd" shell: - -This prints two doublequotes: - - perl -e "print '\"\"' " - -This does the same: - - perl -e "print \"\\\"\\\"\" " - -This prints "bar" and writes "foo" to the file "blurch": - - perl -e "print 'foo'; print STDERR 'bar'" > blurch - -This prints "foo" ("bar" disappears into nowhereland): - - perl -e "print 'foo'; print STDERR 'bar'" 2> nul - -This prints "bar" and writes "foo" into the file "blurch": - - perl -e "print 'foo'; print STDERR 'bar'" 1> blurch - -This pipes "foo" to the "less" pager and prints "bar" on the console: - - perl -e "print 'foo'; print STDERR 'bar'" | less - -This pipes "foo\nbar\n" to the less pager: - - perl -le "print 'foo'; print STDERR 'bar'" 2>&1 | less - -This pipes "foo" to the pager and writes "bar" in the file "blurch": - - perl -e "print 'foo'; print STDERR 'bar'" 2> blurch | less - - -Discovering the usefulness of the "command.com" shell on Windows 9x -is left as an exercise to the reader :) - -One particularly pernicious problem with the 4NT command shell for -Windows NT is that it (nearly) always treats a % character as indicating -that environment variable expansion is needed. Under this shell, it is -therefore important to always double any % characters which you want -Perl to see (for example, for hash variables), even when they are -quoted. - -=item Building Extensions - -The Comprehensive Perl Archive Network (CPAN) offers a wealth -of extensions, some of which require a C compiler to build. -Look in http://www.cpan.org/ for more information on CPAN. - -Note that not all of the extensions available from CPAN may work -in the Win32 environment; you should check the information at -http://testers.cpan.org/ before investing too much effort into -porting modules that don't readily build. - -Most extensions (whether they require a C compiler or not) can -be built, tested and installed with the standard mantra: - - perl Makefile.PL - $MAKE - $MAKE test - $MAKE install - -where $MAKE is whatever 'make' program you have configured perl to -use. Use "perl -V:make" to find out what this is. Some extensions -may not provide a testsuite (so "$MAKE test" may not do anything or -fail), but most serious ones do. - -It is important that you use a supported 'make' program, and -ensure Config.pm knows about it. If you don't have nmake, you can -either get dmake from the location mentioned earlier or get an -old version of nmake reportedly available from: - - ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe - -Another option is to use the make written in Perl, available from -CPAN: - - http://www.cpan.org/authors/id/NI-S/Make-0.03.tar.gz - -You may also use dmake. See L</"Make"> above on how to get it. - -Note that MakeMaker actually emits makefiles with different syntax -depending on what 'make' it thinks you are using. Therefore, it is -important that one of the following values appears in Config.pm: - - make='nmake' # MakeMaker emits nmake syntax - make='dmake' # MakeMaker emits dmake syntax - any other value # MakeMaker emits generic make syntax - (e.g GNU make, or Perl make) - -If the value doesn't match the 'make' program you want to use, -edit Config.pm to fix it. - -If a module implements XSUBs, you will need one of the supported -C compilers. You must make sure you have set up the environment for -the compiler for command-line compilation. - -If a module does not build for some reason, look carefully for -why it failed, and report problems to the module author. If -it looks like the extension building support is at fault, report -that with full details of how the build failed using the perlbug -utility. - -=item Command-line Wildcard Expansion - -The default command shells on DOS descendant operating systems (such -as they are) usually do not expand wildcard arguments supplied to -programs. They consider it the application's job to handle that. -This is commonly achieved by linking the application (in our case, -perl) with startup code that the C runtime libraries usually provide. -However, doing that results in incompatible perl versions (since the -behavior of the argv expansion code differs depending on the -compiler, and it is even buggy on some compilers). Besides, it may -be a source of frustration if you use such a perl binary with an -alternate shell that *does* expand wildcards. - -Instead, the following solution works rather well. The nice things -about it are 1) you can start using it right away; 2) it is more -powerful, because it will do the right thing with a pattern like -*/*/*.c; 3) you can decide whether you do/don't want to use it; and -4) you can extend the method to add any customizations (or even -entirely different kinds of wildcard expansion). - - C:\> copy con c:\perl\lib\Wild.pm - # Wild.pm - emulate shell @ARGV expansion on shells that don't - use File::DosGlob; - @ARGV = map { - my @g = File::DosGlob::glob($_) if /[*?]/; - @g ? @g : $_; - } @ARGV; - 1; - ^Z - C:\> set PERL5OPT=-MWild - C:\> perl -le "for (@ARGV) { print }" */*/perl*.c - p4view/perl/perl.c - p4view/perl/perlio.c - p4view/perl/perly.c - perl5.005/win32/perlglob.c - perl5.005/win32/perllib.c - perl5.005/win32/perlglob.c - perl5.005/win32/perllib.c - perl5.005/win32/perlglob.c - perl5.005/win32/perllib.c - -Note there are two distinct steps there: 1) You'll have to create -Wild.pm and put it in your perl lib directory. 2) You'll need to -set the PERL5OPT environment variable. If you want argv expansion -to be the default, just set PERL5OPT in your default startup -environment. - -If you are using the Visual C compiler, you can get the C runtime's -command line wildcard expansion built into perl binary. The resulting -binary will always expand unquoted command lines, which may not be -what you want if you use a shell that does that for you. The expansion -done is also somewhat less powerful than the approach suggested above. - -=item Win32 Specific Extensions - -A number of extensions specific to the Win32 platform are available -from CPAN. You may find that many of these extensions are meant to -be used under the Activeware port of Perl, which used to be the only -native port for the Win32 platform. Since the Activeware port does not -have adequate support for Perl's extension building tools, these -extensions typically do not support those tools either and, therefore, -cannot be built using the generic steps shown in the previous section. - -To ensure smooth transitioning of existing code that uses the -ActiveState port, there is a bundle of Win32 extensions that contains -all of the ActiveState extensions and most other Win32 extensions from -CPAN in source form, along with many added bugfixes, and with MakeMaker -support. This bundle is available at: - - http://www.cpan.org/authors/id/GSAR/libwin32-0.151.zip - -See the README in that distribution for building and installation -instructions. Look for later versions that may be available at the -same location. - -=item Running Perl Scripts - -Perl scripts on UNIX use the "#!" (a.k.a "shebang") line to -indicate to the OS that it should execute the file using perl. -Win32 has no comparable means to indicate arbitrary files are -executables. - -Instead, all available methods to execute plain text files on -Win32 rely on the file "extension". There are three methods -to use this to execute perl scripts: - -=over 8 - -=item 1 - -There is a facility called "file extension associations" that will -work in Windows NT 4.0. This can be manipulated via the two -commands "assoc" and "ftype" that come standard with Windows NT -4.0. Type "ftype /?" for a complete example of how to set this -up for perl scripts (Say what? You thought Windows NT wasn't -perl-ready? :). - -=item 2 - -Since file associations don't work everywhere, and there are -reportedly bugs with file associations where it does work, the -old method of wrapping the perl script to make it look like a -regular batch file to the OS, may be used. The install process -makes available the "pl2bat.bat" script which can be used to wrap -perl scripts into batch files. For example: - - pl2bat foo.pl - -will create the file "FOO.BAT". Note "pl2bat" strips any -.pl suffix and adds a .bat suffix to the generated file. - -If you use the 4DOS/NT or similar command shell, note that -"pl2bat" uses the "%*" variable in the generated batch file to -refer to all the command line arguments, so you may need to make -sure that construct works in batch files. As of this writing, -4DOS/NT users will need a "ParameterChar = *" statement in their -4NT.INI file or will need to execute "setdos /p*" in the 4DOS/NT -startup file to enable this to work. - -=item 3 - -Using "pl2bat" has a few problems: the file name gets changed, -so scripts that rely on C<$0> to find what they must do may not -run properly; running "pl2bat" replicates the contents of the -original script, and so this process can be maintenance intensive -if the originals get updated often. A different approach that -avoids both problems is possible. - -A script called "runperl.bat" is available that can be copied -to any filename (along with the .bat suffix). For example, -if you call it "foo.bat", it will run the file "foo" when it is -executed. Since you can run batch files on Win32 platforms simply -by typing the name (without the extension), this effectively -runs the file "foo", when you type either "foo" or "foo.bat". -With this method, "foo.bat" can even be in a different location -than the file "foo", as long as "foo" is available somewhere on -the PATH. If your scripts are on a filesystem that allows symbolic -links, you can even avoid copying "runperl.bat". - -Here's a diversion: copy "runperl.bat" to "runperl", and type -"runperl". Explain the observed behavior, or lack thereof. :) -Hint: .gnidnats llits er'uoy fi ,"lrepnur" eteled :tniH - -=back - -=item Miscellaneous Things - -A full set of HTML documentation is installed, so you should be -able to use it if you have a web browser installed on your -system. - -C<perldoc> is also a useful tool for browsing information contained -in the documentation, especially in conjunction with a pager -like C<less> (recent versions of which have Win32 support). You may -have to set the PAGER environment variable to use a specific pager. -"perldoc -f foo" will print information about the perl operator -"foo". - -If you find bugs in perl, you can run C<perlbug> to create a -bug report (you may have to send it manually if C<perlbug> cannot -find a mailer on your system). - -=back - -=head1 BUGS AND CAVEATS - -Norton AntiVirus interferes with the build process, particularly if -set to "AutoProtect, All Files, when Opened". Unlike large applications -the perl build process opens and modifies a lot of files. Having the -the AntiVirus scan each and every one slows build the process significantly. -Worse, with PERLIO=stdio the build process fails with peculiar messages -as the virus checker interacts badly with miniperl.exe writing configure -files (it seems to either catch file part written and treat it as suspicious, -or virus checker may have it "locked" in a way which inhibits miniperl -updating it). The build does complete with - - set PERLIO=perlio - -but that may be just luck. Other AntiVirus software may have similar issues. - -Some of the built-in functions do not act exactly as documented in -L<perlfunc>, and a few are not implemented at all. To avoid -surprises, particularly if you have had prior exposure to Perl -in other operating environments or if you intend to write code -that will be portable to other environments. See L<perlport> -for a reasonably definitive list of these differences. - -Not all extensions available from CPAN may build or work properly -in the Win32 environment. See L</"Building Extensions">. - -Most C<socket()> related calls are supported, but they may not -behave as on Unix platforms. See L<perlport> for the full list. - -Signal handling may not behave as on Unix platforms (where it -doesn't exactly "behave", either :). For instance, calling C<die()> -or C<exit()> from signal handlers will cause an exception, since most -implementations of C<signal()> on Win32 are severely crippled. -Thus, signals may work only for simple things like setting a flag -variable in the handler. Using signals under this port should -currently be considered unsupported. - -Please send detailed descriptions of any problems and solutions that -you may find to <F<perlbug@perl.com>>, along with the output produced -by C<perl -V>. - -=head1 AUTHORS - -=over 4 - -=item Gary Ng E<lt>71564.1743@CompuServe.COME<gt> - -=item Gurusamy Sarathy E<lt>gsar@activestate.comE<gt> - -=item Nick Ing-Simmons E<lt>nick@ing-simmons.netE<gt> - -=back - -This document is maintained by Gurusamy Sarathy. - -=head1 SEE ALSO - -L<perl> - -=head1 HISTORY - -This port was originally contributed by Gary Ng around 5.003_24, -and borrowed from the Hip Communications port that was available -at the time. Various people have made numerous and sundry hacks -since then. - -Borland support was added in 5.004_01 (Gurusamy Sarathy). - -GCC/mingw32 support was added in 5.005 (Nick Ing-Simmons). - -Support for PERL_OBJECT was added in 5.005 (ActiveState Tool Corp). - -Support for fork() emulation was added in 5.6 (ActiveState Tool Corp). - -Win9x support was added in 5.6 (Benjamin Stuhl). - -Last updated: 1 April 2001 - -=cut +If you read this file _as_is_, just ignore the funny characters you
+see. It is written in the POD format (see pod/perlpod.pod) which is
+specially designed to be readable as is.
+
+=head1 NAME
+
+perlwin32 - Perl under Win32
+
+=head1 SYNOPSIS
+
+These are instructions for building Perl under Windows (9x, NT and
+2000).
+
+=head1 DESCRIPTION
+
+Before you start, you should glance through the README file
+found in the top-level directory to which the Perl distribution
+was extracted. Make sure you read and understand the terms under
+which this software is being distributed.
+
+Also make sure you read L<BUGS AND CAVEATS> below for the
+known limitations of this port.
+
+The INSTALL file in the perl top-level has much information that is
+only relevant to people building Perl on Unix-like systems. In
+particular, you can safely ignore any information that talks about
+"Configure".
+
+You may also want to look at two other options for building
+a perl that will work on Windows NT: the README.cygwin and
+README.os2 files, each of which give a different set of rules to
+build a Perl that will work on Win32 platforms. Those two methods
+will probably enable you to build a more Unix-compatible perl, but
+you will also need to download and use various other build-time and
+run-time support software described in those files.
+
+This set of instructions is meant to describe a so-called "native"
+port of Perl to Win32 platforms. The resulting Perl requires no
+additional software to run (other than what came with your operating
+system). Currently, this port is capable of using one of the
+following compilers:
+
+ Borland C++ version 5.02 or later
+ Microsoft Visual C++ version 4.2 or later
+ Mingw32 with GCC version 2.95.2 or better
+
+The last of these is a high quality freeware compiler. Support
+for it is still experimental. (Older versions of GCC are known
+not to work.)
+
+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.
+See L<Usage Hints for Perl on Win32> below for general hints about this.
+
+=head2 Setting Up Perl on Win32
+
+=over 4
+
+=item Make
+
+You need a "make" program to build the sources. If you are using
+Visual C++ under Windows NT or 2000, nmake will work. All other
+builds need dmake.
+
+dmake is a freely available make that has very nice macro features
+and parallelability.
+
+A port of dmake for Windows is available from:
+
+ http://www.cpan.org/authors/id/GSAR/dmake-4.1pl1-win32.zip
+
+(This is a fixed version of the original dmake sources obtained from
+http://www.wticorp.com/dmake/. As of version 4.1PL1, the original
+sources did not build as shipped and had various other problems.
+A patch is included in the above fixed version.)
+
+Fetch and install dmake somewhere on your path (follow the instructions
+in the README.NOW file).
+
+There exists a minor coexistence problem with dmake and Borland C++
+compilers. Namely, if a distribution has C files named with mixed
+case letters, they will be compiled into appropriate .obj-files named
+with all lowercase letters, and every time dmake is invoked
+to bring files up to date, it will try to recompile such files again.
+For example, Tk distribution has a lot of such files, resulting in
+needless recompiles everytime dmake is invoked. To avoid this, you
+may use the script "sncfnmcs.pl" after a successful build. It is
+available in the win32 subdirectory of the Perl source distribution.
+
+=item Command Shell
+
+Use the default "cmd" shell that comes with NT. Some versions of the
+popular 4DOS/NT shell have incompatibilities that may cause you trouble.
+If the build fails under that shell, try building again with the cmd
+shell.
+
+The nmake Makefile also has known incompatibilities with the
+"command.com" shell that comes with Windows 9x. You will need to
+use dmake and makefile.mk to build under Windows 9x.
+
+The surest way to build it is on Windows NT, using the cmd shell.
+
+Make sure the path to the build directory does not contain spaces. The
+build usually works in this circumstance, but some tests will fail.
+
+=item Borland C++
+
+If you are using the Borland compiler, you will need dmake.
+(The make that Borland supplies is seriously crippled and will not
+work for MakeMaker builds.)
+
+See L</"Make"> above.
+
+=item Microsoft Visual C++
+
+The nmake that comes with Visual C++ will suffice for building.
+You will need to run the VCVARS32.BAT file, usually found somewhere
+like C:\MSDEV4.2\BIN. This will set your build environment.
+
+You can also use dmake to build using Visual C++; provided, however,
+you set OSRELEASE to "microsft" (or whatever the directory name
+under which the Visual C dmake configuration lives) in your environment
+and edit win32/config.vc to change "make=nmake" into "make=dmake". The
+latter step is only essential if you want to use dmake as your default
+make for building extensions using MakeMaker.
+
+=item Mingw32 with GCC
+
+GCC-2.95.2 binaries can be downloaded from:
+
+ ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/
+
+You also need dmake. See L</"Make"> above on how to get it.
+
+The GCC-2.95.2 bundle comes with Mingw32 libraries and headers.
+
+Make sure you install the binaries that work with MSVCRT.DLL as indicated
+in the README for the GCC bundle. You may need to set up a few environment
+variables (usually ran from a batch file).
+
+There are a couple of problems with the version of gcc-2.95.2-msvcrt.exe
+released 7 November 1999:
+
+=over
+
+=item *
+
+It left out a fix for certain command line quotes. To fix this, be sure
+to download and install the file fixes/quote-fix-msvcrt.exe from the above
+ftp location.
+
+=item *
+
+The definition of the fpos_t type in stdio.h may be wrong. If your
+stdio.h has this problem, you will see an exception when running the
+test t/lib/io_xs.t. To fix this, change the typedef for fpos_t from
+"long" to "long long" in the file i386-mingw32msvc/include/stdio.h,
+and rebuild.
+
+=back
+
+A potentially simpler to install (but probably soon-to-be-outdated) bundle
+of the above package with the mentioned fixes already applied is available
+here:
+
+ http://downloads.ActiveState.com/pub/staff/gsar/gcc-2.95.2-msvcrt.zip
+ ftp://ftp.ActiveState.com/pub/staff/gsar/gcc-2.95.2-msvcrt.zip
+
+=back
+
+=head2 Building
+
+=over 4
+
+=item *
+
+Make sure you are in the "win32" subdirectory under the perl toplevel.
+This directory contains a "Makefile" that will work with
+versions of nmake that come with Visual C++, and a dmake "makefile.mk"
+that will work for all supported compilers. The defaults in the dmake
+makefile are setup to build using the GCC compiler.
+
+=item *
+
+Edit the makefile.mk (or Makefile, if you're using nmake) and change
+the values of INST_DRV and INST_TOP. You can also enable various
+build flags. These are explained in the makefiles.
+
+You will have to make sure that CCTYPE is set correctly and that
+CCHOME points to wherever you installed your compiler.
+
+The default value for CCHOME in the makefiles for Visual C++
+may not be correct for some versions. Make sure the default exists
+and is valid.
+
+If you have either the source or a library that contains des_fcrypt(),
+enable the appropriate option in the makefile. des_fcrypt() is not
+bundled with the distribution due to US Government restrictions
+on the export of cryptographic software. Nevertheless, this routine
+is part of the "libdes" library (written by Eric Young) which is widely
+available worldwide, usually along with SSLeay (for example,
+"ftp://fractal.mta.ca/pub/crypto/SSLeay/DES/"). Set CRYPT_SRC to the
+name of the file that implements des_fcrypt(). Alternatively, if
+you have built a library that contains des_fcrypt(), you can set
+CRYPT_LIB to point to the library name. The location above contains
+many versions of the "libdes" library, all with slightly different
+implementations of des_fcrypt(). Older versions have a single,
+self-contained file (fcrypt.c) that implements crypt(), so they may be
+easier to use. A patch against the fcrypt.c found in libdes-3.06 is
+in des_fcrypt.patch.
+
+Perl will also build without des_fcrypt(), but the crypt() builtin will
+fail at run time.
+
+Be sure to read the instructions near the top of the makefiles carefully.
+
+=item *
+
+Type "dmake" (or "nmake" if you are using that make).
+
+This should build everything. Specifically, it will create perl.exe,
+perl56.dll at the perl toplevel, and various other extension dll's
+under the lib\auto directory. If the build fails for any reason, make
+sure you have done the previous steps correctly.
+
+=back
+
+=head2 Testing Perl on Win32
+
+Type "dmake test" (or "nmake test"). This will run most of the tests from
+the testsuite (many tests will be skipped).
+
+There should be no test failures when running under Windows NT 4.0 or
+Windows 2000. Many tests I<will> fail under Windows 9x due to the inferior
+command shell.
+
+Some test failures may occur if you use a command shell other than the
+native "cmd.exe", or if you are building from a path that contains
+spaces. So don't do that.
+
+If you are running the tests from a emacs shell window, you may see
+failures in op/stat.t. Run "dmake test-notty" in that case.
+
+If you're using the Borland compiler, you may see a failure in op/taint.t
+arising from the inability to find the Borland Runtime DLLs on the system
+default path. You will need to copy the DLLs reported by the messages
+from where Borland chose to install it, into the Windows system directory
+(usually somewhere like C:\WINNT\SYSTEM32) and rerun the test.
+
+If you're using Borland compiler versions 5.2 and below, you may run into
+problems finding the correct header files when building extensions. For
+example, building the "Tk" extension may fail because both perl and Tk
+contain a header file called "patchlevel.h". The latest Borland compiler
+(v5.5) is free of this misbehaviour, and it even supports an
+option -VI- for backward (bugward) compatibility for using the old Borland
+search algorithm to locate header files.
+
+Please report any other failures as described under L<BUGS AND CAVEATS>.
+
+=head2 Installation of Perl on Win32
+
+Type "dmake install" (or "nmake install"). This will put the newly
+built perl and the libraries under whatever C<INST_TOP> points to in the
+Makefile. It will also install the pod documentation under
+C<$INST_TOP\$VERSION\lib\pod> and HTML versions of the same under
+C<$INST_TOP\$VERSION\lib\pod\html>. To use the Perl you just installed,
+you will need to add two components to your PATH environment variable,
+C<$INST_TOP\$VERSION\bin> and C<$INST_TOP\$VERSION\bin\$ARCHNAME>.
+For example:
+
+ set PATH c:\perl\5.6.0\bin;c:\perl\5.6.0\bin\MSWin32-x86;%PATH%
+
+If you opt to comment out INST_VER and INST_ARCH in the makefiles, the
+installation structure is much simpler. In that case, it will be
+sufficient to add a single entry to the path, for instance:
+
+ set PATH c:\perl\bin;%PATH%
+
+=head2 Usage Hints for Perl on Win32
+
+=over 4
+
+=item Environment Variables
+
+The installation paths that you set during the build get compiled
+into perl, so you don't have to do anything additional to start
+using that perl (except add its location to your PATH variable).
+
+If you put extensions in unusual places, you can set PERL5LIB
+to a list of paths separated by semicolons where you want perl
+to look for libraries. Look for descriptions of other environment
+variables you can set in L<perlrun>.
+
+You can also control the shell that perl uses to run system() and
+backtick commands via PERL5SHELL. See L<perlrun>.
+
+Perl does not depend on the registry, but it can look up certain default
+values if you choose to put them there. Perl attempts to read entries from
+C<HKEY_CURRENT_USER\Software\Perl> and C<HKEY_LOCAL_MACHINE\Software\Perl>.
+Entries in the former override entries in the latter. One or more of the
+following entries (of type REG_SZ or REG_EXPAND_SZ) may be set:
+
+ lib-$] version-specific standard library path to add to @INC
+ lib standard library path to add to @INC
+ sitelib-$] version-specific site library path to add to @INC
+ sitelib site library path to add to @INC
+ vendorlib-$] version-specific vendor library path to add to @INC
+ vendorlib vendor library path to add to @INC
+ PERL* fallback for all %ENV lookups that begin with "PERL"
+
+Note the C<$]> in the above is not literal. Substitute whatever version
+of perl you want to honor that entry, e.g. C<5.6.0>. Paths must be
+separated with semicolons, as usual on win32.
+
+=item File Globbing
+
+By default, perl handles file globbing using the File::Glob extension,
+which provides portable globbing.
+
+If you want perl to use globbing that emulates the quirks of DOS
+filename conventions, you might want to consider using File::DosGlob
+to override the internal glob() implementation. See L<File::DosGlob> for
+details.
+
+=item Using perl from the command line
+
+If you are accustomed to using perl from various command-line
+shells found in UNIX environments, you will be less than pleased
+with what Windows offers by way of a command shell.
+
+The crucial thing to understand about the Windows environment is that
+the command line you type in is processed twice before Perl sees it.
+First, your command shell (usually CMD.EXE on Windows NT, and
+COMMAND.COM on Windows 9x) preprocesses the command line, to handle
+redirection, environment variable expansion, and location of the
+executable to run. Then, the perl executable splits the remaining
+command line into individual arguments, using the C runtime library
+upon which Perl was built.
+
+It is particularly important to note that neither the shell nor the C
+runtime do any wildcard expansions of command-line arguments (so
+wildcards need not be quoted). Also, the quoting behaviours of the
+shell and the C runtime are rudimentary at best (and may, if you are
+using a non-standard shell, be inconsistent). The only (useful) quote
+character is the double quote ("). It can be used to protect spaces
+and other special characters in arguments.
+
+The Windows NT documentation has almost no description of how the
+quoting rules are implemented, but here are some general observations
+based on experiments: The C runtime breaks arguments at spaces and
+passes them to programs in argc/argv. Double quotes can be used to
+prevent arguments with spaces in them from being split up. You can
+put a double quote in an argument by escaping it with a backslash and
+enclosing the whole argument within double quotes. The backslash and
+the pair of double quotes surrounding the argument will be stripped by
+the C runtime.
+
+The file redirection characters "<", ">", and "|" can be quoted by
+double quotes (although there are suggestions that this may not always
+be true). Single quotes are not treated as quotes by the shell or
+the C runtime, they don't get stripped by the shell (just to make
+this type of quoting completely useless). The caret "^" has also
+been observed to behave as a quoting character, but this appears
+to be a shell feature, and the caret is not stripped from the command
+line, so Perl still sees it (and the C runtime phase does not treat
+the caret as a quote character).
+
+Here are some examples of usage of the "cmd" shell:
+
+This prints two doublequotes:
+
+ perl -e "print '\"\"' "
+
+This does the same:
+
+ perl -e "print \"\\\"\\\"\" "
+
+This prints "bar" and writes "foo" to the file "blurch":
+
+ perl -e "print 'foo'; print STDERR 'bar'" > blurch
+
+This prints "foo" ("bar" disappears into nowhereland):
+
+ perl -e "print 'foo'; print STDERR 'bar'" 2> nul
+
+This prints "bar" and writes "foo" into the file "blurch":
+
+ perl -e "print 'foo'; print STDERR 'bar'" 1> blurch
+
+This pipes "foo" to the "less" pager and prints "bar" on the console:
+
+ perl -e "print 'foo'; print STDERR 'bar'" | less
+
+This pipes "foo\nbar\n" to the less pager:
+
+ perl -le "print 'foo'; print STDERR 'bar'" 2>&1 | less
+
+This pipes "foo" to the pager and writes "bar" in the file "blurch":
+
+ perl -e "print 'foo'; print STDERR 'bar'" 2> blurch | less
+
+
+Discovering the usefulness of the "command.com" shell on Windows 9x
+is left as an exercise to the reader :)
+
+One particularly pernicious problem with the 4NT command shell for
+Windows NT is that it (nearly) always treats a % character as indicating
+that environment variable expansion is needed. Under this shell, it is
+therefore important to always double any % characters which you want
+Perl to see (for example, for hash variables), even when they are
+quoted.
+
+=item Building Extensions
+
+The Comprehensive Perl Archive Network (CPAN) offers a wealth
+of extensions, some of which require a C compiler to build.
+Look in http://www.cpan.org/ for more information on CPAN.
+
+Note that not all of the extensions available from CPAN may work
+in the Win32 environment; you should check the information at
+http://testers.cpan.org/ before investing too much effort into
+porting modules that don't readily build.
+
+Most extensions (whether they require a C compiler or not) can
+be built, tested and installed with the standard mantra:
+
+ perl Makefile.PL
+ $MAKE
+ $MAKE test
+ $MAKE install
+
+where $MAKE is whatever 'make' program you have configured perl to
+use. Use "perl -V:make" to find out what this is. Some extensions
+may not provide a testsuite (so "$MAKE test" may not do anything or
+fail), but most serious ones do.
+
+It is important that you use a supported 'make' program, and
+ensure Config.pm knows about it. If you don't have nmake, you can
+either get dmake from the location mentioned earlier or get an
+old version of nmake reportedly available from:
+
+ ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe
+
+Another option is to use the make written in Perl, available from
+CPAN:
+
+ http://www.cpan.org/authors/id/NI-S/Make-0.03.tar.gz
+
+You may also use dmake. See L</"Make"> above on how to get it.
+
+Note that MakeMaker actually emits makefiles with different syntax
+depending on what 'make' it thinks you are using. Therefore, it is
+important that one of the following values appears in Config.pm:
+
+ make='nmake' # MakeMaker emits nmake syntax
+ make='dmake' # MakeMaker emits dmake syntax
+ any other value # MakeMaker emits generic make syntax
+ (e.g GNU make, or Perl make)
+
+If the value doesn't match the 'make' program you want to use,
+edit Config.pm to fix it.
+
+If a module implements XSUBs, you will need one of the supported
+C compilers. You must make sure you have set up the environment for
+the compiler for command-line compilation.
+
+If a module does not build for some reason, look carefully for
+why it failed, and report problems to the module author. If
+it looks like the extension building support is at fault, report
+that with full details of how the build failed using the perlbug
+utility.
+
+=item Command-line Wildcard Expansion
+
+The default command shells on DOS descendant operating systems (such
+as they are) usually do not expand wildcard arguments supplied to
+programs. They consider it the application's job to handle that.
+This is commonly achieved by linking the application (in our case,
+perl) with startup code that the C runtime libraries usually provide.
+However, doing that results in incompatible perl versions (since the
+behavior of the argv expansion code differs depending on the
+compiler, and it is even buggy on some compilers). Besides, it may
+be a source of frustration if you use such a perl binary with an
+alternate shell that *does* expand wildcards.
+
+Instead, the following solution works rather well. The nice things
+about it are 1) you can start using it right away; 2) it is more
+powerful, because it will do the right thing with a pattern like
+*/*/*.c; 3) you can decide whether you do/don't want to use it; and
+4) you can extend the method to add any customizations (or even
+entirely different kinds of wildcard expansion).
+
+ C:\> copy con c:\perl\lib\Wild.pm
+ # Wild.pm - emulate shell @ARGV expansion on shells that don't
+ use File::DosGlob;
+ @ARGV = map {
+ my @g = File::DosGlob::glob($_) if /[*?]/;
+ @g ? @g : $_;
+ } @ARGV;
+ 1;
+ ^Z
+ C:\> set PERL5OPT=-MWild
+ C:\> perl -le "for (@ARGV) { print }" */*/perl*.c
+ p4view/perl/perl.c
+ p4view/perl/perlio.c
+ p4view/perl/perly.c
+ perl5.005/win32/perlglob.c
+ perl5.005/win32/perllib.c
+ perl5.005/win32/perlglob.c
+ perl5.005/win32/perllib.c
+ perl5.005/win32/perlglob.c
+ perl5.005/win32/perllib.c
+
+Note there are two distinct steps there: 1) You'll have to create
+Wild.pm and put it in your perl lib directory. 2) You'll need to
+set the PERL5OPT environment variable. If you want argv expansion
+to be the default, just set PERL5OPT in your default startup
+environment.
+
+If you are using the Visual C compiler, you can get the C runtime's
+command line wildcard expansion built into perl binary. The resulting
+binary will always expand unquoted command lines, which may not be
+what you want if you use a shell that does that for you. The expansion
+done is also somewhat less powerful than the approach suggested above.
+
+=item Win32 Specific Extensions
+
+A number of extensions specific to the Win32 platform are available
+from CPAN. You may find that many of these extensions are meant to
+be used under the Activeware port of Perl, which used to be the only
+native port for the Win32 platform. Since the Activeware port does not
+have adequate support for Perl's extension building tools, these
+extensions typically do not support those tools either and, therefore,
+cannot be built using the generic steps shown in the previous section.
+
+To ensure smooth transitioning of existing code that uses the
+ActiveState port, there is a bundle of Win32 extensions that contains
+all of the ActiveState extensions and most other Win32 extensions from
+CPAN in source form, along with many added bugfixes, and with MakeMaker
+support. This bundle is available at:
+
+ http://www.cpan.org/authors/id/GSAR/libwin32-0.151.zip
+
+See the README in that distribution for building and installation
+instructions. Look for later versions that may be available at the
+same location.
+
+=item Running Perl Scripts
+
+Perl scripts on UNIX use the "#!" (a.k.a "shebang") line to
+indicate to the OS that it should execute the file using perl.
+Win32 has no comparable means to indicate arbitrary files are
+executables.
+
+Instead, all available methods to execute plain text files on
+Win32 rely on the file "extension". There are three methods
+to use this to execute perl scripts:
+
+=over 8
+
+=item 1
+
+There is a facility called "file extension associations" that will
+work in Windows NT 4.0. This can be manipulated via the two
+commands "assoc" and "ftype" that come standard with Windows NT
+4.0. Type "ftype /?" for a complete example of how to set this
+up for perl scripts (Say what? You thought Windows NT wasn't
+perl-ready? :).
+
+=item 2
+
+Since file associations don't work everywhere, and there are
+reportedly bugs with file associations where it does work, the
+old method of wrapping the perl script to make it look like a
+regular batch file to the OS, may be used. The install process
+makes available the "pl2bat.bat" script which can be used to wrap
+perl scripts into batch files. For example:
+
+ pl2bat foo.pl
+
+will create the file "FOO.BAT". Note "pl2bat" strips any
+.pl suffix and adds a .bat suffix to the generated file.
+
+If you use the 4DOS/NT or similar command shell, note that
+"pl2bat" uses the "%*" variable in the generated batch file to
+refer to all the command line arguments, so you may need to make
+sure that construct works in batch files. As of this writing,
+4DOS/NT users will need a "ParameterChar = *" statement in their
+4NT.INI file or will need to execute "setdos /p*" in the 4DOS/NT
+startup file to enable this to work.
+
+=item 3
+
+Using "pl2bat" has a few problems: the file name gets changed,
+so scripts that rely on C<$0> to find what they must do may not
+run properly; running "pl2bat" replicates the contents of the
+original script, and so this process can be maintenance intensive
+if the originals get updated often. A different approach that
+avoids both problems is possible.
+
+A script called "runperl.bat" is available that can be copied
+to any filename (along with the .bat suffix). For example,
+if you call it "foo.bat", it will run the file "foo" when it is
+executed. Since you can run batch files on Win32 platforms simply
+by typing the name (without the extension), this effectively
+runs the file "foo", when you type either "foo" or "foo.bat".
+With this method, "foo.bat" can even be in a different location
+than the file "foo", as long as "foo" is available somewhere on
+the PATH. If your scripts are on a filesystem that allows symbolic
+links, you can even avoid copying "runperl.bat".
+
+Here's a diversion: copy "runperl.bat" to "runperl", and type
+"runperl". Explain the observed behavior, or lack thereof. :)
+Hint: .gnidnats llits er'uoy fi ,"lrepnur" eteled :tniH
+
+=back
+
+=item Miscellaneous Things
+
+A full set of HTML documentation is installed, so you should be
+able to use it if you have a web browser installed on your
+system.
+
+C<perldoc> is also a useful tool for browsing information contained
+in the documentation, especially in conjunction with a pager
+like C<less> (recent versions of which have Win32 support). You may
+have to set the PAGER environment variable to use a specific pager.
+"perldoc -f foo" will print information about the perl operator
+"foo".
+
+If you find bugs in perl, you can run C<perlbug> to create a
+bug report (you may have to send it manually if C<perlbug> cannot
+find a mailer on your system).
+
+=back
+
+=head1 BUGS AND CAVEATS
+
+Norton AntiVirus interferes with the build process, particularly if
+set to "AutoProtect, All Files, when Opened". Unlike large applications
+the perl build process opens and modifies a lot of files. Having the
+the AntiVirus scan each and every one slows build the process significantly.
+Worse, with PERLIO=stdio the build process fails with peculiar messages
+as the virus checker interacts badly with miniperl.exe writing configure
+files (it seems to either catch file part written and treat it as suspicious,
+or virus checker may have it "locked" in a way which inhibits miniperl
+updating it). The build does complete with
+
+ set PERLIO=perlio
+
+but that may be just luck. Other AntiVirus software may have similar issues.
+
+Some of the built-in functions do not act exactly as documented in
+L<perlfunc>, and a few are not implemented at all. To avoid
+surprises, particularly if you have had prior exposure to Perl
+in other operating environments or if you intend to write code
+that will be portable to other environments. See L<perlport>
+for a reasonably definitive list of these differences.
+
+Not all extensions available from CPAN may build or work properly
+in the Win32 environment. See L</"Building Extensions">.
+
+Most C<socket()> related calls are supported, but they may not
+behave as on Unix platforms. See L<perlport> for the full list.
+
+Signal handling may not behave as on Unix platforms (where it
+doesn't exactly "behave", either :). For instance, calling C<die()>
+or C<exit()> from signal handlers will cause an exception, since most
+implementations of C<signal()> on Win32 are severely crippled.
+Thus, signals may work only for simple things like setting a flag
+variable in the handler. Using signals under this port should
+currently be considered unsupported.
+
+Please send detailed descriptions of any problems and solutions that
+you may find to <F<perlbug@perl.com>>, along with the output produced
+by C<perl -V>.
+
+=head1 AUTHORS
+
+=over 4
+
+=item Gary Ng E<lt>71564.1743@CompuServe.COME<gt>
+
+=item Gurusamy Sarathy E<lt>gsar@activestate.comE<gt>
+
+=item Nick Ing-Simmons E<lt>nick@ing-simmons.netE<gt>
+
+=back
+
+This document is maintained by Gurusamy Sarathy.
+
+=head1 SEE ALSO
+
+L<perl>
+
+=head1 HISTORY
+
+This port was originally contributed by Gary Ng around 5.003_24,
+and borrowed from the Hip Communications port that was available
+at the time. Various people have made numerous and sundry hacks
+since then.
+
+Borland support was added in 5.004_01 (Gurusamy Sarathy).
+
+GCC/mingw32 support was added in 5.005 (Nick Ing-Simmons).
+
+Support for PERL_OBJECT was added in 5.005 (ActiveState Tool Corp).
+
+Support for fork() emulation was added in 5.6 (ActiveState Tool Corp).
+
+Win9x support was added in 5.6 (Benjamin Stuhl).
+
+Last updated: 1 April 2001
+
+=cut
diff --git a/plan9/mkfile b/plan9/mkfile index e56aa3c472..a708d8f379 100644 --- a/plan9/mkfile +++ b/plan9/mkfile @@ -20,7 +20,10 @@ perlshr = $archlib/CORE/libperlshr.a installman1dir = /sys/man/1 installman3dir = /sys/man/2 -podnames = perl perlbook perlbot perlcall perldata perldebug perldiag perldsc perlembed perlform perlfunc perlguts perlipc perllol perlmod perlobj perlop perlpod perlre perlref perlrun perlsec perlstyle perlsub perlsyn perltie perltoc perltrap perlvar perlxs perlxstut +podnames = perl perlbook perlboot perlbot perldata perldebtut perldiag perldsc perlform perlfunc perlipc perllol perlmod perlmodlib perlmodinstall perlnewmod perlop perlopentut perlpod perlrequick perlretut perlref perlreftut perlrun perlsec perlstyle perlsub perlsyn perltie perltoc perltoot perltootc perltrap perlutil perlvar +faqpodnames = perlfaq perlfaq1 perlfaq2 perlfaq3 perlfaq4 perlfaq5 perlfaq6 perlfaq7 perlfaq8 perlfaq9 +advpodnames = perlapi perlapio perlcall perlclib perlcompile perldebguts perldbmfilter perldebug perldelta perldiag perlebcdic perlembed perlfilter perlfor perlguts perlhack perlhist perlintern perliol perlnumber perlobj perlre perlthrtut perltodo perlunicode perlxs perlxs perlxstut +archpodnames = perlaix perlapollo perlamiga perlbs2000 perlcygwin perldgux perldos perlepoc perlhpux perlhurd perlmachten perlmacos perlmint perlmpeix perlos2 perlos390 perlqnx perlsolaris perltru64 perlvmesa perlvms perlvos perlwin32 libpods = ${podnames:%=pod/%.pod} @@ -133,7 +136,9 @@ installall:V: man:V: $perlpods pod/pod2man.PL perl perl pod/pod2man.PL for (i in $podnames) pod/pod2man pod/$i.pod > $installman3dir/$i - pod/pod2man plan9/perlplan9.pod > $installman3dir/perlplan9 + for (i in $faqpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i + for (i in $advpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i + for (i in $archpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i nuke clean:V: rm -f *.$O $extensions^.pm config.sh $perllib config.h $perlshr perlmain.c perl miniperl $archlib/Config.pm $ext_c diff --git a/plan9/perlplan9.doc b/plan9/perlplan9.doc deleted file mode 100644 index d6d7df8b74..0000000000 --- a/plan9/perlplan9.doc +++ /dev/null @@ -1,91 +0,0 @@ - - PLAN9/PERLPLAN9(1) (perl 5.003, patch 05) PLAN9/PERLPLAN9(1) - - NNNNAAAAMMMMEEEE - perlplan9 - Plan 9-specific documentation for Perl - - DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN - These are a few notes describing features peculiar to Plan 9 - Perl. As such, it is not intended to be a replacement for - the rest of the Perl 5 documentation (which is both copious - and excellent). If you have any questions to which you can't - find answers in these man pages, contact Luther Huffman at - lutherh@stratcom.com and we'll try to answer them. - - IIIInnnnvvvvooookkkkiiiinnnngggg PPPPeeeerrrrllll - - Perl is invoked from the command line as described in the - _p_e_r_l manpage. Most perl scripts, however, do have a first - line such as "#!/usr/local/bin/perl". This is known as a - shebang (shell-bang) statement and tells the OS shell where - to find the perl interpreter. In Plan 9 Perl this statement - should be "#!/bin/perl" if you wish to be able to directly - invoke the script by its name. - Alternatively, you may invoke perl with the command - "Perl" instead of "perl". This will produce Acme-friendly - error messages of the form "filename:18". - - Some scripts, usually identified with a *.PL extension, are - self-configuring and are able to correctly create their own - shebang path from config information located in Plan 9 Perl. - These you won't need to be worried about. - - WWWWhhhhaaaatttt''''ssss iiiinnnn PPPPllllaaaannnn 9999 PPPPeeeerrrrllll - - Although Plan 9 Perl currently only provides static - loading, it is built with a number of useful extensions. - These include Opcode, FileHandle, Fcntl, and POSIX. Expect - to see others (and DynaLoading!) in the future. - - WWWWhhhhaaaatttt''''ssss nnnnooootttt iiiinnnn PPPPllllaaaannnn 9999 PPPPeeeerrrrllll - - As mentioned previously, dynamic loading isn't currently - available nor is MakeMaker. Both are high-priority items. - - PPPPeeeerrrrllll5555 FFFFuuuunnnnccccttttiiiioooonnnnssss nnnnooootttt ccccuuuurrrrrrrreeeennnnttttllllyyyy ssssuuuuppppppppoooorrrrtttteeeedddd - - Some, such as chown and umask aren't provided because the - concept does not exist within Plan 9. Others, such as some - of the socket-related functions, simply haven't been written - yet. Many in the latter category may be supported in the - future. - - The functions not currently implemented include: - - Page 1 9/Oct/96 (printed 10/9/96) - - PLAN9/PERLPLAN9(1) (perl 5.003, patch 05) PLAN9/PERLPLAN9(1) - - chown, chroot, dbmclose, dbmopen, getsockopt, - setsockopt, recvmsg, sendmsg, getnetbyname, - getnetbyaddr, getnetent, getprotoent, getservent, - sethostent, setnetent, setprotoent, setservent, - endservent, endnetent, endprotoent, umask - - There may be several other functions that have undefined - behavior so this list shouldn't be considered complete. - - SSSSiiiiggggnnnnaaaallllssss - - For compatibility with perl scripts written for the Unix - environment, Plan 9 Perl uses the POSIX signal emulation - provided in Plan 9's ANSI POSIX Environment (APE). Signal - stacking isn't supported. The signals provided are: - - SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGABRT, - SIGFPE, SIGKILL, SIGSEGV, SIGPIPE, SIGPIPE, SIGALRM, - SIGTERM, SIGUSR1, SIGUSR2, SIGCHLD, SIGCONT, - SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU - - BBBBUUUUGGGGSSSS - "As many as there are grains of sand on all the beaches of - the world . . ." - Carl Sagan - - RRRReeeevvvviiiissssiiiioooonnnn ddddaaaatttteeee - This document was revised 09-October-1996 for Perl 5.003_7. - - AAAAUUUUTTTTHHHHOOOORRRR - Luther Huffman, lutherh@stratcom.com - - Page 2 9/Oct/96 (printed 10/9/96) - diff --git a/plan9/perlplan9.pod b/plan9/perlplan9.pod deleted file mode 100644 index fb58149440..0000000000 --- a/plan9/perlplan9.pod +++ /dev/null @@ -1,87 +0,0 @@ -=head1 NAME - -perlplan9 - Plan 9-specific documentation for Perl - -=head1 DESCRIPTION - -These are a few notes describing features peculiar to -Plan 9 Perl. As such, it is not intended to be a replacement -for the rest of the Perl 5 documentation (which is both -copious and excellent). If you have any questions to -which you can't find answers in these man pages, contact -Luther Huffman at lutherh@stratcom.com and we'll try to -answer them. - -=head2 Invoking Perl - -Perl is invoked from the command line as described in -L<perl>. Most perl scripts, however, do have a first line -such as "#!/usr/local/bin/perl". This is known as a shebang -(shell-bang) statement and tells the OS shell where to find -the perl interpreter. In Plan 9 Perl this statement should be -"#!/bin/perl" if you wish to be able to directly invoke the -script by its name. - Alternatively, you may invoke perl with the command "Perl" -instead of "perl". This will produce Acme-friendly error -messages of the form "filename:18". - -Some scripts, usually identified with a *.PL extension, are -self-configuring and are able to correctly create their own -shebang path from config information located in Plan 9 -Perl. These you won't need to be worried about. - -=head2 What's in Plan 9 Perl - -Although Plan 9 Perl currently only provides static -loading, it is built with a number of useful extensions. -These include Opcode, FileHandle, Fcntl, and POSIX. Expect -to see others (and DynaLoading!) in the future. - -=head2 What's not in Plan 9 Perl - -As mentioned previously, dynamic loading isn't currently -available nor is MakeMaker. Both are high-priority items. - -=head2 Perl5 Functions not currently supported - -Some, such as C<chown> and C<umask> aren't provided -because the concept does not exist within Plan 9. Others, -such as some of the socket-related functions, simply -haven't been written yet. Many in the latter category -may be supported in the future. - -The functions not currently implemented include: - - chown, chroot, dbmclose, dbmopen, getsockopt, - setsockopt, recvmsg, sendmsg, getnetbyname, - getnetbyaddr, getnetent, getprotoent, getservent, - sethostent, setnetent, setprotoent, setservent, - endservent, endnetent, endprotoent, umask - -There may be several other functions that have undefined -behavior so this list shouldn't be considered complete. - -=head2 Signals - -For compatibility with perl scripts written for the Unix -environment, Plan 9 Perl uses the POSIX signal emulation -provided in Plan 9's ANSI POSIX Environment (APE). Signal stacking -isn't supported. The signals provided are: - - SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGABRT, - SIGFPE, SIGKILL, SIGSEGV, SIGPIPE, SIGPIPE, SIGALRM, - SIGTERM, SIGUSR1, SIGUSR2, SIGCHLD, SIGCONT, - SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU - -=head1 BUGS - -"As many as there are grains of sand on all the beaches of the -world . . ." - Carl Sagan - -=head1 Revision date - -This document was revised 09-October-1996 for Perl 5.003_7. - -=head1 AUTHOR - -Luther Huffman, lutherh@stratcom.com diff --git a/pod/buildtoc.PL b/pod/buildtoc.PL index a89c4c98eb..215dcfea2c 100644 --- a/pod/buildtoc.PL +++ b/pod/buildtoc.PL @@ -59,7 +59,38 @@ if (-d "pod") { die "$0: failed to chdir('pod'): $!\n" unless chdir("pod"); } -@pods = qw( +@ARCHPODS = qw( + perlaix + perlapollo + perlamiga + perlbeos + perlbs2000 + perlcygwin + perldgux + perldos + perlepoc + perlhpux + perlhurd + perlmachten + perlmacos + perlmint + perlmpeix + perlos2 + perlos390 + perlqnx + perlplan9 + perlsolaris + perltru64 + perlvmesa + perlvms + perlvos + perlwin32 + ); + +@pods = + ( + qw( + perl perlfaq perltoc @@ -155,48 +186,12 @@ if (-d "pod") { perl5005delta perl5004delta - perlaix - perlamiga - perlbs2000 - perlcygwin - perldgux - perldos - perlepoc - perlhpux - perlmachten - perlmacos - perlmpeix - perlos2 - perlos390 - perlsolaris - perltru64 - perlvmesa - perlvms - perlvos - perlwin32 - ); + ), + + @ARCHPODS + + ); -@ARCHPODS = qw( - perlaix - perlamiga - perlbs2000 - perlcygwin - perldgux - perldos - perlepoc - perlhpux - perlmachten - perlmacos - perlmpeix - perlos2 - perlos390 - perlsolaris - perltru64 - perlvmesa - perlvms - perlvos - perlwin32 - ); for (@ARCHPODS) { s/$/.pod/ } @ARCHPODS{@ARCHPODS} = (); @@ -284,6 +279,7 @@ sub getpods { return if /(.*)\.pm$/ && -f "$1.pod"; my $file = $File::Find::name; return if $file eq '../lib/Pod/Functions.pm'; # Used only by pod itself + return if $file =~ m!lib/Attribute/Handlers/demo/!; die "tut $name" if $file =~ /TUT/; unless (open (F, "< $_\0")) { diff --git a/pod/perl.pod b/pod/perl.pod index fd15c1725c..eb2d60d18e 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -110,18 +110,24 @@ For ease of access, the Perl manual has been split up into several sections: perl5004delta Perl changes in version 5.004 perlaix Perl notes for AIX - perlamiga Perl notes for Amiga + perlamiga Perl notes for AmigaOS + perlapollo Perl notes for Apollo DomainOS + perlbeos Perl notes for BeOS perlbs2000 Perl notes for POSIX-BC BS2000 perlcygwin Perl notes for Cygwin perldgux Perl notes for DG/UX perldos Perl notes for DOS perlepoc Perl notes for EPOC perlhpux Perl notes for HP-UX + perlhurd Perl notes for Hurd perlmachten Perl notes for Power MachTen perlmacos Perl notes for Mac OS (Classic) + perlmint Perl notes for MiNT perlmpeix Perl notes for MPE/iX perlos2 Perl notes for OS/2 perlos390 Perl notes for OS/390 + perlplan9 Perl notes for Plan 9 + perlqnx Perl notes for QNX perlsolaris Perl notes for Solaris perltru64 Perl notes for Tru64 perlvmesa Perl notes for VM/ESA diff --git a/pod/perlport.pod b/pod/perlport.pod index 3133a87818..421a1863a7 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -2043,9 +2043,12 @@ http://www.perl.com/CPAN/ports/index.html for binary distributions. =head1 SEE ALSO -L<perlaix>, L<perlamiga>, L<perlcygwin>, L<perldos>, L<perlepoc>, -L<perlebcdic>, L<perlhpux>, L<perlos2>, L<perlos390>, L<perlbs2000>, -L<perlwin32>, L<perlvms>, L<perlvos>, and L<Win32>. +L<perlaix>, L<perlapollo>, L<perlamiga>, L<perlbeos>, L<perlbs200>, +L<perlcygwin>, L<perldgux>, L<perldos>, L<perlepoc>, L<perlebcdic>, +L<perlhurd>, L<perlhpux>, L<perlmachten>, L<perlmacos>, L<perlmint>, +L<perlmpeix>, L<perlos2>, L<perlos390>, L<perlplan9>, L<perlqnx>, +L<perlsolaris>, L<perltru64>, L<perlunicode>, L<perlvmesa>, +L<perlvms>, L<perlvos>, L<perlwin32>, and L<Win32>. =head1 AUTHORS / CONTRIBUTORS @@ -2087,4 +2090,4 @@ This document is maintained by Chris Nandor =head1 VERSION -Version 1.48, last modified 24 April 2001 +Version 1.49, last modified 07 Jun 2001 diff --git a/pod/perltoc.pod b/pod/perltoc.pod index 5244b1724d..80c463c479 100644 --- a/pod/perltoc.pod +++ b/pod/perltoc.pod @@ -5644,6 +5644,16 @@ long, Process terminated by SIG%s =back +=head2 perlapollo, README.apollo - Perl version 5 on Apollo DomainOS + +=over 4 + +=item DESCRIPTION + +=item AUTHOR + +=back + =head2 perlamiga - Perl under Amiga OS =over 4 @@ -5658,7 +5668,7 @@ long, Process terminated by SIG%s =over 4 -=item Prerequisites +=item Prerequisites for Compiling Perl on AmigaOS B<Unix emulation for AmigaOS: ixemul.library>, B<Version of Amiga OS> @@ -5679,29 +5689,29 @@ finally close()d =over 4 -=item Manpages +=item Manpages for Perl on AmigaOS -=item B<HTML> +=item Perl HTML Documentation on AmigaOS -=item B<GNU> C<info> files +=item Perl GNU Info Files on AmigaOS -=item C<LaTeX> docs +=item Perl LaTeX Documentation on AmigaOS =back -=item BUILD +=item BUILDING PERL ON AMIGAOS =over 4 -=item Build Prerequisites +=item Build Prerequisites for Perl on AmigaOS -=item Getting the perl source +=item Getting the Perl Source for AmigaOS -=item Making +=item Making Perl on AmigaOS -=item Testing +=item Testing Perl on AmigaOS -=item Installing the built perl +=item Installing the built Perl on AmigaOS =back @@ -5711,6 +5721,26 @@ finally close()d =back +=head2 perlbeos, README.beos - Perl version 5 on BeOS + +=over 4 + +=item DESCRIPTION + +=over 4 + +=item General Issues with Perl on BeOS + +=item BeOS Release-specific Notes + +R4 x86, R4 PPC + +=item Contact Information + +=back + +=back + =head2 perlbs2000, README.BS2000 - building and installing Perl for BS2000. =over 4 @@ -5721,23 +5751,23 @@ finally close()d =over 4 -=item gzip +=item gzip on BS2000 -=item bison +=item bison on BS2000 -=item Unpacking +=item Unpacking Perl Distribution on BS2000 -=item Compiling +=item Compiling Perl on BS2000 -=item Testing +=item Testing Perl on BS2000 -=item Install +=item Installing Perl on BS2000 -=item Using Perl in the Posix-Shell +=item Using Perl in the Posix-Shell of BS2000 =item Using Perl in "native" BS2000 -=item Floating point anomalies +=item Floating point anomalies on BS2000 =back @@ -5761,7 +5791,7 @@ finally close()d =item SYNOPSIS -=item PREREQUISITES +=item PREREQUISITES FOR COMPILING PERL ON CYGWIN =over 4 @@ -5773,66 +5803,66 @@ C<PATH>, I<nroff>, Permissions =back -=item CONFIGURE +=item CONFIGURE PERL ON CYGWIN =over 4 -=item Strip Binaries +=item Stripping Perl Binaries on Cygwin -=item Optional Libraries +=item Optional Libraries for Perl on Cygwin C<-lcrypt>, C<-lgdbm> (C<use GDBM_File>), C<-ldb> (C<use DB_File>), C<-lcygipc> (C<use IPC::SysV>) -=item Configure-time Options +=item Configure-time Options for Perl on Cygwin C<-Uusedl>, C<-Uusemymalloc>, C<-Dusemultiplicity>, C<-Duseperlio>, C<-Duse64bitint>, C<-Duselongdouble>, C<-Dusethreads>, C<-Duselargefiles> -=item Suspicious Warnings +=item Suspicious Warnings on Cygwin I<dlsym()>, Win9x and C<d_eofnblk>, Compiler/Preprocessor defines =back -=item MAKE +=item MAKE ON CYGWIN =over 4 -=item Warnings +=item Warnings on Cygwin -=item ld2 +=item ld2 on Cygwin =back -=item TEST +=item TEST ON CYGWIN =over 4 -=item File Permissions +=item File Permissions on Cygwin -=item Hard Links +=item Hard Links on Cygwin -=item Filetime Granularity +=item Filetime Granularity on Cygwin -=item Tainting Checks +=item Tainting Checks on Cygwin -=item /etc/group +=item /etc/group on Cygwin -=item Script Portability +=item Script Portability on Cygwin Pathnames, Text/Binary, F<.exe>, chown(), Miscellaneous =back -=item INSTALL +=item INSTALL PERL ON CYGWIN -=item MANIFEST +=item MANIFEST ON CYGWIN Documentation, Build, Configure, Make, Install, Tests, Compiled Perl Source, Compiled Module Source, Perl Modules/Scripts -=item BUGS +=item BUGS ON CYGWIN =item AUTHORS @@ -5852,17 +5882,17 @@ Source, Compiled Module Source, Perl Modules/Scripts =item DESCRIPTION -=item BUILD +=item BUILDING PERL ON DG/UX =over 4 -=item Non-threaded Case +=item Non-threaded Perl on DG/UX -=item Threaded Case +=item Threaded Perl on DG/UX -=item Testing +=item Testing Perl on DG/UX -=item Installing the built perl +=item Installing the built perl on DG/UX =back @@ -5890,21 +5920,21 @@ Source, Compiled Module Source, Perl Modules/Scripts =over 4 -=item I/O Redirection +=item I/O Redirection on Epoc -=item PATH Names +=item PATH Names on Epoc -=item Editors +=item Editors on Epoc -=item Features +=item Features of Perl on Epoc -=item Restrictions +=item Restrictions of Perl on Epoc =item Compiling Perl 5 on the EPOC cross compiling environment =back -=item SUPPORT STATUS +=item SUPPORT STATUS OF PERL ON EPOC =item AUTHOR @@ -5933,25 +5963,25 @@ Source, Compiled Module Source, Perl Modules/Scripts =item Portability Between PA-RISC Versions -=item Itanium Processor Family +=item Itanium Processor Family and HP-UX =item Building Dynamic Extensions on HP-UX =item The HP ANSI C Compiler -=item Using Large Files with Perl +=item Using Large Files with Perl on HP-UX -=item Threaded Perl +=item Threaded Perl on HP-UX -=item 64-bit Perl +=item 64-bit Perl on HP-UX -=item GDBM and Threads +=item GDBM and Threads on HP-UX -=item NFS filesystems and utime(2) +=item NFS filesystems and utime(2) on HP-UX -=item perl -P and // +=item perl -P and // and HP-UX -=item Kernel parameters (maxdsiz) +=item HP-UX Kernel Parameters (maxdsiz) for Compiling Perl =back @@ -5961,6 +5991,22 @@ Source, Compiled Module Source, Perl Modules/Scripts =back +=head2 perlhurd, README.hurd - Perl version 5 on Hurd + +=over 4 + +=item DESCRIPTION + +=over 4 + +=item Known Problems with Perl on Hurd + +=back + +=item AUTHOR + +=back + =head2 perlmachten, README.machten - Perl version 5 on Power MachTen systems @@ -5972,11 +6018,11 @@ systems =item Compiling Perl 5 on MachTen -=item Failures during C<make test> +=item Failures during C<make test> on MachTen op/lexassign.t, pragma/warnings.t -=item Building external modules +=item Building external modules on MachTen =back @@ -6000,6 +6046,18 @@ op/lexassign.t, pragma/warnings.t =back +=head2 perlmint, README.mint - Perl version 5 on Atari MiNT + +=over 4 + +=item DESCRIPTION + +=item Known problems with Perl on MiNT + +=item AUTHOR + +=back + =head2 perlmpeix, README.mpeix - Perl/iX for HP e3000 MPE =over 4 @@ -6008,15 +6066,15 @@ op/lexassign.t, pragma/warnings.t =item NOTE -=item What's New +=item What's New in Perl ffor MPE/iX -=item Welcome +=item Welcome to Perl/iX -=item System Requirements +=item System Requirements for Perl/iX =item How to Obtain Perl/iX -=item Distribution Contents Highlights +=item Perl/iX Distribution Contents Highlights README, INSTALL, LIBSHP3K, PERL, .cpan/, lib/, man/, public_html/feedback.cgi, src/perl-5.6.0-mpe @@ -6029,13 +6087,13 @@ public_html/feedback.cgi, src/perl-5.6.0-mpe =item MPE/iX Implementation Considerations -=item Known Bugs Under Investigation +=item Known Perl/iX Bugs Under Investigation -=item To-Do List +=item Perl/iX To-Do List -=item Change History +=item Perl/iX Change History -=item Author +=item AUTHOR =back @@ -6297,25 +6355,25 @@ C<COND_WAIT>, F<os2.c> =over 4 -=item Unpacking +=item Unpacking Perl distribution on OS/390 -=item Setup and utilities +=item Setup and utilities for Perl on OS/390 -=item Configure +=item Configure Perl on OS/390 -=item Build, test, install +=item Build, Test, Install Perl on OS/390 -=item build anomalies +=item Build Anomalies with Perl on OS/390 -=item testing anomalies +=item Testing Anomalies with Perl on OS/390 -=item installation anomalies +=item Installation Anomalies with Perl on OS/390 -=item Usage Hints +=item Usage Hints for Perl on OS/390 -=item Floating point anomalies +=item Floating Point Anomalies with Perl on OS/390 -=item Modules and Extensions +=item Modules and Extensions for Perl on OS/390 =back @@ -6325,7 +6383,7 @@ C<COND_WAIT>, F<os2.c> =over 4 -=item Mailing list +=item Mailing list for Perl on OS/390 =back @@ -6333,6 +6391,66 @@ C<COND_WAIT>, F<os2.c> =back +=head2 perlqnx, README.qnx - Perl version 5 on QNX + +=over 4 + +=item DESCRIPTION + +=over 4 + +=item Required Software for Compiling Perl on QNX + +/bin/sh, ar, nm, cpp, make + +=item Outstanding Issues with Perl on QNX + +=item QNX auxiliary files + +qnx/ar, qnx/cpp + +=back + +=item AUTHOR + +=back + +=head2 perlplan9 - Plan 9-specific documentation for Perl + +=over 4 + +=item DESCRIPTION + +=over 4 + +=item Invoking Perl + +=item What's in Plan 9 Perl + +=item What's not in Plan 9 Perl + +=item Perl5 Functions not currently supported in Plan 9 Perl + +=item Signals in Plan 9 Perl + +=back + +=item COMPILING AND INSTALLING PERL ON PLAN 9 + +=over 4 + +=item Installing Perl Documentation on Plan 9 + +=back + +=item BUGS + +=item Revision date + +=item AUTHOR + +=back + =head2 perlsolaris, README.solaris - Perl version 5 on Solaris systems =over 4 @@ -6353,11 +6471,11 @@ Solaris FAQ, Precompiled Binaries, Solaris Documentation =over 4 -=item File Extraction Problems. +=item File Extraction Problems on Solaris. -=item Compiler and Related Tools. +=item Compiler and Related Tools on Solaris. -=item Environment +=item Environment for Compiling Perl on Solaris =back @@ -6365,11 +6483,11 @@ Solaris FAQ, Precompiled Binaries, Solaris Documentation =over 4 -=item 64-bit Issues. +=item 64-bit Issues with Perl on Solaris. -=item Threads. +=item Threads in Perl on Solaris. -=item Malloc Issues. +=item Malloc Issues with Perl on Solaris. =back @@ -6383,17 +6501,17 @@ DATAMODEL_NATIVE specified", sh: ar: not found =over 4 -=item op/stat.t test 4 +=item op/stat.t test 4 in Solaris =back -=item PREBUILT BINARIES. +=item PREBUILT BINARIES OF PERL FOR SOLARIS. -=item RUNTIME ISSUES. +=item RUNTIME ISSUES FOR PERL ON SOLARIS. =over 4 -=item Limits on Numbers of Open Files. +=item Limits on Numbers of Open Files on Solaris. =back @@ -6403,11 +6521,11 @@ DATAMODEL_NATIVE specified", sh: ar: not found =over 4 -=item Proc::ProcessTable +=item Proc::ProcessTable on Solaris -=item BSD::Resource +=item BSD::Resource on Solairs -=item Net::SSLeay +=item Net::SSLeay on Soalris =back @@ -6432,6 +6550,8 @@ Digital UNIX formerly known as DEC OSF/1) systems =item Threaded Perl on Tru64 +=item Long Doubles on Tru64 + =item 64-bit Perl on Tru64 =item Warnings about floating-point overflow when compiling Perl on Tru64 @@ -6454,15 +6574,15 @@ Digital UNIX formerly known as DEC OSF/1) systems =over 4 -=item Unpacking +=item Unpacking Perl Distribution on VM/ESA -=item Setup and utilities +=item Setup Perl and utilities on VM/ESA -=item Configure +=item Configure Perl on VM/ESA -=item testing anomalies +=item Testing Anomalies of Perl on VM/ESA -=item Usage Hints +=item Usage Hints for Perl on VM/ESA =back @@ -6472,7 +6592,7 @@ Digital UNIX formerly known as DEC OSF/1) systems =over 4 -=item Mailing list +=item Mailing list for Perl on VM/ESA =back @@ -6577,9 +6697,9 @@ LIST, waitpid PID,FLAGS =over 4 -=item Unimplemented Features +=item Unimplemented Features of Perl on VOS -=item Restrictions +=item Restrictions of Perl on VOS =back diff --git a/win32/Makefile b/win32/Makefile index 5c62a5c58d..fc161072b9 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -1,1126 +1,1135 @@ -# -# Makefile to build perl on Windows NT using Microsoft NMAKE. -# Supported compilers: -# Visual C++ 5.x (possibly other versions) -# -# This is set up to build a perl.exe that runs off a shared library -# (perl57.dll). Also makes individual DLLs for the XS extensions. -# - -## -## Make sure you read README.win32 *before* you mess with anything here! -## - -## -## Build configuration. Edit the values below to suit your needs. -## - -# -# Set these to wherever you want "nmake install" to put your -# newly built perl. -# -INST_DRV = c: -INST_TOP = $(INST_DRV)\perl - -# -# Comment this out if you DON'T want your perl installation to be versioned. -# This means that the new installation will overwrite any files from the -# old installation at the same INST_TOP location. Leaving it enabled is -# the safest route, as perl adds the extra version directory to all the -# locations it installs files to. If you disable it, an alternative -# versioned installation can be obtained by setting INST_TOP above to a -# path that includes an arbitrary version string. -# -#INST_VER = \5.7.1 - -# -# Comment this out if you DON'T want your perl installation to have -# architecture specific components. This means that architecture- -# specific files will be installed along with the architecture-neutral -# files. Leaving it enabled is safer and more flexible, in case you -# want to build multiple flavors of perl and install them together in -# the same location. Commenting it out gives you a simpler -# installation that is easier to understand for beginners. -# -#INST_ARCH = \$(ARCHNAME) - -# -# uncomment to enable multiple interpreters. This is need for fork() -# emulation. -# -USE_MULTI = define - -# -# Beginnings of interpreter cloning/threads; still very incomplete. -# This should be enabled to get the fork() emulation. This needs -# USE_MULTI as well. -# -USE_ITHREADS = define - -# -# uncomment to enable the implicit "host" layer for all system calls -# made by perl. This needs USE_MULTI above. This is also needed to -# get fork(). -# -USE_IMP_SYS = define - -# -# uncomment to enable the experimental PerlIO I/O subsystem. -USE_PERLIO = define - -# -# WARNING! This option is deprecated and will eventually go away (enable -# USE_ITHREADS instead). -# -# uncomment to enable threads-capabilities. This is incompatible with -# USE_ITHREADS, and is only here for people who may have come to rely -# on the experimental Thread support that was in 5.005. -# -#USE_5005THREADS = define - -# -# WARNING! This option is deprecated and will eventually go away (enable -# USE_MULTI instead). -# -# uncomment next line if you want to use the PERL_OBJECT build option. -# DO NOT ENABLE unless you have legacy code that relies on the C++ -# CPerlObj class that was available in 5.005. This cannot be enabled -# if you ask for USE_5005THREADS above. -# -#USE_OBJECT = define - -# -# uncomment one of the following lines if you are using either -# Visual C++ 2.x or Visual C++ 6.x (aka Visual Studio 98) -# -#CCTYPE = MSVC20 -#CCTYPE = MSVC60 - -# -# uncomment next line if you want debug version of perl (big,slow) -# -#CFG = Debug - -# -# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler. -# It has patches that fix known bugs in older versions of MSVCRT.DLL. -# This currently requires VC 5.0 with Service Pack 3 or later. -# Get it from CPAN at http://www.perl.com/CPAN/authors/id/D/DO/DOUGL/ -# and follow the directions in the package to install. -# -# Not recommended if you have VC 6.x and you're not running Windows 9x. -# -#USE_PERLCRT = define - -# -# uncomment to enable linking with setargv.obj under the Visual C -# compiler. Setting this options enables perl to expand wildcards in -# arguments, but it may be harder to use alternate methods like -# File::DosGlob that are more powerful. This option is supported only with -# Visual C. -# -#USE_SETARGV = define - -# -# if you have the source for des_fcrypt(), uncomment this and make sure the -# file exists (see README.win32). File should be located in the same -# directory as this file. -# -#CRYPT_SRC = fcrypt.c - -# -# if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a -# library, uncomment this, and make sure the library exists (see README.win32) -# Specify the full pathname of the library. -# -#CRYPT_LIB = fcrypt.lib - -# -# set this if you wish to use perl's malloc -# WARNING: Turning this on/off WILL break binary compatibility with extensions -# you may have compiled with/without it. Be prepared to recompile all -# extensions if you change the default. Currently, this cannot be enabled -# if you ask for USE_IMP_SYS above. -# -#PERL_MALLOC = define - -# -# set the install locations of the compiler include/libraries -# Running VCVARS32.BAT is *required* when using Visual C. -# Some versions of Visual C don't define MSVCDIR in the environment, -# so you may have to set CCHOME explicitly (spaces in the path name should -# not be quoted) -# -#CCHOME = f:\msvc20 -CCHOME = $(MSVCDIR) -CCINCDIR = $(CCHOME)\include -CCLIBDIR = $(CCHOME)\lib - -# -# Additional compiler flags can be specified here. -# - -# -# This should normally be disabled. Adding -DPERL_POLLUTE enables support -# for old symbols by default, at the expense of extreme pollution. You most -# probably just want to build modules that won't compile with -# perl Makefile.PL POLLUTE=1 -# instead of enabling this. Please report such modules to the respective -# authors. -# -#BUILDOPT = $(BUILDOPT) -DPERL_POLLUTE - -# -# This should normally be disabled. Enabling it will disable the File::Glob -# implementation of CORE::glob. -# -#BUILDOPT = $(BUILDOPT) -DPERL_EXTERNAL_GLOB - -# -# This should normally be disabled. Enabling it causes perl to read scripts -# in text mode (which is the 5.005 behavior) and will break ByteLoader. -#BUILDOPT = $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS - -# -# specify semicolon-separated list of extra directories that modules will -# look for libraries (spaces in path names need not be quoted) -# -EXTRALIBDIRS = - -# -# set this to your email address (perl will guess a value from -# from your loginname and your hostname, which may not be right) -# -#EMAIL = - -## -## Build configuration ends. -## - -##################### CHANGE THESE ONLY IF YOU MUST ##################### - -!IF "$(CRYPT_SRC)$(CRYPT_LIB)" == "" -D_CRYPT = undef -!ELSE -D_CRYPT = define -CRYPT_FLAG = -DHAVE_DES_FCRYPT -!ENDIF - -!IF "$(USE_OBJECT)" == "define" -PERL_MALLOC = undef -USE_5005THREADS = undef -USE_MULTI = undef -USE_IMP_SYS = define -!ENDIF - -!IF "$(PERL_MALLOC)" == "" -PERL_MALLOC = undef -!ENDIF - -!IF "$(USE_5005THREADS)" == "" -USE_5005THREADS = undef -!ENDIF - -!IF "$(USE_5005THREADS)" == "define" -USE_ITHREADS = undef -!ENDIF - -!IF "$(USE_IMP_SYS)" == "define" -PERL_MALLOC = undef -!ENDIF - -!IF "$(USE_MULTI)" == "" -USE_MULTI = undef -!ENDIF - -!IF "$(USE_OBJECT)" == "" -USE_OBJECT = undef -!ENDIF - -!IF "$(USE_ITHREADS)" == "" -USE_ITHREADS = undef -!ENDIF - -!IF "$(USE_IMP_SYS)" == "" -USE_IMP_SYS = undef -!ENDIF - -!IF "$(USE_PERLIO)" == "" -USE_PERLIO = undef -!ENDIF - -!IF "$(USE_PERLCRT)" == "" -USE_PERLCRT = undef -!ENDIF - -!IF "$(USE_IMP_SYS)$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" == "defineundefundefundef" -USE_MULTI = define -!ENDIF - -!IF "$(USE_ITHREADS)$(USE_MULTI)$(USE_OBJECT)" == "defineundefundef" -USE_MULTI = define -USE_5005THREADS = undef -!ENDIF - -!IF "$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" != "undefundefundef" -BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT -!ENDIF - -!IF "$(USE_IMP_SYS)" != "undef" -BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS -!ENDIF - -!IF "$(PROCESSOR_ARCHITECTURE)" == "" -PROCESSOR_ARCHITECTURE = x86 -!ENDIF - -!IF "$(USE_OBJECT)" == "define" -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-object -!ELSE -!IF "$(USE_5005THREADS)" == "define" -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-thread -!ELSE -!IF "$(USE_MULTI)" == "define" -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi -!ELSE -!IF "$(USE_PERLIO)" == "define" -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-perlio -!ELSE -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE) -!ENDIF -!ENDIF -!ENDIF -!ENDIF - -!IF "$(USE_PERLIO)" == "define" -BUILDOPT = $(BUILDOPT) -DUSE_PERLIO -!ENDIF - -!IF "$(USE_ITHREADS)" == "define" -ARCHNAME = $(ARCHNAME)-thread -!ENDIF - -# Visual Studio 98 specific -!IF "$(CCTYPE)" == "MSVC60" - -# VC 6.0 can load the socket dll on demand. Makes the test suite -# run in about 10% less time. -DELAYLOAD = -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib -!ENDIF - -ARCHDIR = ..\lib\$(ARCHNAME) -COREDIR = ..\lib\CORE -AUTODIR = ..\lib\auto -LIBDIR = ..\lib -EXTDIR = ..\ext -PODDIR = ..\pod -EXTUTILSDIR = $(LIBDIR)\ExtUtils - -# -INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin -INST_BIN = $(INST_SCRIPT)$(INST_ARCH) -INST_LIB = $(INST_TOP)$(INST_VER)\lib -INST_ARCHLIB = $(INST_LIB)$(INST_ARCH) -INST_COREDIR = $(INST_ARCHLIB)\CORE -INST_POD = $(INST_LIB)\pod -INST_HTML = $(INST_TOP)$(INST_VER)\html - -# -# Programs to compile, build .lib files and link -# - -CC = cl -LINK32 = link -LIB32 = $(LINK32) -lib -RSC = rc - -# -# Options -# - -INCLUDES = -I$(COREDIR) -I.\include -I. -I.. -#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX -DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) -LOCDEFS = -DPERLDLL -DPERL_CORE -SUBSYS = console -CXX_FLAG = -TP -GX - -!IF "$(USE_PERLCRT)" != "define" -LIBC = msvcrt.lib -!ELSE -LIBC = PerlCRT.lib -!ENDIF - -PERLEXE_RES = -PERLDLL_RES = - -!IF "$(CFG)" == "Debug" -! IF "$(CCTYPE)" == "MSVC20" -OPTIMIZE = -Od -MD -Z7 -DDEBUGGING -! ELSE -OPTIMIZE = -Od -MD -Zi -DDEBUGGING -! ENDIF -LINK_DBG = -debug -pdb:none -!ELSE -# -O1 yields smaller code, which turns out to be faster than -O2 -#OPTIMIZE = -O2 -MD -DNDEBUG -OPTIMIZE = -O1 -MD -DNDEBUG -LINK_DBG = -release -!ENDIF - -!IF "$(USE_OBJECT)" == "define" -OPTIMIZE = $(OPTIMIZE) $(CXX_FLAG) -BUILDOPT = $(BUILDOPT) -DPERL_OBJECT -!ENDIF - -!IF "$(USE_PERLCRT)" != "define" -BUILDOPT = $(BUILDOPT) -DPERL_MSVCRT_READFIX -!ENDIF - -LIBBASEFILES = $(CRYPT_LIB) \ - oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \ - comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ - netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \ - version.lib odbc32.lib odbccp32.lib - -# we add LIBC here, since we may be using PerlCRT.dll -LIBFILES = $(LIBBASEFILES) $(LIBC) - -CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \ - $(PCHFLAGS) $(OPTIMIZE) -LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \ - -libpath:"$(INST_COREDIR)" \ - -machine:$(PROCESSOR_ARCHITECTURE) -OBJOUT_FLAG = -Fo -EXEOUT_FLAG = -Fe - -CFLAGS_O = $(CFLAGS) $(BUILDOPT) - -#################### do not edit below this line ####################### -############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ############## - -o = .obj - -# -# Rules -# - -.SUFFIXES : .c $(o) .dll .lib .exe .rc .res - -.c$(o): - $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $< - -.y.c: - $(NOOP) - -$(o).dll: - $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \ - -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL) - -.rc.res: - $(RSC) -i.. $< - -# -# various targets - -# makedef.pl must be updated if this changes, and this should normally -# only change when there is an incompatible revision of the public API. -# XXX so why did we change it from perl56 to perl57? -PERLIMPLIB = ..\perl57.lib -PERLDLL = ..\perl57.dll - -MINIPERL = ..\miniperl.exe -MINIDIR = .\mini -PERLEXE = ..\perl.exe -WPERLEXE = ..\wperl.exe -GLOBEXE = ..\perlglob.exe -CONFIGPM = ..\lib\Config.pm -MINIMOD = ..\lib\ExtUtils\Miniperl.pm -X2P = ..\x2p\a2p.exe - -# Nominate a target which causes extensions to be re-built -# This used to be $(PERLEXE), but at worst it is the .dll that they depend -# on and really only the interface - i.e. the .def file used to export symbols -# from the .dll -PERLDEP = perldll.def - -PL2BAT = bin\pl2bat.pl -GLOBBAT = bin\perlglob.bat - -UTILS = \ - ..\utils\h2ph \ - ..\utils\splain \ - ..\utils\dprofpp \ - ..\utils\perlbug \ - ..\utils\pl2pm \ - ..\utils\c2ph \ - ..\utils\h2xs \ - ..\utils\perldoc \ - ..\utils\perlcc \ - ..\pod\checkpods \ - ..\pod\pod2html \ - ..\pod\pod2latex \ - ..\pod\pod2man \ - ..\pod\pod2text \ - ..\pod\pod2usage \ - ..\pod\podchecker \ - ..\pod\podselect \ - ..\x2p\find2perl \ - ..\x2p\s2p \ - bin\exetype.pl \ - bin\runperl.pl \ - bin\pl2bat.pl \ - bin\perlglob.pl \ - bin\search.pl - -MAKE = nmake -nologo -MAKE_BARE = nmake - -CFGSH_TMPL = config.vc -CFGH_TMPL = config_H.vc - -XCOPY = xcopy /f /r /i /d -RCOPY = xcopy /f /r /i /e /d -NOOP = @echo -NULL = - -DEL = bin\mdelete.bat - -# -# filenames given to xsubpp must have forward slashes (since it puts -# full pathnames in #line strings) -XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \ - -C++ -prototypes - -MICROCORE_SRC = \ - ..\av.c \ - ..\deb.c \ - ..\doio.c \ - ..\doop.c \ - ..\dump.c \ - ..\globals.c \ - ..\gv.c \ - ..\hv.c \ - ..\mg.c \ - ..\op.c \ - ..\perl.c \ - ..\perlapi.c \ - ..\perly.c \ - ..\pp.c \ - ..\pp_ctl.c \ - ..\pp_hot.c \ - ..\pp_sys.c \ - ..\regcomp.c \ - ..\regexec.c \ - ..\run.c \ - ..\scope.c \ - ..\sv.c \ - ..\taint.c \ - ..\toke.c \ - ..\universal.c \ - ..\utf8.c \ - ..\util.c \ - ..\xsutils.c - -EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c - -!IF "$(PERL_MALLOC)" == "define" -EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c -!ENDIF - -!IF "$(USE_OBJECT)" != "define" -EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c -!ENDIF - -WIN32_SRC = \ - .\win32.c \ - .\win32sck.c \ - .\win32thread.c - -!IF "$(CRYPT_SRC)" != "" -WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC) -!ENDIF - -DLL_SRC = $(DYNALOADER).c - -X2P_SRC = \ - ..\x2p\a2p.c \ - ..\x2p\hash.c \ - ..\x2p\str.c \ - ..\x2p\util.c \ - ..\x2p\walk.c - -CORE_NOCFG_H = \ - ..\av.h \ - ..\cop.h \ - ..\cv.h \ - ..\dosish.h \ - ..\embed.h \ - ..\form.h \ - ..\gv.h \ - ..\handy.h \ - ..\hv.h \ - ..\iperlsys.h \ - ..\mg.h \ - ..\nostdio.h \ - ..\op.h \ - ..\opcode.h \ - ..\perl.h \ - ..\perlapi.h \ - ..\perlsdio.h \ - ..\perlsfio.h \ - ..\perly.h \ - ..\pp.h \ - ..\proto.h \ - ..\regexp.h \ - ..\scope.h \ - ..\sv.h \ - ..\thread.h \ - ..\unixish.h \ - ..\utf8.h \ - ..\util.h \ - ..\warnings.h \ - ..\XSUB.h \ - ..\EXTERN.h \ - ..\perlvars.h \ - ..\intrpvar.h \ - ..\thrdvar.h \ - .\include\dirent.h \ - .\include\netdb.h \ - .\include\sys\socket.h \ - .\win32.h - -CORE_H = $(CORE_NOCFG_H) .\config.h - -MICROCORE_OBJ = $(MICROCORE_SRC:.c=.obj) -CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj) -WIN32_OBJ = $(WIN32_SRC:.c=.obj) -MINICORE_OBJ = $(MICROCORE_OBJ:..\=.\mini\) \ - $(MINIDIR)\miniperlmain$(o) \ - $(MINIDIR)\perlio$(o) -MINIWIN32_OBJ = $(WIN32_OBJ:.\=.\mini\) -MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ) -DLL_OBJ = $(DLL_SRC:.c=.obj) -X2P_OBJ = $(X2P_SRC:.c=.obj) - -PERLDLL_OBJ = $(CORE_OBJ) -PERLEXE_OBJ = perlmain$(o) - -PERLDLL_OBJ = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ) -#PERLEXE_OBJ = $(PERLEXE_OBJ) $(WIN32_OBJ) $(DLL_OBJ) - -!IF "$(USE_SETARGV)" != "" -SETARGV_OBJ = setargv$(o) -!ENDIF - -DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader -SOCKET = $(EXTDIR)\Socket\Socket -FCNTL = $(EXTDIR)\Fcntl\Fcntl -OPCODE = $(EXTDIR)\Opcode\Opcode -SDBM_FILE = $(EXTDIR)\SDBM_File\SDBM_File -IO = $(EXTDIR)\IO\IO -POSIX = $(EXTDIR)\POSIX\POSIX -ATTRS = $(EXTDIR)\attrs\attrs -THREAD = $(EXTDIR)\Thread\Thread -B = $(EXTDIR)\B\B -RE = $(EXTDIR)\re\re -DUMPER = $(EXTDIR)\Data\Dumper\Dumper -ERRNO = $(EXTDIR)\Errno\Errno -PEEK = $(EXTDIR)\Devel\Peek\Peek -BYTELOADER = $(EXTDIR)\ByteLoader\ByteLoader -DPROF = $(EXTDIR)\Devel\DProf\DProf -GLOB = $(EXTDIR)\File\Glob\Glob -HOSTNAME = $(EXTDIR)\Sys\Hostname\Hostname -STORABLE = $(EXTDIR)\Storable\Storable -FILTER = $(EXTDIR)\Filter\Util\Call\Call -ENCODE = $(EXTDIR)\Encode\Encode -MD5 = $(EXTDIR)\Digest\MD5\MD5 -PERLIOSCALAR = $(EXTDIR)\PerlIO\Scalar\Scalar -MIMEBASE64 = $(EXTDIR)\MIME\Base64\Base64 -TIMEHIRES = $(EXTDIR)\Time\HiRes\HiRes -TIMEPIECE = $(EXTDIR)\Time\Piece\Piece -CWD = $(EXTDIR)\Cwd\Cwd -LISTUTIL = $(EXTDIR)\List\Util\Util -PERLIOVIA = $(EXTDIR)\PerlIO\Via\Via -XSTYPEMAP = $(EXTDIR)\XS\Typemap\Typemap - -SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll -FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll -OPCODE_DLL = $(AUTODIR)\Opcode\Opcode.dll -SDBM_FILE_DLL = $(AUTODIR)\SDBM_File\SDBM_File.dll -IO_DLL = $(AUTODIR)\IO\IO.dll -POSIX_DLL = $(AUTODIR)\POSIX\POSIX.dll -ATTRS_DLL = $(AUTODIR)\attrs\attrs.dll -THREAD_DLL = $(AUTODIR)\Thread\Thread.dll -B_DLL = $(AUTODIR)\B\B.dll -DUMPER_DLL = $(AUTODIR)\Data\Dumper\Dumper.dll -PEEK_DLL = $(AUTODIR)\Devel\Peek\Peek.dll -RE_DLL = $(AUTODIR)\re\re.dll -BYTELOADER_DLL = $(AUTODIR)\ByteLoader\ByteLoader.dll -DPROF_DLL = $(AUTODIR)\Devel\DProf\DProf.dll -GLOB_DLL = $(AUTODIR)\File\Glob\Glob.dll -HOSTNAME_DLL = $(AUTODIR)\Sys\Hostname\Hostname.dll -STORABLE_DLL = $(AUTODIR)\Storable\Storable.dll -FILTER_DLL = $(AUTODIR)\Filter\Util\Call\Call.dll -ENCODE_DLL = $(AUTODIR)\Encode\Encode.dll -MD5_DLL = $(AUTODIR)\Digest\MD5\MD5.dll -PERLIOSCALAR_DLL= $(AUTODIR)\PerlIO\Scalar\Scalar.dll -MIMEBASE64_DLL = $(AUTODIR)\MIME\Base64\Base64.dll -TIMEHIRES_DLL = $(AUTODIR)\Time\HiRes\HiRes.dll -TIMEPIECE_DLL = $(AUTODIR)\Time\Piece\Piece.dll -CWD_DLL = $(AUTODIR)\Cwd\Cwd.dll -LISTUTIL_DLL = $(AUTODIR)\List\Util\Util.dll -PERLIOVIA_DLL = $(AUTODIR)\PerlIO\Via\Via.dll -XSTYPEMAP_DLL = $(AUTODIR)\XS\Typemap\Typemap.dll - -EXTENSION_C = \ - $(SOCKET).c \ - $(FCNTL).c \ - $(OPCODE).c \ - $(SDBM_FILE).c \ - $(IO).c \ - $(POSIX).c \ - $(ATTRS).c \ - $(THREAD).c \ - $(RE).c \ - $(DUMPER).c \ - $(PEEK).c \ - $(B).c \ - $(BYTELOADER).c \ - $(DPROF).c \ - $(GLOB).c \ - $(HOSTNAME).c \ - $(STORABLE).c \ - $(FILTER).c \ - $(ENCODE).c \ - $(MD5).c \ - $(PERLIOSCALAR).c \ - $(MIMEBASE64).c \ - $(TIMEHIRES).c \ - $(TIMEPIECE).c \ - $(CWD).c \ - $(LISTUTIL).c \ - $(PERLIOVIA).c \ - $(XSTYPEMAP).c - -EXTENSION_DLL = \ - $(SOCKET_DLL) \ - $(FCNTL_DLL) \ - $(OPCODE_DLL) \ - $(SDBM_FILE_DLL)\ - $(IO_DLL) \ - $(POSIX_DLL) \ - $(ATTRS_DLL) \ - $(DUMPER_DLL) \ - $(PEEK_DLL) \ - $(B_DLL) \ - $(RE_DLL) \ - $(THREAD_DLL) \ - $(BYTELOADER_DLL) \ - $(DPROF_DLL) \ - $(GLOB_DLL) \ - $(HOSTNAME_DLL) \ - $(STORABLE_DLL) \ - $(FILTER_DLL) \ - $(ENCODE_DLL) \ - $(MD5_DLL) \ - $(PERLIOSCALAR_DLL) \ - $(MIMEBASE64_DLL) \ - $(TIMEHIRES_DLL) \ - $(TIMEPIECE_DLL) \ - $(CWD_DLL) \ - $(LISTUTIL_DLL) \ - $(PERLIOVIA_DLL) \ - $(XSTYPEMAP_DLL) - -POD2HTML = $(PODDIR)\pod2html -POD2MAN = $(PODDIR)\pod2man -POD2LATEX = $(PODDIR)\pod2latex -POD2TEXT = $(PODDIR)\pod2text - -CFG_VARS = \ - "INST_DRV=$(INST_DRV)" \ - "INST_TOP=$(INST_TOP)" \ - "INST_VER=$(INST_VER)" \ - "INST_ARCH=$(INST_ARCH)" \ - "archname=$(ARCHNAME)" \ - "cc=$(CC)" \ - "ld=$(LINK32)" \ - "ccflags=-nologo -Gf -W3 $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)" \ - "cf_email=$(EMAIL)" \ - "d_crypt=$(D_CRYPT)" \ - "d_mymalloc=$(PERL_MALLOC)" \ - "libs=$(LIBFILES)" \ - "incpath=$(CCINCDIR:"=\")" \ - "libperl=$(PERLIMPLIB:..\=)" \ - "libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")" \ - "libc=$(LIBC)" \ - "make=$(MAKE_BARE)" \ - "use5005threads=$(USE_5005THREADS)" \ - "useithreads=$(USE_ITHREADS)" \ - "usethreads=$(USE_5005THREADS)" \ - "usemultiplicity=$(USE_MULTI)" \ - "useperlio=$(USE_PERLIO)" \ - "LINK_FLAGS=$(LINK_FLAGS:"=\")" \ - "optimize=$(OPTIMIZE:"=\")" - -# -# Top targets -# - -all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) \ - $(X2P) Extensions - @echo Everything is up to date. '$(MAKE_BARE) test' to run test suite. - -$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c - -#------------------------------------------------------------ - -$(GLOBEXE) : perlglob$(o) - $(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \ - perlglob$(o) setargv$(o) - -perlglob$(o) : perlglob.c - -config.w32 : $(CFGSH_TMPL) - copy $(CFGSH_TMPL) config.w32 - -.\config.h : $(CFGH_TMPL) - -del /f config.h - copy $(CFGH_TMPL) config.h - -..\config.sh : config.w32 $(MINIPERL) config_sh.PL - $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) config.w32 > ..\config.sh - -# this target is for when changes to the main config.sh happen -# edit config.{b,v,g}c and make this target once for each supported -# compiler (e.g. `nmake CCTYPE=BORLAND regen_config_h`) -regen_config_h: - perl config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh - cd .. - -del /f perl.exe - perl configpm - cd win32 - -del /f $(CFGH_TMPL) - -mkdir $(COREDIR) - -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)" - rename config.h $(CFGH_TMPL) - -$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl - cd .. - miniperl configpm - cd win32 - if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL) - $(XCOPY) ..\*.h $(COREDIR)\*.* - $(XCOPY) *.h $(COREDIR)\*.* - $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.* - $(RCOPY) include $(COREDIR)\*.* - -$(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" - if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM) - -$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) - $(LINK32) -subsystem:console -out:$@ @<< - $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ) -<< - -$(MINIDIR) : - if not exist "$(MINIDIR)" mkdir "$(MINIDIR)" - -$(MINICORE_OBJ) : $(CORE_NOCFG_H) - $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*F).c - -$(MINIWIN32_OBJ) : $(CORE_NOCFG_H) - $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*F).c - -# -DPERL_IMPLICIT_SYS needs C++ for perllib.c -# This is the only file that depends on perlhost.h, vmem.h, and vdir.h -!IF "$(USE_IMP_SYS)$(USE_OBJECT)" == "defineundef" -perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h - $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c -!ENDIF - -# 1. we don't want to rebuild miniperl.exe when config.h changes -# 2. we don't want to rebuild miniperl.exe with non-default config.h -$(MINI_OBJ) : $(CORE_NOCFG_H) - -$(WIN32_OBJ) : $(CORE_H) -$(CORE_OBJ) : $(CORE_H) -$(DLL_OBJ) : $(CORE_H) -$(X2P_OBJ) : $(CORE_H) - -perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl - $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \ - CCTYPE=$(CCTYPE) > perldll.def - -$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) - $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @<< - $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES) -<< - $(XCOPY) $(PERLIMPLIB) $(COREDIR) - -$(MINIMOD) : $(MINIPERL) ..\minimod.pl - cd .. - miniperl minimod.pl > lib\ExtUtils\Miniperl.pm - cd win32 - -..\x2p\a2p$(o) : ..\x2p\a2p.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c - -..\x2p\hash$(o) : ..\x2p\hash.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c - -..\x2p\str$(o) : ..\x2p\str.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c - -..\x2p\util$(o) : ..\x2p\util.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c - -..\x2p\walk$(o) : ..\x2p\walk.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c - -$(X2P) : $(MINIPERL) $(X2P_OBJ) - $(MINIPERL) ..\x2p\find2perl.PL - $(MINIPERL) ..\x2p\s2p.PL - $(LINK32) -subsystem:console -out:$@ @<< - $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ) -<< - -perlmain.c : runperl.c - copy runperl.c perlmain.c - -perlmain$(o) : perlmain.c - $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c - -$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES) - $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(LINK_FLAGS) \ - $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES) - copy $(PERLEXE) $(WPERLEXE) - $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS - copy splittree.pl .. - $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR) - -$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM) - if not exist $(AUTODIR) mkdir $(AUTODIR) - cd $(EXTDIR)\$(*B) - ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL - ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL - cd ..\..\win32 - $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) - $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL) - cd $(EXTDIR)\$(*B) - $(XSUBPP) dl_win32.xs > $(*B).c - cd ..\..\win32 - -$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs - copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs - -#---------------------------------------------------------------------------------- -Extensions: buildext.pl $(PERLDEP) $(CONFIGPM) - $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) - -Extensions_clean: - -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean - -#---------------------------------------------------------------------------------- - -doc: $(PERLEXE) - $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \ - --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML::=|)" \ - --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse - -utils: $(PERLEXE) $(X2P) - cd ..\utils - $(MAKE) PERL=$(MINIPERL) - cd ..\pod - copy ..\README.aix .\perlaix.pod - copy ..\README.amiga .\perlamiga.pod - copy ..\README.bs2000 .\perlbs2000.pod - copy ..\README.cygwin .\perlcygwin.pod - copy ..\README.dgux .\perldgux.pod - copy ..\README.dos .\perldos.pod - copy ..\README.epoc .\perlepoc.pod - copy ..\README.hpux .\perlhpux.pod - copy ..\README.machten .\perlmachten.pod - copy ..\README.macos .\perlmacos.pod - copy ..\README.mpeix .\perlmpeix.pod - copy ..\README.os2 .\perlos2.pod - copy ..\README.os390 .\perlos390.pod - copy ..\README.solaris .\perlsolaris.pod - copy ..\README.tru64 .\perltru64.pod - copy ..\README.vmesa .\perlvmesa.pod - copy ..\vms\perlvms.pod .\perlvms.pod - copy ..\README.vos .\perlvos.pod - copy ..\README.win32 .\perlwin32.pod - $(MAKE) -f ..\win32\pod.mak converters - cd ..\lib - $(PERLEXE) lib_pm.PL - cd ..\win32 - $(PERLEXE) $(PL2BAT) $(UTILS) - -distclean: clean - -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \ - $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD) - -del /f *.def *.map - -del /f $(EXTENSION_DLL) - -del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm - -del /f $(EXTDIR)\DynaLoader\dl_win32.xs - -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm - -del /f $(LIBDIR)\XSLoader.pm - -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm - -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm $(LIBDIR)\Thread.pm - -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm - -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm - -del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm - -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm - -del /f $(LIBDIR)\File\Glob.pm - -del /f $(LIBDIR)\Storable.pm - -del /f $(LIBDIR)\Filter\Util\Call.pm - -del /f $(LIBDIR)\Digest\MD5.pm - -del /f $(LIBDIR)\PerlIO\Scalar.pm - -del /f $(LIBDIR)\PerlIO\Via.pm - -del /f $(LIBDIR)\MIME\Base64.pm - -del /f $(LIBDIR)\MIME\QuotedPrint.pm - -del /f $(LIBDIR)\List\Util.pm - -del /f $(LIBDIR)\Scalar\Util.pm - -del /f $(LIBDIR)\Time\HiRes.pm - -del /f $(LIBDIR)\Time\Piece.pm - -del /f $(LIBDIR)\Cwd.pm - -del /f $(LIBDIR)\XS\Typemap.pm - -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO - -rmdir /s $(LIBDIR)\IO - -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread - -rmdir /s $(LIBDIR)\Thread - -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B - -rmdir /s $(LIBDIR)\B - -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data - -rmdir /s $(LIBDIR)\Data - -if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util - -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest - -rmdir /s $(LIBDIR)\Digest - -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME - -rmdir /s $(LIBDIR)\MIME - -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List - -rmdir /s $(LIBDIR)\List - -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar - -rmdir /s $(LIBDIR)\Scalar - -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS - -rmdir /s $(LIBDIR)\XS - cd $(PODDIR) - -del /f *.html *.bat checkpods \ - perlaix.pod perlamiga.pod perlbs2000.pod perlcygwin.pod \ - perldos.pod perlepoc.pod perlhpux.pod perlmachten.pod \ - perlmacos.pod perlmpeix.pod perlos2.pod perlos390.pod \ - perlsolaris.pod perlvmesa.pod perlvms.pod perlvos.pod \ - perlwin32.pod pod2html pod2latex pod2man pod2text pod2usage \ - podchecker podselect - cd ..\utils - -del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc dprofpp - -del /f *.bat - cd ..\win32 - cd ..\x2p - -del /f find2perl s2p - -del /f *.bat - cd ..\win32 - -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new - -del /f $(CONFIGPM) - -del /f bin\*.bat - cd $(EXTDIR) - -del /s *.lib *.def *.map *.pdb *.bs Makefile *$(o) pm_to_blib - cd ..\win32 - -if exist $(AUTODIR) rmdir /s /q $(AUTODIR) - -rmdir /s $(AUTODIR) - -if exist $(COREDIR) rmdir /s /q $(COREDIR) - -rmdir /s $(COREDIR) - -install : all installbare installhtml - -installbare : utils - $(PERLEXE) ..\installperl - if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.* - $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.* - $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.* - -installhtml : doc - $(RCOPY) html\*.* $(INST_HTML)\*.* - -inst_lib : $(CONFIGPM) - copy splittree.pl .. - $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR) - $(RCOPY) ..\lib $(INST_LIB)\*.* - -minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils - $(XCOPY) $(MINIPERL) ..\t\perl.exe - $(XCOPY) $(GLOBEXE) ..\t\$(NULL) - attrib -r ..\t\*.* - copy test ..\t - cd ..\t - $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t - cd ..\win32 - -test-prep : all utils - $(XCOPY) $(PERLEXE) ..\t\$(NULL) - $(XCOPY) $(PERLDLL) ..\t\$(NULL) - $(XCOPY) $(GLOBEXE) ..\t\$(NULL) - -test : test-prep - cd ..\t - $(PERLEXE) -I..\lib harness - cd ..\win32 - -test-notty : test-prep - set PERL_SKIP_TTY_TEST=1 - cd ..\t - $(PERLEXE) -I..\lib harness - cd ..\win32 - -test-wide : test-prep - set HARNESS_PERL_SWITCHES=-C - cd ..\t - $(PERLEXE) -I..\lib harness - cd ..\win32 - -test-wide-notty : test-prep - set PERL_SKIP_TTY_TEST=1 - set HARNESS_PERL_SWITCHES=-C - cd ..\t - $(PERLEXE) -I..\lib harness - cd ..\win32 - -clean : Extensions_clean - -@$(DEL) miniperlmain$(o) - -@$(DEL) $(MINIPERL) - -@$(DEL) perlglob$(o) - -@$(DEL) perlmain$(o) - -@$(DEL) config.w32 - -@$(DEL) config.h - -@$(DEL) $(GLOBEXE) - -@$(DEL) $(PERLEXE) - -@$(DEL) $(WPERLEXE) - -@$(DEL) $(PERLDLL) - -@$(DEL) $(CORE_OBJ) - -if exist $(MINIDIR) rmdir /s /q $(MINIDIR) - -rmdir /s $(MINIDIR) - -@$(DEL) $(WIN32_OBJ) - -@$(DEL) $(DLL_OBJ) - -@$(DEL) $(X2P_OBJ) - -@$(DEL) ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp *.res - -@$(DEL) ..\t\*.exe ..\t\*.dll ..\t\*.bat - -@$(DEL) ..\x2p\*.exe ..\x2p\*.bat - -@$(DEL) *.ilk - -@$(DEL) *.pdb - -# Handy way to run perlbug -ok without having to install and run the -# installed perlbug. We don't re-run the tests here - we trust the user. -# Please *don't* use this unless all tests pass. -# If you want to report test failures, use "nmake nok" instead. -ok: utils - $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" - -okfile: utils - $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok - -nok: utils - $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" - -nokfile: utils - $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok +#
+# Makefile to build perl on Windows NT using Microsoft NMAKE.
+# Supported compilers:
+# Visual C++ 5.x (possibly other versions)
+#
+# This is set up to build a perl.exe that runs off a shared library
+# (perl57.dll). Also makes individual DLLs for the XS extensions.
+#
+
+##
+## Make sure you read README.win32 *before* you mess with anything here!
+##
+
+##
+## Build configuration. Edit the values below to suit your needs.
+##
+
+#
+# Set these to wherever you want "nmake install" to put your
+# newly built perl.
+#
+INST_DRV = c:
+INST_TOP = $(INST_DRV)\perl
+
+#
+# Comment this out if you DON'T want your perl installation to be versioned.
+# This means that the new installation will overwrite any files from the
+# old installation at the same INST_TOP location. Leaving it enabled is
+# the safest route, as perl adds the extra version directory to all the
+# locations it installs files to. If you disable it, an alternative
+# versioned installation can be obtained by setting INST_TOP above to a
+# path that includes an arbitrary version string.
+#
+#INST_VER = \5.7.1
+
+#
+# Comment this out if you DON'T want your perl installation to have
+# architecture specific components. This means that architecture-
+# specific files will be installed along with the architecture-neutral
+# files. Leaving it enabled is safer and more flexible, in case you
+# want to build multiple flavors of perl and install them together in
+# the same location. Commenting it out gives you a simpler
+# installation that is easier to understand for beginners.
+#
+#INST_ARCH = \$(ARCHNAME)
+
+#
+# uncomment to enable multiple interpreters. This is need for fork()
+# emulation.
+#
+USE_MULTI = define
+
+#
+# Beginnings of interpreter cloning/threads; still very incomplete.
+# This should be enabled to get the fork() emulation. This needs
+# USE_MULTI as well.
+#
+USE_ITHREADS = define
+
+#
+# uncomment to enable the implicit "host" layer for all system calls
+# made by perl. This needs USE_MULTI above. This is also needed to
+# get fork().
+#
+USE_IMP_SYS = define
+
+#
+# uncomment to enable the experimental PerlIO I/O subsystem.
+USE_PERLIO = define
+
+#
+# WARNING! This option is deprecated and will eventually go away (enable
+# USE_ITHREADS instead).
+#
+# uncomment to enable threads-capabilities. This is incompatible with
+# USE_ITHREADS, and is only here for people who may have come to rely
+# on the experimental Thread support that was in 5.005.
+#
+#USE_5005THREADS = define
+
+#
+# WARNING! This option is deprecated and will eventually go away (enable
+# USE_MULTI instead).
+#
+# uncomment next line if you want to use the PERL_OBJECT build option.
+# DO NOT ENABLE unless you have legacy code that relies on the C++
+# CPerlObj class that was available in 5.005. This cannot be enabled
+# if you ask for USE_5005THREADS above.
+#
+#USE_OBJECT = define
+
+#
+# uncomment one of the following lines if you are using either
+# Visual C++ 2.x or Visual C++ 6.x (aka Visual Studio 98)
+#
+#CCTYPE = MSVC20
+#CCTYPE = MSVC60
+
+#
+# uncomment next line if you want debug version of perl (big,slow)
+#
+#CFG = Debug
+
+#
+# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.
+# It has patches that fix known bugs in older versions of MSVCRT.DLL.
+# This currently requires VC 5.0 with Service Pack 3 or later.
+# Get it from CPAN at http://www.perl.com/CPAN/authors/id/D/DO/DOUGL/
+# and follow the directions in the package to install.
+#
+# Not recommended if you have VC 6.x and you're not running Windows 9x.
+#
+#USE_PERLCRT = define
+
+#
+# uncomment to enable linking with setargv.obj under the Visual C
+# compiler. Setting this options enables perl to expand wildcards in
+# arguments, but it may be harder to use alternate methods like
+# File::DosGlob that are more powerful. This option is supported only with
+# Visual C.
+#
+#USE_SETARGV = define
+
+#
+# if you have the source for des_fcrypt(), uncomment this and make sure the
+# file exists (see README.win32). File should be located in the same
+# directory as this file.
+#
+#CRYPT_SRC = fcrypt.c
+
+#
+# if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
+# library, uncomment this, and make sure the library exists (see README.win32)
+# Specify the full pathname of the library.
+#
+#CRYPT_LIB = fcrypt.lib
+
+#
+# set this if you wish to use perl's malloc
+# WARNING: Turning this on/off WILL break binary compatibility with extensions
+# you may have compiled with/without it. Be prepared to recompile all
+# extensions if you change the default. Currently, this cannot be enabled
+# if you ask for USE_IMP_SYS above.
+#
+#PERL_MALLOC = define
+
+#
+# set the install locations of the compiler include/libraries
+# Running VCVARS32.BAT is *required* when using Visual C.
+# Some versions of Visual C don't define MSVCDIR in the environment,
+# so you may have to set CCHOME explicitly (spaces in the path name should
+# not be quoted)
+#
+#CCHOME = f:\msvc20
+CCHOME = $(MSVCDIR)
+CCINCDIR = $(CCHOME)\include
+CCLIBDIR = $(CCHOME)\lib
+
+#
+# Additional compiler flags can be specified here.
+#
+
+#
+# This should normally be disabled. Adding -DPERL_POLLUTE enables support
+# for old symbols by default, at the expense of extreme pollution. You most
+# probably just want to build modules that won't compile with
+# perl Makefile.PL POLLUTE=1
+# instead of enabling this. Please report such modules to the respective
+# authors.
+#
+#BUILDOPT = $(BUILDOPT) -DPERL_POLLUTE
+
+#
+# This should normally be disabled. Enabling it will disable the File::Glob
+# implementation of CORE::glob.
+#
+#BUILDOPT = $(BUILDOPT) -DPERL_EXTERNAL_GLOB
+
+#
+# This should normally be disabled. Enabling it causes perl to read scripts
+# in text mode (which is the 5.005 behavior) and will break ByteLoader.
+#BUILDOPT = $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS
+
+#
+# specify semicolon-separated list of extra directories that modules will
+# look for libraries (spaces in path names need not be quoted)
+#
+EXTRALIBDIRS =
+
+#
+# set this to your email address (perl will guess a value from
+# from your loginname and your hostname, which may not be right)
+#
+#EMAIL =
+
+##
+## Build configuration ends.
+##
+
+##################### CHANGE THESE ONLY IF YOU MUST #####################
+
+!IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
+D_CRYPT = undef
+!ELSE
+D_CRYPT = define
+CRYPT_FLAG = -DHAVE_DES_FCRYPT
+!ENDIF
+
+!IF "$(USE_OBJECT)" == "define"
+PERL_MALLOC = undef
+USE_5005THREADS = undef
+USE_MULTI = undef
+USE_IMP_SYS = define
+!ENDIF
+
+!IF "$(PERL_MALLOC)" == ""
+PERL_MALLOC = undef
+!ENDIF
+
+!IF "$(USE_5005THREADS)" == ""
+USE_5005THREADS = undef
+!ENDIF
+
+!IF "$(USE_5005THREADS)" == "define"
+USE_ITHREADS = undef
+!ENDIF
+
+!IF "$(USE_IMP_SYS)" == "define"
+PERL_MALLOC = undef
+!ENDIF
+
+!IF "$(USE_MULTI)" == ""
+USE_MULTI = undef
+!ENDIF
+
+!IF "$(USE_OBJECT)" == ""
+USE_OBJECT = undef
+!ENDIF
+
+!IF "$(USE_ITHREADS)" == ""
+USE_ITHREADS = undef
+!ENDIF
+
+!IF "$(USE_IMP_SYS)" == ""
+USE_IMP_SYS = undef
+!ENDIF
+
+!IF "$(USE_PERLIO)" == ""
+USE_PERLIO = undef
+!ENDIF
+
+!IF "$(USE_PERLCRT)" == ""
+USE_PERLCRT = undef
+!ENDIF
+
+!IF "$(USE_IMP_SYS)$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" == "defineundefundefundef"
+USE_MULTI = define
+!ENDIF
+
+!IF "$(USE_ITHREADS)$(USE_MULTI)$(USE_OBJECT)" == "defineundefundef"
+USE_MULTI = define
+USE_5005THREADS = undef
+!ENDIF
+
+!IF "$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" != "undefundefundef"
+BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
+!ENDIF
+
+!IF "$(USE_IMP_SYS)" != "undef"
+BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS
+!ENDIF
+
+!IF "$(PROCESSOR_ARCHITECTURE)" == ""
+PROCESSOR_ARCHITECTURE = x86
+!ENDIF
+
+!IF "$(USE_OBJECT)" == "define"
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-object
+!ELSE
+!IF "$(USE_5005THREADS)" == "define"
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-thread
+!ELSE
+!IF "$(USE_MULTI)" == "define"
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi
+!ELSE
+!IF "$(USE_PERLIO)" == "define"
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-perlio
+!ELSE
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)
+!ENDIF
+!ENDIF
+!ENDIF
+!ENDIF
+
+!IF "$(USE_PERLIO)" == "define"
+BUILDOPT = $(BUILDOPT) -DUSE_PERLIO
+!ENDIF
+
+!IF "$(USE_ITHREADS)" == "define"
+ARCHNAME = $(ARCHNAME)-thread
+!ENDIF
+
+# Visual Studio 98 specific
+!IF "$(CCTYPE)" == "MSVC60"
+
+# VC 6.0 can load the socket dll on demand. Makes the test suite
+# run in about 10% less time.
+DELAYLOAD = -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib
+!ENDIF
+
+ARCHDIR = ..\lib\$(ARCHNAME)
+COREDIR = ..\lib\CORE
+AUTODIR = ..\lib\auto
+LIBDIR = ..\lib
+EXTDIR = ..\ext
+PODDIR = ..\pod
+EXTUTILSDIR = $(LIBDIR)\ExtUtils
+
+#
+INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
+INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
+INST_LIB = $(INST_TOP)$(INST_VER)\lib
+INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
+INST_COREDIR = $(INST_ARCHLIB)\CORE
+INST_POD = $(INST_LIB)\pod
+INST_HTML = $(INST_TOP)$(INST_VER)\html
+
+#
+# Programs to compile, build .lib files and link
+#
+
+CC = cl
+LINK32 = link
+LIB32 = $(LINK32) -lib
+RSC = rc
+
+#
+# Options
+#
+
+INCLUDES = -I$(COREDIR) -I.\include -I. -I..
+#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
+DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
+LOCDEFS = -DPERLDLL -DPERL_CORE
+SUBSYS = console
+CXX_FLAG = -TP -GX
+
+!IF "$(USE_PERLCRT)" != "define"
+LIBC = msvcrt.lib
+!ELSE
+LIBC = PerlCRT.lib
+!ENDIF
+
+PERLEXE_RES =
+PERLDLL_RES =
+
+!IF "$(CFG)" == "Debug"
+! IF "$(CCTYPE)" == "MSVC20"
+OPTIMIZE = -Od -MD -Z7 -DDEBUGGING
+! ELSE
+OPTIMIZE = -Od -MD -Zi -DDEBUGGING
+! ENDIF
+LINK_DBG = -debug -pdb:none
+!ELSE
+# -O1 yields smaller code, which turns out to be faster than -O2
+#OPTIMIZE = -O2 -MD -DNDEBUG
+OPTIMIZE = -O1 -MD -DNDEBUG
+LINK_DBG = -release
+!ENDIF
+
+!IF "$(USE_OBJECT)" == "define"
+OPTIMIZE = $(OPTIMIZE) $(CXX_FLAG)
+BUILDOPT = $(BUILDOPT) -DPERL_OBJECT
+!ENDIF
+
+!IF "$(USE_PERLCRT)" != "define"
+BUILDOPT = $(BUILDOPT) -DPERL_MSVCRT_READFIX
+!ENDIF
+
+LIBBASEFILES = $(CRYPT_LIB) \
+ oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
+ netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
+ version.lib odbc32.lib odbccp32.lib
+
+# we add LIBC here, since we may be using PerlCRT.dll
+LIBFILES = $(LIBBASEFILES) $(LIBC)
+
+CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
+ $(PCHFLAGS) $(OPTIMIZE)
+LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
+ -libpath:"$(INST_COREDIR)" \
+ -machine:$(PROCESSOR_ARCHITECTURE)
+OBJOUT_FLAG = -Fo
+EXEOUT_FLAG = -Fe
+
+CFLAGS_O = $(CFLAGS) $(BUILDOPT)
+
+#################### do not edit below this line #######################
+############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
+
+o = .obj
+
+#
+# Rules
+#
+
+.SUFFIXES : .c $(o) .dll .lib .exe .rc .res
+
+.c$(o):
+ $(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
+
+.y.c:
+ $(NOOP)
+
+$(o).dll:
+ $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
+ -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
+
+.rc.res:
+ $(RSC) -i.. $<
+
+#
+# various targets
+
+# makedef.pl must be updated if this changes, and this should normally
+# only change when there is an incompatible revision of the public API.
+# XXX so why did we change it from perl56 to perl57?
+PERLIMPLIB = ..\perl57.lib
+PERLDLL = ..\perl57.dll
+
+MINIPERL = ..\miniperl.exe
+MINIDIR = .\mini
+PERLEXE = ..\perl.exe
+WPERLEXE = ..\wperl.exe
+GLOBEXE = ..\perlglob.exe
+CONFIGPM = ..\lib\Config.pm
+MINIMOD = ..\lib\ExtUtils\Miniperl.pm
+X2P = ..\x2p\a2p.exe
+
+# Nominate a target which causes extensions to be re-built
+# This used to be $(PERLEXE), but at worst it is the .dll that they depend
+# on and really only the interface - i.e. the .def file used to export symbols
+# from the .dll
+PERLDEP = perldll.def
+
+PL2BAT = bin\pl2bat.pl
+GLOBBAT = bin\perlglob.bat
+
+UTILS = \
+ ..\utils\h2ph \
+ ..\utils\splain \
+ ..\utils\dprofpp \
+ ..\utils\perlbug \
+ ..\utils\pl2pm \
+ ..\utils\c2ph \
+ ..\utils\h2xs \
+ ..\utils\perldoc \
+ ..\utils\perlcc \
+ ..\pod\checkpods \
+ ..\pod\pod2html \
+ ..\pod\pod2latex \
+ ..\pod\pod2man \
+ ..\pod\pod2text \
+ ..\pod\pod2usage \
+ ..\pod\podchecker \
+ ..\pod\podselect \
+ ..\x2p\find2perl \
+ ..\x2p\s2p \
+ bin\exetype.pl \
+ bin\runperl.pl \
+ bin\pl2bat.pl \
+ bin\perlglob.pl \
+ bin\search.pl
+
+MAKE = nmake -nologo
+MAKE_BARE = nmake
+
+CFGSH_TMPL = config.vc
+CFGH_TMPL = config_H.vc
+
+XCOPY = xcopy /f /r /i /d
+RCOPY = xcopy /f /r /i /e /d
+NOOP = @echo
+NULL =
+
+DEL = bin\mdelete.bat
+
+#
+# filenames given to xsubpp must have forward slashes (since it puts
+# full pathnames in #line strings)
+XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
+ -C++ -prototypes
+
+MICROCORE_SRC = \
+ ..\av.c \
+ ..\deb.c \
+ ..\doio.c \
+ ..\doop.c \
+ ..\dump.c \
+ ..\globals.c \
+ ..\gv.c \
+ ..\hv.c \
+ ..\mg.c \
+ ..\op.c \
+ ..\perl.c \
+ ..\perlapi.c \
+ ..\perly.c \
+ ..\pp.c \
+ ..\pp_ctl.c \
+ ..\pp_hot.c \
+ ..\pp_sys.c \
+ ..\regcomp.c \
+ ..\regexec.c \
+ ..\run.c \
+ ..\scope.c \
+ ..\sv.c \
+ ..\taint.c \
+ ..\toke.c \
+ ..\universal.c \
+ ..\utf8.c \
+ ..\util.c \
+ ..\xsutils.c
+
+EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c
+
+!IF "$(PERL_MALLOC)" == "define"
+EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c
+!ENDIF
+
+!IF "$(USE_OBJECT)" != "define"
+EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c
+!ENDIF
+
+WIN32_SRC = \
+ .\win32.c \
+ .\win32sck.c \
+ .\win32thread.c
+
+!IF "$(CRYPT_SRC)" != ""
+WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC)
+!ENDIF
+
+DLL_SRC = $(DYNALOADER).c
+
+X2P_SRC = \
+ ..\x2p\a2p.c \
+ ..\x2p\hash.c \
+ ..\x2p\str.c \
+ ..\x2p\util.c \
+ ..\x2p\walk.c
+
+CORE_NOCFG_H = \
+ ..\av.h \
+ ..\cop.h \
+ ..\cv.h \
+ ..\dosish.h \
+ ..\embed.h \
+ ..\form.h \
+ ..\gv.h \
+ ..\handy.h \
+ ..\hv.h \
+ ..\iperlsys.h \
+ ..\mg.h \
+ ..\nostdio.h \
+ ..\op.h \
+ ..\opcode.h \
+ ..\perl.h \
+ ..\perlapi.h \
+ ..\perlsdio.h \
+ ..\perlsfio.h \
+ ..\perly.h \
+ ..\pp.h \
+ ..\proto.h \
+ ..\regexp.h \
+ ..\scope.h \
+ ..\sv.h \
+ ..\thread.h \
+ ..\unixish.h \
+ ..\utf8.h \
+ ..\util.h \
+ ..\warnings.h \
+ ..\XSUB.h \
+ ..\EXTERN.h \
+ ..\perlvars.h \
+ ..\intrpvar.h \
+ ..\thrdvar.h \
+ .\include\dirent.h \
+ .\include\netdb.h \
+ .\include\sys\socket.h \
+ .\win32.h
+
+CORE_H = $(CORE_NOCFG_H) .\config.h
+
+MICROCORE_OBJ = $(MICROCORE_SRC:.c=.obj)
+CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj)
+WIN32_OBJ = $(WIN32_SRC:.c=.obj)
+MINICORE_OBJ = $(MICROCORE_OBJ:..\=.\mini\) \
+ $(MINIDIR)\miniperlmain$(o) \
+ $(MINIDIR)\perlio$(o)
+MINIWIN32_OBJ = $(WIN32_OBJ:.\=.\mini\)
+MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
+DLL_OBJ = $(DLL_SRC:.c=.obj)
+X2P_OBJ = $(X2P_SRC:.c=.obj)
+
+PERLDLL_OBJ = $(CORE_OBJ)
+PERLEXE_OBJ = perlmain$(o)
+
+PERLDLL_OBJ = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
+#PERLEXE_OBJ = $(PERLEXE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
+
+!IF "$(USE_SETARGV)" != ""
+SETARGV_OBJ = setargv$(o)
+!ENDIF
+
+DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
+SOCKET = $(EXTDIR)\Socket\Socket
+FCNTL = $(EXTDIR)\Fcntl\Fcntl
+OPCODE = $(EXTDIR)\Opcode\Opcode
+SDBM_FILE = $(EXTDIR)\SDBM_File\SDBM_File
+IO = $(EXTDIR)\IO\IO
+POSIX = $(EXTDIR)\POSIX\POSIX
+ATTRS = $(EXTDIR)\attrs\attrs
+THREAD = $(EXTDIR)\Thread\Thread
+B = $(EXTDIR)\B\B
+RE = $(EXTDIR)\re\re
+DUMPER = $(EXTDIR)\Data\Dumper\Dumper
+ERRNO = $(EXTDIR)\Errno\Errno
+PEEK = $(EXTDIR)\Devel\Peek\Peek
+BYTELOADER = $(EXTDIR)\ByteLoader\ByteLoader
+DPROF = $(EXTDIR)\Devel\DProf\DProf
+GLOB = $(EXTDIR)\File\Glob\Glob
+HOSTNAME = $(EXTDIR)\Sys\Hostname\Hostname
+STORABLE = $(EXTDIR)\Storable\Storable
+FILTER = $(EXTDIR)\Filter\Util\Call\Call
+ENCODE = $(EXTDIR)\Encode\Encode
+MD5 = $(EXTDIR)\Digest\MD5\MD5
+PERLIOSCALAR = $(EXTDIR)\PerlIO\Scalar\Scalar
+MIMEBASE64 = $(EXTDIR)\MIME\Base64\Base64
+TIMEHIRES = $(EXTDIR)\Time\HiRes\HiRes
+TIMEPIECE = $(EXTDIR)\Time\Piece\Piece
+CWD = $(EXTDIR)\Cwd\Cwd
+LISTUTIL = $(EXTDIR)\List\Util\Util
+PERLIOVIA = $(EXTDIR)\PerlIO\Via\Via
+XSTYPEMAP = $(EXTDIR)\XS\Typemap\Typemap
+
+SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll
+FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll
+OPCODE_DLL = $(AUTODIR)\Opcode\Opcode.dll
+SDBM_FILE_DLL = $(AUTODIR)\SDBM_File\SDBM_File.dll
+IO_DLL = $(AUTODIR)\IO\IO.dll
+POSIX_DLL = $(AUTODIR)\POSIX\POSIX.dll
+ATTRS_DLL = $(AUTODIR)\attrs\attrs.dll
+THREAD_DLL = $(AUTODIR)\Thread\Thread.dll
+B_DLL = $(AUTODIR)\B\B.dll
+DUMPER_DLL = $(AUTODIR)\Data\Dumper\Dumper.dll
+PEEK_DLL = $(AUTODIR)\Devel\Peek\Peek.dll
+RE_DLL = $(AUTODIR)\re\re.dll
+BYTELOADER_DLL = $(AUTODIR)\ByteLoader\ByteLoader.dll
+DPROF_DLL = $(AUTODIR)\Devel\DProf\DProf.dll
+GLOB_DLL = $(AUTODIR)\File\Glob\Glob.dll
+HOSTNAME_DLL = $(AUTODIR)\Sys\Hostname\Hostname.dll
+STORABLE_DLL = $(AUTODIR)\Storable\Storable.dll
+FILTER_DLL = $(AUTODIR)\Filter\Util\Call\Call.dll
+ENCODE_DLL = $(AUTODIR)\Encode\Encode.dll
+MD5_DLL = $(AUTODIR)\Digest\MD5\MD5.dll
+PERLIOSCALAR_DLL= $(AUTODIR)\PerlIO\Scalar\Scalar.dll
+MIMEBASE64_DLL = $(AUTODIR)\MIME\Base64\Base64.dll
+TIMEHIRES_DLL = $(AUTODIR)\Time\HiRes\HiRes.dll
+TIMEPIECE_DLL = $(AUTODIR)\Time\Piece\Piece.dll
+CWD_DLL = $(AUTODIR)\Cwd\Cwd.dll
+LISTUTIL_DLL = $(AUTODIR)\List\Util\Util.dll
+PERLIOVIA_DLL = $(AUTODIR)\PerlIO\Via\Via.dll
+XSTYPEMAP_DLL = $(AUTODIR)\XS\Typemap\Typemap.dll
+
+EXTENSION_C = \
+ $(SOCKET).c \
+ $(FCNTL).c \
+ $(OPCODE).c \
+ $(SDBM_FILE).c \
+ $(IO).c \
+ $(POSIX).c \
+ $(ATTRS).c \
+ $(THREAD).c \
+ $(RE).c \
+ $(DUMPER).c \
+ $(PEEK).c \
+ $(B).c \
+ $(BYTELOADER).c \
+ $(DPROF).c \
+ $(GLOB).c \
+ $(HOSTNAME).c \
+ $(STORABLE).c \
+ $(FILTER).c \
+ $(ENCODE).c \
+ $(MD5).c \
+ $(PERLIOSCALAR).c \
+ $(MIMEBASE64).c \
+ $(TIMEHIRES).c \
+ $(TIMEPIECE).c \
+ $(CWD).c \
+ $(LISTUTIL).c \
+ $(PERLIOVIA).c \
+ $(XSTYPEMAP).c
+
+EXTENSION_DLL = \
+ $(SOCKET_DLL) \
+ $(FCNTL_DLL) \
+ $(OPCODE_DLL) \
+ $(SDBM_FILE_DLL)\
+ $(IO_DLL) \
+ $(POSIX_DLL) \
+ $(ATTRS_DLL) \
+ $(DUMPER_DLL) \
+ $(PEEK_DLL) \
+ $(B_DLL) \
+ $(RE_DLL) \
+ $(THREAD_DLL) \
+ $(BYTELOADER_DLL) \
+ $(DPROF_DLL) \
+ $(GLOB_DLL) \
+ $(HOSTNAME_DLL) \
+ $(STORABLE_DLL) \
+ $(FILTER_DLL) \
+ $(ENCODE_DLL) \
+ $(MD5_DLL) \
+ $(PERLIOSCALAR_DLL) \
+ $(MIMEBASE64_DLL) \
+ $(TIMEHIRES_DLL) \
+ $(TIMEPIECE_DLL) \
+ $(CWD_DLL) \
+ $(LISTUTIL_DLL) \
+ $(PERLIOVIA_DLL) \
+ $(XSTYPEMAP_DLL)
+
+POD2HTML = $(PODDIR)\pod2html
+POD2MAN = $(PODDIR)\pod2man
+POD2LATEX = $(PODDIR)\pod2latex
+POD2TEXT = $(PODDIR)\pod2text
+
+CFG_VARS = \
+ "INST_DRV=$(INST_DRV)" \
+ "INST_TOP=$(INST_TOP)" \
+ "INST_VER=$(INST_VER)" \
+ "INST_ARCH=$(INST_ARCH)" \
+ "archname=$(ARCHNAME)" \
+ "cc=$(CC)" \
+ "ld=$(LINK32)" \
+ "ccflags=-nologo -Gf -W3 $(OPTIMIZE:"=\") $(DEFINES) $(BUILDOPT)" \
+ "cf_email=$(EMAIL)" \
+ "d_crypt=$(D_CRYPT)" \
+ "d_mymalloc=$(PERL_MALLOC)" \
+ "libs=$(LIBFILES)" \
+ "incpath=$(CCINCDIR:"=\")" \
+ "libperl=$(PERLIMPLIB:..\=)" \
+ "libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")" \
+ "libc=$(LIBC)" \
+ "make=$(MAKE_BARE)" \
+ "use5005threads=$(USE_5005THREADS)" \
+ "useithreads=$(USE_ITHREADS)" \
+ "usethreads=$(USE_5005THREADS)" \
+ "usemultiplicity=$(USE_MULTI)" \
+ "useperlio=$(USE_PERLIO)" \
+ "LINK_FLAGS=$(LINK_FLAGS:"=\")" \
+ "optimize=$(OPTIMIZE:"=\")"
+
+#
+# Top targets
+#
+
+all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) \
+ $(X2P) Extensions
+ @echo Everything is up to date. '$(MAKE_BARE) test' to run test suite.
+
+$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
+
+#------------------------------------------------------------
+
+$(GLOBEXE) : perlglob$(o)
+ $(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
+ perlglob$(o) setargv$(o)
+
+perlglob$(o) : perlglob.c
+
+config.w32 : $(CFGSH_TMPL)
+ copy $(CFGSH_TMPL) config.w32
+
+.\config.h : $(CFGH_TMPL)
+ -del /f config.h
+ copy $(CFGH_TMPL) config.h
+
+..\config.sh : config.w32 $(MINIPERL) config_sh.PL
+ $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) config.w32 > ..\config.sh
+
+# this target is for when changes to the main config.sh happen
+# edit config.{b,v,g}c and make this target once for each supported
+# compiler (e.g. `nmake CCTYPE=BORLAND regen_config_h`)
+regen_config_h:
+ perl config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh
+ cd ..
+ -del /f perl.exe
+ perl configpm
+ cd win32
+ -del /f $(CFGH_TMPL)
+ -mkdir $(COREDIR)
+ -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)"
+ rename config.h $(CFGH_TMPL)
+
+$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
+ cd ..
+ miniperl configpm
+ cd win32
+ if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
+ $(XCOPY) ..\*.h $(COREDIR)\*.*
+ $(XCOPY) *.h $(COREDIR)\*.*
+ $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
+ $(RCOPY) include $(COREDIR)\*.*
+ -$(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)"
+ if errorlevel 1 $(MAKE) /$(MAKEFLAGS) $(CONFIGPM)
+
+$(MINIPERL) : $(MINIDIR) $(MINI_OBJ)
+ $(LINK32) -subsystem:console -out:$@ @<<
+ $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ)
+<<
+
+$(MINIDIR) :
+ if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
+
+$(MINICORE_OBJ) : $(CORE_NOCFG_H)
+ $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*F).c
+
+$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
+ $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*F).c
+
+# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
+# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
+!IF "$(USE_IMP_SYS)$(USE_OBJECT)" == "defineundef"
+perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
+ $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
+!ENDIF
+
+# 1. we don't want to rebuild miniperl.exe when config.h changes
+# 2. we don't want to rebuild miniperl.exe with non-default config.h
+$(MINI_OBJ) : $(CORE_NOCFG_H)
+
+$(WIN32_OBJ) : $(CORE_H)
+$(CORE_OBJ) : $(CORE_H)
+$(DLL_OBJ) : $(CORE_H)
+$(X2P_OBJ) : $(CORE_H)
+
+perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
+ $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
+ CCTYPE=$(CCTYPE) > perldll.def
+
+$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES)
+ $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ @<<
+ $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(PERLDLL_OBJ) $(PERLDLL_RES)
+<<
+ $(XCOPY) $(PERLIMPLIB) $(COREDIR)
+
+$(MINIMOD) : $(MINIPERL) ..\minimod.pl
+ cd ..
+ miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
+ cd win32
+
+..\x2p\a2p$(o) : ..\x2p\a2p.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
+
+..\x2p\hash$(o) : ..\x2p\hash.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
+
+..\x2p\str$(o) : ..\x2p\str.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
+
+..\x2p\util$(o) : ..\x2p\util.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
+
+..\x2p\walk$(o) : ..\x2p\walk.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
+
+$(X2P) : $(MINIPERL) $(X2P_OBJ)
+ $(MINIPERL) ..\x2p\find2perl.PL
+ $(MINIPERL) ..\x2p\s2p.PL
+ $(LINK32) -subsystem:console -out:$@ @<<
+ $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ)
+<<
+
+perlmain.c : runperl.c
+ copy runperl.c perlmain.c
+
+perlmain$(o) : perlmain.c
+ $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
+
+$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
+ $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(LINK_FLAGS) \
+ $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
+ copy $(PERLEXE) $(WPERLEXE)
+ $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
+ copy splittree.pl ..
+ $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
+
+$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
+ if not exist $(AUTODIR) mkdir $(AUTODIR)
+ cd $(EXTDIR)\$(*B)
+ ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL
+ ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL
+ cd ..\..\win32
+ $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
+ $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
+ cd $(EXTDIR)\$(*B)
+ $(XSUBPP) dl_win32.xs > $(*B).c
+ cd ..\..\win32
+
+$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
+ copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
+
+#----------------------------------------------------------------------------------
+Extensions: buildext.pl $(PERLDEP) $(CONFIGPM)
+ $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR)
+
+Extensions_clean:
+ -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
+
+#----------------------------------------------------------------------------------
+
+doc: $(PERLEXE)
+ $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \
+ --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML::=|)" \
+ --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
+
+utils: $(PERLEXE) $(X2P)
+ cd ..\utils
+ $(MAKE) PERL=$(MINIPERL)
+ cd ..\pod
+ copy ..\README.aix .\perlaix.pod
+ copy ..\README.amiga .\perlamiga.pod
+ copy ..\README.apollo .\perlapollo.pod
+ copy ..\README.beos .\perlbeos.pod
+ copy ..\README.bs2000 .\perlbs2000.pod
+ copy ..\README.cygwin .\perlcygwin.pod
+ copy ..\README.dgux .\perldgux.pod
+ copy ..\README.dos .\perldos.pod
+ copy ..\README.epoc .\perlepoc.pod
+ copy ..\README.hurd .\perlhurd.pod
+ copy ..\README.hpux .\perlhpux.pod
+ copy ..\README.machten .\perlmachten.pod
+ copy ..\README.macos .\perlmacos.pod
+ copy ..\README.mint .\perlmint.pod
+ copy ..\README.mpeix .\perlmpeix.pod
+ copy ..\README.os2 .\perlos2.pod
+ copy ..\README.os390 .\perlos390.pod
+ copy ..\README.plan9 .\perlplan9.pod
+ copy ..\README.qnx .\perlqnx.pod
+ copy ..\README.solaris .\perlsolaris.pod
+ copy ..\README.tru64 .\perltru64.pod
+ copy ..\README.vmesa .\perlvmesa.pod
+ copy ..\vms\perlvms.pod .\perlvms.pod
+ copy ..\README.vos .\perlvos.pod
+ copy ..\README.win32 .\perlwin32.pod
+ $(MAKE) -f ..\win32\pod.mak converters
+ cd ..\lib
+ $(PERLEXE) lib_pm.PL
+ cd ..\win32
+ $(PERLEXE) $(PL2BAT) $(UTILS)
+
+distclean: clean
+ -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
+ $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD)
+ -del /f *.def *.map
+ -del /f $(EXTENSION_DLL)
+ -del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm
+ -del /f $(EXTDIR)\DynaLoader\dl_win32.xs
+ -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
+ -del /f $(LIBDIR)\XSLoader.pm
+ -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
+ -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm $(LIBDIR)\Thread.pm
+ -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
+ -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
+ -del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm
+ -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
+ -del /f $(LIBDIR)\File\Glob.pm
+ -del /f $(LIBDIR)\Storable.pm
+ -del /f $(LIBDIR)\Filter\Util\Call.pm
+ -del /f $(LIBDIR)\Digest\MD5.pm
+ -del /f $(LIBDIR)\PerlIO\Scalar.pm
+ -del /f $(LIBDIR)\PerlIO\Via.pm
+ -del /f $(LIBDIR)\MIME\Base64.pm
+ -del /f $(LIBDIR)\MIME\QuotedPrint.pm
+ -del /f $(LIBDIR)\List\Util.pm
+ -del /f $(LIBDIR)\Scalar\Util.pm
+ -del /f $(LIBDIR)\Time\HiRes.pm
+ -del /f $(LIBDIR)\Time\Piece.pm
+ -del /f $(LIBDIR)\Cwd.pm
+ -del /f $(LIBDIR)\XS\Typemap.pm
+ -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
+ -rmdir /s $(LIBDIR)\IO
+ -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread
+ -rmdir /s $(LIBDIR)\Thread
+ -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
+ -rmdir /s $(LIBDIR)\B
+ -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
+ -rmdir /s $(LIBDIR)\Data
+ -if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util
+ -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest
+ -rmdir /s $(LIBDIR)\Digest
+ -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
+ -rmdir /s $(LIBDIR)\MIME
+ -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
+ -rmdir /s $(LIBDIR)\List
+ -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar
+ -rmdir /s $(LIBDIR)\Scalar
+ -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
+ -rmdir /s $(LIBDIR)\XS
+ cd $(PODDIR)
+ -del /f *.html *.bat checkpods \
+ perlaix.pod perlamiga.pod perlapollo.pod perlbeos.pod \
+ perlbs2000.pod perlcygwin.pod perldgux.pod \
+ perldos.pod perlepoc.pod perlhurd.pod \
+ perlhpux.pod perlmachten.pod \
+ perlmacos.pod perlmpeix.pod perlmint.pod \
+ perlos2.pod perlos390.pod perlplan9.pod perlqnx.pod \
+ perlsolaris.pod perlvmesa.pod perlvms.pod perlvos.pod \
+ perlwin32.pod pod2html pod2latex pod2man pod2text pod2usage \
+ podchecker podselect
+ cd ..\utils
+ -del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc dprofpp
+ -del /f *.bat
+ cd ..\win32
+ cd ..\x2p
+ -del /f find2perl s2p
+ -del /f *.bat
+ cd ..\win32
+ -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
+ -del /f $(CONFIGPM)
+ -del /f bin\*.bat
+ cd $(EXTDIR)
+ -del /s *.lib *.def *.map *.pdb *.bs Makefile *$(o) pm_to_blib
+ cd ..\win32
+ -if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
+ -rmdir /s $(AUTODIR)
+ -if exist $(COREDIR) rmdir /s /q $(COREDIR)
+ -rmdir /s $(COREDIR)
+
+install : all installbare installhtml
+
+installbare : utils
+ $(PERLEXE) ..\installperl
+ if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
+ $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
+ $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
+
+installhtml : doc
+ $(RCOPY) html\*.* $(INST_HTML)\*.*
+
+inst_lib : $(CONFIGPM)
+ copy splittree.pl ..
+ $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
+ $(RCOPY) ..\lib $(INST_LIB)\*.*
+
+minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils
+ $(XCOPY) $(MINIPERL) ..\t\perl.exe
+ $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
+ attrib -r ..\t\*.*
+ copy test ..\t
+ cd ..\t
+ $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
+ cd ..\win32
+
+test-prep : all utils
+ $(XCOPY) $(PERLEXE) ..\t\$(NULL)
+ $(XCOPY) $(PERLDLL) ..\t\$(NULL)
+ $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
+
+test : test-prep
+ cd ..\t
+ $(PERLEXE) -I..\lib harness
+ cd ..\win32
+
+test-notty : test-prep
+ set PERL_SKIP_TTY_TEST=1
+ cd ..\t
+ $(PERLEXE) -I..\lib harness
+ cd ..\win32
+
+test-wide : test-prep
+ set HARNESS_PERL_SWITCHES=-C
+ cd ..\t
+ $(PERLEXE) -I..\lib harness
+ cd ..\win32
+
+test-wide-notty : test-prep
+ set PERL_SKIP_TTY_TEST=1
+ set HARNESS_PERL_SWITCHES=-C
+ cd ..\t
+ $(PERLEXE) -I..\lib harness
+ cd ..\win32
+
+clean : Extensions_clean
+ -@$(DEL) miniperlmain$(o)
+ -@$(DEL) $(MINIPERL)
+ -@$(DEL) perlglob$(o)
+ -@$(DEL) perlmain$(o)
+ -@$(DEL) config.w32
+ -@$(DEL) config.h
+ -@$(DEL) $(GLOBEXE)
+ -@$(DEL) $(PERLEXE)
+ -@$(DEL) $(WPERLEXE)
+ -@$(DEL) $(PERLDLL)
+ -@$(DEL) $(CORE_OBJ)
+ -if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
+ -rmdir /s $(MINIDIR)
+ -@$(DEL) $(WIN32_OBJ)
+ -@$(DEL) $(DLL_OBJ)
+ -@$(DEL) $(X2P_OBJ)
+ -@$(DEL) ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp *.res
+ -@$(DEL) ..\t\*.exe ..\t\*.dll ..\t\*.bat
+ -@$(DEL) ..\x2p\*.exe ..\x2p\*.bat
+ -@$(DEL) *.ilk
+ -@$(DEL) *.pdb
+
+# Handy way to run perlbug -ok without having to install and run the
+# installed perlbug. We don't re-run the tests here - we trust the user.
+# Please *don't* use this unless all tests pass.
+# If you want to report test failures, use "nmake nok" instead.
+ok: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
+
+okfile: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
+
+nok: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
+
+nokfile: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok
diff --git a/win32/makefile.mk b/win32/makefile.mk index 468b8d6601..ccace2eaaa 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -1,1251 +1,1260 @@ -# -# Makefile to build perl on Windows NT using DMAKE. -# Supported compilers: -# Visual C++ 2.0 thro 6.0 -# Borland C++ 5.02 -# Mingw32 with gcc-2.95.2 or better **experimental** -# -# This is set up to build a perl.exe that runs off a shared library -# (perl57.dll). Also makes individual DLLs for the XS extensions. -# - -## -## Make sure you read README.win32 *before* you mess with anything here! -## - -## -## Build configuration. Edit the values below to suit your needs. -## - -# -# Set these to wherever you want "dmake install" to put your -# newly built perl. -# -INST_DRV *= c: -INST_TOP *= $(INST_DRV)\perl - -# -# Comment this out if you DON'T want your perl installation to be versioned. -# This means that the new installation will overwrite any files from the -# old installation at the same INST_TOP location. Leaving it enabled is -# the safest route, as perl adds the extra version directory to all the -# locations it installs files to. If you disable it, an alternative -# versioned installation can be obtained by setting INST_TOP above to a -# path that includes an arbitrary version string. -# -INST_VER *= \5.7.1 - -# -# Comment this out if you DON'T want your perl installation to have -# architecture specific components. This means that architecture- -# specific files will be installed along with the architecture-neutral -# files. Leaving it enabled is safer and more flexible, in case you -# want to build multiple flavors of perl and install them together in -# the same location. Commenting it out gives you a simpler -# installation that is easier to understand for beginners. -# -INST_ARCH *= \$(ARCHNAME) - -# -# uncomment to enable multiple interpreters. This is need for fork() -# emulation. -# -USE_MULTI *= define - -# -# Beginnings of interpreter cloning/threads; still very incomplete. -# This should be enabled to get the fork() emulation. This needs -# USE_MULTI as well. -# -USE_ITHREADS *= define - -# -# uncomment to enable the implicit "host" layer for all system calls -# made by perl. This needs USE_MULTI above. This is also needed to -# get fork(). -# -USE_IMP_SYS *= define - -# -# uncomment to enable the experimental PerlIO I/O subsystem. -USE_PERLIO = define - -# -# WARNING! This option is deprecated and will eventually go away (enable -# USE_ITHREADS instead). -# -# uncomment to enable threads-capabilities. This is incompatible with -# USE_ITHREADS, and is only here for people who may have come to rely -# on the experimental Thread support that was in 5.005. -# -#USE_5005THREADS *= define - -# -# WARNING! This option is deprecated and will eventually go away (enable -# USE_MULTI instead). -# -# uncomment next line if you want to use the PERL_OBJECT build option. -# DO NOT ENABLE unless you have legacy code that relies on the C++ -# CPerlObj class that was available in 5.005. This cannot be enabled -# if you ask for USE_5005THREADS above. -# -#USE_OBJECT *= define - -# -# uncomment exactly one of the following -# -# Visual C++ 2.x -#CCTYPE *= MSVC20 -# Visual C++ > 2.x and < 6.x -#CCTYPE *= MSVC -# Visual C++ >= 6.x -CCTYPE *= MSVC60 -# Borland 5.02 or later -#CCTYPE *= BORLAND -# mingw32+gcc-2.95.2 or better -#CCTYPE *= GCC - -# -# uncomment this if your Borland compiler is older than v5.4. -BCCOLD = define -# -# uncomment this if you want to use Borland's VCL as your CRT -#BCCVCL = define - -# -# uncomment this if you are compiling under Windows 95/98 and command.com -# (not needed if you're running under 4DOS/NT 6.01 or later) -#IS_WIN95 *= define - -# -# uncomment next line if you want debug version of perl (big,slow) -# If not enabled, we automatically try to use maximum optimization -# with all compilers that are known to have a working optimizer. -# -CFG *= Debug - -# -# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler. -# It has patches that fix known bugs in older versions of MSVCRT.DLL. -# This currently requires VC 5.0 with Service Pack 3 or later. -# Get it from CPAN at http://www.perl.com/CPAN/authors/id/D/DO/DOUGL/ -# and follow the directions in the package to install. -# -# Not recommended if you have VC 6.x and you're not running Windows 9x. -# -#USE_PERLCRT *= define - -# -# uncomment to enable linking with setargv.obj under the Visual C -# compiler. Setting this options enables perl to expand wildcards in -# arguments, but it may be harder to use alternate methods like -# File::DosGlob that are more powerful. This option is supported only with -# Visual C. -# -#USE_SETARGV *= define - -# -# if you have the source for des_fcrypt(), uncomment this and make sure the -# file exists (see README.win32). File should be located in the same -# directory as this file. -# -#CRYPT_SRC *= fcrypt.c - -# -# if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a -# library, uncomment this, and make sure the library exists (see README.win32) -# Specify the full pathname of the library. -# -#CRYPT_LIB *= fcrypt.lib - -# -# set this if you wish to use perl's malloc -# WARNING: Turning this on/off WILL break binary compatibility with extensions -# you may have compiled with/without it. Be prepared to recompile all -# extensions if you change the default. Currently, this cannot be enabled -# if you ask for USE_IMP_SYS above. -# -#PERL_MALLOC *= define - -# -# set the install locations of the compiler include/libraries -# Running VCVARS32.BAT is *required* when using Visual C. -# Some versions of Visual C don't define MSVCDIR in the environment, -# so you may have to set CCHOME explicitly (spaces in the path name should -# not be quoted) -# -#CCHOME *= F:\borland\bc5 -CCHOME *= $(MSVCDIR) -#CCHOME *= c:\gcc-2.95.2 -CCINCDIR *= $(CCHOME)\include -CCLIBDIR *= $(CCHOME)\lib - -# -# Additional compiler flags can be specified here. -# - -# -# This should normally be disabled. Adding -DPERL_POLLUTE enables support -# for old symbols by default, at the expense of extreme pollution. You most -# probably just want to build modules that won't compile with -# perl Makefile.PL POLLUTE=1 -# instead of enabling this. Please report such modules to the respective -# authors. -# -#BUILDOPT += -DPERL_POLLUTE - -# -# This should normally be disabled. Enabling it will disable the File::Glob -# implementation of CORE::glob. -# -#BUILDOPT += -DPERL_EXTERNAL_GLOB - -# -# This should normally be disabled. Enabling it causes perl to read scripts -# in text mode (which is the 5.005 behavior) and will break ByteLoader. -#BUILDOPT += -DPERL_TEXTMODE_SCRIPTS - -# -# specify semicolon-separated list of extra directories that modules will -# look for libraries (spaces in path names need not be quoted) -# -EXTRALIBDIRS *= - -# -# set this to point to cmd.exe (only needed if you use some -# alternate shell that doesn't grok cmd.exe style commands) -# -#SHELL *= g:\winnt\system32\cmd.exe - -# -# set this to your email address (perl will guess a value from -# from your loginname and your hostname, which may not be right) -# -#EMAIL *= - -## -## Build configuration ends. -## - -##################### CHANGE THESE ONLY IF YOU MUST ##################### - -.IF "$(CRYPT_SRC)$(CRYPT_LIB)" == "" -D_CRYPT = undef -.ELSE -D_CRYPT = define -CRYPT_FLAG = -DHAVE_DES_FCRYPT -.ENDIF - -.IF "$(USE_OBJECT)" == "define" -PERL_MALLOC != undef -USE_5005THREADS != undef -USE_MULTI != undef -USE_IMP_SYS != define -.ENDIF - -PERL_MALLOC *= undef - -USE_5005THREADS *= undef - -.IF "$(USE_5005THREADS)" == "define" -USE_ITHREADS != undef -.ENDIF - -.IF "$(USE_IMP_SYS)" == "define" -PERL_MALLOC != undef -.ENDIF - -USE_MULTI *= undef -USE_OBJECT *= undef -USE_ITHREADS *= undef -USE_IMP_SYS *= undef -USE_PERLIO *= undef -USE_PERLCRT *= undef - -.IF "$(USE_IMP_SYS)$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" == "defineundefundefundef" -USE_MULTI != define -.ENDIF - -.IF "$(USE_ITHREADS)$(USE_MULTI)$(USE_OBJECT)" == "defineundefundef" -USE_MULTI != define -USE_5005THREADS != undef -.ENDIF - -.IF "$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" != "undefundefundef" -BUILDOPT += -DPERL_IMPLICIT_CONTEXT -.ENDIF - -.IF "$(USE_IMP_SYS)" != "undef" -BUILDOPT += -DPERL_IMPLICIT_SYS -.ENDIF - -.IMPORT .IGNORE : PROCESSOR_ARCHITECTURE - -PROCESSOR_ARCHITECTURE *= x86 - -.IF "$(USE_OBJECT)" == "define" -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-object -.ELIF "$(USE_5005THREADS)" == "define" -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-thread -.ELIF "$(USE_MULTI)" == "define" -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi -.ELSE -.IF "$(USE_PERLIO)" == "define" -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-perlio -.ELSE -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE) -.ENDIF -ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE) -.ENDIF - -.IF "$(USE_ITHREADS)" == "define" -ARCHNAME !:= $(ARCHNAME)-thread -.ENDIF - -# Visual Studio 98 specific -.IF "$(CCTYPE)" == "MSVC60" - -# VC 6.0 can load the socket dll on demand. Makes the test suite -# run in about 10% less time. -DELAYLOAD *= -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib - -.IF "$(CFG)" == "Debug" -.ELSE -# VC 6.0 seems capable of compiling perl correctly with optimizations -# enabled. Anything earlier fails tests. -CFG *= Optimize -.ENDIF -.ENDIF - -ARCHDIR = ..\lib\$(ARCHNAME) -COREDIR = ..\lib\CORE -AUTODIR = ..\lib\auto -LIBDIR = ..\lib -EXTDIR = ..\ext -PODDIR = ..\pod -EXTUTILSDIR = $(LIBDIR)\ExtUtils - -# -INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin -INST_BIN = $(INST_SCRIPT)$(INST_ARCH) -INST_LIB = $(INST_TOP)$(INST_VER)\lib -INST_ARCHLIB = $(INST_LIB)$(INST_ARCH) -INST_COREDIR = $(INST_ARCHLIB)\CORE -INST_POD = $(INST_LIB)\pod -INST_HTML = $(INST_TOP)$(INST_VER)\html - -# -# Programs to compile, build .lib files and link -# - -.USESHELL : - -.IF "$(CCTYPE)" == "BORLAND" - -CC = bcc32 -.IF "$(BCCOLD)" != "define" -LINK32 = ilink32 -.ELSE -LINK32 = tlink32 -.ENDIF -LIB32 = tlib /P128 -IMPLIB = implib -c -RSC = rc - -# -# Options -# -INCLUDES = -I$(COREDIR) -I.\include -I. -I.. -I"$(CCINCDIR)" -#PCHFLAGS = -H -Hc -H=c:\temp\bcmoduls.pch -DEFINES = -DWIN32 $(CRYPT_FLAG) -LOCDEFS = -DPERLDLL -DPERL_CORE -SUBSYS = console -CXX_FLAG = -P - -LIBC = cw32mti.lib -LIBFILES = $(CRYPT_LIB) import32.lib $(LIBC) - -.IF "$(CFG)" == "Debug" -OPTIMIZE = -v -D_RTLDLL -DDEBUGGING -LINK_DBG = -v -.ELSE -OPTIMIZE = -O2 -D_RTLDLL -LINK_DBG = -.ENDIF - -CFLAGS = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \ - $(PCHFLAGS) $(OPTIMIZE) -LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)" -OBJOUT_FLAG = -o -EXEOUT_FLAG = -e -LIBOUT_FLAG = -.IF "$(BCCOLD)" != "define" -LINK_FLAGS += -Gn -DEFINES += -D_MT -D__USELOCALES__ -D_WIN32_WINNT=0x0410 -.END -.IF "$(BCCVCL)" == "define" -LIBC = cp32mti.lib vcl.lib vcl50.lib vclx50.lib vcle50.lib -LINK_FLAGS += -L"$(CCLIBDIR)\Release" -.END - - -.ELIF "$(CCTYPE)" == "GCC" - -CC = gcc -LINK32 = gcc -LIB32 = ar rc -IMPLIB = dlltool -RSC = rc - -i = .i -o = .o -a = .a - -# -# Options -# - -INCLUDES = -I.\include -I. -I.. -I$(COREDIR) -DEFINES = -DWIN32 $(CRYPT_FLAG) -LOCDEFS = -DPERLDLL -DPERL_CORE -SUBSYS = console -CXX_FLAG = -xc++ - -LIBC = -lmsvcrt - -# same libs as MSVC -LIBFILES = $(CRYPT_LIB) $(LIBC) \ - -lmoldname -lkernel32 -luser32 -lgdi32 \ - -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 \ - -loleaut32 -lnetapi32 -luuid -lwsock32 -lmpr \ - -lwinmm -lversion -lodbc32 - -.IF "$(CFG)" == "Debug" -OPTIMIZE = -g -O2 -DDEBUGGING -LINK_DBG = -g -.ELSE -OPTIMIZE = -g -O2 -LINK_DBG = -g -.ENDIF - -CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE) -LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)" -OBJOUT_FLAG = -o -EXEOUT_FLAG = -o -LIBOUT_FLAG = - -# NOTE: we assume that GCC uses MSVCRT.DLL -BUILDOPT += -fno-strict-aliasing -DPERL_MSVCRT_READFIX - -.ELSE - -CC = cl -LINK32 = link -LIB32 = $(LINK32) -lib -RSC = rc - -# -# Options -# - -INCLUDES = -I$(COREDIR) -I.\include -I. -I.. -#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX -DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) -LOCDEFS = -DPERLDLL -DPERL_CORE -SUBSYS = console -CXX_FLAG = -TP -GX - -.IF "$(USE_PERLCRT)" != "define" -LIBC = msvcrt.lib -.ELSE -LIBC = PerlCRT.lib -.ENDIF - -PERLEXE_RES = -PERLDLL_RES = - -.IF "$(CFG)" == "Debug" -.IF "$(CCTYPE)" == "MSVC20" -OPTIMIZE = -Od -MD -Z7 -DDEBUGGING -LINK_DBG = -debug -pdb:none -.ELSE -# -Zi requires .pdb file(s) -#OPTIMIZE = -Od -MD -Zi -DDEBUGGING -#LINK_DBG = -debug -OPTIMIZE = -O1 -MD -Z7 -DDEBUGGING -LINK_DBG = -debug -debugtype:both -pdb:none -.ENDIF -.ELSE -.IF "$(CFG)" == "Optimize" -# -O1 yields smaller code, which turns out to be faster than -O2 -#OPTIMIZE = -O2 -MD -DNDEBUG -OPTIMIZE = -O1 -MD -DNDEBUG -.ELSE -OPTIMIZE = -Od -MD -DNDEBUG -.ENDIF -LINK_DBG = -release -.ENDIF - -LIBBASEFILES = $(CRYPT_LIB) \ - oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \ - comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ - netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \ - version.lib odbc32.lib odbccp32.lib - -# we add LIBC here, since we may be using PerlCRT.dll -LIBFILES = $(LIBBASEFILES) $(LIBC) - -CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \ - $(PCHFLAGS) $(OPTIMIZE) -LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \ - -libpath:"$(INST_COREDIR)" \ - -machine:$(PROCESSOR_ARCHITECTURE) -OBJOUT_FLAG = -Fo -EXEOUT_FLAG = -Fe -LIBOUT_FLAG = /out: - -.IF "$(USE_PERLCRT)" != "define" -BUILDOPT += -DPERL_MSVCRT_READFIX -.ENDIF - -.ENDIF - -.IF "$(USE_OBJECT)" == "define" -OPTIMIZE += $(CXX_FLAG) -BUILDOPT += -DPERL_OBJECT -.ENDIF - -CFLAGS_O = $(CFLAGS) $(BUILDOPT) - -# used to allow local linking flags that are not propogated into Config.pm, -# currently unused -# -- BKS, 12-12-1999 -PRIV_LINK_FLAGS *= -BLINK_FLAGS = $(PRIV_LINK_FLAGS) $(LINK_FLAGS) - -#################### do not edit below this line ####################### -############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ############## - -o *= .obj -a *= .lib - -LKPRE = INPUT ( -LKPOST = ) - -# -# Rules -# - -.SUFFIXES : .c .i $(o) .dll $(a) .exe .rc .res - -.c$(o): - $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $< - -.c.i: - $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) -E $< >$@ - -.y.c: - $(NOOP) - -$(o).dll: -.IF "$(CCTYPE)" == "BORLAND" - $(LINK32) -Tpd -ap $(BLINK_FLAGS) c0d32$(o) $<,$@,,$(LIBFILES),$(*B).def - $(IMPLIB) $(*B).lib $@ -.ELIF "$(CCTYPE)" == "GCC" - $(LINK32) -o $@ $(BLINK_FLAGS) $< $(LIBFILES) - $(IMPLIB) --input-def $(*B).def --output-lib $(*B).a $@ -.ELSE - $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \ - -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL) -.ENDIF - -.rc.res: - $(RSC) -i.. $< - -# -# various targets -MINIPERL = ..\miniperl.exe -MINIDIR = .\mini -PERLEXE = ..\perl.exe -WPERLEXE = ..\wperl.exe -GLOBEXE = ..\perlglob.exe -CONFIGPM = ..\lib\Config.pm -MINIMOD = ..\lib\ExtUtils\Miniperl.pm -X2P = ..\x2p\a2p.exe - -# Nominate a target which causes extensions to be re-built -# This used to be $(PERLEXE), but at worst it is the .dll that they depend -# on and really only the interface - i.e. the .def file used to export symbols -# from the .dll -PERLDEP = perldll.def - - -PL2BAT = bin\pl2bat.pl -GLOBBAT = bin\perlglob.bat - -UTILS = \ - ..\utils\h2ph \ - ..\utils\splain \ - ..\utils\dprofpp \ - ..\utils\perlbug \ - ..\utils\pl2pm \ - ..\utils\c2ph \ - ..\utils\h2xs \ - ..\utils\perldoc \ - ..\utils\perlcc \ - ..\pod\checkpods \ - ..\pod\pod2html \ - ..\pod\pod2latex \ - ..\pod\pod2man \ - ..\pod\pod2text \ - ..\pod\pod2usage \ - ..\pod\podchecker \ - ..\pod\podselect \ - ..\x2p\find2perl \ - ..\x2p\s2p \ - bin\exetype.pl \ - bin\runperl.pl \ - bin\pl2bat.pl \ - bin\perlglob.pl \ - bin\search.pl - -.IF "$(CCTYPE)" == "BORLAND" - -CFGSH_TMPL = config.bc -CFGH_TMPL = config_H.bc - -.ELIF "$(CCTYPE)" == "GCC" - -CFGSH_TMPL = config.gc -CFGH_TMPL = config_H.gc -PERLIMPLIB = ..\libperl57$(a) - -.ELSE - -CFGSH_TMPL = config.vc -CFGH_TMPL = config_H.vc - -.ENDIF - -# makedef.pl must be updated if this changes, and this should normally -# only change when there is an incompatible revision of the public API. -# XXX so why did we change it from perl56 to perl57? -PERLIMPLIB *= ..\perl57$(a) -PERLDLL = ..\perl57.dll - -XCOPY = xcopy /f /r /i /d -RCOPY = xcopy /f /r /i /e /d -NOOP = @echo - -# -# filenames given to xsubpp must have forward slashes (since it puts -# full pathnames in #line strings) -XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \ - -C++ -prototypes - -MICROCORE_SRC = \ - ..\av.c \ - ..\deb.c \ - ..\doio.c \ - ..\doop.c \ - ..\dump.c \ - ..\globals.c \ - ..\gv.c \ - ..\hv.c \ - ..\mg.c \ - ..\op.c \ - ..\perl.c \ - ..\perlapi.c \ - ..\perly.c \ - ..\pp.c \ - ..\pp_ctl.c \ - ..\pp_hot.c \ - ..\pp_sys.c \ - ..\regcomp.c \ - ..\regexec.c \ - ..\run.c \ - ..\scope.c \ - ..\sv.c \ - ..\taint.c \ - ..\toke.c \ - ..\universal.c \ - ..\utf8.c \ - ..\util.c \ - ..\xsutils.c - -EXTRACORE_SRC += perllib.c - -.IF "$(PERL_MALLOC)" == "define" -EXTRACORE_SRC += ..\malloc.c -.ENDIF - -.IF "$(USE_OBJECT)" != "define" -EXTRACORE_SRC += ..\perlio.c -.ENDIF - -WIN32_SRC = \ - .\win32.c \ - .\win32sck.c \ - .\win32thread.c - -.IF "$(CRYPT_SRC)" != "" -WIN32_SRC += .\$(CRYPT_SRC) -.ENDIF - -DLL_SRC = $(DYNALOADER).c - -X2P_SRC = \ - ..\x2p\a2p.c \ - ..\x2p\hash.c \ - ..\x2p\str.c \ - ..\x2p\util.c \ - ..\x2p\walk.c - -CORE_NOCFG_H = \ - ..\av.h \ - ..\cop.h \ - ..\cv.h \ - ..\dosish.h \ - ..\embed.h \ - ..\form.h \ - ..\gv.h \ - ..\handy.h \ - ..\hv.h \ - ..\iperlsys.h \ - ..\mg.h \ - ..\nostdio.h \ - ..\op.h \ - ..\opcode.h \ - ..\perl.h \ - ..\perlapi.h \ - ..\perlsdio.h \ - ..\perlsfio.h \ - ..\perly.h \ - ..\pp.h \ - ..\proto.h \ - ..\regexp.h \ - ..\scope.h \ - ..\sv.h \ - ..\thread.h \ - ..\unixish.h \ - ..\utf8.h \ - ..\util.h \ - ..\warnings.h \ - ..\XSUB.h \ - ..\EXTERN.h \ - ..\perlvars.h \ - ..\intrpvar.h \ - ..\thrdvar.h \ - .\include\dirent.h \ - .\include\netdb.h \ - .\include\sys\socket.h \ - .\win32.h - -CORE_H = $(CORE_NOCFG_H) .\config.h - -MICROCORE_OBJ = $(MICROCORE_SRC:db:+$(o)) -CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:db:+$(o)) -WIN32_OBJ = $(WIN32_SRC:db:+$(o)) -MINICORE_OBJ = $(MINIDIR)\{$(MICROCORE_OBJ:f) miniperlmain$(o) perlio$(o)} -MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)} -MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ) -DLL_OBJ = $(DLL_SRC:db:+$(o)) -X2P_OBJ = $(X2P_SRC:db:+$(o)) - -PERLDLL_OBJ = $(CORE_OBJ) -PERLEXE_OBJ = perlmain$(o) - -PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ) - -.IF "$(USE_SETARGV)" != "" -SETARGV_OBJ = setargv$(o) -.ENDIF - -DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \ - Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \ - Sys/Hostname Storable Filter/Util/Call Encode \ - Digest/MD5 PerlIO/Scalar MIME/Base64 Time/HiRes Time/Piece -STATIC_EXT = DynaLoader -NONXS_EXT = Errno - -DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader - -POD2HTML = $(PODDIR)\pod2html -POD2MAN = $(PODDIR)\pod2man -POD2LATEX = $(PODDIR)\pod2latex -POD2TEXT = $(PODDIR)\pod2text - -# vars must be separated by "\t+~\t+", since we're using the tempfile -# version of config_sh.pl (we were overflowing someone's buffer by -# trying to fit them all on the command line) -# -- BKS 10-17-1999 -CFG_VARS = \ - INST_DRV=$(INST_DRV) ~ \ - INST_TOP=$(INST_TOP:s/\/\\/) ~ \ - INST_VER=$(INST_VER:s/\/\\/) ~ \ - INST_ARCH=$(INST_ARCH) ~ \ - archname=$(ARCHNAME) ~ \ - cc=$(CC) ~ \ - ld=$(LINK32) ~ \ - ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT) ~ \ - cf_email=$(EMAIL) ~ \ - d_crypt=$(D_CRYPT) ~ \ - d_mymalloc=$(PERL_MALLOC) ~ \ - libs=$(LIBFILES:f) ~ \ - incpath=$(CCINCDIR:s/\/\\/) ~ \ - libperl=$(PERLIMPLIB:f) ~ \ - libpth=$(CCLIBDIR:s/\/\\/);$(EXTRALIBDIRS:s/\/\\/) ~ \ - libc=$(LIBC) ~ \ - make=dmake ~ \ - _o=$(o) obj_ext=$(o) ~ \ - _a=$(a) lib_ext=$(a) ~ \ - static_ext=$(STATIC_EXT) ~ \ - use5005threads=$(USE_5005THREADS) ~ \ - useithreads=$(USE_ITHREADS) ~ \ - usethreads=$(USE_5005THREADS) ~ \ - usemultiplicity=$(USE_MULTI) ~ \ - useperlio=$(USE_PERLIO) ~ \ - LINK_FLAGS=$(LINK_FLAGS:s/\/\\/) ~ \ - optimize=$(OPTIMIZE) - -# -# set up targets varying between Win95 and WinNT builds -# - -.IF "$(IS_WIN95)" == "define" -MK2 = .\makefile.95 -RIGHTMAKE = __switch_makefiles -NOOP = @rem -.ELSE -MK2 = __not_needed -RIGHTMAKE = -.ENDIF - -# -# Top targets -# - -all : .\config.h $(GLOBEXE) $(MINIPERL) $(MK2) \ - $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) \ - $(X2P) Extensions - -$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c - -#---------------------------------------------------------------- - -#-------------------- BEGIN Win95 SPECIFIC ---------------------- - -# this target is a jump-off point for Win95 -# 1. it switches to the Win95-specific makefile if it exists -# (__do_switch_makefiles) -# 2. it prints a message when the Win95-specific one finishes (__done) -# 3. it then kills this makefile by trying to make __no_such_target - -__switch_makefiles: __do_switch_makefiles __done __no_such_target - -__do_switch_makefiles: -.IF "$(NOTFIRST)" != "true" - if exist $(MK2) $(MAKE:s/-S//) -f $(MK2) $(MAKETARGETS) NOTFIRST=true -.ELSE - $(NOOP) -.ENDIF - -.IF "$(NOTFIRST)" != "true" -__done: - @echo Build process complete. Ignore any errors after this message. - @echo Run "dmake test" to test and "dmake install" to install - -.ELSE -# dummy targets for Win95-specific makefile - -__done: - $(NOOP) - -__no_such_target: - $(NOOP) - -.ENDIF - -# This target is used to generate the new makefile (.\makefile.95) for Win95 - -.\makefile.95: .\makefile.mk - $(MINIPERL) genmk95.pl makefile.mk $(MK2) - -#--------------------- END Win95 SPECIFIC --------------------- - -# a blank target for when builds don't need to do certain things -# this target added for Win95 port but used to keep the WinNT port able to -# use this file -__not_needed: - $(NOOP) - -$(GLOBEXE) : perlglob$(o) -.IF "$(CCTYPE)" == "BORLAND" - $(CC) -c -w -v -tWM -I"$(CCINCDIR)" perlglob.c - $(LINK32) -Tpe -ap $(BLINK_FLAGS) c0x32$(o) perlglob$(o) \ - "$(CCLIBDIR)\32BIT\wildargs$(o)",$@,,import32.lib cw32mt.lib, -.ELIF "$(CCTYPE)" == "GCC" - $(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES) -.ELSE - $(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \ - perlglob$(o) setargv$(o) -.ENDIF - -perlglob$(o) : perlglob.c - -config.w32 : $(CFGSH_TMPL) - copy $(CFGSH_TMPL) config.w32 - -.\config.h : $(CFGH_TMPL) $(CORE_NOCFG_H) - -del /f config.h - copy $(CFGH_TMPL) config.h - -..\config.sh : config.w32 $(MINIPERL) config_sh.PL FindExt.pm - $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file \ - $(mktmp $(CFG_VARS)) config.w32 > ..\config.sh - -# this target is for when changes to the main config.sh happen -# edit config.{b,v,g}c and make this target once for each supported -# compiler (e.g. `dmake CCTYPE=BORLAND regen_config_h`) -regen_config_h: - perl config_sh.PL --cfgsh-option-file $(mktmp $(CFG_VARS)) \ - $(CFGSH_TMPL) > ..\config.sh - -cd .. && del /f perl.exe - cd .. && perl configpm - -del /f $(CFGH_TMPL) - -mkdir $(COREDIR) - -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)" - rename config.h $(CFGH_TMPL) - -$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl - cd .. && miniperl configpm - if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL) - $(XCOPY) ..\*.h $(COREDIR)\*.* - $(XCOPY) *.h $(COREDIR)\*.* - $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.* - $(RCOPY) include $(COREDIR)\*.* - $(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" \ - || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE) - -$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS) -.IF "$(CCTYPE)" == "BORLAND" - $(LINK32) -Tpe -ap $(BLINK_FLAGS) \ - @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),) -.ELIF "$(CCTYPE)" == "GCC" - $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \ - $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) -.ELSE - $(LINK32) -subsystem:console -out:$@ \ - @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,\\)) -.ENDIF - -$(MINIDIR) : - if not exist "$(MINIDIR)" mkdir "$(MINIDIR)" - -$(MINICORE_OBJ) : $(CORE_NOCFG_H) - $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*B).c - -$(MINIWIN32_OBJ) : $(CORE_NOCFG_H) - $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c - -# -DPERL_IMPLICIT_SYS needs C++ for perllib.c -# rules wrapped in .IFs break Win9X build (we end up with unbalanced []s unless -# unless the .IF is true), so instead we use a .ELSE with the default. -# This is the only file that depends on perlhost.h, vmem.h, and vdir.h - -perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h -.IF "$(USE_IMP_SYS)$(USE_OBJECT)" == "defineundef" - $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c -.ELSE - $(CC) -c -I. $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c -.ENDIF - -# 1. we don't want to rebuild miniperl.exe when config.h changes -# 2. we don't want to rebuild miniperl.exe with non-default config.h -$(MINI_OBJ) : $(CORE_NOCFG_H) - -$(WIN32_OBJ) : $(CORE_H) -$(CORE_OBJ) : $(CORE_H) -$(DLL_OBJ) : $(CORE_H) -$(X2P_OBJ) : $(CORE_H) - -perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl - $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) \ - $(BUILDOPT) CCTYPE=$(CCTYPE) > perldll.def - -$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) -.IF "$(CCTYPE)" == "BORLAND" - $(LINK32) -Tpd -ap $(BLINK_FLAGS) \ - @$(mktmp c0d32$(o) $(PERLDLL_OBJ:s,\,\\)\n \ - $@,\n \ - $(LIBFILES)\n \ - perldll.def\n) - $(IMPLIB) $*.lib $@ -.ELIF "$(CCTYPE)" == "GCC" - $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(BLINK_FLAGS) \ - $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) - dlltool --output-lib $(PERLIMPLIB) \ - --dllname $(PERLDLL:b).dll \ - --def perldll.def \ - --base-file perl.base \ - --output-exp perl.exp - $(LINK32) -mdll -o $@ $(BLINK_FLAGS) \ - $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) \ - perl.exp $(LKPOST)) -.ELSE - $(LINK32) -dll -def:perldll.def -out:$@ \ - @$(mktmp -base:0x28000000 $(BLINK_FLAGS) $(DELAYLOAD) $(LIBFILES) \ - $(PERLDLL_RES) $(PERLDLL_OBJ:s,\,\\)) -.ENDIF - $(XCOPY) $(PERLIMPLIB) $(COREDIR) - -$(MINIMOD) : $(MINIPERL) ..\minimod.pl - cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm - -..\x2p\a2p$(o) : ..\x2p\a2p.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c - -..\x2p\hash$(o) : ..\x2p\hash.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c - -..\x2p\str$(o) : ..\x2p\str.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c - -..\x2p\util$(o) : ..\x2p\util.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c - -..\x2p\walk$(o) : ..\x2p\walk.c - $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c - -$(X2P) : $(MINIPERL) $(X2P_OBJ) - $(MINIPERL) ..\x2p\find2perl.PL - $(MINIPERL) ..\x2p\s2p.PL -.IF "$(CCTYPE)" == "BORLAND" - $(LINK32) -Tpe -ap $(BLINK_FLAGS) \ - @$(mktmp c0x32$(o) $(X2P_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),) -.ELIF "$(CCTYPE)" == "GCC" - $(LINK32) -v -o $@ $(BLINK_FLAGS) \ - $(mktmp $(LKPRE) $(X2P_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) -.ELSE - $(LINK32) -subsystem:console -out:$@ \ - @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\)) -.ENDIF - -perlmain.c : runperl.c - copy runperl.c perlmain.c - -perlmain$(o) : perlmain.c - $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c - -$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES) -.IF "$(CCTYPE)" == "BORLAND" - $(LINK32) -Tpe -ap $(BLINK_FLAGS) \ - @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,\\)\n \ - $(@:s,\,\\),\n \ - $(PERLIMPLIB) $(LIBFILES)\n) -.ELIF "$(CCTYPE)" == "GCC" - $(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \ - $(PERLEXE_OBJ) $(PERLIMPLIB) $(LIBFILES) -.ELSE - $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(BLINK_FLAGS) \ - $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES) -.ENDIF - copy $(PERLEXE) $(WPERLEXE) - $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS - copy splittree.pl .. - $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR) - -$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM) - if not exist $(AUTODIR) mkdir $(AUTODIR) - cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL - cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL - $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) - $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL) - cd $(EXTDIR)\$(*B) && $(XSUBPP) dl_win32.xs > $(*B).c - $(XCOPY) $(EXTDIR)\$(*B)\dlutils.c . - -$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs - copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs - -#---------------------------------------------------------------------------------- -Extensions : buildext.pl $(PERLDEP) $(CONFIGPM) - $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) - -Extensions_clean : - -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean - -#---------------------------------------------------------------------------------- - - -doc: $(PERLEXE) - $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \ - --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\ - --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse - -utils: $(PERLEXE) $(X2P) - cd ..\utils && $(MAKE) PERL=$(MINIPERL) - copy ..\README.aix ..\pod\perlaix.pod - copy ..\README.amiga ..\pod\perlamiga.pod - copy ..\README.bs2000 ..\pod\perlbs2000.pod - copy ..\README.cygwin ..\pod\perlcygwin.pod - copy ..\README.dgux ..\pod\perldgux.pod - copy ..\README.dos ..\pod\perldos.pod - copy ..\README.epoc ..\pod\perlepoc.pod - copy ..\README.hpux ..\pod\perlhpux.pod - copy ..\README.machten ..\pod\perlmachten.pod - copy ..\README.macos ..\pod\perlmacos.pod - copy ..\README.mpeix ..\pod\perlmpeix.pod - copy ..\README.os2 ..\pod\perlos2.pod - copy ..\README.os390 ..\pod\perlos390.pod - copy ..\README.solaris ..\pod\perlsolaris.pod - copy ..\README.tru64 ..\pod\perltru64.pod - copy ..\README.vmesa ..\pod\perlvmesa.pod - copy ..\vms\perlvms.pod ..\pod\perlvms.pod - copy ..\README.vos ..\pod\perlvos.pod - copy ..\README.win32 ..\pod\perlwin32.pod - cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters - cd ..\lib && $(PERLEXE) lib_pm.PL - $(PERLEXE) $(PL2BAT) $(UTILS) - -distclean: clean - -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \ - $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD) - -del /f *.def *.map - -del /f $(EXTDIR)\DynaLoader\dl_win32.xs - -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm - -del /f $(LIBDIR)\XSLoader.pm - -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm - -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm $(LIBDIR)\Thread.pm - -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm - -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm - -del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm - -del /f $(LIBDIR)\PerlIO\Scalar.pm - -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm - -del /f $(LIBDIR)\File\Glob.pm - -del /f $(LIBDIR)\Storable.pm - -del /f $(LIBDIR)\Filter\Util\Call.pm - -del /f $(LIBDIR)\Digest\MD5.pm - -del /f $(LIBDIR)\MIME\Base64.pm - -del /f $(LIBDIR)\MIME\QuotedPrint.pm - -del /f $(LIBDIR)\Time\HiRes.pm - -del /f $(LIBDIR)\List\Util.pm - -del /f $(LIBDIR)\Scalar\Util.pm - -del /f $(LIBDIR)\Time\Piece.pm - -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO || rmdir /s $(LIBDIR)\IO - -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread || rmdir /s $(LIBDIR)\Thread - -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B || rmdir /s $(LIBDIR)\B - -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data || rmdir /s $(LIBDIR)\Data - -if exist $(LIBDIR)\Filter\Util\Call rmdir /s /q $(LIBDIR)\Filter\Util\Call || rmdir /s $(LIBDIR)\Filter - -if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util || rmdir /s $(LIBDIR)\Filter - -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest || rmdir /s $(LIBDIR)\Digest - -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME || rmdir /s $(LIBDIR)\MIME - -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List || rmdir /s $(LIBDIR)\List - -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar || rmdir /s $(LIBDIR)\Scalar - -cd $(PODDIR) && del /f *.html *.bat checkpods \ - perlaix.pod perlamiga.pod perlbs2000.pod perlcygwin.pod \ - perldos.pod perlepoc.pod perlhpux.pod perlmachten.pod \ - perlmacos.pod perlmpeix.pod perlos2.pod perlos390.pod \ - perlsolaris.pod perlvmesa.pod perlvms.pod perlvos.pod \ - perlwin32.pod pod2html pod2latex pod2man pod2text pod2usage \ - podchecker podselect - -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc \ - dprofpp *.bat - -cd ..\x2p && del /f find2perl s2p *.bat - -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new - -del /f $(CONFIGPM) - -del /f bin\*.bat - -cd $(EXTDIR) && del /s *$(a) *.def *.map *.pdb *.bs Makefile *$(o) \ - pm_to_blib - -if exist $(AUTODIR) rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR) - -if exist $(COREDIR) rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR) - -install : all installbare installhtml - -installbare : $(RIGHTMAKE) utils - $(PERLEXE) ..\installperl - if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.* - $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.* - $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.* - -installhtml : doc - $(RCOPY) html\*.* $(INST_HTML)\*.* - -inst_lib : $(CONFIGPM) - copy splittree.pl .. - $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR) - $(RCOPY) ..\lib $(INST_LIB)\*.* - -minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils - $(XCOPY) $(MINIPERL) ..\t\perl.exe -.IF "$(CCTYPE)" == "BORLAND" - $(XCOPY) $(GLOBBAT) ..\t\$(NULL) -.ELSE - $(XCOPY) $(GLOBEXE) ..\t\$(NULL) -.ENDIF - attrib -r ..\t\*.* - copy test ..\t - cd ..\t && \ - $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t - -test-prep : all utils - $(XCOPY) $(PERLEXE) ..\t\$(NULL) - $(XCOPY) $(PERLDLL) ..\t\$(NULL) -.IF "$(CCTYPE)" == "BORLAND" - $(XCOPY) $(GLOBBAT) ..\t\$(NULL) -.ELSE - $(XCOPY) $(GLOBEXE) ..\t\$(NULL) -.ENDIF - -test : $(RIGHTMAKE) test-prep - cd ..\t && $(PERLEXE) -I..\lib harness - -test-notty : test-prep - set PERL_SKIP_TTY_TEST=1 && \ - cd ..\t && $(PERLEXE) -I.\lib harness - -test-wide : test-prep - set HARNESS_PERL_SWITCHES=-C && \ - cd ..\t && $(PERLEXE) -I..\lib harness - -test-wide-notty : test-prep - set PERL_SKIP_TTY_TEST=1 && \ - set HARNESS_PERL_SWITCHES=-C && \ - cd ..\t && $(PERLEXE) -I..\lib harness - -clean : Extensions_clean - -@erase miniperlmain$(o) - -@erase $(MINIPERL) - -@erase perlglob$(o) - -@erase perlmain$(o) - -@erase config.w32 - -@erase /f config.h - -@erase $(GLOBEXE) - -@erase $(PERLEXE) - -@erase $(WPERLEXE) - -@erase $(PERLDLL) - -@erase $(CORE_OBJ) - -if exist $(MINIDIR) rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR) - -@erase $(WIN32_OBJ) - -@erase $(DLL_OBJ) - -@erase $(X2P_OBJ) - -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp *.res - -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat - -@erase ..\x2p\*.exe ..\x2p\*.bat - -@erase *.ilk - -@erase *.pdb - -# Handy way to run perlbug -ok without having to install and run the -# installed perlbug. We don't re-run the tests here - we trust the user. -# Please *don't* use this unless all tests pass. -# If you want to report test failures, use "dmake nok" instead. -ok: utils - $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" - -okfile: utils - $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok - -nok: utils - $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" - -nokfile: utils - $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok +#
+# Makefile to build perl on Windows NT using DMAKE.
+# Supported compilers:
+# Visual C++ 2.0 thro 6.0
+# Borland C++ 5.02
+# Mingw32 with gcc-2.95.2 or better **experimental**
+#
+# This is set up to build a perl.exe that runs off a shared library
+# (perl57.dll). Also makes individual DLLs for the XS extensions.
+#
+
+##
+## Make sure you read README.win32 *before* you mess with anything here!
+##
+
+##
+## Build configuration. Edit the values below to suit your needs.
+##
+
+#
+# Set these to wherever you want "dmake install" to put your
+# newly built perl.
+#
+INST_DRV *= c:
+INST_TOP *= $(INST_DRV)\perl
+
+#
+# Comment this out if you DON'T want your perl installation to be versioned.
+# This means that the new installation will overwrite any files from the
+# old installation at the same INST_TOP location. Leaving it enabled is
+# the safest route, as perl adds the extra version directory to all the
+# locations it installs files to. If you disable it, an alternative
+# versioned installation can be obtained by setting INST_TOP above to a
+# path that includes an arbitrary version string.
+#
+INST_VER *= \5.7.1
+
+#
+# Comment this out if you DON'T want your perl installation to have
+# architecture specific components. This means that architecture-
+# specific files will be installed along with the architecture-neutral
+# files. Leaving it enabled is safer and more flexible, in case you
+# want to build multiple flavors of perl and install them together in
+# the same location. Commenting it out gives you a simpler
+# installation that is easier to understand for beginners.
+#
+INST_ARCH *= \$(ARCHNAME)
+
+#
+# uncomment to enable multiple interpreters. This is need for fork()
+# emulation.
+#
+USE_MULTI *= define
+
+#
+# Beginnings of interpreter cloning/threads; still very incomplete.
+# This should be enabled to get the fork() emulation. This needs
+# USE_MULTI as well.
+#
+USE_ITHREADS *= define
+
+#
+# uncomment to enable the implicit "host" layer for all system calls
+# made by perl. This needs USE_MULTI above. This is also needed to
+# get fork().
+#
+USE_IMP_SYS *= define
+
+#
+# uncomment to enable the experimental PerlIO I/O subsystem.
+USE_PERLIO = define
+
+#
+# WARNING! This option is deprecated and will eventually go away (enable
+# USE_ITHREADS instead).
+#
+# uncomment to enable threads-capabilities. This is incompatible with
+# USE_ITHREADS, and is only here for people who may have come to rely
+# on the experimental Thread support that was in 5.005.
+#
+#USE_5005THREADS *= define
+
+#
+# WARNING! This option is deprecated and will eventually go away (enable
+# USE_MULTI instead).
+#
+# uncomment next line if you want to use the PERL_OBJECT build option.
+# DO NOT ENABLE unless you have legacy code that relies on the C++
+# CPerlObj class that was available in 5.005. This cannot be enabled
+# if you ask for USE_5005THREADS above.
+#
+#USE_OBJECT *= define
+
+#
+# uncomment exactly one of the following
+#
+# Visual C++ 2.x
+#CCTYPE *= MSVC20
+# Visual C++ > 2.x and < 6.x
+#CCTYPE *= MSVC
+# Visual C++ >= 6.x
+CCTYPE *= MSVC60
+# Borland 5.02 or later
+#CCTYPE *= BORLAND
+# mingw32+gcc-2.95.2 or better
+#CCTYPE *= GCC
+
+#
+# uncomment this if your Borland compiler is older than v5.4.
+BCCOLD = define
+#
+# uncomment this if you want to use Borland's VCL as your CRT
+#BCCVCL = define
+
+#
+# uncomment this if you are compiling under Windows 95/98 and command.com
+# (not needed if you're running under 4DOS/NT 6.01 or later)
+#IS_WIN95 *= define
+
+#
+# uncomment next line if you want debug version of perl (big,slow)
+# If not enabled, we automatically try to use maximum optimization
+# with all compilers that are known to have a working optimizer.
+#
+CFG *= Debug
+
+#
+# uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.
+# It has patches that fix known bugs in older versions of MSVCRT.DLL.
+# This currently requires VC 5.0 with Service Pack 3 or later.
+# Get it from CPAN at http://www.perl.com/CPAN/authors/id/D/DO/DOUGL/
+# and follow the directions in the package to install.
+#
+# Not recommended if you have VC 6.x and you're not running Windows 9x.
+#
+#USE_PERLCRT *= define
+
+#
+# uncomment to enable linking with setargv.obj under the Visual C
+# compiler. Setting this options enables perl to expand wildcards in
+# arguments, but it may be harder to use alternate methods like
+# File::DosGlob that are more powerful. This option is supported only with
+# Visual C.
+#
+#USE_SETARGV *= define
+
+#
+# if you have the source for des_fcrypt(), uncomment this and make sure the
+# file exists (see README.win32). File should be located in the same
+# directory as this file.
+#
+#CRYPT_SRC *= fcrypt.c
+
+#
+# if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
+# library, uncomment this, and make sure the library exists (see README.win32)
+# Specify the full pathname of the library.
+#
+#CRYPT_LIB *= fcrypt.lib
+
+#
+# set this if you wish to use perl's malloc
+# WARNING: Turning this on/off WILL break binary compatibility with extensions
+# you may have compiled with/without it. Be prepared to recompile all
+# extensions if you change the default. Currently, this cannot be enabled
+# if you ask for USE_IMP_SYS above.
+#
+#PERL_MALLOC *= define
+
+#
+# set the install locations of the compiler include/libraries
+# Running VCVARS32.BAT is *required* when using Visual C.
+# Some versions of Visual C don't define MSVCDIR in the environment,
+# so you may have to set CCHOME explicitly (spaces in the path name should
+# not be quoted)
+#
+#CCHOME *= F:\borland\bc5
+CCHOME *= $(MSVCDIR)
+#CCHOME *= c:\gcc-2.95.2
+CCINCDIR *= $(CCHOME)\include
+CCLIBDIR *= $(CCHOME)\lib
+
+#
+# Additional compiler flags can be specified here.
+#
+
+#
+# This should normally be disabled. Adding -DPERL_POLLUTE enables support
+# for old symbols by default, at the expense of extreme pollution. You most
+# probably just want to build modules that won't compile with
+# perl Makefile.PL POLLUTE=1
+# instead of enabling this. Please report such modules to the respective
+# authors.
+#
+#BUILDOPT += -DPERL_POLLUTE
+
+#
+# This should normally be disabled. Enabling it will disable the File::Glob
+# implementation of CORE::glob.
+#
+#BUILDOPT += -DPERL_EXTERNAL_GLOB
+
+#
+# This should normally be disabled. Enabling it causes perl to read scripts
+# in text mode (which is the 5.005 behavior) and will break ByteLoader.
+#BUILDOPT += -DPERL_TEXTMODE_SCRIPTS
+
+#
+# specify semicolon-separated list of extra directories that modules will
+# look for libraries (spaces in path names need not be quoted)
+#
+EXTRALIBDIRS *=
+
+#
+# set this to point to cmd.exe (only needed if you use some
+# alternate shell that doesn't grok cmd.exe style commands)
+#
+#SHELL *= g:\winnt\system32\cmd.exe
+
+#
+# set this to your email address (perl will guess a value from
+# from your loginname and your hostname, which may not be right)
+#
+#EMAIL *=
+
+##
+## Build configuration ends.
+##
+
+##################### CHANGE THESE ONLY IF YOU MUST #####################
+
+.IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
+D_CRYPT = undef
+.ELSE
+D_CRYPT = define
+CRYPT_FLAG = -DHAVE_DES_FCRYPT
+.ENDIF
+
+.IF "$(USE_OBJECT)" == "define"
+PERL_MALLOC != undef
+USE_5005THREADS != undef
+USE_MULTI != undef
+USE_IMP_SYS != define
+.ENDIF
+
+PERL_MALLOC *= undef
+
+USE_5005THREADS *= undef
+
+.IF "$(USE_5005THREADS)" == "define"
+USE_ITHREADS != undef
+.ENDIF
+
+.IF "$(USE_IMP_SYS)" == "define"
+PERL_MALLOC != undef
+.ENDIF
+
+USE_MULTI *= undef
+USE_OBJECT *= undef
+USE_ITHREADS *= undef
+USE_IMP_SYS *= undef
+USE_PERLIO *= undef
+USE_PERLCRT *= undef
+
+.IF "$(USE_IMP_SYS)$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" == "defineundefundefundef"
+USE_MULTI != define
+.ENDIF
+
+.IF "$(USE_ITHREADS)$(USE_MULTI)$(USE_OBJECT)" == "defineundefundef"
+USE_MULTI != define
+USE_5005THREADS != undef
+.ENDIF
+
+.IF "$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" != "undefundefundef"
+BUILDOPT += -DPERL_IMPLICIT_CONTEXT
+.ENDIF
+
+.IF "$(USE_IMP_SYS)" != "undef"
+BUILDOPT += -DPERL_IMPLICIT_SYS
+.ENDIF
+
+.IMPORT .IGNORE : PROCESSOR_ARCHITECTURE
+
+PROCESSOR_ARCHITECTURE *= x86
+
+.IF "$(USE_OBJECT)" == "define"
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-object
+.ELIF "$(USE_5005THREADS)" == "define"
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-thread
+.ELIF "$(USE_MULTI)" == "define"
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi
+.ELSE
+.IF "$(USE_PERLIO)" == "define"
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)-perlio
+.ELSE
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)
+.ENDIF
+ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE)
+.ENDIF
+
+.IF "$(USE_ITHREADS)" == "define"
+ARCHNAME !:= $(ARCHNAME)-thread
+.ENDIF
+
+# Visual Studio 98 specific
+.IF "$(CCTYPE)" == "MSVC60"
+
+# VC 6.0 can load the socket dll on demand. Makes the test suite
+# run in about 10% less time.
+DELAYLOAD *= -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib
+
+.IF "$(CFG)" == "Debug"
+.ELSE
+# VC 6.0 seems capable of compiling perl correctly with optimizations
+# enabled. Anything earlier fails tests.
+CFG *= Optimize
+.ENDIF
+.ENDIF
+
+ARCHDIR = ..\lib\$(ARCHNAME)
+COREDIR = ..\lib\CORE
+AUTODIR = ..\lib\auto
+LIBDIR = ..\lib
+EXTDIR = ..\ext
+PODDIR = ..\pod
+EXTUTILSDIR = $(LIBDIR)\ExtUtils
+
+#
+INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
+INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
+INST_LIB = $(INST_TOP)$(INST_VER)\lib
+INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
+INST_COREDIR = $(INST_ARCHLIB)\CORE
+INST_POD = $(INST_LIB)\pod
+INST_HTML = $(INST_TOP)$(INST_VER)\html
+
+#
+# Programs to compile, build .lib files and link
+#
+
+.USESHELL :
+
+.IF "$(CCTYPE)" == "BORLAND"
+
+CC = bcc32
+.IF "$(BCCOLD)" != "define"
+LINK32 = ilink32
+.ELSE
+LINK32 = tlink32
+.ENDIF
+LIB32 = tlib /P128
+IMPLIB = implib -c
+RSC = rc
+
+#
+# Options
+#
+INCLUDES = -I$(COREDIR) -I.\include -I. -I.. -I"$(CCINCDIR)"
+#PCHFLAGS = -H -Hc -H=c:\temp\bcmoduls.pch
+DEFINES = -DWIN32 $(CRYPT_FLAG)
+LOCDEFS = -DPERLDLL -DPERL_CORE
+SUBSYS = console
+CXX_FLAG = -P
+
+LIBC = cw32mti.lib
+LIBFILES = $(CRYPT_LIB) import32.lib $(LIBC)
+
+.IF "$(CFG)" == "Debug"
+OPTIMIZE = -v -D_RTLDLL -DDEBUGGING
+LINK_DBG = -v
+.ELSE
+OPTIMIZE = -O2 -D_RTLDLL
+LINK_DBG =
+.ENDIF
+
+CFLAGS = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
+ $(PCHFLAGS) $(OPTIMIZE)
+LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
+OBJOUT_FLAG = -o
+EXEOUT_FLAG = -e
+LIBOUT_FLAG =
+.IF "$(BCCOLD)" != "define"
+LINK_FLAGS += -Gn
+DEFINES += -D_MT -D__USELOCALES__ -D_WIN32_WINNT=0x0410
+.END
+.IF "$(BCCVCL)" == "define"
+LIBC = cp32mti.lib vcl.lib vcl50.lib vclx50.lib vcle50.lib
+LINK_FLAGS += -L"$(CCLIBDIR)\Release"
+.END
+
+
+.ELIF "$(CCTYPE)" == "GCC"
+
+CC = gcc
+LINK32 = gcc
+LIB32 = ar rc
+IMPLIB = dlltool
+RSC = rc
+
+i = .i
+o = .o
+a = .a
+
+#
+# Options
+#
+
+INCLUDES = -I.\include -I. -I.. -I$(COREDIR)
+DEFINES = -DWIN32 $(CRYPT_FLAG)
+LOCDEFS = -DPERLDLL -DPERL_CORE
+SUBSYS = console
+CXX_FLAG = -xc++
+
+LIBC = -lmsvcrt
+
+# same libs as MSVC
+LIBFILES = $(CRYPT_LIB) $(LIBC) \
+ -lmoldname -lkernel32 -luser32 -lgdi32 \
+ -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 \
+ -loleaut32 -lnetapi32 -luuid -lwsock32 -lmpr \
+ -lwinmm -lversion -lodbc32
+
+.IF "$(CFG)" == "Debug"
+OPTIMIZE = -g -O2 -DDEBUGGING
+LINK_DBG = -g
+.ELSE
+OPTIMIZE = -g -O2
+LINK_DBG = -g
+.ENDIF
+
+CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)
+LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
+OBJOUT_FLAG = -o
+EXEOUT_FLAG = -o
+LIBOUT_FLAG =
+
+# NOTE: we assume that GCC uses MSVCRT.DLL
+BUILDOPT += -fno-strict-aliasing -DPERL_MSVCRT_READFIX
+
+.ELSE
+
+CC = cl
+LINK32 = link
+LIB32 = $(LINK32) -lib
+RSC = rc
+
+#
+# Options
+#
+
+INCLUDES = -I$(COREDIR) -I.\include -I. -I..
+#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
+DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
+LOCDEFS = -DPERLDLL -DPERL_CORE
+SUBSYS = console
+CXX_FLAG = -TP -GX
+
+.IF "$(USE_PERLCRT)" != "define"
+LIBC = msvcrt.lib
+.ELSE
+LIBC = PerlCRT.lib
+.ENDIF
+
+PERLEXE_RES =
+PERLDLL_RES =
+
+.IF "$(CFG)" == "Debug"
+.IF "$(CCTYPE)" == "MSVC20"
+OPTIMIZE = -Od -MD -Z7 -DDEBUGGING
+LINK_DBG = -debug -pdb:none
+.ELSE
+# -Zi requires .pdb file(s)
+#OPTIMIZE = -Od -MD -Zi -DDEBUGGING
+#LINK_DBG = -debug
+OPTIMIZE = -O1 -MD -Z7 -DDEBUGGING
+LINK_DBG = -debug -debugtype:both -pdb:none
+.ENDIF
+.ELSE
+.IF "$(CFG)" == "Optimize"
+# -O1 yields smaller code, which turns out to be faster than -O2
+#OPTIMIZE = -O2 -MD -DNDEBUG
+OPTIMIZE = -O1 -MD -DNDEBUG
+.ELSE
+OPTIMIZE = -Od -MD -DNDEBUG
+.ENDIF
+LINK_DBG = -release
+.ENDIF
+
+LIBBASEFILES = $(CRYPT_LIB) \
+ oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
+ netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
+ version.lib odbc32.lib odbccp32.lib
+
+# we add LIBC here, since we may be using PerlCRT.dll
+LIBFILES = $(LIBBASEFILES) $(LIBC)
+
+CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
+ $(PCHFLAGS) $(OPTIMIZE)
+LINK_FLAGS = -nologo -nodefaultlib $(LINK_DBG) \
+ -libpath:"$(INST_COREDIR)" \
+ -machine:$(PROCESSOR_ARCHITECTURE)
+OBJOUT_FLAG = -Fo
+EXEOUT_FLAG = -Fe
+LIBOUT_FLAG = /out:
+
+.IF "$(USE_PERLCRT)" != "define"
+BUILDOPT += -DPERL_MSVCRT_READFIX
+.ENDIF
+
+.ENDIF
+
+.IF "$(USE_OBJECT)" == "define"
+OPTIMIZE += $(CXX_FLAG)
+BUILDOPT += -DPERL_OBJECT
+.ENDIF
+
+CFLAGS_O = $(CFLAGS) $(BUILDOPT)
+
+# used to allow local linking flags that are not propogated into Config.pm,
+# currently unused
+# -- BKS, 12-12-1999
+PRIV_LINK_FLAGS *=
+BLINK_FLAGS = $(PRIV_LINK_FLAGS) $(LINK_FLAGS)
+
+#################### do not edit below this line #######################
+############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
+
+o *= .obj
+a *= .lib
+
+LKPRE = INPUT (
+LKPOST = )
+
+#
+# Rules
+#
+
+.SUFFIXES : .c .i $(o) .dll $(a) .exe .rc .res
+
+.c$(o):
+ $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
+
+.c.i:
+ $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) -E $< >$@
+
+.y.c:
+ $(NOOP)
+
+$(o).dll:
+.IF "$(CCTYPE)" == "BORLAND"
+ $(LINK32) -Tpd -ap $(BLINK_FLAGS) c0d32$(o) $<,$@,,$(LIBFILES),$(*B).def
+ $(IMPLIB) $(*B).lib $@
+.ELIF "$(CCTYPE)" == "GCC"
+ $(LINK32) -o $@ $(BLINK_FLAGS) $< $(LIBFILES)
+ $(IMPLIB) --input-def $(*B).def --output-lib $(*B).a $@
+.ELSE
+ $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
+ -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
+.ENDIF
+
+.rc.res:
+ $(RSC) -i.. $<
+
+#
+# various targets
+MINIPERL = ..\miniperl.exe
+MINIDIR = .\mini
+PERLEXE = ..\perl.exe
+WPERLEXE = ..\wperl.exe
+GLOBEXE = ..\perlglob.exe
+CONFIGPM = ..\lib\Config.pm
+MINIMOD = ..\lib\ExtUtils\Miniperl.pm
+X2P = ..\x2p\a2p.exe
+
+# Nominate a target which causes extensions to be re-built
+# This used to be $(PERLEXE), but at worst it is the .dll that they depend
+# on and really only the interface - i.e. the .def file used to export symbols
+# from the .dll
+PERLDEP = perldll.def
+
+
+PL2BAT = bin\pl2bat.pl
+GLOBBAT = bin\perlglob.bat
+
+UTILS = \
+ ..\utils\h2ph \
+ ..\utils\splain \
+ ..\utils\dprofpp \
+ ..\utils\perlbug \
+ ..\utils\pl2pm \
+ ..\utils\c2ph \
+ ..\utils\h2xs \
+ ..\utils\perldoc \
+ ..\utils\perlcc \
+ ..\pod\checkpods \
+ ..\pod\pod2html \
+ ..\pod\pod2latex \
+ ..\pod\pod2man \
+ ..\pod\pod2text \
+ ..\pod\pod2usage \
+ ..\pod\podchecker \
+ ..\pod\podselect \
+ ..\x2p\find2perl \
+ ..\x2p\s2p \
+ bin\exetype.pl \
+ bin\runperl.pl \
+ bin\pl2bat.pl \
+ bin\perlglob.pl \
+ bin\search.pl
+
+.IF "$(CCTYPE)" == "BORLAND"
+
+CFGSH_TMPL = config.bc
+CFGH_TMPL = config_H.bc
+
+.ELIF "$(CCTYPE)" == "GCC"
+
+CFGSH_TMPL = config.gc
+CFGH_TMPL = config_H.gc
+PERLIMPLIB = ..\libperl57$(a)
+
+.ELSE
+
+CFGSH_TMPL = config.vc
+CFGH_TMPL = config_H.vc
+
+.ENDIF
+
+# makedef.pl must be updated if this changes, and this should normally
+# only change when there is an incompatible revision of the public API.
+# XXX so why did we change it from perl56 to perl57?
+PERLIMPLIB *= ..\perl57$(a)
+PERLDLL = ..\perl57.dll
+
+XCOPY = xcopy /f /r /i /d
+RCOPY = xcopy /f /r /i /e /d
+NOOP = @echo
+
+#
+# filenames given to xsubpp must have forward slashes (since it puts
+# full pathnames in #line strings)
+XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
+ -C++ -prototypes
+
+MICROCORE_SRC = \
+ ..\av.c \
+ ..\deb.c \
+ ..\doio.c \
+ ..\doop.c \
+ ..\dump.c \
+ ..\globals.c \
+ ..\gv.c \
+ ..\hv.c \
+ ..\mg.c \
+ ..\op.c \
+ ..\perl.c \
+ ..\perlapi.c \
+ ..\perly.c \
+ ..\pp.c \
+ ..\pp_ctl.c \
+ ..\pp_hot.c \
+ ..\pp_sys.c \
+ ..\regcomp.c \
+ ..\regexec.c \
+ ..\run.c \
+ ..\scope.c \
+ ..\sv.c \
+ ..\taint.c \
+ ..\toke.c \
+ ..\universal.c \
+ ..\utf8.c \
+ ..\util.c \
+ ..\xsutils.c
+
+EXTRACORE_SRC += perllib.c
+
+.IF "$(PERL_MALLOC)" == "define"
+EXTRACORE_SRC += ..\malloc.c
+.ENDIF
+
+.IF "$(USE_OBJECT)" != "define"
+EXTRACORE_SRC += ..\perlio.c
+.ENDIF
+
+WIN32_SRC = \
+ .\win32.c \
+ .\win32sck.c \
+ .\win32thread.c
+
+.IF "$(CRYPT_SRC)" != ""
+WIN32_SRC += .\$(CRYPT_SRC)
+.ENDIF
+
+DLL_SRC = $(DYNALOADER).c
+
+X2P_SRC = \
+ ..\x2p\a2p.c \
+ ..\x2p\hash.c \
+ ..\x2p\str.c \
+ ..\x2p\util.c \
+ ..\x2p\walk.c
+
+CORE_NOCFG_H = \
+ ..\av.h \
+ ..\cop.h \
+ ..\cv.h \
+ ..\dosish.h \
+ ..\embed.h \
+ ..\form.h \
+ ..\gv.h \
+ ..\handy.h \
+ ..\hv.h \
+ ..\iperlsys.h \
+ ..\mg.h \
+ ..\nostdio.h \
+ ..\op.h \
+ ..\opcode.h \
+ ..\perl.h \
+ ..\perlapi.h \
+ ..\perlsdio.h \
+ ..\perlsfio.h \
+ ..\perly.h \
+ ..\pp.h \
+ ..\proto.h \
+ ..\regexp.h \
+ ..\scope.h \
+ ..\sv.h \
+ ..\thread.h \
+ ..\unixish.h \
+ ..\utf8.h \
+ ..\util.h \
+ ..\warnings.h \
+ ..\XSUB.h \
+ ..\EXTERN.h \
+ ..\perlvars.h \
+ ..\intrpvar.h \
+ ..\thrdvar.h \
+ .\include\dirent.h \
+ .\include\netdb.h \
+ .\include\sys\socket.h \
+ .\win32.h
+
+CORE_H = $(CORE_NOCFG_H) .\config.h
+
+MICROCORE_OBJ = $(MICROCORE_SRC:db:+$(o))
+CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:db:+$(o))
+WIN32_OBJ = $(WIN32_SRC:db:+$(o))
+MINICORE_OBJ = $(MINIDIR)\{$(MICROCORE_OBJ:f) miniperlmain$(o) perlio$(o)}
+MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)}
+MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
+DLL_OBJ = $(DLL_SRC:db:+$(o))
+X2P_OBJ = $(X2P_SRC:db:+$(o))
+
+PERLDLL_OBJ = $(CORE_OBJ)
+PERLEXE_OBJ = perlmain$(o)
+
+PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ)
+
+.IF "$(USE_SETARGV)" != ""
+SETARGV_OBJ = setargv$(o)
+.ENDIF
+
+DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
+ Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
+ Sys/Hostname Storable Filter/Util/Call Encode \
+ Digest/MD5 PerlIO/Scalar MIME/Base64 Time/HiRes Time/Piece
+STATIC_EXT = DynaLoader
+NONXS_EXT = Errno
+
+DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader
+
+POD2HTML = $(PODDIR)\pod2html
+POD2MAN = $(PODDIR)\pod2man
+POD2LATEX = $(PODDIR)\pod2latex
+POD2TEXT = $(PODDIR)\pod2text
+
+# vars must be separated by "\t+~\t+", since we're using the tempfile
+# version of config_sh.pl (we were overflowing someone's buffer by
+# trying to fit them all on the command line)
+# -- BKS 10-17-1999
+CFG_VARS = \
+ INST_DRV=$(INST_DRV) ~ \
+ INST_TOP=$(INST_TOP:s/\/\\/) ~ \
+ INST_VER=$(INST_VER:s/\/\\/) ~ \
+ INST_ARCH=$(INST_ARCH) ~ \
+ archname=$(ARCHNAME) ~ \
+ cc=$(CC) ~ \
+ ld=$(LINK32) ~ \
+ ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT) ~ \
+ cf_email=$(EMAIL) ~ \
+ d_crypt=$(D_CRYPT) ~ \
+ d_mymalloc=$(PERL_MALLOC) ~ \
+ libs=$(LIBFILES:f) ~ \
+ incpath=$(CCINCDIR:s/\/\\/) ~ \
+ libperl=$(PERLIMPLIB:f) ~ \
+ libpth=$(CCLIBDIR:s/\/\\/);$(EXTRALIBDIRS:s/\/\\/) ~ \
+ libc=$(LIBC) ~ \
+ make=dmake ~ \
+ _o=$(o) obj_ext=$(o) ~ \
+ _a=$(a) lib_ext=$(a) ~ \
+ static_ext=$(STATIC_EXT) ~ \
+ use5005threads=$(USE_5005THREADS) ~ \
+ useithreads=$(USE_ITHREADS) ~ \
+ usethreads=$(USE_5005THREADS) ~ \
+ usemultiplicity=$(USE_MULTI) ~ \
+ useperlio=$(USE_PERLIO) ~ \
+ LINK_FLAGS=$(LINK_FLAGS:s/\/\\/) ~ \
+ optimize=$(OPTIMIZE)
+
+#
+# set up targets varying between Win95 and WinNT builds
+#
+
+.IF "$(IS_WIN95)" == "define"
+MK2 = .\makefile.95
+RIGHTMAKE = __switch_makefiles
+NOOP = @rem
+.ELSE
+MK2 = __not_needed
+RIGHTMAKE =
+.ENDIF
+
+#
+# Top targets
+#
+
+all : .\config.h $(GLOBEXE) $(MINIPERL) $(MK2) \
+ $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) \
+ $(X2P) Extensions
+
+$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
+
+#----------------------------------------------------------------
+
+#-------------------- BEGIN Win95 SPECIFIC ----------------------
+
+# this target is a jump-off point for Win95
+# 1. it switches to the Win95-specific makefile if it exists
+# (__do_switch_makefiles)
+# 2. it prints a message when the Win95-specific one finishes (__done)
+# 3. it then kills this makefile by trying to make __no_such_target
+
+__switch_makefiles: __do_switch_makefiles __done __no_such_target
+
+__do_switch_makefiles:
+.IF "$(NOTFIRST)" != "true"
+ if exist $(MK2) $(MAKE:s/-S//) -f $(MK2) $(MAKETARGETS) NOTFIRST=true
+.ELSE
+ $(NOOP)
+.ENDIF
+
+.IF "$(NOTFIRST)" != "true"
+__done:
+ @echo Build process complete. Ignore any errors after this message.
+ @echo Run "dmake test" to test and "dmake install" to install
+
+.ELSE
+# dummy targets for Win95-specific makefile
+
+__done:
+ $(NOOP)
+
+__no_such_target:
+ $(NOOP)
+
+.ENDIF
+
+# This target is used to generate the new makefile (.\makefile.95) for Win95
+
+.\makefile.95: .\makefile.mk
+ $(MINIPERL) genmk95.pl makefile.mk $(MK2)
+
+#--------------------- END Win95 SPECIFIC ---------------------
+
+# a blank target for when builds don't need to do certain things
+# this target added for Win95 port but used to keep the WinNT port able to
+# use this file
+__not_needed:
+ $(NOOP)
+
+$(GLOBEXE) : perlglob$(o)
+.IF "$(CCTYPE)" == "BORLAND"
+ $(CC) -c -w -v -tWM -I"$(CCINCDIR)" perlglob.c
+ $(LINK32) -Tpe -ap $(BLINK_FLAGS) c0x32$(o) perlglob$(o) \
+ "$(CCLIBDIR)\32BIT\wildargs$(o)",$@,,import32.lib cw32mt.lib,
+.ELIF "$(CCTYPE)" == "GCC"
+ $(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES)
+.ELSE
+ $(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
+ perlglob$(o) setargv$(o)
+.ENDIF
+
+perlglob$(o) : perlglob.c
+
+config.w32 : $(CFGSH_TMPL)
+ copy $(CFGSH_TMPL) config.w32
+
+.\config.h : $(CFGH_TMPL) $(CORE_NOCFG_H)
+ -del /f config.h
+ copy $(CFGH_TMPL) config.h
+
+..\config.sh : config.w32 $(MINIPERL) config_sh.PL FindExt.pm
+ $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file \
+ $(mktmp $(CFG_VARS)) config.w32 > ..\config.sh
+
+# this target is for when changes to the main config.sh happen
+# edit config.{b,v,g}c and make this target once for each supported
+# compiler (e.g. `dmake CCTYPE=BORLAND regen_config_h`)
+regen_config_h:
+ perl config_sh.PL --cfgsh-option-file $(mktmp $(CFG_VARS)) \
+ $(CFGSH_TMPL) > ..\config.sh
+ -cd .. && del /f perl.exe
+ cd .. && perl configpm
+ -del /f $(CFGH_TMPL)
+ -mkdir $(COREDIR)
+ -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)"
+ rename config.h $(CFGH_TMPL)
+
+$(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
+ cd .. && miniperl configpm
+ if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
+ $(XCOPY) ..\*.h $(COREDIR)\*.*
+ $(XCOPY) *.h $(COREDIR)\*.*
+ $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
+ $(RCOPY) include $(COREDIR)\*.*
+ $(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" \
+ || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE)
+
+$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
+.IF "$(CCTYPE)" == "BORLAND"
+ $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
+ @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
+.ELIF "$(CCTYPE)" == "GCC"
+ $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \
+ $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
+.ELSE
+ $(LINK32) -subsystem:console -out:$@ \
+ @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,\\))
+.ENDIF
+
+$(MINIDIR) :
+ if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
+
+$(MINICORE_OBJ) : $(CORE_NOCFG_H)
+ $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*B).c
+
+$(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
+ $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c
+
+# -DPERL_IMPLICIT_SYS needs C++ for perllib.c
+# rules wrapped in .IFs break Win9X build (we end up with unbalanced []s unless
+# unless the .IF is true), so instead we use a .ELSE with the default.
+# This is the only file that depends on perlhost.h, vmem.h, and vdir.h
+
+perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
+.IF "$(USE_IMP_SYS)$(USE_OBJECT)" == "defineundef"
+ $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
+.ELSE
+ $(CC) -c -I. $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c
+.ENDIF
+
+# 1. we don't want to rebuild miniperl.exe when config.h changes
+# 2. we don't want to rebuild miniperl.exe with non-default config.h
+$(MINI_OBJ) : $(CORE_NOCFG_H)
+
+$(WIN32_OBJ) : $(CORE_H)
+$(CORE_OBJ) : $(CORE_H)
+$(DLL_OBJ) : $(CORE_H)
+$(X2P_OBJ) : $(CORE_H)
+
+perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
+ $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) \
+ $(BUILDOPT) CCTYPE=$(CCTYPE) > perldll.def
+
+$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES)
+.IF "$(CCTYPE)" == "BORLAND"
+ $(LINK32) -Tpd -ap $(BLINK_FLAGS) \
+ @$(mktmp c0d32$(o) $(PERLDLL_OBJ:s,\,\\)\n \
+ $@,\n \
+ $(LIBFILES)\n \
+ perldll.def\n)
+ $(IMPLIB) $*.lib $@
+.ELIF "$(CCTYPE)" == "GCC"
+ $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(BLINK_FLAGS) \
+ $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
+ dlltool --output-lib $(PERLIMPLIB) \
+ --dllname $(PERLDLL:b).dll \
+ --def perldll.def \
+ --base-file perl.base \
+ --output-exp perl.exp
+ $(LINK32) -mdll -o $@ $(BLINK_FLAGS) \
+ $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) \
+ perl.exp $(LKPOST))
+.ELSE
+ $(LINK32) -dll -def:perldll.def -out:$@ \
+ @$(mktmp -base:0x28000000 $(BLINK_FLAGS) $(DELAYLOAD) $(LIBFILES) \
+ $(PERLDLL_RES) $(PERLDLL_OBJ:s,\,\\))
+.ENDIF
+ $(XCOPY) $(PERLIMPLIB) $(COREDIR)
+
+$(MINIMOD) : $(MINIPERL) ..\minimod.pl
+ cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
+
+..\x2p\a2p$(o) : ..\x2p\a2p.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
+
+..\x2p\hash$(o) : ..\x2p\hash.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
+
+..\x2p\str$(o) : ..\x2p\str.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
+
+..\x2p\util$(o) : ..\x2p\util.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
+
+..\x2p\walk$(o) : ..\x2p\walk.c
+ $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
+
+$(X2P) : $(MINIPERL) $(X2P_OBJ)
+ $(MINIPERL) ..\x2p\find2perl.PL
+ $(MINIPERL) ..\x2p\s2p.PL
+.IF "$(CCTYPE)" == "BORLAND"
+ $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
+ @$(mktmp c0x32$(o) $(X2P_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
+.ELIF "$(CCTYPE)" == "GCC"
+ $(LINK32) -v -o $@ $(BLINK_FLAGS) \
+ $(mktmp $(LKPRE) $(X2P_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
+.ELSE
+ $(LINK32) -subsystem:console -out:$@ \
+ @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\))
+.ENDIF
+
+perlmain.c : runperl.c
+ copy runperl.c perlmain.c
+
+perlmain$(o) : perlmain.c
+ $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
+
+$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
+.IF "$(CCTYPE)" == "BORLAND"
+ $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
+ @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,\\)\n \
+ $(@:s,\,\\),\n \
+ $(PERLIMPLIB) $(LIBFILES)\n)
+.ELIF "$(CCTYPE)" == "GCC"
+ $(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
+ $(PERLEXE_OBJ) $(PERLIMPLIB) $(LIBFILES)
+.ELSE
+ $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(BLINK_FLAGS) \
+ $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
+.ENDIF
+ copy $(PERLEXE) $(WPERLEXE)
+ $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
+ copy splittree.pl ..
+ $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
+
+$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
+ if not exist $(AUTODIR) mkdir $(AUTODIR)
+ cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL
+ cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL
+ $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
+ $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
+ cd $(EXTDIR)\$(*B) && $(XSUBPP) dl_win32.xs > $(*B).c
+ $(XCOPY) $(EXTDIR)\$(*B)\dlutils.c .
+
+$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
+ copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
+
+#----------------------------------------------------------------------------------
+Extensions : buildext.pl $(PERLDEP) $(CONFIGPM)
+ $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR)
+
+Extensions_clean :
+ -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
+
+#----------------------------------------------------------------------------------
+
+
+doc: $(PERLEXE)
+ $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \
+ --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\
+ --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
+
+utils: $(PERLEXE) $(X2P)
+ cd ..\utils && $(MAKE) PERL=$(MINIPERL)
+ copy ..\README.aix ..\pod\perlaix.pod
+ copy ..\README.amiga ..\pod\perlamiga.pod
+ copy ..\README.apollo ..\pod\perlapollo.pod
+ copy ..\README.beos ..\pod\perlbeos.pod
+ copy ..\README.bs2000 ..\pod\perlbs2000.pod
+ copy ..\README.cygwin ..\pod\perlcygwin.pod
+ copy ..\README.dgux ..\pod\perldgux.pod
+ copy ..\README.dos ..\pod\perldos.pod
+ copy ..\README.epoc ..\pod\perlepoc.pod
+ copy ..\README.hpux ..\pod\perlhpux.pod
+ copy ..\README.hurd ..\pod\perlhurd.pod
+ copy ..\README.machten ..\pod\perlmachten.pod
+ copy ..\README.macos ..\pod\perlmacos.pod
+ copy ..\README.mint ..\pod\perlmint.pod
+ copy ..\README.mpeix ..\pod\perlmpeix.pod
+ copy ..\README.os2 ..\pod\perlos2.pod
+ copy ..\README.os390 ..\pod\perlos390.pod
+ copy ..\README.plan9 ..\pod\perlplan9.pod
+ copy ..\README.qnx ..\pod\perlqnx.pod
+ copy ..\README.solaris ..\pod\perlsolaris.pod
+ copy ..\README.tru64 ..\pod\perltru64.pod
+ copy ..\README.vmesa ..\pod\perlvmesa.pod
+ copy ..\vms\perlvms.pod ..\pod\perlvms.pod
+ copy ..\README.vos ..\pod\perlvos.pod
+ copy ..\README.win32 ..\pod\perlwin32.pod
+ cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters
+ cd ..\lib && $(PERLEXE) lib_pm.PL
+ $(PERLEXE) $(PL2BAT) $(UTILS)
+
+distclean: clean
+ -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
+ $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD)
+ -del /f *.def *.map
+ -del /f $(EXTDIR)\DynaLoader\dl_win32.xs
+ -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
+ -del /f $(LIBDIR)\XSLoader.pm
+ -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
+ -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm $(LIBDIR)\Thread.pm
+ -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
+ -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
+ -del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm
+ -del /f $(LIBDIR)\PerlIO\Scalar.pm
+ -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
+ -del /f $(LIBDIR)\File\Glob.pm
+ -del /f $(LIBDIR)\Storable.pm
+ -del /f $(LIBDIR)\Filter\Util\Call.pm
+ -del /f $(LIBDIR)\Digest\MD5.pm
+ -del /f $(LIBDIR)\MIME\Base64.pm
+ -del /f $(LIBDIR)\MIME\QuotedPrint.pm
+ -del /f $(LIBDIR)\Time\HiRes.pm
+ -del /f $(LIBDIR)\List\Util.pm
+ -del /f $(LIBDIR)\Scalar\Util.pm
+ -del /f $(LIBDIR)\Time\Piece.pm
+ -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO || rmdir /s $(LIBDIR)\IO
+ -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread || rmdir /s $(LIBDIR)\Thread
+ -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B || rmdir /s $(LIBDIR)\B
+ -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data || rmdir /s $(LIBDIR)\Data
+ -if exist $(LIBDIR)\Filter\Util\Call rmdir /s /q $(LIBDIR)\Filter\Util\Call || rmdir /s $(LIBDIR)\Filter
+ -if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util || rmdir /s $(LIBDIR)\Filter
+ -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest || rmdir /s $(LIBDIR)\Digest
+ -if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME || rmdir /s $(LIBDIR)\MIME
+ -if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List || rmdir /s $(LIBDIR)\List
+ -if exist $(LIBDIR)\Scalar rmdir /s /q $(LIBDIR)\Scalar || rmdir /s $(LIBDIR)\Scalar
+ -cd $(PODDIR) && del /f *.html *.bat checkpods \
+ perlaix.pod perlamiga.pod perlapollo.pod \
+ perlbeos.pod perlbs2000.pod perlcygwin.pod perldgux.pod \
+ perldos.pod perlepoc.pod perlhpux.pod perlhurd.pod \
+ perlmachten.pod perlmint.pod \
+ perlmacos.pod perlmpeix.pod perlos2.pod perlos390.pod \
+ perlplan9.pod perlqnx.pod \
+ perlsolaris.pod perlvmesa.pod perlvms.pod perlvos.pod \
+ perlwin32.pod pod2html pod2latex pod2man pod2text pod2usage \
+ podchecker podselect
+ -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc \
+ dprofpp *.bat
+ -cd ..\x2p && del /f find2perl s2p *.bat
+ -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
+ -del /f $(CONFIGPM)
+ -del /f bin\*.bat
+ -cd $(EXTDIR) && del /s *$(a) *.def *.map *.pdb *.bs Makefile *$(o) \
+ pm_to_blib
+ -if exist $(AUTODIR) rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR)
+ -if exist $(COREDIR) rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR)
+
+install : all installbare installhtml
+
+installbare : $(RIGHTMAKE) utils
+ $(PERLEXE) ..\installperl
+ if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
+ $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
+ $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
+
+installhtml : doc
+ $(RCOPY) html\*.* $(INST_HTML)\*.*
+
+inst_lib : $(CONFIGPM)
+ copy splittree.pl ..
+ $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
+ $(RCOPY) ..\lib $(INST_LIB)\*.*
+
+minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils
+ $(XCOPY) $(MINIPERL) ..\t\perl.exe
+.IF "$(CCTYPE)" == "BORLAND"
+ $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
+.ELSE
+ $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
+.ENDIF
+ attrib -r ..\t\*.*
+ copy test ..\t
+ cd ..\t && \
+ $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
+
+test-prep : all utils
+ $(XCOPY) $(PERLEXE) ..\t\$(NULL)
+ $(XCOPY) $(PERLDLL) ..\t\$(NULL)
+.IF "$(CCTYPE)" == "BORLAND"
+ $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
+.ELSE
+ $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
+.ENDIF
+
+test : $(RIGHTMAKE) test-prep
+ cd ..\t && $(PERLEXE) -I..\lib harness
+
+test-notty : test-prep
+ set PERL_SKIP_TTY_TEST=1 && \
+ cd ..\t && $(PERLEXE) -I.\lib harness
+
+test-wide : test-prep
+ set HARNESS_PERL_SWITCHES=-C && \
+ cd ..\t && $(PERLEXE) -I..\lib harness
+
+test-wide-notty : test-prep
+ set PERL_SKIP_TTY_TEST=1 && \
+ set HARNESS_PERL_SWITCHES=-C && \
+ cd ..\t && $(PERLEXE) -I..\lib harness
+
+clean : Extensions_clean
+ -@erase miniperlmain$(o)
+ -@erase $(MINIPERL)
+ -@erase perlglob$(o)
+ -@erase perlmain$(o)
+ -@erase config.w32
+ -@erase /f config.h
+ -@erase $(GLOBEXE)
+ -@erase $(PERLEXE)
+ -@erase $(WPERLEXE)
+ -@erase $(PERLDLL)
+ -@erase $(CORE_OBJ)
+ -if exist $(MINIDIR) rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR)
+ -@erase $(WIN32_OBJ)
+ -@erase $(DLL_OBJ)
+ -@erase $(X2P_OBJ)
+ -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp *.res
+ -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
+ -@erase ..\x2p\*.exe ..\x2p\*.bat
+ -@erase *.ilk
+ -@erase *.pdb
+
+# Handy way to run perlbug -ok without having to install and run the
+# installed perlbug. We don't re-run the tests here - we trust the user.
+# Please *don't* use this unless all tests pass.
+# If you want to report test failures, use "dmake nok" instead.
+ok: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
+
+okfile: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
+
+nok: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
+
+nokfile: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok
|