X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/5d8c8c8a00421e3ae2b8c9a8a0b46c21a04ce04c..1f3ffe4c6058f20e1f7d746ababdd669651e8d2b:/Makefile.SH diff --git a/Makefile.SH b/Makefile.SH index f83288e..a18dff0 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 @@ -26,6 +37,7 @@ case "$0" in */*) cd `expr X$0 : 'X\(.*\)/'` ;; esac +pwd="`pwd`" linklibperl='$(LIBPERL)' linklibperl_nonshr='' shrpldflags='$(LDDLFLAGS)' @@ -37,10 +49,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" @@ -52,7 +62,7 @@ true) -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} \ @@ -119,19 +129,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 @@ -296,7 +306,7 @@ RUN = $run # 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 @@ -433,16 +443,27 @@ xconfig.h: config_h.SH Cross/config-\$(CROSS_NAME).sh ;; 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 <>$Makefile <<'!NO!SUBS!' addedbyconf = UU $(shextract) pstruct @@ -456,7 +477,7 @@ unidatafiles = lib/unicore/Decomposition.pl lib/unicore/TestProp.pl \ 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 @@ -482,7 +503,7 @@ mini_obj = $(minindt_obj) $(MINIDTRACE_O) ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) obj = $(ndt_obj) $(DTRACE_O) -perltoc_pod_prereqs = extra.pods pod/perl5175delta.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) generated_headers = uudmap.h bitcount.h mg_data.h @@ -579,18 +600,21 @@ perl$(OBJ_EXT): git_version.h 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 <>$Makefile <<'!NO!SUBS!' $(MINIPERL_EXE): $& $(mini_obj) $(CC) -o $(MINIPERL_EXE) $(CLDFLAGS) $(mini_obj) $(libs) @@ -1052,15 +1076,16 @@ pod/perltoc.pod: $(perltoc_pod_prereqs) $(PERL_EXE) $(ext) pod/buildtoc 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 -pod/perl5175delta.pod: pod/perldelta.pod - $(RMS) pod/perl5175delta.pod - $(LNS) perldelta.pod pod/perl5175delta.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` @@ -1178,10 +1203,13 @@ regen_headers regen-headers: FORCE -perl regen.pl -v -perl regen/uconfig_h.pl -v -regen_meta 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-all: regen regen_meta @@ -1208,7 +1236,7 @@ manicheck: FORCE $(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 @@ -1258,13 +1286,12 @@ _mopup: -@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 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: @@ -1318,11 +1345,10 @@ _cleaner2: 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 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 lib/Carp @@ -1377,21 +1403,22 @@ MAKEDEPEND = Makefile makedepend $(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 <>$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 \ @@ -1445,7 +1472,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 .clist @@ -1572,12 +1599,6 @@ clist: $(c) 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()' @@ -1592,12 +1613,6 @@ ctags: !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.