X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/f18bc4a843b9dea1f23385742e87117dcebb86ed..ad19ef225338a36579e4752839bc6b1e60d22531:/Makefile.SH diff --git a/Makefile.SH b/Makefile.SH index 217a035..b7b2970 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -164,10 +164,22 @@ EOT ;; esac +: is Cwd static or dynamic +static_cwd='define' +list_util_dep='$(PERL_EXE)' +for f in $dynamic_ext; do + case $f in + Cwd) static_cwd='undef' ;; + List/Util) list_util_dep=lib/auto/List/Util/Util.$dlext + esac +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 pod/perlfunc.pod +' for f in $dynamic_ext; do : the dependency named here will never exist base=`echo "$f" | sed 's/.*\///'` @@ -176,16 +188,10 @@ for f in $dynamic_ext; do : Parallel makes reveal that we have some interdependencies case $f in - Encode) extra_dep="$extra_dep -$this_target: lib/auto/Cwd/Cwd.$dlext" ;; Math/BigInt/FastCalc|Devel/NYTProf) extra_dep="$extra_dep -$this_target: lib/auto/List/Util/Util.$dlext" ;; +$this_target: $list_util_dep" ;; Unicode/Normalize) extra_dep="$extra_dep $this_target: uni.data" ;; - Text/ParseWords) extra_dep="$extra_dep -$this_target: lib/auto/Scalar/Util.$dlext" ;; - SDBM_File) extra_dep="$extra_dep -$this_target: lib/auto/Cwd/Cwd.$dlext" ;; esac done @@ -327,10 +333,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 +globals$(OBJ_EXT): $(generated_headers) -uudmap.h: bitcount.h +uudmap.h mg_data.h: bitcount.h bitcount.h: generate_uudmap$(HOST_EXE_EXT) - $(RUN) ./generate_uudmap$(HOST_EXE_EXT) uudmap.h bitcount.h + $(RUN) ./generate_uudmap$(HOST_EXE_EXT) $(generated_headers) + +generate_uudmap$(OBJ_EXT): mg_raw.h generate_uudmap$(HOST_EXE_EXT): generate_uudmap$(OBJ_EXT) $(CC) -o generate_uudmap$(EXE_EXT) $(LDFLAGS) generate_uudmap$(OBJ_EXT) $(libs) @@ -696,8 +726,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! ;; @@ -705,7 +735,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! @@ -735,8 +765,11 @@ else case "$dtrace_h" in ?*) $spitshell >>$Makefile <<'!NO!SUBS!' +# dtrace dicards const qualifiers from arguments, put them back $(DTRACE_H): perldtrace.d - $(DTRACE) -h -s perldtrace.d -o $(DTRACE_H) + $(DTRACE) -h -s perldtrace.d -o $(DTRACE_H).in + sed -e '/const/!s/char \*/const char */g' $(DTRACE_H).in >$(DTRACE_H) + $(RMS) $(DTRACE_H).in mydtrace.h: $(DTRACE_H) @@ -749,8 +782,8 @@ mydtrace.h: $(DTRACE_H) $(DTRACE_O): perldtrace.d $(ndt_obj) $(DTRACE) -G -s perldtrace.d -o $(DTRACE_O) $(ndt_obj) -$(MINIDTRACE_O): perldtrace.d $(minindt_obj) - $(DTRACE) -G -s perldtrace.d -o $(MINIDTRACE_O) $(minindt_obj) +$(MINIDTRACE_O): perldtrace.d $(minindt_obj) perlmini$(OBJ_EXT) + $(DTRACE) -G -s perldtrace.d -o $(MINIDTRACE_O) $(minindt_obj) perlmini$(OBJ_EXT) !NO!SUBS! ;; @@ -799,18 +832,15 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) case "${osname}${osvers}" in aix*|beos*) $spitshell >>$Makefile <<'!NO!SUBS!' -$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) - $(CC) -o $(MINIPERL_EXE) $(CLDFLAGS) \ - $(mini_obj) \ - miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs) +$(MINIPERL_EXE): $& $(mini_obj) + $(CC) -o $(MINIPERL_EXE) $(CLDFLAGS) $(mini_obj) $(libs) $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; next4*) $spitshell >>$Makefile <<'!NO!SUBS!' -$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) perlmini$(OBJ_EXT) opmini$(OBJ_EXT) - $(CC) -o $(MINIPERL_EXE) $(mini_obj) \ - miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs) +$(MINIPERL_EXE): $& $(mini_obj) + $(CC) -o $(MINIPERL_EXE) $(mini_obj) $(libs) $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; @@ -828,21 +858,19 @@ NAMESPACEFLAGS = -force_flat_namespace ;; esac $spitshell >>$Makefile <<'!NO!SUBS!' -$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) +$(MINIPERL_EXE): $& $(mini_obj) -@rm -f miniperl.xok $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \ - $(mini_obj) \ - miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs) + $(mini_obj) $(libs) $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; *) $spitshell >>$Makefile <<'!NO!SUBS!' -$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) +$(MINIPERL_EXE): $& $(mini_obj) -@rm -f miniperl.xok $(LDLIBPTH) $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \ - $(mini_obj) \ - miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs) + $(mini_obj) $(libs) $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; @@ -865,7 +893,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..." @@ -874,7 +907,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) @@ -1010,7 +1048,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 @@ -1020,8 +1058,8 @@ 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/perl5150delta.pod: pod/perldelta.pod - $(LNS) perldelta.pod pod/perl5150delta.pod +pod/perl5172delta.pod: pod/perldelta.pod + $(LNS) perldelta.pod pod/perl5172delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` @@ -1044,19 +1082,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 @@ -1079,7 +1117,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 @@ -1091,11 +1128,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 @@ -1107,18 +1144,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 @@ -1126,26 +1163,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 @@ -1213,11 +1251,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 + 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 @@ -1281,10 +1319,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 @@ -1371,7 +1411,9 @@ _test: test_prep_pre: preplibrary utilities $(nonxs_ext) -test_prep: test_prep_pre $(MINIPERL_EXE) $(unidatafiles) $(PERL_EXE) $(dynamic_ext) $(TEST_PERL_DLL) runtests x2p/s2p $(generated_pods) +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)) test_prep_reonly: $(MINIPERL_EXE) $(PERL_EXE) $(dynamic_ext_re) $(TEST_PERL_DLL) @@ -1381,10 +1423,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 @@ -1393,12 +1435,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 @@ -1416,6 +1452,11 @@ test.utf16 check.utf16: test_prep utest.utf16 ucheck.utf16: test_prep TEST_ARGS="-utf8 -utf16" $(RUN_TESTS) choose +!NO!SUBS! + +case "${osname}${osvers}" in +linux*|darwin*) + $spitshell >>$Makefile <<'!NO!SUBS!' # Targets for valgrind testing: test_prep.valgrind: test_prep perl.valgrind @@ -1428,6 +1469,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. @@ -1471,19 +1517,19 @@ minitest: $(MINIPERL_EXE) minitest.prep # Test via harness -test_harness: test_prep +test_harness test-harness: test_prep TESTFILE=harness $(RUN_TESTS) choose test_harness_notty: test_prep HARNESS_NOTTY=1 TESTFILE=harness $(RUN_TESTS) choose -test-reonly: test_prep_reonly +test_reonly test-reonly: test_prep_reonly TEST_ARGS='-re \bre\/' TESTFILE=harness $(RUN_TESTS) choose # Porting tests (well-formedness of pod, manifest, etc) -test_porting: test_prep +test_porting test-porting: test_prep cd t && $(RUN_PERL) harness porting/*.t ../lib/diagnostics.t # Handy way to run perlbug -ok without having to install and run the