diff options
-rwxr-xr-x | Configure | 35 | ||||
-rw-r--r-- | MANIFEST | 3 | ||||
-rw-r--r-- | Makefile.SH | 26 | ||||
-rw-r--r-- | ext/util/make_ext | 6 | ||||
-rw-r--r-- | gv.c | 4 | ||||
-rw-r--r-- | lib/English.pm | 4 |
6 files changed, 64 insertions, 14 deletions
@@ -147,6 +147,7 @@ dynamic_ext='' extensions='' known_extensions='' static_ext='' +nonxs_ext='' useopcode='' useposix='' d_bsd='' @@ -10867,6 +10868,7 @@ cd $rsrc/ext : If we are using the old config.sh, known_extensions may contain : old or inaccurate or duplicate values. known_extensions='' +nonxs_extensions='' : We do not use find because it might not be available. : We do not just use MANIFEST because the user may have dropped : some additional extensions into the source tree and expect them @@ -10879,17 +10881,27 @@ for xxx in * ; do else if $test -d $xxx; then cd $xxx + zzz=$known_extensions for yyy in * ; do if $test -f $yyy/$yyy.xs; then known_extensions="$known_extensions $xxx/$yyy" fi done cd .. + if $test "$zzz" = "$known_extensions"; then + if $test -f $xxx/Makefile.PL; then + known_extensions="$known_extensions $xxx" + nonxs_extensions="$nonxs_extensions $xxx" + fi + fi fi fi ;; esac done +set X $nonxs_extensions +shift +nonxs_extensions="$*" set X $known_extensions shift known_extensions="$*" @@ -10939,7 +10951,11 @@ for xxx in $known_extensions ; do true|$define|y) avail_ext="$avail_ext $xxx" ;; esac ;; - *) avail_ext="$avail_ext $xxx" + *) + case " $nonxs_extensions " in + *" $xxx "*) ;; + *) avail_ext="$avail_ext $xxx" ;; + esac ;; esac done @@ -10948,6 +10964,19 @@ set X $avail_ext shift avail_ext="$*" +: Now see which nonxs extensions are supported on this system. +nonxs_ext='' +for xxx in $nonxs_extensions ; do + case "$xxx" in + *) nonxs_ext="$nonxs_ext $xxx" + ;; + esac +done + +set X $nonxs_ext +shift +nonxs_ext="$*" + case $usedl in $define) $cat <<EOM @@ -10978,6 +11007,7 @@ EOM esac ;; esac + : Exclude those that are not xs extensions case "$dflt" in '') dflt=none;; esac @@ -10993,7 +11023,7 @@ EOM : Exclude those already listed in dynamic linking dflt='' for xxx in $avail_ext; do - case " $dynamic_ext " in + case " $dynamic_ext $nonxs_ext " in *" $xxx "*) ;; *) dflt="$dflt $xxx" ;; esac @@ -11574,6 +11604,7 @@ path_sep='$path_sep' perl='$perl' perladmin='$perladmin' perlpath='$perlpath' +nonxs_ext='$nonxs_ext' pg='$pg' phostname='$phostname' pidtype='$pidtype' @@ -189,6 +189,8 @@ ext/DynaLoader/dl_next.xs Next implementation ext/DynaLoader/dl_none.xs Stub implementation ext/DynaLoader/dl_vms.xs VMS implementation ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files +ext/Errno/Errno_pm.PL Errno perl module create script +ext/Errno/Makefile.PL Errno extension makefile writer ext/Fcntl/Fcntl.pm Fcntl extension Perl module ext/Fcntl/Fcntl.xs Fcntl extension external subroutines ext/Fcntl/Makefile.PL Fcntl extension makefile writer @@ -779,6 +781,7 @@ t/lib/dirhand.t See if DirHandle works t/lib/dosglob.t See if File::DosGlob works t/lib/english.t See if English works t/lib/env.t See if Env works +t/lib/errno.t See if Errno works t/lib/filecache.t See if FileCache works t/lib/filecopy.t See if File::Copy works t/lib/filefind.t See if File::Find works diff --git a/Makefile.SH b/Makefile.SH index 4f78f57d74..5150a22f1a 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -85,6 +85,12 @@ for f in $static_ext; do static_list="$static_list lib/auto/$f/$base\$(LIB_EXT)" done +nonxs_list=' ' +for f in $nonxs_ext; do + base=`echo "$f" | sed 's/.*\///'` + nonxs_list="$nonxs_list ext/$f/pm_to_blib" +done + echo "Extracting Makefile (with variable substitutions)" $spitshell >Makefile <<!GROK!THIS! # Makefile.SH @@ -140,7 +146,8 @@ LDLIBPTH = $ldlibpth dynamic_ext = $dynamic_list static_ext = $static_list -ext = \$(dynamic_ext) \$(static_ext) +nonxs_ext = $nonxs_list +ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT) libs = $libs $cryptlib @@ -230,7 +237,7 @@ lintflags = -hbvxac .c$(OBJ_EXT): $(CCCMD) $(PLDLFLAGS) $*.c -all: $(FIRSTMAKEFILE) miniperl $(private) $(plextract) $(public) $(dynamic_ext) +all: $(FIRSTMAKEFILE) miniperl $(private) $(plextract) $(public) $(dynamic_ext) $(nonxs_ext) @echo " "; echo " Everything is up to date." compile: all @@ -454,9 +461,9 @@ regen_headers: FORCE perl bytecode.pl # Extensions: -# Names added to $(dynamic_ext) or $(static_ext) will automatically -# get built. There should ordinarily be no need to change any of -# this part of makefile. +# Names added to $(dynamic_ext) or $(static_ext) or $(nonxs_ext) will +# automatically get built. There should ordinarily be no need to change +# any of this part of makefile. # # The dummy dependency is a place holder in case $(dynamic_ext) or # $(static_ext) is empty. @@ -472,6 +479,9 @@ d_dummy $(dynamic_ext): miniperl preplibrary $(DYNALOADER) FORCE s_dummy $(static_ext): miniperl preplibrary $(DYNALOADER) FORCE @$(LDLIBPTH) sh ext/util/make_ext static $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) +n_dummy $(nonxs_ext): miniperl preplibrary $(DYNALOADER) FORCE + @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) + clean: _tidy _mopup realclean: _cleaner _mopup @@ -494,7 +504,7 @@ _tidy: -cd pod; $(MAKE) clean -cd utils; $(MAKE) clean -cd x2p; $(MAKE) clean - -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) ; do \ + -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \ sh ext/util/make_ext clean $$x MAKE=$(MAKE) ; \ done rm -f testcompile compilelog @@ -505,7 +515,7 @@ _cleaner: -cd pod; $(MAKE) realclean -cd utils; $(MAKE) realclean -cd x2p; $(MAKE) realclean - -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) ; do \ + -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \ sh ext/util/make_ext realclean $$x MAKE=$(MAKE) ; \ done rm -f *.orig */*.orig *~ */*~ core t/core t/c t/perl @@ -552,7 +562,7 @@ depend: makedepend makedepend: makedepend.SH config.sh sh ./makedepend.SH -test-prep: miniperl perl preplibrary utilities $(dynamic_ext) +test-prep: miniperl perl preplibrary utilities $(dynamic_ext) $(nonxs_ext) cd t && (rm -f perl$(EXE_EXT); $(LNS) ../perl$(EXE_EXT) perl$(EXE_EXT)) test check: test-prep diff --git a/ext/util/make_ext b/ext/util/make_ext index 70a5d2eb23..54caf7dfd8 100644 --- a/ext/util/make_ext +++ b/ext/util/make_ext @@ -61,6 +61,8 @@ fi case "$extspec" in lib*) # Remove lib/auto prefix and /*.* suffix pname=`echo "$extspec" | sed -e 's:^lib/auto/::' -e 's:/[^/]*\.[^/]*$::' ` ;; +ext*) # Remove ext/ prefix and /pm_to_blib suffix + pname=`echo "$extspec" | sed -e 's:^ext/::' -e 's:/pm_to_blib$::' ` ;; *::*) # Convert :: to / pname=`echo "$extspec" | sed -e 's/::/\//g' ` ;; *) pname="$extspec" ;; @@ -93,6 +95,10 @@ dynamic) makeargs="LINKTYPE=dynamic"; target=all ;; +nonxs) makeargs=""; + target=all + ;; + *clean) # If Makefile has been moved to Makefile.old by a make clean # then use Makefile.old for realclean rather than rebuild it if test ! -f $makefile -a -f Makefile.old; then @@ -711,9 +711,9 @@ gv_fetchpv(char *nambeg, I32 add, I32 sv_type) goto magicalize; case '!': - if(len > 1) + if (len > 1) break; - if(sv_type > SVt_PV) { + if (sv_type > SVt_PV && curcop != &compiling) { HV* stash = gv_stashpvn("Errno",5,FALSE); if(!stash || !(gv_fetchmethod(stash, "TIEHASH"))) { dSP; diff --git a/lib/English.pm b/lib/English.pm index 1cbacd11f8..bbb6bd7b28 100644 --- a/lib/English.pm +++ b/lib/English.pm @@ -137,8 +137,8 @@ sub import { # Error status. *CHILD_ERROR = *? ; - *OS_ERROR = \$! ; - *ERRNO = \$! ; + *OS_ERROR = *! ; + *ERRNO = *! ; *EXTENDED_OS_ERROR = *^E ; *EVAL_ERROR = *@ ; |