From: Charles Bailey Date: Thu, 21 Mar 1996 00:00:00 +0000 (+0000) Subject: perl 5.002_01: [patch re-organisation and introduction] X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ea8ae489b8bf21511451c0ae78ebd48b717da772;p=p5sagit%2Fp5-mst-13.2.git perl 5.002_01: [patch re-organisation and introduction] This is my patch _01 to perl 5.002. The bulk of this patch consists of VMS and OS/2 updates, and the conversion to use EMBED as the default when building Perl. It also includes miscellaneous bugfixes, corrections to the pods, and minor additions, notably the new $^E and $^O variables. [editor's note: the changes between this and the perl-5.002_01 tag are the individual changes in the patch set] --- diff --git a/os2/diff.Makefile b/os2/diff.Makefile deleted file mode 100644 index fdce070..0000000 --- a/os2/diff.Makefile +++ /dev/null @@ -1,415 +0,0 @@ -*** Makefile.SH.orig Fri Feb 02 16:38:32 1996 ---- Makefile.SH Sat Feb 03 14:40:28 1996 -*************** -*** 31,43 **** - *[0-9]) plibsuf=.$so.$patchlevel;; - *) plibsuf=.$so;; - esac - case "$shrpdir" in - /usr/lib) ;; - "") ;; - *) shrpenv="env LD_RUN_PATH=$shrpdir";; - esac - pldlflags="$cccdlflags";; -! *) plibsuf=.a - pldlflags="";; - esac - ---- 31,44 ---- - *[0-9]) plibsuf=.$so.$patchlevel;; - *) plibsuf=.$so;; - esac -+ if test "x$plibext" != "x" ; then plibsuf=$plibext d_shrplib=custom ; fi - case "$shrpdir" in - /usr/lib) ;; - "") ;; - *) shrpenv="env LD_RUN_PATH=$shrpdir";; - esac - pldlflags="$cccdlflags";; -! *) plibsuf=$lib_ext - pldlflags="";; - esac - -*************** -*** 53,59 **** - static_ai_list=' ' - for f in $static_ext; do - base=`echo "$f" | sed 's/.*\///'` -! static_list="$static_list lib/auto/$f/$base.a" - if test -f ext/$f/AutoInit.c; then - static_ai_list="$static_ai_list ext/$f/AutoInit.c" - fi ---- 54,60 ---- - static_ai_list=' ' - for f in $static_ext; do - base=`echo "$f" | sed 's/.*\///'` -! static_list="$static_list lib/auto/$f/$base\$(LIB_EXT)" - if test -f ext/$f/AutoInit.c; then - static_ai_list="$static_ai_list ext/$f/AutoInit.c" - fi -*************** -*** 115,122 **** - static_ext = $static_list - ext = \$(dynamic_ext) \$(static_ext) - static_ext_autoinit = $static_ai_list -! DYNALOADER = lib/auto/DynaLoader/DynaLoader.a -! - - libs = $libs $cryptlib - ---- 116,122 ---- - static_ext = $static_list - ext = \$(dynamic_ext) \$(static_ext) - static_ext_autoinit = $static_ai_list -! DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) - - libs = $libs $cryptlib - -*************** -*** 140,145 **** ---- 140,147 ---- - # Any special object files needed by this architecture, e.g. os2/os2.obj - ARCHOBJS = $archobjs - -+ .SUFFIXES: .c \$(OBJ_EXT) -+ - !GROK!THIS! - - ## In the following dollars and backticks do not need the extra backslash. -*************** -*** 178,188 **** - - c = $(c1) $(c2) $(c3) miniperlmain.c perlmain.c - -! obj1 = $(mallocobj) gv.o toke.o perly.o op.o regcomp.o dump.o util.o mg.o -! obj2 = hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o -! obj3 = doop.o doio.o regexec.o taint.o deb.o globals.o -! -! - obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) - - # Once perl has been Configure'd and built ok you build different ---- 180,189 ---- - - c = $(c1) $(c2) $(c3) miniperlmain.c perlmain.c - -! obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) -! obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) -! obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) globals$(OBJ_EXT) -! - obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) - - # Once perl has been Configure'd and built ok you build different -*************** -*** 201,207 **** - # grrr - SHELL = /bin/sh - -! .c.o: - $(CCCMD) $(PLDLFLAGS) $*.c - - all: makefile miniperl $(private) $(plextract) $(public) $(dynamic_ext) ---- 202,208 ---- - # grrr - SHELL = /bin/sh - -! .c$(OBJ_EXT): - $(CCCMD) $(PLDLFLAGS) $*.c - - all: makefile miniperl $(private) $(plextract) $(public) $(dynamic_ext) -*************** -*** 230,247 **** - # build problems but that's not obvious to the novice. - # The Module used here must not depend on Config or any extensions. - -! miniperl: $& miniperlmain.o $(perllib) -! $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain.o $(perllib) $(libs) - @./miniperl -w -Ilib -MExporter -e 0 || $(MAKE) minitest - -! miniperlmain.o: miniperlmain.c - $(CCCMD) $(PLDLFLAGS) $*.c - - perlmain.c: miniperlmain.c config.sh makefile $(static_ext_autoinit) - sh writemain $(DYNALOADER) $(static_ext) > tmp - sh mv-if-diff tmp perlmain.c - -! perlmain.o: perlmain.c - $(CCCMD) $(PLDLFLAGS) $*.c - - # The file ext.libs is a list of libraries that must be linked in ---- 231,248 ---- - # build problems but that's not obvious to the novice. - # The Module used here must not depend on Config or any extensions. - -! miniperl: $& miniperlmain$(OBJ_EXT) $(perllib) -! $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain$(OBJ_EXT) $(perllib) $(libs) - @./miniperl -w -Ilib -MExporter -e 0 || $(MAKE) minitest - -! miniperlmain$(OBJ_EXT): miniperlmain.c - $(CCCMD) $(PLDLFLAGS) $*.c - - perlmain.c: miniperlmain.c config.sh makefile $(static_ext_autoinit) - sh writemain $(DYNALOADER) $(static_ext) > tmp - sh mv-if-diff tmp perlmain.c - -! perlmain$(OBJ_EXT): perlmain.c - $(CCCMD) $(PLDLFLAGS) $*.c - - # The file ext.libs is a list of libraries that must be linked in -*************** -*** 250,277 **** - ext.libs: $(static_ext) - -@test -f ext.libs || touch ext.libs - -! perl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs -! $(SHRPENV) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) - -! pureperl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs -! purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) - -! quantperl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs -! quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) - -! $(perllib): $& perl.o $(obj) - !NO!SUBS! - - case "$d_shrplib" in - *define*) - $spitshell >>Makefile <<'!NO!SUBS!' -! $(LD) $(LDDLFLAGS) -o $@ perl.o $(obj) - !NO!SUBS! - ;; - *) - $spitshell >>Makefile <<'!NO!SUBS!' - rm -f $(perllib) -! $(AR) rcu $(perllib) perl.o $(obj) - @$(ranlib) $(perllib) - !NO!SUBS! - ;; ---- 251,290 ---- - ext.libs: $(static_ext) - -@test -f ext.libs || touch ext.libs - -! perl: $& perlmain$(OBJ_EXT) $(perllib) $(DYNALOADER) $(static_ext) ext.libs -! $(SHRPENV) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain$(OBJ_EXT) $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) - -! pureperl: $& perlmain$(OBJ_EXT) $(perllib) $(DYNALOADER) $(static_ext) ext.libs -! purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain$(OBJ_EXT) $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) - -! quantperl: $& perlmain$(OBJ_EXT) $(perllib) $(DYNALOADER) $(static_ext) ext.libs -! quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain$(OBJ_EXT) $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) - -! $(perllib): $& perl$(OBJ_EXT) $(obj) - !NO!SUBS! - - case "$d_shrplib" in - *define*) - $spitshell >>Makefile <<'!NO!SUBS!' -! $(LD) $(LDDLFLAGS) -o $@ perl$(OBJ_EXT) $(obj) - !NO!SUBS! - ;; -+ custom) -+ if test -r $osname/Makefile.SHs ; then -+ . $osname/Makefile.SHs -+ $spitshell >>Makefile <>Makefile <<'!NO!SUBS!' - rm -f $(perllib) -! $(AR) rcu $(perllib) perl$(OBJ_EXT) $(obj) - @$(ranlib) $(perllib) - !NO!SUBS! - ;; -*************** -*** 284,293 **** - # checks as well as the special code to validate that the script in question - # has been invoked correctly. - -! suidperl: $& sperl.o perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs -! $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o suidperl perlmain.o sperl.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) - -! sperl.o: perl.c perly.h patchlevel.h $(h) - $(RMS) sperl.c - $(LNS) perl.c sperl.c - $(CCCMD) -DIAMSUID sperl.c ---- 297,306 ---- - # checks as well as the special code to validate that the script in question - # has been invoked correctly. - -! suidperl: $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(perllib) $(DYNALOADER) $(static_ext) ext.libs -! $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o suidperl perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) - -! sperl$(OBJ_EXT): perl.c perly.h patchlevel.h $(h) - $(RMS) sperl.c - $(LNS) perl.c sperl.c - $(CCCMD) -DIAMSUID sperl.c -*************** -*** 297,303 **** - # test -d lib/auto || mkdir lib/auto - # - preplibrary: miniperl lib/Config.pm $(plextract) -! @./makedir lib/auto - @echo " AutoSplitting perl library" - @./miniperl -Ilib -e 'use AutoSplit; \ - autosplit_lib_modules(@ARGV)' lib/*.pm lib/*/*.pm ---- 310,316 ---- - # test -d lib/auto || mkdir lib/auto - # - preplibrary: miniperl lib/Config.pm $(plextract) -! @sh ./makedir lib/auto - @echo " AutoSplitting perl library" - @./miniperl -Ilib -e 'use AutoSplit; \ - autosplit_lib_modules(@ARGV)' lib/*.pm lib/*/*.pm -*************** -*** 315,328 **** - - install: all install.perl install.man - -! install.perl: all - ./perl installperl - -! install.man: all - ./perl installman - - # Not implemented yet. -! #install.html: all - # ./perl installhtml - - # I now supply perly.c with the kits, so the following section is ---- 328,341 ---- - - install: all install.perl install.man - -! install.perl: all installperl - ./perl installperl - -! install.man: all installman - ./perl installman - - # Not implemented yet. -! #install.html: all installhtml - # ./perl installhtml - - # I now supply perly.c with the kits, so the following section is -*************** -*** 382,389 **** - @sh ext/util/make_ext static $@ LIBPERL_A=$(perllib) - - clean: -! rm -f *.o *.a all perlmain.c - rm -f perl.exp ext.libs - -cd pod; $(MAKE) clean - -cd utils; $(MAKE) clean - -cd x2p; $(MAKE) clean ---- 395,403 ---- - @sh ext/util/make_ext static $@ LIBPERL_A=$(perllib) - - clean: -! rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c - rm -f perl.exp ext.libs -+ -rm perl.export perl.dll perl.libexp perl.map perl.def - -cd pod; $(MAKE) clean - -cd utils; $(MAKE) clean - -cd x2p; $(MAKE) clean -*************** -*** 402,408 **** - done - rm -f *.orig */*.orig *~ */*~ core t/core t/c t/perl - rm -rf $(addedbyconf) -! rm -f makefile makefile.old - rm -f $(private) - rm -rf lib/auto - rm -f lib/.exists ---- 416,422 ---- - done - rm -f *.orig */*.orig *~ */*~ core t/core t/c t/perl - rm -rf $(addedbyconf) -! rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old - rm -f $(private) - rm -rf lib/auto - rm -f lib/.exists -*************** -*** 423,447 **** - lint: perly.c $(c) - lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz - -! makefile: Makefile -! $(MAKE) depend - - config.h: config.sh - /bin/sh config_h.SH - - # When done, touch perlmain.c so that it doesn't get remade each time. - depend: makedepend -! ./makedepend - - test -s perlmain.c && touch perlmain.c - cd x2p; $(MAKE) depend - - test: miniperl perl preplibrary $(dynamic_ext) - - cd t && chmod +x TEST */*.t -! - cd t && (rm -f perl; $(LNS) ../perl perl) && ./perl TEST perl.fuzz - -! # Need to unset during recursion to go out of loop -! -! MAKEDEPEND = makedepend -! -! $(FIRSTMAKEFILE): Makefile $(MAKEDEPEND) -! $(MAKE) depend MAKEDEPEND= - - config.h: config.sh - /bin/sh config_h.SH - - # When done, touch perlmain.c so that it doesn't get remade each time. - depend: makedepend -! sh ./makedepend - - test -s perlmain.c && touch perlmain.c - cd x2p; $(MAKE) depend - -+ # Cannot postpone this until $firstmakefile is ready ;-) -+ makedepend: makedepend.SH config.sh -+ sh ./makedepend.SH -+ - test: miniperl perl preplibrary $(dynamic_ext) - - cd t && chmod +x TEST */*.t -! - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../perl$(EXE_EXT) perl$(EXE_EXT)) && ./perl TEST $manpage"); ---- 88,98 ---- - # Convert name from File/Basename.pm to File::Basename.3 format, - # if necessary. - $manpage =~ s#\.p(m|od)$##; -! if ($Config{osname} eq "os2") { -! $manpage =~ s#/#.#g; -! } else { -! $manpage =~ s#/#::#g; -! } - $manpage = "${mandir}/${manpage}.${manext}"; - # Print $release $patchlevel stuff? or should pod2man do that? - &cmd("$pod2man $mod > $manpage"); diff --git a/os2/diff.installperl b/os2/diff.installperl deleted file mode 100644 index 710ee91..0000000 --- a/os2/diff.installperl +++ /dev/null @@ -1,228 +0,0 @@ -*** installperl.orig Mon Nov 20 09:55:08 1995 ---- installperl Wed Nov 22 02:29:34 1995 -*************** -*** 4,9 **** ---- 4,10 ---- - use Config; - - $mainperldir = "/usr/bin"; -+ $exe_ext = $Config{exe_ext}; - - while (@ARGV) { - $nonono = 1 if $ARGV[0] eq '-n'; -*************** -*** 61,68 **** - -w $installbin || die "$installbin is not writable by you\n" - unless $installbin =~ m#^/afs/# || $nonono; - -! -x 'perl' || die "perl isn't executable!\n"; -! -x 'suidperl' || die "suidperl isn't executable!\n" if $d_dosuid; - - -x 't/TEST' || warn "WARNING: You've never run 'make test'!!!", - " (Installing anyway.)\n"; ---- 62,69 ---- - -w $installbin || die "$installbin is not writable by you\n" - unless $installbin =~ m#^/afs/# || $nonono; - -! -x 'perl' . $exe_ext || die "perl isn't executable!\n"; -! -x 'suidperl' . $exe_ext|| die "suidperl isn't executable!\n" if $d_dosuid; - - -x 't/TEST' || warn "WARNING: You've never run 'make test'!!!", - " (Installing anyway.)\n"; -*************** -*** 80,92 **** - - # First we install the version-numbered executables. - -! &safe_unlink("$installbin/perl$ver"); -! &cmd("cp perl $installbin/perl$ver"); - -! &safe_unlink("$installbin/sperl$ver"); - if ($d_dosuid) { -! &cmd("cp suidperl $installbin/sperl$ver"); -! &chmod(04711, "$installbin/sperl$ver"); - } - - exit 0 if $versiononly; ---- 81,93 ---- - - # First we install the version-numbered executables. - -! &safe_unlink("$installbin/perl$ver$exe_ext"); -! &cmd("cp perl$exe_ext $installbin/perl$ver$exe_ext"); - -! &safe_unlink("$installbin/sperl$ver$exe_ext"); - if ($d_dosuid) { -! &cmd("cp suidperl$exe_ext $installbin/sperl$ver$exe_ext"); -! &chmod(04711, "$installbin/sperl$ver$exe_ext"); - } - - exit 0 if $versiononly; -*************** -*** 94,108 **** - # Make links to ordinary names if installbin directory isn't current directory. - - if (! &samepath($installbin, '.')) { -! &safe_unlink("$installbin/perl", "$installbin/suidperl"); -! &link("$installbin/perl$ver", "$installbin/perl"); -! &link("$installbin/sperl$ver", "$installbin/suidperl") if $d_dosuid; - } - - if (! &samepath($installbin, 'x2p')) { -! &safe_unlink("$installbin/a2p"); -! &cmd("cp x2p/a2p $installbin/a2p"); -! &chmod(0755, "$installbin/a2p"); - } - - # Install scripts. ---- 95,110 ---- - # Make links to ordinary names if installbin directory isn't current directory. - - if (! &samepath($installbin, '.')) { -! &safe_unlink("$installbin/perl$exe_ext", "$installbin/suidperl$exe_ext"); -! &link("$installbin/perl$ver$exe_ext", "$installbin/perl$exe_ext"); -! &link("$installbin/sperl$ver$exe_ext", "$installbin/suidperl$exe_ext") -! if $d_dosuid; - } - - if (! &samepath($installbin, 'x2p')) { -! &safe_unlink("$installbin/a2p$exe_ext"); -! &cmd("cp x2p/a2p$exe_ext $installbin/a2p$exe_ext"); -! &chmod(0755, "$installbin/a2p$exe_ext"); - } - - # Install scripts. -*************** -*** 188,201 **** - if (-w $mainperldir && ! &samepath($mainperldir, $installbin) && !$nonono) { - # First make sure $mainperldir/perl is not already the same as - # the perl we just installed -! if (-x "$mainperldir/perl") { - # Try to be clever about mainperl being a symbolic link - # to binexp/perl if binexp and installbin are different. - $mainperl_is_instperl = -! &samepath("$mainperldir/perl", "$installbin/perl") || - (($binexp ne $installbin) && -! (-l "$mainperldir/perl") && -! ((readlink "$mainperldir/perl") eq "$binexp/perl")); - } - if ((! $mainperl_is_instperl) && - (&yn("Many scripts expect perl to be installed as " . ---- 190,203 ---- - if (-w $mainperldir && ! &samepath($mainperldir, $installbin) && !$nonono) { - # First make sure $mainperldir/perl is not already the same as - # the perl we just installed -! if (-x "$mainperldir/perl$exe_ext") { - # Try to be clever about mainperl being a symbolic link - # to binexp/perl if binexp and installbin are different. - $mainperl_is_instperl = -! &samepath("$mainperldir/perl$exe_ext", "$installbin/perl$exe_ext") || - (($binexp ne $installbin) && -! (-l "$mainperldir/perl$exe_ext") && -! ((readlink "$mainperldir/perl$exe_ext") eq "$binexp/perl$exe_ext")); - } - if ((! $mainperl_is_instperl) && - (&yn("Many scripts expect perl to be installed as " . -*************** -*** 203,212 **** - "Do you wish to have $mainperldir/perl be the same as\n" . - "$binexp/perl? [y] "))) - { -! unlink("$mainperldir/perl"); -! eval 'link("$installbin/perl", "$mainperldir/perl")' || -! eval 'symlink("$binexp/perl", "$mainperldir/perl")' || -! &cmd("cp $installbin/perl $mainperldir"); - $mainperl_is_instperl = 1; - } - } ---- 205,214 ---- - "Do you wish to have $mainperldir/perl be the same as\n" . - "$binexp/perl? [y] "))) - { -! unlink("$mainperldir/perl$exe_ext"); -! eval 'link("$installbin/perl$exe_ext", "$mainperldir/perl$exe_ext")' || -! eval 'symlink("$binexp/perl$exe_ext", "$mainperldir/perl$exe_ext")' || -! &cmd("cp $installbin/perl$exe_ext $mainperldir$exe_ext"); - $mainperl_is_instperl = 1; - } - } -*************** -*** 217,223 **** - # Also skip $mainperl if the user opted to have it be a link to the - # installed perl. - -! @path = split(/:/, $ENV{"PATH"}); - @otherperls = (); - for (@path) { - next unless m,^/,; ---- 219,227 ---- - # Also skip $mainperl if the user opted to have it be a link to the - # installed perl. - -! $dirsep = ($osname =~ m:^os/?2$:i) ? ';' : ':' ; -! ($path = $ENV{"PATH"}) =~ s:\\:/:g ; -! @path = split(/$dirsep/, $path); - @otherperls = (); - for (@path) { - next unless m,^/,; -*************** -*** 225,231 **** - # Use &samepath here because some systems have other dirs linked - # to $mainperldir (like SunOS) - next if ($mainperl_is_instperl && &samepath($_, $mainperldir)); -! push(@otherperls, "$_/perl") if (-x "$_/perl" && ! -d "$_/perl"); - } - if (@otherperls) { - print STDERR "\nWarning: perl appears in your path in the following " . ---- 229,236 ---- - # Use &samepath here because some systems have other dirs linked - # to $mainperldir (like SunOS) - next if ($mainperl_is_instperl && &samepath($_, $mainperldir)); -! push(@otherperls, "$_/perl$exe_ext") -! if (-x "$_/perl$exe_ext" && ! -d "$_/perl$exe_ext"); - } - if (@otherperls) { - print STDERR "\nWarning: perl appears in your path in the following " . -*************** -*** 258,263 **** ---- 263,269 ---- - foreach $name (@names) { - next unless -e $name; - print STDERR " unlink $name\n"; -+ chmod 0777, $name if $osname =~ m:^os/?2$:i ; - unlink($name) || warn "Couldn't unlink $name: $!\n" unless $nonono; - } - } -*************** -*** 269,274 **** ---- 275,281 ---- - next unless -e $name; - print STDERR " unlink $name\n"; - next if $nonono; -+ chmod 0777, $name if $osname =~ m:^os/?2$:i ; - next if unlink($name); - warn "Couldn't unlink $name: $!\n"; - if ($! =~ /busy/i) { -*************** -*** 304,310 **** - local($from,$to) = @_; - - print STDERR " ln $from $to\n"; -! link($from,$to) || warn "Couldn't link $from to $to: $!\n" unless $nonono; - } - - sub chmod { ---- 311,323 ---- - local($from,$to) = @_; - - print STDERR " ln $from $to\n"; -! eval { -! link($from,$to) || warn "Couldn't link $from to $to: $!\n" unless $nonono; -! }; -! if ($@) { -! system( $cp, $from, $to ) -! && warn "Couldn't copy $from to $to: $!\n" unless $nonono; -! } - } - - sub chmod { diff --git a/os2/diff.mkdep b/os2/diff.mkdep deleted file mode 100644 index 86d3e0c..0000000 --- a/os2/diff.mkdep +++ /dev/null @@ -1,131 +0,0 @@ -*** makedepend.SH.orig Wed Aug 30 19:55:44 1995 ---- makedepend.SH Sun Nov 26 14:59:34 1995 -*************** -*** 53,69 **** - $cat /dev/null >.deptmp - $rm -f *.c.c c/*.c.c - if test -f Makefile; then -! cp Makefile makefile - fi -! mf=makefile - if test -f $mf; then - defrule=`<$mf sed -n \ -! -e '/^\.c\.o:.*;/{' \ - -e 's/\$\*\.c//' \ - -e 's/^[^;]*;[ ]*//p' \ - -e q \ - -e '}' \ -! -e '/^\.c\.o: *$/{' \ - -e N \ - -e 's/\$\*\.c//' \ - -e 's/^.*\n[ ]*//p' \ ---- 53,69 ---- - $cat /dev/null >.deptmp - $rm -f *.c.c c/*.c.c - if test -f Makefile; then -! cp Makefile $firstmakefile - fi -! mf=$firstmakefile - if test -f $mf; then - defrule=`<$mf sed -n \ -! -e '/^\.c\(\$(OBJ_EXT)\|\.o\):.*;/{' \ - -e 's/\$\*\.c//' \ - -e 's/^[^;]*;[ ]*//p' \ - -e q \ - -e '}' \ -! -e '/^\.c\(\$(OBJ_EXT)\|\.o\): *$/{' \ - -e N \ - -e 's/\$\*\.c//' \ - -e 's/^.*\n[ ]*//p' \ -*************** -*** 91,97 **** - */*) finc="-I`echo $file | sed 's#/[^/]*$##`" ;; - *) finc= ;; - esac -! $echo "Finding dependencies for $filebase.o." - ( $echo "#line 1 \"$file\""; \ - $sed -n <$file \ - -e "/^${filebase}_init(/q" \ ---- 91,97 ---- - */*) finc="-I`echo $file | sed 's#/[^/]*$##`" ;; - *) finc= ;; - esac -! $echo "Finding dependencies for $filebase$obj_ext." - ( $echo "#line 1 \"$file\""; \ - $sed -n <$file \ - -e "/^${filebase}_init(/q" \ -*************** -*** 107,114 **** - -e 's#\.[0-9][0-9]*\.c#'"$file.c#" \ - -e 's/^[ ]*#[ ]*line/#/' \ - -e '/^# *[0-9][0-9]* *[".\/]/!d' \ -! -e 's/^.*"\(.*\)".*$/'$filebase'.o: \1/' \ -! -e 's/^# *[0-9][0-9]* \(.*\)$/'$filebase'.o: \1/' \ - -e 's|: \./|: |' \ - -e 's|\.c\.c|.c|' | \ - $uniq | $sort | $uniq >> .deptmp ---- 107,114 ---- - -e 's#\.[0-9][0-9]*\.c#'"$file.c#" \ - -e 's/^[ ]*#[ ]*line/#/' \ - -e '/^# *[0-9][0-9]* *[".\/]/!d' \ -! -e 's/^.*"\(.*\)".*$/'$filebase'\$(OBJ_EXT): \1/' \ -! -e 's/^# *[0-9][0-9]* \(.*\)$/'$filebase'\$(OBJ_EXT): \1/' \ - -e 's|: \./|: |' \ - -e 's|\.c\.c|.c|' | \ - $uniq | $sort | $uniq >> .deptmp -*************** -*** 118,123 **** ---- 118,130 ---- - - $MAKE shlist || ($echo "Searching for .SH files..."; \ - $echo *.SH | $tr ' ' '\012' | $egrep -v '\*' >.shlist) -+ -+ # Now extract the dependency on makedepend.SH -+ # (it should reside in the main Makefile): -+ mv .shlist .shlist.old -+ $egrep -v '^makedepend\.SH' <.shlist.old >.shlist -+ rm .shlist.old -+ - if $test -s .deptmp; then - for file in `cat .shlist`; do - $echo `$expr X$file : 'X\(.*\).SH'`: $file $TOP/config.sh \; \ -*************** -*** 126,132 **** - $echo "Updating $mf..." - $echo "# If this runs make out of memory, delete /usr/include lines." \ - >> $mf.new -! $sed 's|^\(.*\.o:\) *\(.*/.*\.c\) *$|\1 \2; '"$defrule \2|" .deptmp \ - >>$mf.new - else - $MAKE hlist || ($echo "Searching for .h files..."; \ ---- 133,139 ---- - $echo "Updating $mf..." - $echo "# If this runs make out of memory, delete /usr/include lines." \ - >> $mf.new -! $sed 's|^\(.*\(\$(OBJ_EXT)\|\.o\):\) *\(.*/.*\.c\) *$|\1 \3; '"$defrule \2|" .deptmp \ - >>$mf.new - else - $MAKE hlist || ($echo "Searching for .h files..."; \ -*************** -*** 136,145 **** - $echo "Updating $mf..." - <.clist $sed -n \ - -e '/\//{' \ -! -e 's|^\(.*\)/\(.*\)\.c|\2.o: \1/\2.c; '"$defrule \1/\2.c|p" \ - -e d \ - -e '}' \ -! -e 's|^\(.*\)\.c|\1.o: \1.c|p' >> $mf.new - <.hlist $sed -n 's|\(.*/\)\(.*\)|s= \2= \1\2=|p' >.hsed - <.deptmp $sed -n 's|c:#include "\(.*\)".*$|o: \1|p' | \ - $sed 's|^[^;]*/||' | \ ---- 143,152 ---- - $echo "Updating $mf..." - <.clist $sed -n \ - -e '/\//{' \ -! -e 's|^\(.*\)/\(.*\)\.c|\2\$(OBJ_EXT): \1/\2.c; '"$defrule \1/\2.c|p" \ - -e d \ - -e '}' \ -! -e 's|^\(.*\)\.c|\1\$(OBJ_EXT): \1.c|p' >> $mf.new - <.hlist $sed -n 's|\(.*/\)\(.*\)|s= \2= \1\2=|p' >.hsed - <.deptmp $sed -n 's|c:#include "\(.*\)".*$|o: \1|p' | \ - $sed 's|^[^;]*/||' | \ diff --git a/os2/diff.rest b/os2/diff.rest deleted file mode 100644 index 7c44334..0000000 --- a/os2/diff.rest +++ /dev/null @@ -1,12 +0,0 @@ -*** t/TEST~ Tue Nov 14 08:22:08 1995 ---- t/TEST Wed Nov 22 02:04:22 1995 -*************** -*** 31,36 **** ---- 31,37 ---- - last; - } - } -+ $sharpbang = 0 if $ENV{OS2_SHELL}; # OS/2 - $bad = 0; - $good = 0; - $total = @ARGV; diff --git a/os2/diff.x2pMakefile b/os2/diff.x2pMakefile deleted file mode 100644 index 46fdedb..0000000 --- a/os2/diff.x2pMakefile +++ /dev/null @@ -1,136 +0,0 @@ -*** x2p/Makefile.SH.orig Sun Nov 19 20:17:38 1995 ---- x2p/Makefile.SH Wed Nov 22 20:18:08 1995 -*************** -*** 34,39 **** ---- 34,52 ---- - shellflags = $shellflags - - libs = $libs -+ -+ # These variables will be used in a future version to make -+ # the make file more portable to non-unix systems. -+ AR = $ar -+ EXE_EXT = $exe_ext -+ LIB_EXT = $lib_ext -+ OBJ_EXT = $obj_ext -+ PATH_SEP = $path_sep -+ -+ FIRSTMAKEFILE = $firstmakefile -+ -+ .SUFFIXES: .c \$(OBJ_EXT) -+ - !GROK!THIS! - - cat >>Makefile <<'!NO!SUBS!' -*************** -*** 60,80 **** - - c = hash.c $(mallocsrc) str.c util.c walk.c - -! obj = hash.o $(mallocobj) str.o util.o walk.o - - lintflags = -phbvxac - - # grrr - SHELL = /bin/sh - -! .c.o: - $(CCCMD) $*.c - - all: $(public) $(private) $(util) - touch all - -! a2p: $(obj) a2p.o -! $(CC) $(LDFLAGS) $(obj) a2p.o $(libs) -o a2p - - # I now supply a2p.c with the kits, so the following section is - # used only if you force byacc to run by saying ---- 73,93 ---- - - c = hash.c $(mallocsrc) str.c util.c walk.c - -! obj = hash$(OBJ_EXT) $(mallocobj) str$(OBJ_EXT) util$(OBJ_EXT) walk$(OBJ_EXT) - - lintflags = -phbvxac - - # grrr - SHELL = /bin/sh - -! .c$(OBJ_EXT): - $(CCCMD) $*.c - - all: $(public) $(private) $(util) - touch all - -! a2p: $(obj) a2p$(OBJ_EXT) -! $(CC) $(LDFLAGS) $(obj) a2p$(OBJ_EXT) $(libs) -o a2p - - # I now supply a2p.c with the kits, so the following section is - # used only if you force byacc to run by saying -*************** -*** 90,104 **** - a2p.c: a2p.y - -@touch a2p.c - -! a2p.o: a2p.c a2py.c a2p.h EXTERN.h util.h INTERN.h handy.h ../config.h str.h hash.h - $(CCCMD) $(LARGE) a2p.c - - clean: -! rm -f a2p *.o - - realclean: clean - rm -f *.orig core $(addedbyconf) all malloc.c -! rm -f makefile makefile.old - - # The following lint has practically everything turned on. Unfortunately, - # you have to wade through a lot of mumbo jumbo that can't be suppressed. ---- 103,117 ---- - a2p.c: a2p.y - -@touch a2p.c - -! a2p$(OBJ_EXT): a2p.c a2py.c a2p.h EXTERN.h util.h INTERN.h handy.h ../config.h str.h hash.h - $(CCCMD) $(LARGE) a2p.c - - clean: -! rm -f a2p *$(OBJ_EXT) - - realclean: clean - rm -f *.orig core $(addedbyconf) all malloc.c -! rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old - - # The following lint has practically everything turned on. Unfortunately, - # you have to wade through a lot of mumbo jumbo that can't be suppressed. -*************** -*** 109,115 **** - lint $(lintflags) $(defs) $(c) > a2p.fuzz - - depend: $(mallocsrc) ../makedepend -! ../makedepend - - clist: - echo $(c) | tr ' ' '\012' >.clist ---- 122,128 ---- - lint $(lintflags) $(defs) $(c) > a2p.fuzz - - depend: $(mallocsrc) ../makedepend -! sh ../makedepend - - clist: - echo $(c) | tr ' ' '\012' >.clist -*************** -*** 140,146 **** - case `pwd` in - *SH) - $rm -f ../Makefile -! ln Makefile ../Makefile - ;; - esac -! rm -f makefile ---- 153,159 ---- - case `pwd` in - *SH) - $rm -f ../Makefile -! $ln Makefile ../Makefile - ;; - esac -! rm -f $firstmakefile diff --git a/vms/ext/MM_VMS.pm b/vms/ext/MM_VMS.pm deleted file mode 100644 index a74881f..0000000 --- a/vms/ext/MM_VMS.pm +++ /dev/null @@ -1,1846 +0,0 @@ -# MM_VMS.pm -# MakeMaker default methods for VMS -# This package is inserted into @ISA of MakeMaker's MM before the -# built-in MM_Unix methods if MakeMaker.pm is run under VMS. -# -# Version: 5.12 -# Author: Charles Bailey bailey@genetics.upenn.edu -# Revised: 12-Dec-1995 - -package ExtUtils::MM_VMS; - -use Config; -require Exporter; -use VMS::Filespec; -use File::Basename; - -Exporter::import('ExtUtils::MakeMaker', '$Verbose', '&neatvalue'); - - -sub eliminate_macros { - my($self,$path) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - unless ($path) { - print "eliminate_macros('') = ||\n" if $Verbose >= 3; - return ''; - } - my($npath) = unixify($path); - my($head,$macro,$tail); - - # perform m##g in scalar context so it acts as an iterator - while ($npath =~ m#(.*?)\$\((\S+?)\)(.*)#g) { - if ($self->{$2}) { - ($head,$macro,$tail) = ($1,$2,$3); - ($macro = unixify($self->{$macro})) =~ s#/$##; - $npath = "$head$macro$tail"; - } - } - print "eliminate_macros($path) = |$npath|\n" if $Verbose >= 3; - $npath; -} - -# Catchall routine to clean up problem macros. Expands macros in any directory -# specification, and expands expressions which are all macro, so that we can -# tell how long the expansion is, and avoid overrunning DCL's command buffer -# when MM[KS] is running. -sub fixpath { - my($self,$path,$force_path) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - unless ($path) { - print "eliminate_macros('') = ||\n" if $Verbose >= 3; - return ''; - } - my($fixedpath,$prefix,$name); - - if ($path =~ m#^\$\(.+\)$# || $path =~ m#[/:>\]]#) { - if ($force_path or $path =~ /(?:DIR\)|\])$/) { - $fixedpath = vmspath($self->eliminate_macros($path)); - } - else { - $fixedpath = vmsify($self->eliminate_macros($path)); - } - } - elsif ((($prefix,$name) = ($path =~ m#^\$\(([^\)]+)\)(.+)#)) && $self->{$prefix}) { - my($vmspre) = vmspath($self->{$prefix}) || ''; # is it a dir or just a name? - $fixedpath = ($vmspre ? $vmspre : $self->{$prefix}) . $name; - $fixedpath = vmspath($fixedpath) if $force_path; - } - else { - $fixedpath = $path; - $fixedpath = vmspath($fixedpath) if $force_path; - } - # Convert names without directory or type to paths - if (!$force_path and $fixedpath !~ /[:>(.\]]/) { $fixedpath = vmspath($fixedpath); } - print "fixpath($path) = |$fixedpath|\n" if $Verbose >= 3; - $fixedpath; -} - -sub catdir { - my($self,@dirs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($dir) = pop @dirs; - my($path) = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs)); - my($spath,$sdir) = ($path,$dir); - $spath =~ s/.dir$//; $sdir =~ s/.dir$//; - $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+$/; - my($rslt); - - $rslt = vmspath($self->eliminate_macros($spath)."/$sdir"); - print "catdir($path,$dir) = |$rslt|\n" if $Verbose >= 3; - $rslt; -} - -sub catfile { - my($self,@files) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($file) = pop @files; - my($path) = (@files == 1 ? $files[0] : $self->catdir(@files)); - my($spath) = $path; - $spath =~ s/.dir$//; - my($rslt); - if ( $spath =~ /^[^\)\]\/:>]+\)$/ && basename($file) eq $file) { $rslt = "$spath$file"; } - else { $rslt = vmsify($self->eliminate_macros($spath).'/'.unixify($file)); } - print "catfile($path,$file) = |$rslt|\n" if $Verbose >= 3; - $rslt; -} - - -# Default name is taken from the directory name if it's not passed in. -# Since VMS filenames are case-insensitive, we actually look in the -# extension files to find the Mixed-case name -sub guess_name { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($defname,$defpm); - local *PM; - - $defname = $ENV{'DEFAULT'}; - $defname =~ s:.*?([^.\]]+)\]:$1: - unless ($defname =~ s:.*[.\[]ext\.(.*)\]:$1:i); - $defname =~ s#[.\]]#::#g; - ($defpm = $defname) =~ s/.*:://; - if (open(PM,"${defpm}.pm")){ - while () { - if (/^\s*package\s+([^;]+)/i) { - $defname = $1; - last; - } - } - print STDOUT "Warning (non-fatal): Couldn't find package name in ${defpm}.pm;\n\t", - "defaulting package name to $defname\n" - if eof(PM); - close PM; - } - else { - print STDOUT "Warning (non-fatal): Couldn't find ${defpm}.pm;\n\t", - "defaulting package name to $defname\n"; - } - $defname =~ s#[\-_][\d.\-]+$##; - $defname; -} - - -sub find_perl{ - my($self, $ver, $names, $dirs, $trace) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($name, $dir,$vmsfile,@cand); - if ($trace){ - print "Looking for perl $ver by these names:\n"; - print "\t@$names,\n"; - print "in these dirs:\n"; - print "\t@$dirs\n"; - } - foreach $dir (@$dirs){ - next unless defined $dir; # $self->{PERL_SRC} may be undefined - foreach $name (@$names){ - if ($name !~ m![/:>\]]!) { push(@cand,$self->catfile($dir,$name)); } - else { push(@cand,$self->fixpath($name)); } - } - } - foreach $name (sort { length($a) <=> length($b) } @cand) { - print "Checking $name\n" if ($trace >= 2); - next unless $vmsfile = $self->maybe_command($name); - print "Executing $vmsfile\n" if ($trace >= 2); - if (`MCR $vmsfile -e "require $ver; print ""VER_OK\n"""` =~ /VER_OK/) { - print "Using PERL=MCR $vmsfile\n" if $trace; - return "MCR $vmsfile" - } - } - print STDOUT "Unable to find a perl $ver (by these names: @$names, in these dirs: @$dirs)\n"; - 0; # false and not empty -} - - -sub maybe_command { - my($self,$file) = @_; - return $file if -x $file && ! -d _; - return "$file.exe" if -x "$file.exe"; - if ($file !~ m![/:>\]]!) { - my($shrfile) = 'Sys$Share:' . $file; - return $file if -x $shrfile && ! -d _; - return "$file.exe" if -x "$shrfile.exe"; - } - return 0; -} - - -sub maybe_command_in_dirs { # $ver is optional argument if looking for perl - my($self, $names, $dirs, $trace, $ver) = @_; - my($name, $dir); - foreach $dir (@$dirs){ - next unless defined $dir; # $self->{PERL_SRC} may be undefined - foreach $name (@$names){ - my($abs,$tryabs); - if ($self->file_name_is_absolute($name)) { - $abs = $name; - } else { - $abs = $self->catfile($dir, $name); - } - print "Checking $abs for $name\n" if ($trace >= 2); - next unless $tryabs = $self->maybe_command($abs); - print "Substituting $tryabs instead of $abs\n" - if ($trace >= 2 and $tryabs ne $abs); - $abs = $tryabs; - if (defined $ver) { - print "Executing $abs\n" if ($trace >= 2); - if (`$abs -e 'require $ver; print "VER_OK\n" ' 2>&1` =~ /VER_OK/) { - print "Using PERL=$abs\n" if $trace; - return $abs; - } - } else { # Do not look for perl - return $abs; - } - } - } -} - - -sub perl_script { - my($self,$file) = @_; - return $file if -r $file && ! -d _; - return "$file.pl" if -r "$file.pl" && ! -d _; - return ''; -} - -sub file_name_is_absolute { - my($sefl,$file); - $file =~ m!^/! or $file =~ m![:<\[][^.]!; -} - - -sub replace_manpage_separator { - my($self,$man) = @_; - $man = unixify($man); - $man =~ s#/+#__#g; - $man; -} - - -sub init_others { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - - $self->{NOOP} = "\t@ Continue"; - $self->{FIRST_MAKEFILE} ||= 'Descrip.MMS'; - $self->{MAKEFILE} ||= $self->{FIRST_MAKEFILE}; - $self->{RM_F} = '$(PERL) -e "foreach (@ARGV) { 1 while ( -d $_ ? rmdir $_ : unlink $_)}"'; - $self->{RM_RF} = '$(PERL) -e "use File::Path; @dirs = map(VMS::Filespec::unixify($_),@ARGV); rmtree(\@dirs,0,0)"'; - $self->{TOUCH} = '$(PERL) -e "$t=time; foreach (@ARGV) { -e $_ ? utime($t,$t,@ARGV) : (open(F,qq(>$_)),close F)}"'; - $self->{CHMOD} = '$(PERL) -e "chmod @ARGV"'; # expect Unix syntax from MakeMaker - $self->{CP} = 'Copy/NoConfirm'; - $self->{MV} = 'Rename/NoConfirm'; - $self->{UMASK_NULL} = "\t!"; - &MM_Unix::init_others; -} - -sub constants { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m,$def); - push @m, " -NAME = $self->{NAME} -DISTNAME = $self->{DISTNAME} -NAME_SYM = $self->{NAME_SYM} -VERSION = $self->{VERSION} -VERSION_SYM = $self->{VERSION_SYM} -VERSION_MACRO = VERSION -DEFINE_VERSION = ",'"$(VERSION_MACRO)=""$(VERSION)"""'," -# XS_VERSION = $self->{XS_VERSION} -# XS_VERSION_MACRO = XS_VERSION -# XS_DEFINE_VERSION = ",'"$(XS_VERSION_MACRO)=""$(XS_VERSION)"""'," - -# In which library should we install this extension? -# This is typically the same as PERL_LIB. -# (also see INST_LIBDIR and relationship to ROOTEXT) -INST_LIB = ",$self->fixpath($self->{INST_LIB},1)," -INST_ARCHLIB = ",$self->fixpath($self->{INST_ARCHLIB},1)," -INST_EXE = ",$self->fixpath($self->{INST_EXE},1)," - -# AFS users will want to set the installation directories for -# the final 'make install' early without setting INST_LIB, -# INST_ARCHLIB, and INST_EXE for the testing phase -INSTALLPRIVLIB = ",$self->fixpath($self->{INSTALLPRIVLIB},1),' -INSTALLARCHLIB = ',$self->fixpath($self->{INSTALLARCHLIB},1),' -INSTALLBIN = ',$self->fixpath($self->{INSTALLBIN},1),' - -# Perl library to use when building the extension -PERL_LIB = ',$self->fixpath($self->{PERL_LIB},1),' -PERL_ARCHLIB = ',$self->fixpath($self->{PERL_ARCHLIB},1),' -LIBPERL_A = ',$self->fixpath($self->{LIBPERL_A}),' - -MAKEMAKER = ',$self->catfile($self->{PERL_LIB},'ExtUtils','MakeMaker.pm')," -MM_VERSION = $ExtUtils::MakeMaker::VERSION -FIRST_MAKEFILE = ",$self->fixpath($self->{FIRST_MAKEFILE}),' -MAKE_APERL_FILE = ',$self->fixpath($self->{MAKE_APERL_FILE})," - -PERLMAINCC = $self->{PERLMAINCC} -"; - - if ($self->{PERL_SRC}) { - push @m, " -# Where is the perl source code located? -PERL_SRC = ",$self->fixpath($self->{PERL_SRC},1); - push @m, " -PERL_VMS = ",$self->catdir($self->{PERL_SRC},q(VMS)); - } - push @m," -# Perl header files (will eventually be under PERL_LIB) -PERL_INC = ",$self->fixpath($self->{PERL_INC},1)," -# Perl binaries -PERL = $self->{PERL} -FULLPERL = $self->{FULLPERL} - -# FULLEXT = Pathname for extension directory (eg DBD/Oracle). -# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. -# ROOTEXT = Directory part of FULLEXT with leading slash (e.g /DBD) -FULLEXT = ",$self->fixpath($self->{FULLEXT},1)," -BASEEXT = $self->{BASEEXT} -ROOTEXT = ",($self->{ROOTEXT} eq '') ? '[]' : $self->fixpath($self->{ROOTEXT},1)," -DLBASE = $self->{DLBASE} -INC = "; - - if ($self->{'INC'}) { - push @m,'/Include=('; - my(@includes) = split(/\s+/,$self->{INC}); - my($plural); - foreach (@includes) { - s/^-I//; - push @m,', ' if $plural++; - push @m,$self->fixpath($_,1); - } - push @m, ")\n"; - } - - if ($self->{DEFINE} ne '') { - my(@defs) = split(/\s+/,$self->{DEFINE}); - foreach $def (@defs) { - next unless $def; - $def =~ s/^-D//; - $def = "\"$def\"" if $def =~ /=/; - } - $self->{DEFINE} = join ',',@defs; - } - - if ($self->{OBJECT} =~ /\s/) { - $self->{OBJECT} =~ s/(\\)?\n+\s+/ /g; - $self->{OBJECT} = map($self->fixpath($_),split(/,?\s+/,$self->{OBJECT})); - } - $self->{LDFROM} = join(' ',map($self->fixpath($_),split(/,?\s+/,$self->{LDFROM}))); - - push @m," -DEFINE = $self->{DEFINE} -OBJECT = $self->{OBJECT} -LDFROM = $self->{LDFROM} -LINKTYPE = $self->{LINKTYPE} - -# Handy lists of source code files: -XS_FILES = ",join(', ', sort keys %{$self->{XS}}),' -C_FILES = ',join(', ', @{$self->{C}}),' -O_FILES = ',join(', ', @{$self->{O_FILES}} ),' -H_FILES = ',join(', ', @{$self->{H}}),' -MAN1PODS = ',join(" \\\n\t", sort keys %{$self->{MAN1PODS}}),' -MAN3PODS = ',join(" \\\n\t", sort keys %{$self->{MAN3PODS}}),' - -# Man installation stuff: -INST_MAN1DIR = ',$self->fixpath($self->{INST_MAN1DIR},1),' -INSTALLMAN1DIR = ',$self->fixpath($self->{INSTALLMAN1DIR},1)," -MAN1EXT = $self->{MAN1EXT} - -INST_MAN3DIR = ",$self->fixpath($self->{INST_MAN3DIR},1),' -INSTALLMAN3DIR = ',$self->fixpath($self->{INSTALLMAN3DIR},1)," -MAN3EXT = $self->{MAN3EXT} - - -.SUFFIXES : .xs .c \$(OBJ_EXT) - -# This extension may link to it's own library (see SDBM_File)"; - push @m," -MYEXTLIB = ",$self->fixpath($self->{MYEXTLIB})," - -# Here is the Config.pm that we are using/depend on -CONFIGDEP = \$(PERL_ARCHLIB)Config.pm, \$(PERL_INC)config.h - -# Where to put things: -INST_LIBDIR = ",($self->{'INST_LIBDIR'} = $self->catdir($self->{INST_LIB},$self->{ROOTEXT}))," -INST_ARCHLIBDIR = ",($self->{'INST_ARCHLIBDIR'} = $self->catdir($self->{INST_ARCHLIB},$self->{ROOTEXT}))," - -INST_AUTODIR = ",($self->{'INST_AUTODIR'} = $self->catdir($self->{INST_LIB},'auto',$self->{FULLEXT})),' -INST_ARCHAUTODIR = ',($self->{'INST_ARCHAUTODIR'} = $self->catdir($self->{INST_ARCHLIB},'auto',$self->{FULLEXT})),' -'; - - if ($self->has_link_code()) { - push @m,' -INST_STATIC = $(INST_ARCHAUTODIR)$(BASEEXT)$(LIB_EXT) -INST_DYNAMIC = $(INST_ARCHAUTODIR)$(BASEEXT).$(DLEXT) -INST_BOOT = $(INST_ARCHAUTODIR)$(BASEEXT).bs -'; - } else { - push @m,' -INST_STATIC = -INST_DYNAMIC = -INST_BOOT = -'; - } - - push @m,' -INST_PM = ',join(', ',map($self->fixpath($_),sort values %{$self->{PM}})),' -'; - - join('',@m); -} - - -sub const_loadlibs{ - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my (@m); - push @m, " -# $self->{NAME} might depend on some other libraries. -# (These comments may need revising:) -# -# Dependent libraries can be linked in one of three ways: -# -# 1. (For static extensions) by the ld command when the perl binary -# is linked with the extension library. See EXTRALIBS below. -# -# 2. (For dynamic extensions) by the ld command when the shared -# object is built/linked. See LDLOADLIBS below. -# -# 3. (For dynamic extensions) by the DynaLoader when the shared -# object is loaded. See BSLOADLIBS below. -# -# EXTRALIBS = List of libraries that need to be linked with when -# linking a perl binary which includes this extension -# Only those libraries that actually exist are included. -# These are written to a file and used when linking perl. -# -# LDLOADLIBS = List of those libraries which can or must be linked into -# the shared library when created using ld. These may be -# static or dynamic libraries. -# LD_RUN_PATH is a colon separated list of the directories -# in LDLOADLIBS. It is passed as an environment variable to -# the process that links the shared library. -# -# BSLOADLIBS = List of those libraries that are needed but can be -# linked in dynamically at run time on this platform. -# SunOS/Solaris does not need this because ld records -# the information (from LDLOADLIBS) into the object file. -# This list is used to create a .bs (bootstrap) file. -# -EXTRALIBS = ",map($self->fixpath($_) . ' ',$self->{'EXTRALIBS'})," -BSLOADLIBS = ",map($self->fixpath($_) . ' ',$self->{'BSLOADLIBS'})," -LDLOADLIBS = ",map($self->fixpath($_) . ' ',$self->{'LDLOADLIBS'}),"\n"; - - join('',@m); -} - - -sub const_cccmd { - my($self,$libperl) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($cmd) = $Config{'cc'}; - my($name,$sys,@m); - - ( $name = $self->{NAME} . "_cflags" ) =~ s/:/_/g ; - print STDOUT "Unix shell script ".$Config{"$self->{'BASEEXT'}_cflags"}. - " required to modify CC command for $self->{'BASEEXT'}\n" - if ($Config{$name}); - - # Deal with $self->{DEFINE} here since some C compilers pay attention - # to only one /Define clause on command line, so we have to - # conflate the ones from $Config{'cc'} and $self->{DEFINE} - if ($cmd =~ m:(.*)/define=\(?([^\(\/\)\s]+)\)?(.*)?:i) { - $cmd = "$1/Define=($2," . ($self->{DEFINE} ? "$self->{DEFINE}," : '') . - "\$(DEFINE_VERSION))$3"; -# "\$(DEFINE_VERSION),\$(XS_DEFINE_VERSION))$3"; - } - else { - $cmd .= '/Define=(' . ($self->{DEFINE} ? "$self->{DEFINE}," : '') . - '$(DEFINE_VERSION))'; -# '$(DEFINE_VERSION),$(XS_DEFINE_VERSION))'; - } - - $libperl or $libperl = $self->{LIBPERL_A} || "libperl.olb"; - if ($libperl =~ /libperl(\w+)\./i) { - my($type) = uc $1; - my(%map) = ( 'D' => 'DEBUGGING', 'E' => 'EMBED', 'M' => 'MULTIPLICITY', - 'DE' => 'DEBUGGING,EMBED', 'DM' => 'DEBUGGING,MULTIPLICITY', - 'EM' => 'EMBED,MULTIPLICITY', 'DEM' => 'DEBUGGING,EMBED,MULTIPLICITY' ); - $cmd =~ s:/define=\(([^\)]+)\):/Define=($1,$map{$type}):i - } - - # Likewise with $self->{INC} and /Include - my($incstr) = '/Include=($(PERL_INC)'; - if ($self->{'INC'}) { - my(@includes) = split(/\s+/,$self->{INC}); - foreach (@includes) { - s/^-I//; - $incstr .= ', '.$self->fixpath($_,1); - } - } - if ($cmd =~ m:(.*)/include=\(?([^\(\/\)\s]+)\)?(.*):i) { - $cmd = "$1$incstr,$2)$3"; - } - else { $cmd .= "$incstr)"; } - - - if ($Config{'vms_cc_type'} ne 'decc') { - push @m,' -.FIRST - @ If F$TrnLnm("Sys").eqs."" Then Define/NoLog SYS ', - ($Config{'vms_cc_type'} eq 'gcc' ? 'GNU_CC_Include:[VMS]' - : 'Sys$Library'),' - -'; - } - push(@m, "CCCMD = $cmd\n"); - - $self->{CONST_CCCMD} = join('',@m); -} - - -# --- Tool Sections --- - -sub tool_autosplit{ - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($asl) = ""; - $asl = "\$AutoSplit::Maxlen=$attribs{MAXLEN};" if $attribs{MAXLEN}; - q{ -# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto -AUTOSPLITFILE = $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use AutoSplit;}.$asl.q{ AutoSplit::autosplit($ARGV[0], $ARGV[1], 0, 1, 1) ;" -}; -} - -sub tool_xsubpp{ - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($xsdir) = $self->catdir($self->{PERL_LIB},'ExtUtils'); - # drop back to old location if xsubpp is not in new location yet - $xsdir = $self->catdir($self->{PERL_SRC},'ext') unless (-f $self->catfile($xsdir,'xsubpp')); - my(@tmdeps) = '$(XSUBPPDIR)typemap'; - if( $self->{TYPEMAPS} ){ - my $typemap; - foreach $typemap (@{$self->{TYPEMAPS}}){ - if( ! -f $typemap ){ - warn "Typemap $typemap not found.\n"; - } - else{ - push(@tmdeps, $self->fixpath($typemap)); - } - } - } - push(@tmdeps, "typemap") if -f "typemap"; - my(@tmargs) = map("-typemap $_", @tmdeps); - if( exists $self->{XSOPT} ){ - unshift( @tmargs, $self->{XSOPT} ); - } - - my $xsubpp_version = $self->xsubpp_version($self->catfile($xsdir,'xsubpp')); - - # What are the correct thresholds for version 1 && 2 Paul? - if ( $xsubpp_version > 1.923 ){ - $self->{XSPROTOARG} = '' unless defined $self->{XSPROTOARG}; - } else { - if (defined $self->{XSPROTOARG} && $self->{XSPROTOARG} =~ /\-prototypes/) { - print STDOUT qq{Warning: This extension wants to pass the switch "-prototypes" to xsubpp. - Your version of xsubpp is $xsubpp_version and cannot handle this. - Please upgrade to a more recent version of xsubpp. -}; - } else { - $self->{XSPROTOARG} = ""; - } - } - - " -XSUBPPDIR = ".$self->fixpath($xsdir,1)." -XSUBPP = \$(PERL) \"-I\$(PERL_ARCHLIB)\" \"-I\$(PERL_LIB)\" \$(XSUBPPDIR)xsubpp -XSPROTOARG = $self->{XSPROTOARG} -XSUBPPDEPS = @tmdeps -XSUBPPARGS = @tmargs -"; -} - - -sub xsubpp_version -{ - my($self,$xsubpp) = @_; - my ($version) ; - - # try to figure out the version number of the xsubpp on the system - - # first try the -v flag, introduced in 1.921 & 2.000a2 - - my $command = "$self->{PERL} $xsubpp -v"; - print "Running: $command\n" if $Verbose; - $version = `$command` ; - warn "Running '$command' exits with status " . $? unless ($? & 1); - chop $version ; - - return $1 if $version =~ /^xsubpp version (.*)/ ; - - # nope, then try something else - - my $counter = '000'; - my ($file) = 'temp' ; - $counter++ while -e "$file$counter"; # don't overwrite anything - $file .= $counter; - - local(*F); - open(F, ">$file") or die "Cannot open file '$file': $!\n" ; - print F < 1.92 and 2.000a1 - return $1 if $text =~ /automatically by xsubpp version ([\S]+)\s*/ ; - - # it is either 1.0 or 1.1 - return 1.1 if $text =~ /^Warning: ignored semicolon/ ; - - # none of the above, so 1.0 - return "1.0" ; -} - - -sub tools_other { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - " -# Assumes \$(MMS) invokes MMS or MMK -# (It is assumed in some cases later that the default makefile name -# (Descrip.MMS for MM[SK]) is used.) -USEMAKEFILE = /Descrip= -USEMACROS = /Macro=( -MACROEND = ) -MAKEFILE = Descrip.MMS -SHELL = Posix -LD = $self->{LD} -TOUCH = $self->{TOUCH} -CHMOD = $self->{CHMOD} -CP = $self->{CP} -MV = $self->{MV} -RM_F = $self->{RM_F} -RM_RF = $self->{RM_RF} -UMASK_NULL = $self->{UMASK_NULL} -MKPATH = Create/Directory -"; -} - - -sub dist { - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - # VERSION should be sanitised before use as a file name - my($name) = $attribs{NAME} || '$(DISTVNAME)'; - my($zip) = $attribs{ZIP} || 'zip'; - my($zipflags) = $attribs{ZIPFLAGS} || '-Vu'; - my($suffix) = $attribs{SUFFIX} || ''; - my($shar) = $attribs{SHAR} || 'vms_share'; - my($preop) = $attribs{PREOP} || '!'; # e.g., update MANIFEST - my($postop) = $attribs{POSTOP} || '!'; - my($dist_cp) = $attribs{DIST_CP} || 'best'; - my($dist_default) = $attribs{DIST_DEFAULT} || 'zipdist'; - - my($src) = $name; - $src = "[.$src]" unless $src =~ /\[/; - $src =~ s#\]#...]#; - $src .= '*.*' if $src =~ /\]$/; - $suffix =~ s#\.#_#g; -" -DISTVNAME = \$(DISTNAME)-\$(VERSION_SYM) -SRC = $src -ZIP = $zip -ZIPFLAGS = $zipflags -SUFFIX = $suffix -SHARE = $shar -PREOP = $preop -POSTOP = $postop -DIST_CP = $dist_cp -DIST_DEFAULT = $dist_default -"; -} - - -# --- Translation Sections --- - -sub c_o { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - return '' unless $self->needs_linking(); - ' -.c$(OBJ_EXT) : - $(CCCMD) $(CCCDLFLAGS) $(MMS$TARGET_NAME).c -'; -} - -sub xs_c { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - return '' unless $self->needs_linking(); - ' -.xs.c : - $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $(MMS$TARGET_NAME).xs >$(MMS$TARGET) -'; -} - -sub xs_o { # many makes are too dumb to use xs_c then c_o - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - return '' unless $self->needs_linking(); - ' -.xs$(OBJ_EXT) : - $(XSUBPP) $(XSPROTOARG) $(XSUBPPARGS) $(MMS$TARGET_NAME).xs >$(MMS$TARGET_NAME).c - $(CCCMD) $(CCCDLFLAGS) $(MMS$TARGET_NAME).c -'; -} - - -# --- Target Sections --- - - -sub top_targets { - my($self) = shift; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m); - push @m, ' -all :: config $(INST_PM) subdirs linkext manifypods - $(NOOP) - -subdirs :: $(MYEXTLIB) - $(NOOP) - -config :: $(MAKEFILE) $(INST_LIBDIR).exists - -config :: $(INST_ARCHAUTODIR).exists Version_check - -config :: $(INST_AUTODIR).exists -'; - - - push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]); - if (%{$self->{MAN1PODS}}) { - push @m, q[ -config :: $(INST_MAN1DIR)/.exists -]; - push @m, $self->dir_target(qw[$(INST_MAN1DIR)]); - } - if (%{$self->{MAN3PODS}}) { - push @m, q[ -config :: $(INST_MAN3DIR).exists -]; - push @m, $self->dir_target(qw[$(INST_MAN3DIR)]); - } - - push @m, ' -$(O_FILES) : $(H_FILES) -' if @{$self->{O_FILES} || []} && @{$self->{H} || []}; - - push @m, q{ -help : - perldoc ExtUtils::MakeMaker -}; - - push @m, q{ -Version_check : - @ $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" - - -e "use ExtUtils::MakeMaker qw($Version &Version_check);" - - -e "&Version_check('$(MM_VERSION)')" -}; - - join('',@m); -} - - -sub dlsyms { - my($self,%attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($funcs) = $attribs{DL_FUNCS} || $self->{DL_FUNCS} || {}; - my($vars) = $attribs{DL_VARS} || $self->{DL_VARS} || []; - my(@m); - - push(@m,' -dynamic :: rtls.opt $(INST_ARCHAUTODIR)$(BASEEXT).opt - $(NOOP) - -# rtls.opt is built in the same step as $(BASEEXT).opt -rtls.opt : $(BASEEXT).opt - $(TOUCH) $(MMS$TARGET) -') unless $self->{SKIPHASH}{'dynamic'}; - - push(@m,' -static :: $(INST_ARCHAUTODIR)$(BASEEXT).opt - $(NOOP) -') unless $self->{SKIPHASH}{'static'}; - - push(@m,' -$(INST_ARCHAUTODIR)$(BASEEXT).opt : $(BASEEXT).opt - $(CP) $(MMS$SOURCE) $(MMS$TARGET) - @ $(PERL) -e "open F,\'>>$(INST_ARCHAUTODIR).packlist\';print F qq[$(MMS$TARGET)\n];close F;" - -$(BASEEXT).opt : makefile.PL - $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::MakeMaker qw(&mksymlists);" - - -e "MM->new()->mksymlists({DL_FUNCS => ',neatvalue($self->{DL_FUNCS}),', DL_VARS => ',neatvalue($self->{DL_VARS}),',NAME => \'',$self->{NAME},'\'})" - $(PERL) -e "open OPT,\'>>$(MMS$TARGET)\'; print OPT ""$(INST_STATIC)/Include=$(BASEEXT)\n$(INST_STATIC)/Library\n"";close OPT" -'); - - join('',@m); -} - - -# --- Dynamic Loading Sections --- - -sub dynamic_lib { - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - return '' unless $self->needs_linking(); #might be because of a subdir - - - return ' -$(INST_DYNAMIC) : - $(NOOP) -' unless ($self->{OBJECT} or @{$self->{C} || []} or $self->{MYEXTLIB}); - - ($otherldflags) = $attribs{OTHERLDFLAGS} || ""; - my(@m); - push @m," - -OTHERLDFLAGS = $otherldflags - -"; - push @m, ' -$(INST_DYNAMIC) : $(INST_STATIC) $(PERL_INC)perlshr_attr.opt rtls.opt $(BASEEXT).opt $(INST_ARCHAUTODIR).exists - @ $(MKPATH) $(INST_ARCHAUTODIR) - Link $(LDFLAGS) /Shareable=$(MMS$TARGET)$(OTHERLDFLAGS) $(BASEEXT).opt/Option,rtls.opt/Option,$(PERL_INC)perlshr_attr.opt/Option - @ $(PERL) -e "open F,\'>>$(INST_ARCHAUTODIR).packlist\';print F qq[$(MMS$TARGET)\n];close F;" -'; - - push @m, $self->dir_target('$(INST_ARCHAUTODIR)'); - join('',@m); -} - -sub dynamic_bs { - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - return '' unless $self->needs_linking(); - ' -BOOTSTRAP = '."$self->{BASEEXT}.bs".' - -# As MakeMaker mkbootstrap might not write a file (if none is required) -# we use touch to prevent make continually trying to remake it. -# The DynaLoader only reads a non-empty file. -$(BOOTSTRAP) : $(MAKEFILE) '."$self->{BOOTDEP}".' - @ Write Sys$Output "Running mkbootstrap for $(NAME) ($(BSLOADLIBS))" - @ $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" - - -e "use ExtUtils::Mkbootstrap; Mkbootstrap(\'$(BASEEXT)\',\'$(BSLOADLIBS)\');" - @ $(TOUCH) $(MMS$TARGET) - @ $(PERL) -e "open F,\'>>$(INST_ARCHAUTODIR).packlist\';print F qq[$(MMS$TARGET)\n];close F;" - -$(INST_BOOT) : $(BOOTSTRAP) - @ $(RM_RF) $(INST_BOOT) - - $(CP) $(BOOTSTRAP) $(INST_BOOT) - @ $(PERL) -e "open F,\'>>$(INST_ARCHAUTODIR).packlist\';print F qq[$(MMS$TARGET)\n];close F;" -'; -} -# --- Static Loading Sections --- - -sub static_lib { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - return '' unless $self->needs_linking(); - - return ' -$(INST_STATIC) : - $(NOOP) -' unless ($self->{OBJECT} or @{$self->{C} || []} or $self->{MYEXTLIB}); - - my(@m); - push @m,' -# Rely on suffix rule for update action -$(OBJECT) : $(INST_ARCHAUTODIR).exists - -$(INST_STATIC) : $(OBJECT) $(MYEXTLIB) -'; - # If this extension has it's own library (eg SDBM_File) - # then copy that to $(INST_STATIC) and add $(OBJECT) into it. - push(@m, ' $(CP) $(MYEXTLIB) $(MMS$TARGET)',"\n") if $self->{MYEXTLIB}; - - push(@m,' - If F$Search("$(MMS$TARGET)").eqs."" Then Library/Object/Create $(MMS$TARGET) - Library/Object/Replace $(MMS$TARGET) $(MMS$SOURCE_LIST) - @ $(PERL) -e "open F,\'>>$(INST_ARCHAUTODIR)extralibs.ld\';print F qq[$(EXTRALIBS)\n];close F;" - @ $(PERL) -e "open F,\'>>$(INST_ARCHAUTODIR).packlist\';print F qq[$(MMS$TARGET)\n];close F;" -'); - push @m, $self->dir_target('$(INST_ARCHAUTODIR)'); - join('',@m); -} - - -sub installpm_x { # called by installpm perl file - my($self, $dist, $inst, $splitlib) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - warn "Warning: Most probably 'make' will have problems processing this file: $inst\n" - if $inst =~ m!#!; - $inst = $self->fixpath($inst); - $dist = $self->fixpath($dist); - my($instdir) = $inst =~ /([^\)]+\))[^\)]*$/ ? $1 : dirname($inst); - my(@m); - - push(@m, " -$inst : $dist \$(MAKEFILE) ${instdir}.exists -",' @ $(RM_F) $(MMS$TARGET) - @ $(CP) ',"$dist $inst",' - $(CHMOD) 644 $(MMS$TARGET) - @ $(PERL) -e "open F,\'>>$(INST_ARCHAUTODIR).packlist\';print F qq[$(MMS$TARGET)\n];close F;" -'); - push(@m, ' $(AUTOSPLITFILE) $(MMS$TARGET) ', - $self->catdir($splitlib,'auto')."\n\n") - if ($splitlib and $inst =~ /\.pm$/); - push(@m,$self->dir_target($instdir)); - - join('',@m); -} - - -sub manifypods { - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - return "\nmanifypods :\n\t\$(NOOP)\n" unless %{$self->{MAN3PODS}}; - my($dist); - my($pod2man_exe,$found_pod2man); - if (defined $self->{PERL_SRC}) { - $pod2man_exe = $self->catfile($self->{PERL_SRC},'pod','pod2man'); - } else { - $pod2man_exe = $self->catfile($Config{bin},'pod2man'); - } - if ($pod2man_exe = $self->perl_script($pod2man_exe)) { $found_pod2man = 1; } - else { - # No pod2man but some MAN3PODS to be installed - print <$m{$_}"");}" -]; - push @m, "\nmanifypods : "; - push @m, join " ", keys %{$self->{MAN1PODS}}, keys %{$self->{MAN3PODS}}; - push(@m,"\n"); - if (%{$self->{MAN1PODS}} || %{$self->{MAN3PODS}}) { - my($pod); - foreach $pod (sort keys %{$self->{MAN1PODS}}) { - push @m, qq[\t\@- If F\$Search("\$(POD2MAN_EXE)").nes."" Then \$(POD2MAN) ]; - push @m, "$pod $self->{MAN1PODS}{$pod}\n"; - } - foreach $pod (sort keys %{$self->{MAN3PODS}}) { - push @m, qq[\t\@- If F\$Search("\$(POD2MAN_EXE)").nes."" Then \$(POD2MAN) ]; - push @m, "$pod $self->{MAN3PODS}{$pod}\n"; - } - } - join('', @m); -} - - -sub processPL { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - return "" unless $self->{PL_FILES}; - my(@m, $plfile); - foreach $plfile (sort keys %{$self->{PL_FILES}}) { - push @m, " -all :: $self->{PL_FILES}->{$plfile} - \$(NOOP) - -$self->{PL_FILES}->{$plfile} :: $plfile -",' $(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" '," $plfile -"; - } - join "", @m; -} - - -sub installbin { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - return '' unless $self->{EXE_FILES} && ref $self->{EXE_FILES} eq "ARRAY"; - return '' unless @{$self->{EXE_FILES}}; - my(@m, $from, $to, %fromto, @to, $line); - for $from (@{$self->{EXE_FILES}}) { - my($path) = '$(INST_EXE)' . basename($from); - local($_) = $path; # backward compatibility - $to = $self->exescan($path); - print "exescan($from) => '$to'\n" if ($Verbose >=2); - $fromto{$from}=$to; - } - @to = values %fromto; - push @m, " -EXE_FILES = @{$self->{EXE_FILES}} - -all :: @to - \$(NOOP) - -realclean :: -"; - $line = ''; #avoid unitialized var warning - foreach $to (@to) { - if (length($line) + length($to) > 80) { - push @m, "\t\$(RM_F) $line\n"; - $line = $to; - } - else { $line .= " $to"; } - } - push @m, "\t\$(RM_F) $line\n\n"; - - while (($from,$to) = each %fromto) { - my $todir; - if ($to =~ m#[/>:\]]#) { $todir = dirname($to); } - else { ($todir = $to) =~ s/[^\)]+$//; } - $todir = $self->fixpath($todir,1); - push @m, " -$to : $from \$(MAKEFILE) ${todir}.exists - \$(CP) $from $to - -", $self->dir_target($todir); - } - join "", @m; -} - - -# --- Sub-directory Sections --- - -sub pasthru { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m,$key); - my(@pasthru); - - foreach $key (qw(INSTALLPRIVLIB INSTALLARCHLIB INSTALLBIN - INSTALLMAN1DIR INSTALLMAN3DIR LIBPERL_A LINKTYPE)){ - push @pasthru, "$key=\"$self->{$key}\""; - } - - push @m, "\nPASTHRU = \\\n ", join (",\\\n ", @pasthru), "\n"; - join "", @m; -} - - -sub subdir_x { - my($self, $subdir) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m,$key); - $subdir = $self->fixpath($subdir,1); - push @m, ' - -subdirs :: - olddef = F$Environment("Default") - Set Default ',$subdir,' - - $(MMS) all $(USEMACROS)$(PASTHRU)$(MACROEND) - Set Default \'olddef\' -'; - join('',@m); -} - - -# --- Cleanup and Distribution Sections --- - -sub clean { - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m,$dir); - push @m, ' -# Delete temporary files but do not touch installed files. We don\'t delete -# the Descrip.MMS here so that a later make realclean still has it to use. -clean :: -'; - foreach $dir (@{$self->{DIR}}) { # clean subdirectories first - my($vmsdir) = $self->fixpath($dir,1); - push( @m, ' If F$Search("'.$vmsdir.'$(MAKEFILE)") Then \\',"\n\t", - '$(PERL) -e "chdir ',"'$vmsdir'",'; print `$(MMS) clean`;"',"\n"); - } - push @m, ' $(RM_F) *.Map *.lis *.cpp *$(OBJ_EXT) *$(LIB_EXT) *.Opt $(BOOTSTRAP) $(BASEEXT).bso -'; - - my(@otherfiles) = values %{$self->{XS}}; # .c files from *.xs files - push(@otherfiles, $attribs{FILES}) if $attribs{FILES}; - push(@otherfiles, 'blib.dir', 'Makeaperl.MMS', 'extralibs.ld', 'perlmain.c'); - push(@otherfiles,$self->catfile('$(INST_ARCHAUTODIR)','extralibs.all')); - my($file,$line); - $line = ''; #avoid unitialized var warning - foreach $file (@otherfiles) { - $file = $self->fixpath($file); - if (length($line) + length($file) > 80) { - push @m, "\t\$(RM_RF) $line\n"; - $line = "$file"; - } - else { $line .= " $file"; } - } - push @m, "\t\$(RM_RF) $line\n\n"; - push(@m, " $attribs{POSTOP}\n") if $attribs{POSTOP}; - join('', @m); -} - - -sub realclean { - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m); - push(@m,' -# Delete temporary files (via clean) and also delete installed files -realclean :: clean -'); - foreach(@{$self->{DIR}}){ - my($vmsdir) = $self->fixpath($_,1); - push(@m, ' If F$Search("'."$vmsdir".'$(MAKEFILE)").nes."" Then \\',"\n\t", - '$(PERL) -e "chdir ',"'$vmsdir'",'; print `$(MMS) realclean`;"',"\n"); - } - push @m,' $(RM_RF) $(INST_AUTODIR) $(INST_ARCHAUTODIR) -'; - # We can't expand several of the MMS macros here, since they don't have - # corresponding %$self keys (i.e. they're defined in Descrip.MMS as a - # combination of macros). In order to stay below DCL's 255 char limit, - # we put only 2 on a line. - my($file,$line,$fcnt); - my(@files) = qw{ *.Opt $(INST_DYNAMIC) $(INST_STATIC) $(INST_BOOT) $(INST_PM) $(OBJECT) $(MAKEFILE) $(MAKEFILE)_old }; - $line = ''; #avoid unitialized var warning - foreach $file (@files) { - $file = $self->fixpath($file); - if (length($line) + length($file) > 80 || ++$fcnt >= 2) { - push @m, "\t\$(RM_F) $line\n"; - $line = "$file"; - $fcnt = 0; - } - else { $line .= " $file"; } - } - push @m, "\t\$(RM_F) $line\n"; - if ($attribs{FILES} && ref $attribs{FILES} eq 'ARRAY') { - $line = ''; - foreach $file (@{$attribs{'FILES'}}) { - $file = $self->fixpath($file); - if (length($line) + length($file) > 80) { - push @m, "\t\$(RM_RF) $line\n"; - $line = "$file"; - } - else { $line .= " $file"; } - } - push @m, "\t\$(RM_RF) $line\n"; - } - push(@m, " $attribs{POSTOP}\n") if $attribs{POSTOP}; - join('', @m); -} - - -sub dist_basics { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } -' -distclean :: realclean distcheck - $(NOOP) - -distcheck : - $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Manifest \'&fullcheck\'; fullcheck()" - -skipcheck : - $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Manifest \'&fullcheck\'; skipcheck()" - -manifest : - $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Manifest \'&mkmanifest\'; mkmanifest()" -'; -} - - -sub dist_core { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } -' -dist : $(DIST_DEFAULT) - $(NOOP) - -zipdist : $(DISTVNAME).zip$(SUFFIX) - $(NOOP) - -$(DISTVNAME).zip$(SUFFIX) : distdir - $(PREOP) - $(ZIP) "$(ZIPFLAGS)" $(MMS$TARGET) $(SRC) - $(RM_RF) $(DISTVNAME) - $(POSTOP) - -shdist : distdir - $(PREOP) - $(SHARE) $(SRC) $(DISTVNAME).share$(SUFFIX) - $(RM_RF) $(DISTVNAME) - $(POSTOP) -'; -} - - -sub dist_dir { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } -q{ -distdir : - $(RM_RF) $(DISTVNAME) - $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -e "use ExtUtils::Manifest '/mani/';" \\ - -e "manicopy(maniread(),'$(DISTVNAME)','$(DIST_CP)');" -}; -} - - -sub dist_test { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } -q{ -disttest : distdir - startdir = F$Environment("Default") - Set Default [.$(DISTVNAME)] - $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" Makefile.PL - $(MMS) - $(MMS) test - Set Default 'startdir' -}; -} - -sub dist_ci { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } -''; -} - - -# --- Test and Installation Sections --- - - - -sub install { - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m); - push @m, q{ -doc_install :: - @ Write Sys$Output "Appending installation info to $(INST_ARCHLIB)perllocal.pod" - @ $(PERL) "-I$(PERL_LIB)" "-I$(PERL_ARCHLIB)" \\ - -e "use ExtUtils::MakeMaker; MY->new({})->writedoc('Module', '$(NAME)', \\ - 'LINKTYPE=$(LINKTYPE)', 'VERSION=$(VERSION)', 'EXE_FILES=$(EXE_FILES)')" \\ - >>$(INSTALLARCHLIB)perllocal.pod -}; - - push(@m, " -install :: pure_install doc_install - \$(NOOP) - -# Interim solution for VMS; assumes directory tree of same structure under -# both \$(INST_LIB) and \$(INSTALLPRIVLIB). This operation will be assumed -# into MakeMaker in a (near) future version. -pure_install :: all -"); -# # install subdirectories first -# foreach(@{$self->{DIR}}){ -# my($vmsdir) = $self->fixpath($_,1); -# push(@m, ' If F$Search("',$vmsdir,'$(MAKEFILE)").nes."" Then $(PERL) -e "chdir ',"'$vmsdir'", -# '; print `$(MMS) install`"'."\n"); -# } -# -# push(@m, ' @ $(PERL) "-I$(PERL_LIB)" -e "use File::Path; mkpath(\@ARGV)" $(INSTALLPRIVLIB) $(INSTALLARCHLIB) -# @ $(PERL) -e "die qq{You do not have permissions to install into $ARGV[0]\n} unless -w VMS::Filespec::fileify($ARGV[0])" $(INSTALLPRIVLIB) -# @ $(PERL) -e "die qq{You do not have permissions to install into $ARGV[0]\n} unless -w VMS::Filespec::fileify($ARGV[0])" $(INSTALLARCHLIB)'," -# # Can't install manpages here -- INST_MAN%DIR macros make line >255 chars -# \$(MMS) \$(USEMACROS)INST_LIB=$self->{INSTALLPRIVLIB},INST_ARCHLIB=$self->{INSTALLARCHLIB},INST_EXE=$self->{INSTALLBIN}\$(MACROEND)",' -# @ $(PERL) -i_bak -lne "print unless $seen{$_}++" $(INST_ARCHAUTODIR).packlist -#'); - - my($curtop,$insttop); - ($curtop = $self->fixpath($self->{INST_LIB},1)) =~ s/]$//; - ($insttop = $self->fixpath($self->{INSTALLPRIVLIB},1)) =~ s/]$//; - push(@m," Backup/Log ${curtop}...]*.*; ${insttop}...]/New_Version/By_Owner=Parent\n"); - - push @m, ' -##### UNINSTALL IS STILL EXPERIMENTAL #### -uninstall :: -'; - foreach(@{$self->{DIR}}){ - my($vmsdir) = $self->fixpath($_,1); - push(@m, ' If F$Search("',$vmsdir,'$(MAKEFILE)").nes."" Then $(PERL) -e "chdir ',"'$vmsdir'", - '; print `$(MMS) uninstall`"'."\n"); - } - push @m, "\t".'$(PERL) -le "use File::Path; foreach (<>) {s/',"$curtop/$insttop/;",'rmtree($_,1,0);}" <$(INST_ARCHAUTODIR).packlist -'; - - join("",@m); -} - - -sub perldepend { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m); - - push @m, ' -$(OBJECT) : $(PERL_INC)EXTERN.h, $(PERL_INC)INTERN.h, $(PERL_INC)XSUB.h, $(PERL_INC)av.h -$(OBJECT) : $(PERL_INC)cop.h, $(PERL_INC)cv.h, $(PERL_INC)embed.h, $(PERL_INC)form.h -$(OBJECT) : $(PERL_INC)gv.h, $(PERL_INC)handy.h, $(PERL_INC)hv.h, $(PERL_INC)keywords.h -$(OBJECT) : $(PERL_INC)mg.h, $(PERL_INC)op.h, $(PERL_INC)opcode.h, $(PERL_INC)patchlevel.h -$(OBJECT) : $(PERL_INC)perl.h, $(PERL_INC)perly.h, $(PERL_INC)pp.h, $(PERL_INC)proto.h -$(OBJECT) : $(PERL_INC)regcomp.h, $(PERL_INC)regexp.h, $(PERL_INC)scope.h, $(PERL_INC)sv.h -$(OBJECT) : $(PERL_INC)vmsish.h, $(PERL_INC)util.h, $(PERL_INC)config.h - -' if $self->{OBJECT}; - - push(@m,' -# Check for unpropagated config.sh changes. Should never happen. -# We do NOT just update config.h because that is not sufficient. -# An out of date config.h is not fatal but complains loudly! -#$(PERL_INC)config.h : $(PERL_SRC)config.sh -$(PERL_INC)config.h : $(PERL_VMS)config.vms - @ Write Sys$Error "Warning: $(PERL_INC)config.h out of date with $(PERL_VMS)config.vms" - -#$(PERL_ARCHLIB)Config.pm : $(PERL_SRC)config.sh -$(PERL_ARCHLIB)Config.pm : $(PERL_VMS)config.vms $(PERL_VMS)genconfig.pl - @ Write Sys$Error "$(PERL_ARCHLIB)Config.pm may be out of date with config.vms or genconfig.pl" - olddef = F$Environment("Default") - Set Default $(PERL_SRC) - $(MMS) $(USEMAKEFILE)[.VMS]$(MAKEFILE) [.lib.',$Config{'arch'},']config.pm - Set Default \'olddef\' -') if $self->{PERL_SRC}; - - push(@m, join(" ", map($self->fixpath($_),values %{$self->{XS}}))." : \$(XSUBPPDEPS)\n") - if %{$self->{XS}}; - - join('',@m); -} - -sub makefile { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m,@cmd); - # We do not know what target was originally specified so we - # must force a manual rerun to be sure. But as it should only - # happen very rarely it is not a significant problem. - push @m, ' -$(OBJECT) : $(FIRST_MAKEFILE) -' if $self->{OBJECT}; - - push @m,' -# We take a very conservative approach here, but it\'s worth it. -# We move $(MAKEFILE) to $(MAKEFILE)_old here to avoid gnu make looping. -$(MAKEFILE) : Makefile.PL $(CONFIGDEP) - @ Write Sys$Output "$(MAKEFILE) out-of-date with respect to $(MMS$SOURCE_LIST)" - @ Write Sys$Output "Cleaning current config before rebuilding $(MAKEFILE) ..." - - $(MV) $(MAKEFILE) $(MAKEFILE)_old - - $(MMS) $(USEMAKEFILE)$(MAKEFILE)_old clean - $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" Makefile.PL ',join(' ',@ARGV),' - @ Write Sys$Output "$(MAKEFILE) has been rebuilt." - @ Write Sys$Output "Please run $(MMS) to build the extension." -'; - - join('',@m); -} - - -sub test { - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($tests) = $attribs{TESTS} || ( -d 't' ? 't/*.t' : ''); - my(@m); - push @m," -TEST_VERBOSE = 0 -TEST_TYPE=test_\$(LINKTYPE) - -test : \$(TEST_TYPE) - \$(NOOP) -"; - foreach(@{$self->{DIR}}){ - my($vmsdir) = $self->fixpath($_,1); - push(@m, ' If F$Search("',$vmsdir,'$(MAKEFILE)").nes."" Then $(PERL) -e "chdir ',"'$vmsdir'", - '; print `$(MMS) $(PASTHRU2) test`'."\n"); - } - push(@m, "\t\@ Write Sys\$Output 'No tests defined for \$(NAME) extension.'\n") - unless $tests or -f "test.pl" or @{$self->{DIR}}; - push(@m, "\n"); - - push(@m, "test_dynamic :: all\n"); - push(@m, $self->test_via_harness('$(FULLPERL)', $tests)) if $tests; - push(@m, $self->test_via_script('$(FULLPERL)', 'test.pl')) if -f "test.pl"; - push(@m, "\n"); - - # Occasionally we may face this degenerate target: - push @m, "test_ : test_dynamic\n\n"; - - if ($self->needs_linking()) { - push(@m, "test_static :: all \$(MAP_TARGET)\n"); - push(@m, $self->test_via_harness('$(MAP_TARGET)', $tests)) if $tests; - push(@m, $self->test_via_script('$(MAP_TARGET)', 'test.pl')) if -f "test.pl"; - push(@m, "\n"); - } - else { - push @m, "test_static :: test_dynamic\n"; - } - - join('',@m); -} - - -sub test_via_harness { - my($self,$perl,$tests) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - " $perl".' "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_LIB)" "-I$(PERL_ARCHLIB)" \\'."\n\t". - '-e "use Test::Harness qw(&runtests $verbose); $verbose=$(TEST_VERBOSE); runtests @ARGV;" \\'."\n\t$tests\n"; -} - - -sub test_via_script { - my($self,$perl,$script) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - " $perl".' "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" test.pl -'; -} - - -sub makeaperl { - my($self, %attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my($makefilename, $searchdirs, $static, $extra, $perlinc, $target, $tmp, $libperl) = - @attribs{qw(MAKE DIRS STAT EXTRA INCL TARGET TMP LIBPERL)}; - my(@m); - push @m, " -# --- MakeMaker makeaperl section --- -MAP_TARGET = $target -FULLPERL = $self->{FULLPERL} -"; - return join '', @m if $self->{PARENT}; - - my($dir) = join ":", @{$self->{DIR}}; - - unless ($self->{MAKEAPERL}) { - push @m, q{ -$(MAP_TARGET) :: $(MAKE_APERL_FILE) - $(MMS)$(USEMAKEFILE)$(MAKE_APERL_FILE) static $(MMS$TARGET) - -$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) - @ Write Sys$Output "Writing ""$(MMS$TARGET)"" for this $(MAP_TARGET)" - @ $(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" \ - Makefile.PL DIR=}, $dir, q{ \ - MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \ - MAKEAPERL=1 NORECURS=1}; - - push @m, map( " \\\n\t\t$_", @ARGV ); - push @m, "\n"; - - return join '', @m; - } - - - my($linkcmd,@staticopts,@staticpkgs,$extralist,$target,$targdir,$libperldir); - - # The front matter of the linkcommand... - $linkcmd = join ' ', $Config{'ld'}, - grep($_, @Config{qw(large split ldflags ccdlflags)}); - $linkcmd =~ s/\s+/ /g; - - # Which *.olb files could we make use of... - local(%olbs); - $olbs{$self->{INST_ARCHAUTODIR}} = "$self->{BASEEXT}\$(LIB_EXT)"; - File::Find::find(sub { - return unless m/\Q$self->{LIB_EXT}\E$/; - return if m/^libperl/; - $olbs{$ENV{DEFAULT}} = $_; - }, grep( -d $_, @{$searchdirs || []})); - - # We trust that what has been handed in as argument will be buildable - $static = [] unless $static; - @olbs{@{$static}} = (1) x @{$static}; - - $extra = [] unless $extra && ref $extra eq 'ARRAY'; - # Sort the object libraries in inverse order of - # filespec length to try to insure that dependent extensions - # will appear before their parents, so the linker will - # search the parent library to resolve references. - # (e.g. Intuit::DWIM will precede Intuit, so unresolved - # references from [.intuit.dwim]dwim.obj can be found - # in [.intuit]intuit.olb). - for (sort keys %olbs) { - next unless $olbs{$_} =~ /\Q$self->{LIB_EXT}\E$/; - my($dir) = $self->fixpath($_,1); - my($extralibs) = $dir . "extralibs.ld"; - my($extopt) = $dir . $olbs{$_}; - $extopt =~ s/$self->{LIB_EXT}$/.opt/; - if (-f $extralibs ) { - open LIST,$extralibs or warn $!,next; - push @$extra, ; - close LIST; - } - if (-f $extopt) { - open OPT,$extopt or die $!; - while () { - next unless /(?:UNIVERSAL|VECTOR)=boot_([\w_]+)/; - # ExtUtils::Miniperl expects Unix paths - (my($pkg) = "$1_$1$self->{LIB_EXT}") =~ s#_*#/#g; - push @staticpkgs,$pkg; - } - push @staticopts, $extopt; - } - } - - $target = "Perl.Exe" unless $target; - ($shrtarget,$targdir) = fileparse($target); - $shrtarget =~ s/^([^.]*)/$1Shr/; - $shrtarget = $targdir . $shrtarget; - $target = "Perlshr.$Config{'dlext'}" unless $target; - $tmp = "[]" unless $tmp; - $tmp = $self->fixpath($tmp,1); - if (@$extra) { - $extralist = join(' ',@$extra); - $extralist =~ s/[,\s\n]+/, /g; - } - else { $extralist = ''; } - if ($libperl) { - unless (-f $libperl || -f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',$libperl))) { - print STDOUT "Warning: $libperl not found\n"; - undef $libperl; - } - } - unless ($libperl) { - if (defined $self->{PERL_SRC}) { - $libperl = $self->catfile($self->{PERL_SRC},"libperl$self->{LIB_EXT}"); - } elsif (-f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',"libperl$self->{LIB_EXT}")) ) { - } else { - print STDOUT "Warning: $libperl not found - If you're going to build a static perl binary, make sure perl is installed - otherwise ignore this warning\n"; - } - } - $libperldir = $self->fixpath((fileparse($libperl))[1],1); - - push @m, ' -# Fill in the target you want to produce if it\'s not perl -MAP_TARGET = ',$self->fixpath($target),' -MAP_SHRTARGET = ',$self->fixpath($shrtarget)," -MAP_LINKCMD = $linkcmd -MAP_PERLINC = ", $perlinc ? map('"$_" ',@{$perlinc}) : '',' -# We use the linker options files created with each extension, rather than -#specifying the object files directly on the command line. -MAP_STATIC = ',@staticopts ? join(' ', @staticopts) : '',' -MAP_OPTS = ',@staticopts ? ','.join(',', map($_.'/Option', @staticopts)) : ''," -MAP_EXTRA = $extralist -MAP_LIBPERL = ",$self->fixpath($libperl),' -'; - - - push @m,' -$(MAP_SHRTARGET) : $(MAP_LIBPERL) $(MAP_STATIC) ',"${libperldir}Perlshr_Attr.Opt",' - $(MAP_LINKCMD)/Shareable=$(MMS$TARGET) $(MAP_OPTS), $(MAP_EXTRA), $(MAP_LIBPERL) ',"${libperldir}Perlshr_Attr.Opt",' -$(MAP_TARGET) : $(MAP_SHRTARGET) ',"${tmp}perlmain\$(OBJ_EXT) ${tmp}PerlShr.Opt",' - $(MAP_LINKCMD) ',"${tmp}perlmain\$(OBJ_EXT)",', PerlShr.Opt/Option - @ Write Sys$Output "To install the new ""$(MAP_TARGET)"" binary, say" - @ Write Sys$Output " $(MMS)$(USEMAKEFILE)$(MAKEFILE) inst_perl $(USEMACROS)MAP_TARGET=$(MAP_TARGET)$(ENDMACRO)" - @ Write Sys$Output "To remove the intermediate files, say - @ Write Sys$Output " $(MMS)$(USEMAKEFILE)$(MAKEFILE) map_clean" -'; - push @m,' -',"${tmp}perlmain.c",' : $(MAKEFILE) - @ $(PERL) $(MAP_PERLINC) -e "use ExtUtils::Miniperl; writemain(qw|',@staticpkgs,'|)" >$(MMS$TARGET) -'; - - push @m, q{ -doc_inst_perl : - @ $(PERL) -e "use ExtUtils::MakeMaker; MY->new()->writedoc('Perl binary','$(MAP_TARGET)','MAP_STATIC=$(MAP_STATIC)','MAP_EXTRA=$(MAP_EXTRA)','MAP_LIBPERL=$(MAP_LIBPERL)')" -}; - - push @m, " -inst_perl : pure_inst_perl doc_inst_perl - \$(NOOP) - -pure_inst_perl : \$(MAP_TARGET) - $self->{CP} \$(MAP_SHRTARGET) ",$self->fixpath($Config{'installbin'},1)," - $self->{CP} \$(MAP_TARGET) ",$self->fixpath($Config{'installbin'},1)," - -clean :: map_clean - \$(NOOP) - -map_clean : - \$(RM_F) ${tmp}perlmain\$(OBJ_EXT) ${tmp}perlmain.c \$(MAKEFILE) - \$(RM_F) ${tmp}PerlShr.Opt \$(MAP_TARGET) -"; - - join '', @m; -} - -sub extliblist { - my($self) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - '','',''; -} - - -sub mksymlists { - my($self,%attribs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - - my($vars) = $attribs{DL_VARS} || $self->{DL_VARS} || []; - my($procs) = $attribs{DL_FUNCS} || $self->{DL_FUNCS}; - my($package,$packprefix,$sym,$optname); - local(*OPT); - - if (!$procs) { - $package = $self->{NAME}; - $package =~ s/\W/_/g; - $procs = { $package => ["boot_$package"] }; - } - my($isvax) = $Config{'arch'} =~ /VAX/i; - - # Options file declaring universal symbols - # Used when linking shareable image for dynamic extension, - # or when linking PerlShr into which we've added this package - # as a static extension - # We don't do anything to preserve order, so we won't relax - # the GSMATCH criteria for a dynamic extension - - # BASEEXT is not available when mksymlists is run, so we - # create the options file name directly from NAME - # May cause trouble if Makefile.PL author specifies NAME - # and BASEEXT directly as unrelated strings. - ($optname = $self->{NAME}) =~ s/.*:://; - open OPT, ">$optname.opt"; - foreach $package (keys %$procs) { - ($packprefix = $package) =~ s/\W/_/g; - foreach $sym (@{$$procs{$package}}) { - $sym = "XS_${packprefix}_$sym" unless $sym =~ /^boot_/; - if ($isvax) { print OPT "UNIVERSAL=$sym\n" } - else { print OPT "SYMBOL_VECTOR=($sym=PROCEDURE)\n"; } - } - } - foreach $sym (@$vars) { - print OPT "PSECT_ATTR=${sym},PIC,OVR,RD,NOEXE,WRT,NOSHR\n"; - if ($isvax) { print OPT "UNIVERSAL=$sym\n" } - else { print OPT "SYMBOL_VECTOR=($sym=DATA)\n"; } - } - close OPT; - - # Options file specifying RTLs to which this extension must be linked. - # Eventually, the list of libraries will be supplied by a working - # extliblist routine. - open OPT,'>rtls.opt'; - print OPT "PerlShr/Share\n"; - foreach $rtl (split(/\s+/,$Config{'libs'})) { print OPT "$rtl\n"; } - close OPT; -} - - -# --- Make-Directories section (internal method) --- -# dir_target(@array) returns a Makefile entry for the file .exists in each -# named directory. Returns nothing, if the entry has already been processed. -# We're helpless though, if the same directory comes as $(FOO) _and_ as "bar". -# Both of them get an entry, that's why we use "::". I chose '$(PERL)' as the -# prerequisite, because there has to be one, something that doesn't change -# too often :) - -sub dir_target { - my($self,@dirs) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - my(@m,$dir); - foreach $dir (@dirs) { - next if $self->{DIR_TARGET}{$self}{$dir}++; - my($vmsdir) = $self->fixpath($dir,1); - push @m, " -${vmsdir}.exists :: \$(PERL_INC)perl.h - \@ \$(MKPATH) $vmsdir - \@ \$(TOUCH) ${vmsdir}.exists -"; - } - join "", @m; -} - - -# --- Output postprocessing section --- - -sub nicetext { - # Insure that colons marking targets are preceded by space - - # most Unix Makes don't need this, but it's necessary under VMS - # to distinguish the target delimiter from a colon appearing as - # part of a filespec. - - my($self,$text) = @_; - unless (ref $self){ - ExtUtils::MakeMaker::TieAtt::warndirectuse((caller(0))[3]); - $self = $ExtUtils::MakeMaker::Parent[-1]; - } - $text =~ s/([^\s:])(:+\s)/$1 $2/gs; - $text; -} - -1; - -__END__ diff --git a/vms/ext/stdio/Makefile.PL b/vms/ext/Stdio/Makefile.PL similarity index 100% rename from vms/ext/stdio/Makefile.PL rename to vms/ext/Stdio/Makefile.PL diff --git a/vms/ext/stdio/stdio.pm b/vms/ext/Stdio/Stdio.pm similarity index 100% rename from vms/ext/stdio/stdio.pm rename to vms/ext/Stdio/Stdio.pm diff --git a/vms/ext/stdio/stdio.xs b/vms/ext/Stdio/Stdio.xs similarity index 100% rename from vms/ext/stdio/stdio.xs rename to vms/ext/Stdio/Stdio.xs