This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Couple of test file comments
[perl5.git] / Makefile.SH
index 6c5ec87..778b4ae 100755 (executable)
@@ -189,11 +189,12 @@ dynamic_list=' '
 dynamic_ext_re="lib/auto/re/re.$dlext"
 extra_dep='
 ext/Pod-Functions/pm_to_blib: cpan/Pod-Simple/pm_to_blib cpan/Pod-Escapes/pm_to_blib pod/perlfunc.pod
+cpan/IO-Compress/pm_to_blib: dist/lib/pm_to_blib
 '
 for f in $dynamic_ext; do
     : the dependency named here will never exist
       base=`echo "$f" | sed 's/.*\///'`
-    this_target="lib/auto/$f/$base.$dlext"  
+    this_target="lib/auto/$f/$base.$dlext"
     dynamic_list="$dynamic_list $this_target"
 
     : Parallel makes reveal that we have some interdependencies
@@ -390,8 +391,13 @@ VG_TEST  ?= ./perl -e 1 2>/dev/null
        ;;
 esac
 
+case "$dtracexnolibs" in
+define) xnolibs=-xnolibs ;;
+*) xnolibs= ;;
+esac
+
 $spitshell >>$Makefile <<!GROK!THIS!
-DTRACE = $dtrace
+DTRACE = $dtrace $xnolibs
 DTRACE_H = $dtrace_h
 
 DTRACE_PERLLIB_O = $dtrace_perllib_o # "dtrace -G" output for perllib_objs
@@ -476,7 +482,7 @@ shextract = $shextract
 ## In the following dollars and backticks do not need the extra backslash.
 $spitshell >>$Makefile <<'!NO!SUBS!'
 
-addedbyconf = UU $(shextract) pstruct
+addedbyconf = UU $(shextract)
 
 # Unicode data files generated by mktables
 unidatafiles = lib/unicore/Decomposition.pl lib/unicore/TestProp.pl \
@@ -518,11 +524,53 @@ main_only_objs = op$(OBJ_EXT)     perl$(OBJ_EXT)
 miniperl_objs_nodt = $(mini_only_objs) $(common_objs) miniperlmain$(OBJ_EXT)
 perllib_objs_nodt  = $(main_only_objs) $(common_objs)
 
+!NO!SUBS!
+
+# dtrace with -G modifies the source object files, which can cause
+# dependency issues, and can cause the dtrace -G to fail on FreeBSD
+# so separate the objects generated by $(CC) from those used to link
+# the executable when dtrace -G is involved.
+#
+# $(FOO:op%os=np%ns) isn't generally portable but is portable to
+# the makes on darwin, Solaris, FreeBSD and Linux, which is where we
+# use dtrace
+
+case "$usedtrace:$dtraceobject" in
+define:define)
+    $spitshell >>$Makefile <<'!NO!SUBS!'
+
+miniperl_dtrace_objs = $(miniperl_objs_nodt:%=mpdtrace/%)
+perllib_dtrace_objs = $(perllib_objs_nodt:%=libpdtrace/%)
+perlmain_dtrace_objs = maindtrace/perlmain$(OBJ_EXT)
+
+miniperl_objs = $(miniperl_dtrace_objs) $(DTRACE_MINI_O)
+perllib_objs  = $(perllib_dtrace_objs) $(DTRACE_PERLLIB_O)
+perlmain_objs = $(perlmain_dtrace_objs) $(DTRACE_MAIN_O)
+
+miniperl_dep = $(DTRACE_MINI_O)
+perllib_dep = $(DTRACE_PERLLIB_O)
+perlmain_dep = $(DTRACE_MAIN_O)
+
+!NO!SUBS!
+    ;;
+*)
+    $spitshell >>$Makefile <<'!NO!SUBS!'
+
 miniperl_objs = $(miniperl_objs_nodt) $(DTRACE_MINI_O)
 perllib_objs  = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O)
 perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O)
 
-perltoc_pod_prereqs = extra.pods pod/perl5259delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+miniperl_dep = $(miniperl_objs)
+perllib_dep = $(perllib_objs)
+perlmain_dep = $(perlmain_objs)
+
+!NO!SUBS!
+    ;;
+esac
+
+$spitshell >>$Makefile <<'!NO!SUBS!'
+
+perltoc_pod_prereqs = extra.pods pod/perl5272delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
 generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
 generated_headers = uudmap.h bitcount.h mg_data.h
 
@@ -834,19 +882,32 @@ mydtrace.h: $(DTRACE_H)
        define)
                $spitshell >>$Makefile <<'!NO!SUBS!'
 $(DTRACE_MINI_O): perldtrace.d $(miniperl_objs_nodt)
