X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/443a5b981950c0a4ba09217be56a57cb04e64247..e0ab1c0e1c533d7f19b4ffe230a3d921bf733a02:/Makefile.SH diff --git a/Makefile.SH b/Makefile.SH index 0ee560b..2cd4173 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -9,6 +9,17 @@ case $PERL_CONFIG_SH in . $TOP/config.sh ;; esac + +# H.Merijn Brand [17 Feb 2004] +# This comment is just to ensure that Configure will find variables that +# are removed/replaced in patches on blead, but are still needed in the +# 5.8.x, 5.6.x and 5.005.x maintainance tracks. +# metaconfig -m will scan all .SH files on this level (not deeper), and +# not in x2p and other subfolders. This file is as good as any .SH +# patch references +# #22227 $baserev +# #22302 $yacc $byacc + : This forces SH files to create target in same directory as SH file. : This is so that make depend always knows where to find SH derivatives. case "$0" in @@ -36,6 +47,7 @@ true) esac pldlflags="$cccdlflags" + static_target='static_pic' case "${osname}${osvers}" in next4*) ld=libtool @@ -95,8 +107,41 @@ true) ldlibpth=`echo $ldlibpth | sed 's/:*$//'` ;; esac + + case "$ldlibpth" in + # Protect any spaces + *" "*) ldlibpth=`echo $ldlibpth|sed 's/ /\\\\ /g'` ;; + esac + + case "$osname" in + linux) + # If there is a pre-existing $libperl from a previous + # installation, Linux needs to use LD_PRELOAD to + # override the LD_LIBRARY_PATH setting. See the + # INSTALL file, under "Building a shared perl library". + # If there is no pre-existing $libperl, we don't need + # to do anything further. + if test -f $archlib/CORE/$libperl; then + rm -f preload + cat <<'EOT' > preload +#! /bin/sh +lib=$1 +shift +test -r $lib && export LD_PRELOAD="$lib $LD_PRELOAD" +exec "$@" +EOT + chmod 755 preload + ldlibpth="$ldlibpth `pwd`/preload `pwd`/$libperl" + fi + ;; + os390) test -f /bin/env && ldlibpth="/bin/env $ldlibpth" + ;; + esac + ;; + *) pldlflags='' + static_target='static' ;; esac @@ -120,15 +165,6 @@ for f in $nonxs_ext; do nonxs_list="$nonxs_list ext/$f/pm_to_blib" done -# Handle the usage of different yaccs in posix-bc (During Configure we -# us yacc for perly.y and byacc for a2p.y. The makefiles must use the -# same configuration for run_byacc!): -case "$osname" in - posix-bc) - byacc=$yacc - ;; -esac - echo "Extracting Makefile (with variable substitutions)" $spitshell >Makefile <Makefile <>Makefile <<'!NO!SUBS!' -CCCMD = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $(LIBPERL) $@` +CCCMD = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $@` -CCCMDSRC = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $(LIBPERL) $<` +CCCMDSRC = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $<` private = preplibrary lib/Config.pm lib/ExtUtils/Miniperl.pm @@ -269,46 +309,34 @@ shextract = Makefile cflags config.h makeaperl makedepend \ # available. Dependencies handled manually below (for now). pl = pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL \ - pod/pod2usage.PL pod/podchecker.PL pod/podselect.PL \ - pod/buildtoc.PL + pod/pod2usage.PL pod/podchecker.PL pod/podselect.PL # lib/lib.pm is not listed here because it has a rule of its own. plextract = pod/pod2html pod/pod2latex pod/pod2man pod/pod2text \ - pod/pod2usage pod/podchecker pod/podselect \ - pod/buildtoc + pod/pod2usage pod/podchecker pod/podselect addedbyconf = UU $(shextract) $(plextract) lib/lib.pm pstruct h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h -h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h -h3 = opcode.h patchlevel.h perl.h perlapi.h perly.h pp.h proto.h regcomp.h +h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h opcode.h +h3 = pad.h patchlevel.h perl.h perlapi.h perly.h pp.h proto.h regcomp.h h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h -h5 = utf8.h warnings.h sharedsv.h +h5 = utf8.h warnings.h h = $(h1) $(h2) $(h3) $(h4) $(h5) -c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c +c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c reentr.c c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c -c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c xsutils.c -c4 = globals.c perlio.c perlapi.c numeric.c locale.c pp_pack.c pp_sort.c sharedsv.c +c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c xsutils.c pad.c +c4 = globals.c perlio.c perlapi.c numeric.c locale.c pp_pack.c pp_sort.c c = $(c1) $(c2) $(c3) $(c4) 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) +obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(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) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) sharedsv$(OBJ_EXT) +obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) -# Once perl has been Configure'd and built ok you build different -# perl variants (Debugging, Embedded, Multiplicity etc) by saying: -# make clean; make LIBPERL=libperl.a -# where is some combination of 'd' and(or) 'e' or 'm'. -# See cflags to understand how this works. -# -# This mechanism is getting clunky and might not even work any more. -# EMBEDDING is on by default, and MULTIPLICITY doesn't work. -# - lintflags = -hbvxac .c$(OBJ_EXT): @@ -320,11 +348,11 @@ lintflags = -hbvxac .c.s: $(CCCMDSRC) -S $*.c -.PHONY: all compile translators utilities - all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(public) $(dynamic_ext) $(nonxs_ext) extras.make @echo " "; - @echo " Everything is up to date. 'make test' to run test suite." + @echo " Everything is up to date. Type '$(MAKE) test' to run test suite." + +.PHONY: all compile translators utilities compile: all echo "testing compilation" > testcompile; @@ -369,9 +397,19 @@ perlmain.c: miniperlmain.c config.sh $(FIRSTMAKEFILE) sh writemain $(DYNALOADER) $(static_ext) > writemain.tmp sh mv-if-diff writemain.tmp perlmain.c +!NO!SUBS! +case "$osname" in +cygwin) + ;; # Let cygwin/Makefile.SHs do its work. +*) + $spitshell >>Makefile <<'!NO!SUBS!' perlmain$(OBJ_EXT): perlmain.c $(CCCMD) $(PLDLFLAGS) $*.c +!NO!SUBS! + ;; +esac +$spitshell >>Makefile <<'!NO!SUBS!' # The file ext.libs is a list of libraries that must be linked in # for static extensions, e.g. -lm -lgdbm, etc. The individual # static extension Makefile's add to it. @@ -431,7 +469,7 @@ PERLEXPORT = perl.exp esac $spitshell >>Makefile <<'!NO!SUBS!' perl.exp: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) - ./$(MINIPERLEXP) makedef.pl PLATFORM=aix | sort -u | sort -f > perl.exp.tmp + ./$(MINIPERLEXP) makedef.pl PLATFORM=aix CC_FLAGS="$(OPTIMIZE)" | sort -u | sort -f > perl.exp.tmp sh mv-if-diff perl.exp.tmp perl.exp !NO!SUBS! @@ -441,7 +479,7 @@ os2) MINIPERLEXP = miniperl perl5.def: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) miniperl.map - ./$(MINIPERLEXP) makedef.pl PLATFORM=os2 -DPERL_DLL=$(PERL_DLL) > perl.exp.tmp + ./$(MINIPERLEXP) makedef.pl PLATFORM=os2 -DPERL_DLL=$(PERL_DLL) CC_FLAGS="$(OPTIMIZE)" > perl.exp.tmp sh mv-if-diff perl.exp.tmp perl5.def !NO!SUBS! @@ -461,7 +499,7 @@ $(LIBPERL): $& perl$(OBJ_EXT) $(obj) $(LIBPERLEXPORT) case "$useshrplib" in true) $spitshell >>Makefile <<'!NO!SUBS!' - $(LD) -o $@ $(SHRPLDFLAGS) perl$(OBJ_EXT) $(obj) + $(LD) -o $@ $(SHRPLDFLAGS) perl$(OBJ_EXT) $(obj) $(libs) !NO!SUBS! case "$osname" in aix) @@ -513,6 +551,27 @@ miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT) $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; + darwin*) + case "$osvers" in + [1-6].*) ;; + *) case "$ldflags" in + *"-flat_namespace"*) ;; + *) # to allow opmini.o to override stuff in libperl.dylib + $spitshell >>Makefile <>Makefile <<'!NO!SUBS!' +miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT) + -@rm -f miniperl.xok + $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl \ + miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs) + $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest +!NO!SUBS! + ;; *) $spitshell >>Makefile <<'!NO!SUBS!' miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT) @@ -541,6 +600,17 @@ purecovperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_e quantperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs $(PERLEXPORT) $(SHRPENV) $(LDLIBPTH) quantify $(CC) -o quantperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) +# Valgrind perl (currently Linux only) + +perl.valgrind.config: config.sh + @echo "To build perl.valgrind you must Configure -Doptimize=-g -Uusemymalloc, checking..." + @$(MAKE) perl.config.dashg + @echo "Checking usemymalloc='n' in config.sh..." + @grep "^usemymalloc=" config.sh + @grep "^usemymalloc='n'" config.sh >/dev/null || exit 1 + @echo "And of course you have to have valgrind..." + valgrind ./perl -e 1 2>/dev/null || exit 1 + # Third Degree Perl (Tru64 only) perl.config.dashg: @@ -556,7 +626,7 @@ perl.third.config: config.sh @grep "^usemymalloc='n'" config.sh >/dev/null || exit 1 perl.third: /usr/bin/atom perl.third.config perl - atom -tool third -L. -all -gp -toolargs="-quiet -invalid -uninit heap+stack+partword+copy -min 0" perl + atom -tool third -L. -all -gp -toolargs="-invalid -uninit heap+stack+copy -min 0" perl @echo "Now you may run perl.third and then study perl.3log." # Pixie Perls (Tru64 and IRIX only) @@ -642,20 +712,23 @@ sperl$(OBJ_EXT): perl.c $(h) # We have to call our ./makedir because Ultrix 4.3 make can't handle the line # test -d lib/auto || mkdir lib/auto +# We need to autosplit in two steps because VOS can't handle so many args # .PHONY: preplibrary -preplibrary: miniperl$(EXE_EXT) lib/Config.pm lib/lib.pm +preplibrary: miniperl$(EXE_EXT) lib/Config.pm lib/lib.pm $(PREPLIBRARY_LIBPERL) @sh ./makedir lib/auto @echo " AutoSplitting perl library" $(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \ - autosplit_lib_modules(@ARGV)' lib/*.pm lib/*/*.pm + autosplit_lib_modules(@ARGV)' lib/*.pm + $(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \ + autosplit_lib_modules(@ARGV)' lib/*/*.pm $(MAKE) lib/re.pm # Take care to avoid modifying lib/Config.pm without reason # (If trying to create a new port and having problems with the configpm script, # try 'make minitest' and/or commenting out the tests at the end of configpm.) -lib/Config.pm: config.sh miniperl$(EXE_EXT) configpm - $(LDLIBPTH) ./miniperl configpm configpm.tmp +lib/Config.pm: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary + $(LDLIBPTH) ./miniperl -Ilib configpm configpm.tmp sh mv-if-diff configpm.tmp $@ lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl lib/Config.pm @@ -666,10 +739,13 @@ lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl lib/Confi lib/re.pm: ext/re/re.pm cp ext/re/re.pm ext/re/re.tmp && sh mv-if-diff ext/re/re.tmp lib/re.pm -$(plextract): miniperl$(EXE_EXT) lib/Config.pm +$(plextract): miniperl$(EXE_EXT) lib/Config.pm x2p/s2p @-rm -f $@ $(LDLIBPTH) ./miniperl -Ilib $@.PL +x2p/s2p: miniperl$(EXE_EXT) lib/Config.pm x2p/s2p.PL + cd x2p; $(LDLIBPTH) $(MAKE) s2p + lib/lib.pm: miniperl$(EXE_EXT) lib/Config.pm @-rm -f $@ $(LDLIBPTH) ./miniperl -Ilib lib/lib_pm.PL @@ -684,35 +760,43 @@ extra.pods: miniperl$(EXE_EXT) done -@rm -f pod/perlvms.pod -@test -f vms/perlvms.pod && cd pod && $(LNS) ../vms/perlvms.pod perlvms.pod && cd .. && echo "pod/perlvms.pod" >> extra.pods + -@rm -f pod/perldelta.pod + -@test -f pod/perl592delta.pod && cd pod && $(LNS) perl592delta.pod perldelta.pod && cd .. && echo "pod/perldelta.pod" >> extra.pods extras.make: perl$(EXE_EXT) - -@test -s extras.lst && $(LDLIBPTH) PATH=`pwd`:${PATH} PERL5LIB=`pwd`/lib ./perl -Ilib -MCPAN -e '@ARGV&&make(@ARGV)' `cat extras.lst` + -@test -s extras.lst && PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&make(@ARGV)' `cat extras.lst` extras.test: perl$(EXE_EXT) - -@test -s extras.lst && $(LDLIBPTH) PATH=`pwd`:${PATH} PERL5LIB=`pwd`/lib ./perl -Ilib -MCPAN -e '@ARGV&&test(@ARGV)' `cat extras.lst` + -@test -s extras.lst && PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&test(@ARGV)' `cat extras.lst` extras.install: perl$(EXE_EXT) - -@test -s extras.lst && $(LDLIBPTH) PATH=`pwd`:${PATH} PERL5LIB=`pwd`/lib ./perl -Ilib -MCPAN -e '@ARGV&&install(@ARGV)' `cat extras.lst` + -@test -s extras.lst && PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&install(@ARGV)' `cat extras.lst` .PHONY: install install-strip install-all install-verbose install-silent \ - no-install install.perl install.man installman install.html installhtml + no-install install.perl install.man install.html + +META.yml: Porting/makemeta Porting/Maintainers.pl Porting/Maintainers.pm + $(LDLIBPTH) ./miniperl -Ilib Porting/makemeta install-strip: - $(MAKE) STRIPFLAGS=-s install + $(MAKE) STRIPFLAGS=-s install DESTDIR="$(DESTDIR)" install install-all: - $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) + $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) DESTDIR="$(DESTDIR)" install-verbose: - $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-V + $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-V DESTDIR="$(DESTDIR)" install-silent: - $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-S + $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-S DESTDIR="$(DESTDIR)" no-install: - $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-n + $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-n DESTDIR="$(DESTDIR)" + +# Set this to an empty string to avoid an attempt of rebuild before install +INSTALL_DEPENDENCE = all -install.perl: all installperl +install.perl: $(INSTALL_DEPENDENCE) installperl if [ -n "$(COMPILE)" ]; \ then \ cd utils; $(MAKE) compile; \ @@ -720,11 +804,11 @@ install.perl: all installperl cd ../pod; $(MAKE) compile; \ else :; \ fi - $(LDLIBPTH) ./perl installperl $(INSTALLFLAGS) $(STRIPFLAGS) + $(LDLIBPTH) ./perl installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS) $(MAKE) extras.install install.man: all installman - $(LDLIBPTH) ./perl installman $(INSTALLFLAGS) + $(LDLIBPTH) ./perl installman --destdir=$(DESTDIR) $(INSTALLFLAGS) # XXX Experimental. Hardwired values, but useful for testing. # Eventually Configure could ask for some of these values. @@ -741,28 +825,18 @@ install.html: all installhtml # I now supply perly.c with the kits, so the following section is -# used only if you force byacc to run by saying -# make run_byacc -# Since we patch up the byacc output, the perly.fixer script needs -# to run with precisely the same version of byacc as I use. You -# normally shouldn't remake perly.[ch]. - -.PHONY: check_byacc run_byacc - -check_byacc: - @$(BYACC) -V 2>&1 | grep 'version 1\.8\.2' - -run_byacc: FORCE check_byacc - $(BYACC) -d perly.y - -chmod 664 perly.c perly.h - sh $(shellflags) ./perly.fixer y.tab.c perly.c - sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \ - -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c - sed -e '/^extern YYSTYPE yy/D' y.tab.h >yh.tmp && mv yh.tmp y.tab.h - cmp -s y.tab.h perly.h && rm -f y.tab.h || mv y.tab.h perly.h - perl -i perlyline.pl perly.c - chmod 664 vms/perly_c.vms vms/perly_h.vms - perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms +# used only if you force bison to run by saying +# make regen_perly +# You normally shouldn't remake perly.[ch]. + +.PHONY: regen_perly + +run_byacc: + @echo "run_byacc is obsolete; try 'make regen_perly' instead" + +# this outputs perly.act and perly.tab +regen_perly: + perl regen_perly.pl # We don't want to regenerate perly.c and perly.h, but they might # appear out-of-date after a patch is applied or a new distribution is @@ -773,11 +847,6 @@ perly.c: perly.y perly.h: perly.y -@sh -c true -PERLYVMS = vms/perly_c.vms vms/perly_h.vms - -$(PERLYVMS): perly.c perly.h vms/vms_yfix.pl - perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms - # No compat3.sym here since and including the 5.004_50. # No interp.sym since 5.005_03. SYM = global.sym globvar.sym perlio.sym pp.sym @@ -787,20 +856,22 @@ SYMH = perlvars.h intrpvar.h thrdvar.h CHMOD_W = chmod +w # The following files are generated automatically -# keywords.pl: keywords.h -# opcode.pl: opcode.h opnames.h pp_proto.h pp.sym -# [* embed.pl needs pp.sym generated by opcode.pl! *] -# embed.pl: proto.h embed.h embedvar.h global.sym -# perlapi.h perlapi.c pod/perlintern.pod -# pod/perlapi.pod +# autodoc.pl: pod/perlapi.pod pod/perlintern.pod # bytecode.pl: ext/ByteLoader/byterun.h ext/ByteLoader/byterun.c # ext/B/B/Asmdata.pm +# embed.pl: proto.h embed.h embedvar.h global.sym +# perlapi.h perlapi.c +# [* embed.pl needs pp.sym generated by opcode.pl! *] +# keywords.pl: keywords.h +# opcode.pl: opcode.h opnames.h pp_proto.h pp.sym # regcomp.pl: regnodes.h # warnings.pl: warnings.h lib/warnings.pm # The correct versions should be already supplied with the perl kit, # in case you don't have perl available. -# To force them to be regenerated, type -# make regen_headers +# To force them to be regenerated, run +# perl regen.pl +# with your existing copy of perl +# (make regen_headers is kept for backwards compatibility) AUTOGEN_FILES = keywords.h opcode.h opnames.h pp_proto.h pp.sym proto.h \ embed.h embedvar.h global.sym \ @@ -811,19 +882,22 @@ AUTOGEN_FILES = keywords.h opcode.h opnames.h pp_proto.h pp.sym proto.h \ .PHONY: regen_headers regen_pods regen_all -regen_headers: FORCE - -$(CHMOD_W) $(AUTOGEN_FILES) - -perl keywords.pl - -perl opcode.pl - -perl embed.pl - -perl bytecode.pl - -perl regcomp.pl - -perl warnings.pl +regen regen_headers: FORCE + -perl regen.pl regen_pods: FORCE - -cd pod; $(LDLIBPTH) make regen_pods + -cd pod; $(LDLIBPTH) $(MAKE) regen_pods + +regen_all: regen regen_pods + +.PHONY: manisort manicheck + +manisort: FORCE + LC_ALL=C sort -fdc MANIFEST || (echo "WARNING: re-sorting MANIFEST"; \ + LC_ALL=C sort -fdo MANIFEST MANIFEST) -regen_all: $(PERLYVMS) regen_headers regen_pods +manicheck: FORCE + perl Porting/manicheck # Extensions: # Names added to $(dynamic_ext) or $(static_ext) or $(nonxs_ext) will @@ -836,13 +910,13 @@ regen_all: $(PERLYVMS) regen_headers regen_pods # DynaLoader may be needed for extensions that use Makefile.PL. $(DYNALOADER): miniperl$(EXE_EXT) preplibrary FORCE - @$(LDLIBPTH) sh ext/util/make_ext static $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) + @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) d_dummy $(dynamic_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE @$(LDLIBPTH) sh ext/util/make_ext dynamic $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) s_dummy $(static_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE - @$(LDLIBPTH) sh ext/util/make_ext static $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) + @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) @@ -854,7 +928,7 @@ n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE clean: _tidy _mopup realclean: _realcleaner _mopup - @echo "Note that make realclean does not delete config.sh or Policy.sh" + @echo "Note that '$(MAKE) realclean' does not delete config.sh or Policy.sh" _clobber: -@rm -f Cross/run-* Cross/to-* Cross/from-* @@ -871,6 +945,7 @@ veryclean: _verycleaner _mopup _clobber # Do not 'make _mopup' directly. _mopup: rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c + -rmdir .depending -@test -f extra.pods && rm -f `cat extra.pods` -@test -f vms/README_vms.pod && rm -f vms/README_vms.pod -rm -f perl.exp ext.libs extra.pods opmini.o @@ -879,8 +954,9 @@ _mopup: -rm -f perl.third lib*.so.perl.third perl.3log t/perl.third t/perl.3log -rm -f perl.pixie lib*.so.perl.pixie lib*.so.Addrs -rm -f perl.Addrs perl.Counts t/perl.Addrs t/perl.Counts *perl.xok - -rm -f perlld cygwin.c ld2 libperl*.def libperl*.dll - rm -f perl$(EXE_EXT) suidperl$(EXE_EXT) miniperl$(EXE_EXT) $(LIBPERL) libperl.* microperl + -rm -f perlld cygwin.c ld2 libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump + -rm -f perl$(EXE_EXT) suidperl$(EXE_EXT) miniperl$(EXE_EXT) $(LIBPERL) libperl.* microperl + -rm -f opcode.h-old opnames.h-old pp.sym-old pp_proto.h-old # Do not 'make _tidy' directly. _tidy: @@ -901,19 +977,26 @@ _cleaner1: $(LDLIBPTH) sh ext/util/make_ext $(CLEAN) $$x MAKE=$(MAKE) ; \ done +# Some systems do not support "?", so keep these files separate. _cleaner2: - rm -f core core.*perl.*.? *perl.core t/core t/core.perl.*.? t/*perl.core t/misctmp* t/forktmp* t/tmp* t/c t/perl$(EXE_EXT) t/rantests .?*.c so_locations $(LIBPERL_NONSHR) $(MINIPERL_NONSHR) + -rm -f core.*perl.*.? t/core.perl.*.? .?*.c + rm -f core *perl.core t/core t/*perl.core + rm -f t/misctmp* t/forktmp* t/tmp* t/c t/perl$(EXE_EXT) t/rantests + rm -f so_locations $(LIBPERL_NONSHR) $(MINIPERL_NONSHR) rm -rf $(addedbyconf) - rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old - rm -f $(private) + rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old + rm -f $(private) lib/Config.pod rm -rf lib/auto rm -f lib/.exists lib/*/.exists lib/*/*/.exists rm -f h2ph.man pstruct rm -rf .config + rm -f preload rm -f testcompile compilelog - -rmdir lib/B lib/Data lib/Digest lib/Encode lib/IO/Socket lib/IO/t lib/IO - -rmdir lib/Filter/Util lib/List lib/MIME lib/PerlIO lib/Scalar lib/Sys - -rmdir lib/Thread lib/XS + -rmdir lib/B lib/Data lib/Digest + rm -rf lib/Encode + -rmdir lib/Filter/Util lib/IO/Socket lib/IO + -rmdir lib/List lib/MIME lib/Scalar lib/Sys + -rmdir lib/threads lib/XS _realcleaner: @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=realclean @@ -958,10 +1041,10 @@ makedepend: makedepend.SH config.sh .PHONY: test check test_prep test_prep_nodll test_prep_pre _test_prep \ test_tty test-tty _test_tty test_notty test-notty _test_notty \ - utest ucheck test.utf8 check.utf8 \ + utest ucheck test.utf8 check.utf8 test.torture torturetest \ test.third check.third utest.third ucheck.third test_notty.third \ - test.deparse test_notty.deparse \ - minitest coretest + test.deparse test_notty.deparse test_harness test_harness_notty \ + test.bytecompile minitest coretest test.taintwarn # Cannot delegate rebuilding of t/perl to make # to allow interlaced test and minitest @@ -979,10 +1062,10 @@ test_prep: test_prep_pre miniperl$(EXE_EXT) perl$(EXE_EXT) $(dynamic_ext) $(TEST PERL=./perl $(MAKE) _test_prep _test_tty: - cd t && $(LDLIBPTH) $(PERL_DEBUG) $(PERL) $(TESTFILE) $(TEST_ARGS) &4 + echo "This is an EBCDIC system, checking if any parser files need regenerating." >&2 case "$osname" in os390|posix-bc) - rm -f y.tab.c y.tab.h - # yacc must be a reentrant ("pure") Bison in BS2000 Posix! - yacc -d perly.y >/dev/null 2>&1 - if cmp -s y.tab.c perly.c; then - rm -f y.tab.c - else - echo "perly.y -> perly.c" >&2 - mv -f y.tab.c perly.c - chmod u+w perly.c - sed -e '/^#include "perl\.h"/a\ -\ -#define yydebug PL_yydebug\ -#define yynerrs PL_yynerrs\ -#define yyerrflag PL_yyerrflag\ -#define yychar PL_yychar\ -#define yyval PL_yyval\ -#define yylval PL_yylval' \ - -e '/YYSTYPE *yyval;/D' \ - -e '/YYSTYPE *yylval;/D' \ - -e '/int yychar,/,/yynerrs;/D' \ - -e 's/int yydebug = 0;/yydebug = 0;/' \ - -e 's/[^_]realloc(/PerlMem_realloc(/g' \ - -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \ - -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c - xxx="$xxx perly.c" - fi - if cmp -s y.tab.h perly.h; then - rm -f y.tab.h - else - echo "perly.y -> perly.h" >&2 - mv -f y.tab.h perly.h - xxx="$xxx perly.h" - fi if cd x2p then rm -f y.tab.c y.tab.h