+#!/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
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
esac
+pwd="`pwd`"
linklibperl='$(LIBPERL)'
linklibperl_nonshr=''
shrpldflags='$(LDDLFLAGS)'
# 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"
-compatibility_version 1 -current_version $patchlevel \
-prebind -seg1addr 0x27000000 -install_name \$(shrpdir)/\$@"
;;
- rhapsody*|darwin*)
+ darwin*)
shrpldflags="${ldflags} -dynamiclib \
-compatibility_version \
${api_revision}.${api_version}.${api_subversion} \
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
: 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/.*\///'`
# These variables may need to be manually set for non-Unix systems.
AR = $full_ar
-HOST_EXE_EXT =
+HOST_EXE_EXT = $_exe
EXE_EXT = $_exe
LIB_EXT = $_a
OBJ_EXT = $_o
# Mention $gmake here so it gets probed for by Configure.
+!GROK!THIS!
+
+case "${osname}" in
+linux*|darwin)
+$spitshell >>$Makefile <<!GROK!THIS!
# If you're going to use valgrind and it can't be invoked as plain valgrind
# then you'll need to change this, or override it on the make command line.
-VALGRIND=valgrind
+VALGRIND ?= valgrind
+VG_TEST ?= ./perl -e 1 2>/dev/null
+!GROK!THIS!
+ ;;
+esac
+
+$spitshell >>$Makefile <<!GROK!THIS!
DTRACE = $dtrace
DTRACE_H = $dtrace_h
DTRACE_O = $dtrace_o
;;
esac
+SH_to_target() {
+ echo $@ | sed -e s/\\\.SH//g -e s/_/./g
+}
+
+SH='Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH runtests.SH pod/Makefile.SH x2p/Makefile.SH'
+shextract=`SH_to_target $SH`
+
## In the following dollars and backticks do not need the extra backslash.
-$spitshell >>$Makefile <<'!NO!SUBS!'
+$spitshell >>$Makefile <<!GROK!THIS!
-private = preplibrary $(CONFIGPM) $(CONFIGPOD) lib/ExtUtils/Miniperl.pm git_version.h lib/buildcustomize.pl
+private = preplibrary \$(CONFIGPM) \$(CONFIGPOD) lib/ExtUtils/Miniperl.pm git_version.h lib/buildcustomize.pl
# Files to be built with variable substitution before miniperl
# is available.
-sh = Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH pod/Makefile.SH
+sh = $SH
+
+shextract = $shextract
+!GROK!THIS!
-shextract = Makefile cflags config.h makedepend makedir myconfig pod/Makefile
+## In the following dollars and backticks do not need the extra backslash.
+$spitshell >>$Makefile <<'!NO!SUBS!'
addedbyconf = UU $(shextract) pstruct
# Unicode data files generated by mktables
unidatafiles = lib/unicore/Decomposition.pl lib/unicore/TestProp.pl \
lib/unicore/CombiningClass.pl lib/unicore/Name.pl \
+ lib/unicore/UCD.pl lib/unicore/Name.pm \
lib/unicore/Heavy.pl lib/unicore/mktables.lst
# Directories of Unicode data files generated by mktables
unidatadirs = lib/unicore/To lib/unicore/lib
h1 = EXTERN.h INTERN.h XSUB.h av.h $(CONFIGH) cop.h cv.h dosish.h
-h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h opcode.h
+h2 = embed.h form.h gv.h handy.h hv.h hv_func.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 mydtrace.h op_reg_common.h l1_char_class_tab.h
-h = $(h1) $(h2) $(h3) $(h4) $(h5)
+h6 = charclass_invlists.h
+h = $(h1) $(h2) $(h3) $(h4) $(h5) $(h6)
c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro.c perl.c
c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c
ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
obj = $(ndt_obj) $(DTRACE_O)
-perltoc_pod_prereqs = extra.pods pod/perl5152delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5191delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
-
-Icwd = -Idist/Cwd -Idist/Cwd/lib
+generated_headers = uudmap.h bitcount.h mg_data.h
lintflags = \
-b \
case "$usedl$static_cwd" in
defineundef)
util_deps='$(MINIPERL_EXE) $(CONFIGPM) lib/auto/Cwd/Cwd$(DLSUFFIX) FORCE'
- x2p_deps='$(MINIPERL_EXE) $(CONFIGPM) $(dynamic_ext) FORCE'
+ x2p_deps="\$(MINIPERL_EXE) \$(CONFIGPM) \$(dynamic_ext) x2p/$firstmakefile FORCE"
;;
definedefine)
util_deps='$(PERL_EXE) $(CONFIGPM) FORCE'
- x2p_deps='$(PERL_EXE) $(CONFIGPM) $(dynamic_ext) FORCE'
+ x2p_deps="\$(PERL_EXE) \$(CONFIGPM) \$(dynamic_ext) x2p/$firstmakefile FORCE"
;;
*) util_deps='$(PERL_EXE) $(CONFIGPM) FORCE'
- x2p_deps='$(PERL_EXE) $(CONFIGPM) FORCE'
+ x2p_deps="\$(PERL_EXE) \$(CONFIGPM) x2p/$firstmakefile FORCE"
;;
esac
$spitshell >>$Makefile <<!GROK!THIS!
+x2p/$firstmakefile: makedepend
+ cd x2p; \$(MAKE) depend
+
translators: $x2p_deps
@echo " "; echo " Making x2p stuff"; cd x2p; \$(LDLIBPTH) \$(MAKE) all
$spitshell >>$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
;;
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!
;;
$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!
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)
# build problems but that's not obvious to the novice.
# The Module used here must not depend on Config or any extensions.
+# The seemingly cranky ordering of having $(MINIPERL_EXE) depend on
+# lib/buildcustomize.pl despite the reality that lib/buildcustomize.pl needs
+# miniperl to exist first permits us to
+# a) have one rule generate both miniperl and lib/buildcustomize.pl
+# (so that lib/buildcustomise.pl is always available. This simplifies things)
+# b) have the rest of the Makefile depend on the more obvious $(MINIPERL_EXE)
+
+$(MINIPERL_EXE): lib/buildcustomize.pl
+
!NO!SUBS!
case "${osname}${osvers}" in
- aix*|beos*)
+ aix*)
$spitshell >>$Makefile <<'!NO!SUBS!'
-$(MINIPERL_EXE): $& $(mini_obj)
+lib/buildcustomize.pl: $& $(mini_obj)
$(CC) -o $(MINIPERL_EXE) $(CLDFLAGS) $(mini_obj) $(libs)
- $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl. Please run make minitest; exit 1'
+ $(MINIPERL) -f write_buildcustomize.pl
!NO!SUBS!
;;
next4*)
$spitshell >>$Makefile <<'!NO!SUBS!'
-$(MINIPERL_EXE): $& $(mini_obj)
- $(CC) -o $(MINIPERL_EXE) $(mini_obj) $(libs)
- $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+lib/buildcustomize.pl: $& $(mini_obj) write ldcustomize.pl
+ $(CC) -o $(MINIPERL_EXE) $(mini_obj libs)
+ $(LDLIBPTH) $(RUN) ./miniperl$(HOST _EXT) -w -Ilib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl. Please run make minitest; exit 1'
+ $(MINIPERL) -f write_buildcustomize.pl
!NO!SUBS!
;;
darwin*)
;;
esac
$spitshell >>$Makefile <<'!NO!SUBS!'
-$(MINIPERL_EXE): $& $(mini_obj)
+lib/buildcustomize.pl: $& $(mini_obj) write_buildcustomize.pl
-@rm -f miniperl.xok
$(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
$(mini_obj) $(libs)
- $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl. Please run make minitest; exit 1'
+ $(MINIPERL) -f write_buildcustomize.pl
!NO!SUBS!
;;
*)
$spitshell >>$Makefile <<'!NO!SUBS!'
-$(MINIPERL_EXE): $& $(mini_obj)
+lib/buildcustomize.pl: $& $(mini_obj) write_buildcustomize.pl
-@rm -f miniperl.xok
$(LDLIBPTH) $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
$(mini_obj) $(libs)
- $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl. Please run make minitest; exit 1'
+ $(MINIPERL) -f write_buildcustomize.pl
!NO!SUBS!
;;
esac
$spitshell >>$Makefile <<'!NO!SUBS!'
-$(PERL_EXE): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT)
+$(PERL_EXE): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) write_buildcustomize.pl
-@rm -f miniperl.xok
$(SHRPENV) $(LDLIBPTH) $(CC) -o perl$(PERL_SUFFIX) $(PERL_PROFILE_LDFLAGS) $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
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..."
@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)
$spitshell >>$Makefile <<'!NO!SUBS!'
.PHONY: makeppport
makeppport: $(MINIPERL_EXE) $(CONFIGPM) $(nonxs_ext)
- $(MINIPERL) $(Icwd) mkppport
+ $(MINIPERL) mkppport
!NO!SUBS!
;;
lib/ExtUtils/Miniperl.pm: miniperlmain.c $(MINIPERL_EXE) minimod.pl $(CONFIGPM)
$(MINIPERL) minimod.pl > lib/ExtUtils/Miniperl.pm
-lib/buildcustomize.pl: $(MINIPERL_EXE) write_buildcustomize.pl
- $(MINIPERL) write_buildcustomize.pl >lib/buildcustomize.pl
-
unidatafiles $(unidatafiles) pod/perluniprops.pod: uni.data
uni.data: $(MINIPERL_EXE) $(CONFIGPM) lib/unicore/mktables $(nonxs_ext)
- $(MINIPERL) $(Icwd) lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p
+ $(MINIPERL) lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p
# Commented out so always runs, mktables looks at far more files than we
# can in this makefile to decide if needs to run or not
# touch uni.data
# 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
-pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
+# Depending on $(nonxs_ext) gets us Text::Wrap built
+pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc $(nonxs_ext)
$(MINIPERL) autodoc.pl
pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
- $(MINIPERL) $(Icwd) pod/perlmodlib.PL -q
+ $(MINIPERL) pod/perlmodlib.PL -q
-pod/perl5152delta.pod: pod/perldelta.pod
- $(LNS) perldelta.pod pod/perl5152delta.pod
+pod/perl5191delta.pod: pod/perldelta.pod
+ $(RMS) pod/perl5191delta.pod
+ $(LNS) perldelta.pod pod/perl5191delta.pod
extra.pods: $(MINIPERL_EXE)
-@test ! -f extra.pods || rm -f `cat extra.pods`
.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
--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
.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
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
# 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.json
META.yml: FORCE
- PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) -Ilib Porting/makemeta
+ PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) -Ilib Porting/makemeta -y
+META.json: FORCE
+ PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) -Ilib Porting/makemeta -j
-regen_all: regen regen_meta
+
+regen_all regen-all: regen regen_meta
.PHONY: manisort manicheck
$(DYNALOADER): $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary FORCE $(nonxs_ext)
$(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=static $(STATIC_LDFLAGS)
-d_dummy $(dynamic_ext): $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary makeppport $(DYNALOADER) FORCE $(PERLEXPORT)
+d_dummy $(dynamic_ext): $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary makeppport $(DYNALOADER) FORCE $(PERLEXPORT) $(LIBPERL)
$(MINIPERL) make_ext.pl $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic
s_dummy $(static_ext): $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary makeppport $(DYNALOADER) FORCE
# 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
-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 cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump
-rm -f $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl
- -rm -f config.arch config.over $(DTRACE_H) runtests
+ -rm -f config.arch config.over $(DTRACE_H)
# Do not 'make _tidy' directly.
_tidy:
sh $(CLEAN).sh ; \
fi
rm -f realclean.sh veryclean.sh
- -for file in `find cpan dist ext -name ppport.h` ; do rm -f $$file; done
+ -rm -f `grep -v ^# mkppport.lst | grep . | sed -e 's/$$/\/ppport.h/'`
# Dear POSIX, thanks for making the default to xargs to be
# run once if nothhing is passed in. It is such a great help.
rm -f lib/ExtUtils/ParseXS/t/XSTest$(OBJ_EXT)
rm -f lib/ExtUtils/ParseXS/t/XSTest$(DLSUFFIX)
rm -fr lib/B
- rm -fr lib/CPAN lib/CPANPLUS
+ rm -fr lib/CPAN
rm -fr lib/ExtUtils/CBuilder
- -rmdir cpan/CPANPLUS-Dist-Build/t/dummy-cpanplus cpan/CPANPLUS/t/dummy-cpanplus cpan/CPANPLUS/t/dummy-localmirror
+ rm -f pod2htmd.tmp
+ rm -rf pod/perlfunc pod/perlipc
-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
$(FIRSTMAKEFILE): README $(MAKEDEPEND)
$(MAKE) depend MAKEDEPEND=
+!NO!SUBS!
-config.h: config_h.SH config.sh
- $(SHELL) config_h.SH
+for f in $SH; do
+ file=`SH_to_target $f`
+ $spitshell >>$Makefile <<!GROK!THIS!
-.PHONY: depend
-depend: makedepend
- sh ./makedepend MAKE=$(MAKE)
- cd x2p; $(MAKE) depend
+$file: $f config.sh
+ \$(SHELL) $f
+!GROK!THIS!
+done
-# Cannot postpone this until $firstmakefile is ready ;-)
-makedepend: makedepend.SH config.sh
- sh ./makedepend.SH
+$spitshell >>$Makefile <<'!NO!SUBS!'
-runtests: runtests.SH config.sh
- sh ./runtests.SH
+.PHONY: depend
+depend: makedepend
+ sh ./makedepend MAKE=$(MAKE) cflags
.PHONY: test check test_prep test_prep_nodll test_prep_pre \
test_prep_reonly test_tty test-tty test_notty test-notty \
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))
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
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
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 </dev/tty
+ && $(RUN_PERL) TEST -utf16 base/*.t comp/*.t cmd/*.t run/*.t io/*.t opbasic/*.t op/*.t uni/*.t </dev/tty
test.utf16 check.utf16: test_prep
TEST_ARGS=-utf16 $(RUN_TESTS) choose
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
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.
# 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 </dev/tty
+ && $(RUN_PERL) TEST base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t opbasic/*.t op/*.t uni/*.t </dev/tty
# 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
nokfilenack: utilities
$(RUN_PERL) -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -F perl.nok -A
-.PHONY: clist hlist shlist
+.PHONY: clist hlist
clist: $(c)
echo $(c) | tr ' ' $(TRNL) >.clist
hlist: $(h)
echo $(h) | tr ' ' $(TRNL) >.hlist
-shlist: $(sh)
- echo $(sh) | tr ' ' $(TRNL) >.shlist
-
-Makefile: Makefile.SH ./config.sh
- $(SHELL) Makefile.SH
-
.PHONY: distcheck
distcheck: FORCE
perl '-MExtUtils::Manifest=&fullcheck' -e 'fullcheck()'
!NO!SUBS!
$eunicefix Makefile
-case `pwd` in
-*SH)
- $rm -f ../Makefile
- $ln Makefile ../Makefile
- ;;
-esac
$rm -f $firstmakefile
# Now do any special processing required before building.
cd ..
fi
;;
-vmesa)
- # Do nothing in VM/ESA.
- ;;
*)
echo "'$osname' is an EBCDIC system I don't know that well." >&4
;;