-       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MINI_O) $(miniperl_objs_nodt)
+       -rm -rf mpdtrace
+       mkdir mpdtrace
+       cp $(miniperl_objs_nodt) mpdtrace/
+       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MINI_O) $(miniperl_dtrace_objs)
 
 $(DTRACE_PERLLIB_O): perldtrace.d $(perllib_objs_nodt)
-       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_objs_nodt)
+       -rm -rf libpdtrace
+       mkdir libpdtrace
+       cp $(perllib_objs_nodt) libpdtrace/
+       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_dtrace_objs)
 
 $(DTRACE_MAIN_O): perldtrace.d perlmain$(OBJ_EXT)
-       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) perlmain$(OBJ_EXT)
+       -rm -rf maindtrace
+       mkdir maindtrace
+       cp perlmain$(OBJ_EXT) maindtrace/
+       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) $(perlmain_dtrace_objs) ||           \
+         ( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a dummy $(DTRACE_MAIN_O)" && \
+           $(ECHO) >dtrace_main.c &&                                                         \
+           `$(CCCMD)` $(PLDLFLAGS) dtrace_main.c &&                                          \
+            rm -f dtrace_main.c )
 
 !NO!SUBS!
                ;;
     esac
        $spitshell >>$Makefile <<'!NO!SUBS!'
-$(LIBPERL): $& $(perllib_objs) $(DYNALOADER) $(LIBPERLEXPORT)
+$(LIBPERL): $& $(perllib_dep) $(DYNALOADER) $(LIBPERLEXPORT)
 !NO!SUBS!
        case "$useshrplib" in
        true)
@@ -947,7 +1008,7 @@ lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
        *)
                if test "X$hostperl" != X; then
                        $spitshell >>$Makefile <<!GROK!THIS!
-lib/buildcustomize.pl: \$& \$(miniperl_objs) write_buildcustomize.pl
+lib/buildcustomize.pl: \$& \$(miniperl_dep) write_buildcustomize.pl
        -@rm -f miniperl.xok
        -@rm \$(MINIPERL_EXE)
        \$(LNS) \$(HOST_PERL) \$(MINIPERL_EXE)
@@ -956,7 +1017,7 @@ lib/buildcustomize.pl: \$& \$(miniperl_objs) write_buildcustomize.pl
 !GROK!THIS!
                else
                        $spitshell >>$Makefile <<'!NO!SUBS!'
-lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
+lib/buildcustomize.pl: $& $(miniperl_dep) write_buildcustomize.pl
        -@rm -f miniperl.xok
        $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
            $(miniperl_objs) $(libs)
@@ -969,7 +1030,7 @@ lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
 
        $spitshell >>$Makefile <<'!NO!SUBS!'
 
-$(PERL_EXE): $& $(perlmain_objs) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) write_buildcustomize.pl
+$(PERL_EXE): $& $(perlmain_dep) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) write_buildcustomize.pl
        -@rm -f miniperl.xok
 !NO!SUBS!
 
@@ -1059,9 +1120,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
 pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
        $(MINIPERL) pod/perlmodlib.PL -q
 
-pod/perl5259delta.pod: pod/perldelta.pod
-       $(RMS) pod/perl5259delta.pod
-       $(LNS) perldelta.pod pod/perl5259delta.pod
+pod/perl5272delta.pod: pod/perldelta.pod
+       $(RMS) pod/perl5272delta.pod
+       $(LNS) perldelta.pod pod/perl5272delta.pod
 
 extra.pods: $(MINIPERL_EXE)
        -@test ! -f extra.pods || rm -f `cat extra.pods`
@@ -1338,7 +1399,7 @@ _cleaner2:
        rm -rf $(unidatafiles) $(unidatadirs)
        rm -rf lib/auto
        rm -f lib/.exists lib/*/.exists lib/*/*/.exists
-       rm -f h2ph.man pstruct
+       rm -f h2ph.man
        rm -rf .config
        rm -f preload
        rm -f pod2htmd.tmp
@@ -1438,8 +1499,9 @@ depend: makedepend $(DTRACE_H) $(generated_headers)
        test_prep_reonly test_tty test-tty test_notty test-notty \
        test_harness test_harness_notty minitest test-reonly _test
 
+# The _test target is there just for Test::Smoke, which does a make test_prep
+# always before invoking this target, thus preventing checking again
 _test:
-       echo >&2 The _test target is deprecated. Please upgrade your smoker
        $(RUN_TESTS) choose
 
 # Cannot delegate rebuilding of t/perl to make