X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/f25d4e0545b63ee4449b804027ac80195dc47dd3..d0bfb56c17bf64c9c527608ddc40b8b24d944b39:/Makefile.SH diff --git a/Makefile.SH b/Makefile.SH index 05a4da6..bd27892 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -1,3 +1,14 @@ +#!/bin/sh + +# quote() - Creates a shell literal +# Usage: echo "...$( quote "..." )..." +quote() { + case "$1" in + '') echo "''" ;; + *) echo "$1" | sed 's/\([^a-zA-Z0-9.:_\-\/]\)/\\\1/g' ;; + esac +} + case $PERL_CONFIG_SH in '') if test -f config.sh @@ -37,10 +48,8 @@ true) # Prefix all runs of 'miniperl' and 'perl' with # $ldlibpth so that ./perl finds *this* shared libperl. case "$LD_LIBRARY_PATH" in - '') - ldlibpth="LD_LIBRARY_PATH=`pwd`";; - *) - ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";; + '') ldlibpth="LD_LIBRARY_PATH=$( quote "`pwd`" )" ;; + *) ldlibpth="LD_LIBRARY_PATH=$( quote "`pwd`" ):$( quote "$LD_LIBRARY_PATH" )" ;; esac pldlflags="$cccdlflags" @@ -119,19 +128,19 @@ true) ldlibpth='' ;; *) - eval "ldlibpth=\"$ldlibpthname=`pwd`:\$$ldlibpthname\"" + eval "ldlibpthval=\"\$$ldlibpthname\"" + + case "$ldlibpthval" in + '') ldlibpth="$ldlibpthname=$( quote "`pwd`" )" ;; + *) ldlibpth="$ldlibpthname=$( quote "`pwd`" ):$( quote "$ldlibpthval" )" ;; + esac + ;; esac - # Strip off any trailing :'s - 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 @@ -177,7 +186,9 @@ done : Prepare dependency lists for Makefile. dynamic_list=' ' dynamic_ext_re="lib/auto/re/re.$dlext" -extra_dep='' +extra_dep=' +ext/Pod-Functions/pm_to_blib: cpan/Pod-Simple/pm_to_blib cpan/Pod-Escapes/pm_to_blib pod/perlfunc.pod +' for f in $dynamic_ext; do : the dependency named here will never exist base=`echo "$f" | sed 's/.*\///'` @@ -331,10 +342,21 @@ $make_set_make # Mention $gmake here so it gets probed for by Configure. +!GROK!THIS! + +case "${osname}" in +linux*|darwin) +$spitshell >>$Makefile </dev/null +!GROK!THIS! + ;; +esac + +$spitshell >>$Makefile <>$Makefile <<'!NO!SUBS!' -globals$(OBJ_EXT): uudmap.h bitcount.h mg_data.h +globals$(OBJ_EXT): $(generated_headers) uudmap.h mg_data.h: bitcount.h bitcount.h: generate_uudmap$(HOST_EXE_EXT) - $(RUN) ./generate_uudmap$(HOST_EXE_EXT) uudmap.h bitcount.h mg_data.h + $(RUN) ./generate_uudmap$(HOST_EXE_EXT) $(generated_headers) generate_uudmap$(OBJ_EXT): mg_raw.h @@ -710,8 +735,8 @@ PERLEXPORT = perl.exp ;; esac $spitshell >>$Makefile <<'!NO!SUBS!' -perl.exp: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) - ./$(MINIPERLEXP) makedef.pl PLATFORM=aix CC_FLAGS="$(OPTIMIZE)" | sort -u | sort -f > perl.exp +perl.exp: $(MINIPERLEXP) makedef.pl $(CONFIGPM) $(SYM) $(SYMH) + ./$(MINIPERLEXP) makedef.pl --sort-fold PLATFORM=aix CC_FLAGS="$(OPTIMIZE)" > perl.exp !NO!SUBS! ;; @@ -719,7 +744,7 @@ os2) $spitshell >>$Makefile <<'!NO!SUBS!' MINIPERLEXP = miniperl -perl5.def: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) miniperl.map +perl5.def: $(MINIPERLEXP) makedef.pl $(CONFIGPM) $(SYM) $(SYMH) miniperl.map ./$(MINIPERLEXP) makedef.pl PLATFORM=os2 -DPERL_DLL=$(PERL_DLL) CC_FLAGS="$(OPTIMIZE)" > perl5.def !NO!SUBS! @@ -814,7 +839,7 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) !NO!SUBS! case "${osname}${osvers}" in - aix*|beos*) + aix*) $spitshell >>$Makefile <<'!NO!SUBS!' $(MINIPERL_EXE): $& $(mini_obj) $(CC) -o $(MINIPERL_EXE) $(CLDFLAGS) $(mini_obj) $(libs) @@ -877,7 +902,12 @@ purecov$(PERL_EXE): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PE quant$(PERL_EXE): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) $(SHRPENV) $(LDLIBPTH) quantify $(CC) -o quantperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) -# Valgrind perl (currently Linux only) +!NO!SUBS! + +case "${osname}${osvers}" in +linux*|darwin*) + $spitshell >>$Makefile <<'!NO!SUBS!' +# Valgrind perl (currently Linux, Darwin only) perl.valgrind.config: config.sh @echo "To build perl.valgrind you must Configure -Doptimize=-g -Uusemymalloc, checking..." @@ -886,7 +916,12 @@ perl.valgrind.config: 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 + $(VALGRIND) $(VG_TEST) || exit 1 +!NO!SUBS! + ;; +esac + +$spitshell >>$Makefile <<'!NO!SUBS!' # Third Degree Perl (Tru64 only) @@ -1022,7 +1057,7 @@ uni.data: $(MINIPERL_EXE) $(CONFIGPM) lib/unicore/mktables $(nonxs_ext) # But also this ensures that all extensions are built before we try to scan # them, which picks up Devel::PPPort's documentation. pod/perltoc.pod: $(perltoc_pod_prereqs) $(PERL_EXE) $(ext) pod/buildtoc - $(RUN_PERL) -f -Ilib pod/buildtoc --build-toc -q + $(RUN_PERL) -f -Ilib pod/buildtoc -q pod/perlapi.pod: pod/perlintern.pod @@ -1032,8 +1067,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST $(MINIPERL) $(Icwd) pod/perlmodlib.PL -q -pod/perl5153delta.pod: pod/perldelta.pod - $(LNS) perldelta.pod pod/perl5153delta.pod +pod/perl5178delta.pod: pod/perldelta.pod + $(RMS) pod/perl5178delta.pod + $(LNS) perldelta.pod pod/perl5178delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` @@ -1056,19 +1092,19 @@ extras.install: $(PERL_EXE) .PHONY: install install-strip install-all install-verbose install-silent \ no-install install.perl install.man install.html -install-strip: +install_strip install-strip: $(MAKE) STRIPFLAGS=-s install DESTDIR="$(DESTDIR)" -install install-all: +install install_all install-all: $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) DESTDIR="$(DESTDIR)" -install-verbose: +install_verbose install-verbose: $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-V DESTDIR="$(DESTDIR)" -install-silent: +install_silent install-silent: $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-S DESTDIR="$(DESTDIR)" -no-install: +no_install no-install: $(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 @@ -1091,7 +1127,6 @@ install.html: all installhtml --htmlroot=$(privlib)/html \ --splithead=pod/perlipc \ --splititem=pod/perlfunc \ - --libpods=perlfunc:perlguts:perlvar:perlrun:perlop \ --ignore=Porting/Maintainers.pm,Porting/pumpkin.pod,Porting/repository.pod \ --verbose @@ -1103,11 +1138,11 @@ install.html: all installhtml .PHONY: regen_perly -run_byacc: +run_byacc run-byacc: @echo "run_byacc is obsolete; try 'make regen_perly' instead" # this outputs perly.h, perly.act and perly.tab -regen_perly: +regen_perly regen-perly: perl regen_perly.pl # We don't want to regenerate perly.c and perly.h, but they might @@ -1119,18 +1154,18 @@ perly.c: perly.y perly.h: perly.y -@sh -c true -SYM = global.sym globvar.sym perlio.sym +SYM = globvar.sym perlio.sym SYMH = perlvars.h intrpvar.h CHMOD_W = chmod +w # The following files are generated automatically -# embed.pl: proto.h embed.h embedvar.h global.sym -# perlapi.h perlapi.c +# embed.pl: proto.h embed.h embedvar.h perlapi.h perlapi.c # opcode.pl: opcode.h opnames.h pp_proto.h # regcomp.pl: regnodes.h # warnings.pl: warnings.h lib/warnings.pm +# feature.pl: feature.h lib/feature.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, run @@ -1138,26 +1173,27 @@ CHMOD_W = chmod +w # with your existing copy of perl # (make regen_headers is kept for backwards compatibility) -AUTOGEN_FILES = opcode.h opnames.h pp_proto.h proto.h \ - embed.h embedvar.h global.sym \ - perlapi.h perlapi.c regnodes.h \ - warnings.h lib/warnings.pm +AUTOGEN_FILES = opcode.h opnames.h pp_proto.h proto.h embed.h embedvar.h \ + perlapi.h perlapi.c regnodes.h warnings.h lib/warnings.pm \ + lib/feature.pm feature.h .PHONY: regen_headers regen_all regen: FORCE -perl regen.pl + -perl regen/uconfig_h.pl -regen_headers: FORCE +regen_headers regen-headers: FORCE -perl regen.pl -v + -perl regen/uconfig_h.pl -v -regen_meta: META.yml +regen_meta regen-meta: META.yml META.yml: FORCE PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) -Ilib Porting/makemeta -regen_all: regen regen_meta +regen_all regen-all: regen regen_meta .PHONY: manisort manicheck @@ -1225,11 +1261,11 @@ veryclean: _verycleaner _mopup _clobber # Do not 'make _mopup' directly. _mopup: - rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c uudmap.h generate_uudmap$(EXE_EXT) bitcount.h mg_data.h + rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c generate_uudmap$(EXE_EXT) $(generated_headers) -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 $(generated_pods) uni.data opmini.o perlmini.o + -rm -f perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o pod/roffitall -rm -f perl.export perl.dll perl.libexp perl.map perl.def -rm -f perl.loadmap miniperl.loadmap perl.prelmap miniperl.prelmap -rm -f perl.third lib*.so.perl.third perl.3log t/perl.third t/perl.3log @@ -1293,10 +1329,12 @@ _cleaner2: rm -fr lib/B rm -fr lib/CPAN lib/CPANPLUS rm -fr lib/ExtUtils/CBuilder + rm -f pod2htmd.tmp + rm -rf pod/perlfunc pod/perlipc -rmdir cpan/CPANPLUS-Dist-Build/t/dummy-cpanplus cpan/CPANPLUS/t/dummy-cpanplus cpan/CPANPLUS/t/dummy-localmirror -rmdir ext/B/lib -rmdir lib/Archive/Tar lib/Archive lib/Attribute - -rmdir lib/CGI + -rmdir lib/CGI lib/Carp -rmdir lib/Data lib/Devel lib/Digest -rmdir lib/ExtUtils/Command lib/ExtUtils/Constant lib/ExtUtils/Liblist lib/ExtUtils/MakeMaker -rmdir lib/File/Spec lib/Filter/Util lib/Filter @@ -1383,7 +1421,7 @@ _test: test_prep_pre: preplibrary utilities $(nonxs_ext) -test_prep: test_prep_pre $(MINIPERL_EXE) $(unidatafiles) $(PERL_EXE) \ +test_prep test-prep: test_prep_pre $(MINIPERL_EXE) $(unidatafiles) $(PERL_EXE) \ $(dynamic_ext) $(TEST_PERL_DLL) runtests x2p/s2p x2p/find2perl \ $(generated_pods) cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE)) @@ -1395,10 +1433,10 @@ test_prep_reonly: $(MINIPERL_EXE) $(PERL_EXE) $(dynamic_ext_re) $(TEST_PERL_DLL) test check: test_prep $(RUN_TESTS) choose -test_tty: test_prep +test_tty test-tty: test_prep $(RUN_TESTS) tty -test_notty: test_prep +test_notty test-notty: test_prep $(RUN_TESTS) no-tty utest ucheck test.utf8 check.utf8: test_prep @@ -1407,12 +1445,6 @@ utest ucheck test.utf8 check.utf8: test_prep coretest: test_prep TEST_ARGS=-core $(RUN_TESTS) choose -test-prep: test_prep - -test-tty: test_tty - -test-notty: test_notty - # Torture testing test.torture torturetest: test_prep @@ -1422,7 +1454,7 @@ test.torture torturetest: test_prep minitest.utf16: minitest.prep - cd t && (rm -f $(PERL_EXE); $(LNS) ../$(MINIPERL_EXE) $(PERL_EXE)) \ - && $(RUN_PERL) TEST -utf16 base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t >$Makefile <<'!NO!SUBS!' # Targets for valgrind testing: test_prep.valgrind: test_prep perl.valgrind @@ -1442,6 +1479,11 @@ utest.valgrind ucheck.valgrind: test_prep.valgrind perl.valgrind.config test_notty.valgrind: test_prep.valgrind perl.valgrind.config PERL_VALGRIND=1 $(RUN_TESTS) no-tty +!NO!SUBS! + ;; +esac + +$spitshell >>$Makefile <<'!NO!SUBS!' # Targets for Third Degree testing. @@ -1481,23 +1523,23 @@ minitest.prep: # is crashing. minitest: $(MINIPERL_EXE) minitest.prep - cd t && (rm -f $(PERL_EXE); $(LNS) ../$(MINIPERL_EXE) $(PERL_EXE)) \ - && $(RUN_PERL) TEST base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t op/*.t uni/*.t &4 ;;