"Fossies" - the Fresh Open Source Software Archive

Member "perl-5.30.3/Makefile.SH" (14 May 2020, 53448 Bytes) of package /linux/misc/perl-5.30.3.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "Makefile.SH": 5.30.2_vs_5.30.3.

    1 #!/bin/sh
    2 
    3 # quote() - Creates a shell literal
    4 # Usage:  echo "...` quote "..." `..."
    5 quote() {
    6     case "$1" in
    7     '') echo "''" ;;
    8     *)  echo "$1" | sed 's/\([^a-zA-Z0-9.:_/-]\)/\\\1/g' ;;
    9     esac
   10 }
   11 
   12 case $PERL_CONFIG_SH in
   13 '')
   14     if test -f config.sh
   15         then TOP=.
   16     else
   17         echo "Can't find config.sh."; exit 1
   18     fi
   19     . $TOP/config.sh
   20     ;;
   21 esac
   22 
   23 case "$osname" in
   24 amigaos)
   25     devtty=CONSOLE:
   26     ;;
   27 *)
   28     devtty=/dev/tty
   29     ;;
   30 esac
   31 
   32 Makefile=Makefile
   33 
   34 : This forces SH files to create target in same directory as SH file.
   35 : This is so that make depend always knows where to find SH derivatives.
   36 case "$0" in
   37 */*) cd `expr X$0 : 'X\(.*\)/'` ;;
   38 esac
   39 
   40 pwd="`pwd`"
   41 linklibperl='$(LIBPERL)'
   42 linklibperl_nonshr=''
   43 shrpldflags='$(LDDLFLAGS)'
   44 ldlibpth=''
   45 DPERL_EXTERNAL_GLOB='-DPERL_EXTERNAL_GLOB'
   46 DPERL_IS_MINIPERL='-DPERL_IS_MINIPERL'
   47 case "$useshrplib" in
   48 true)
   49     # Prefix all runs of 'miniperl' and 'perl' with
   50     # $ldlibpth so that ./perl finds *this* shared libperl.
   51     case "$LD_LIBRARY_PATH" in
   52     '')  ldlibpth="LD_LIBRARY_PATH=` quote "$pwd" `" ;;
   53     *)   ldlibpth="LD_LIBRARY_PATH=` quote "$pwd" `:` quote "$LD_LIBRARY_PATH" `" ;;
   54     esac
   55 
   56     pldlflags="$cccdlflags"
   57     static_ldflags=''
   58     case "${osname}${osvers}" in
   59     next4*)
   60         ld=libtool
   61         lddlflags="-dynamic -undefined warning -framework System \
   62         -compatibility_version 1 -current_version $patchlevel \
   63         -prebind -seg1addr 0x27000000 -install_name \$(shrpdir)/\$@"
   64         ;;
   65     darwin*)
   66         shrpldflags="${ldflags} -dynamiclib \
   67                             -compatibility_version \
   68                 ${api_revision}.${api_version}.${api_subversion} \
   69                  -current_version \
   70                 ${revision}.${patchlevel}.${subversion}"
   71         case "$osvers" in
   72             1[5-9]*|[2-9]*)
   73             shrpldflags="$shrpldflags -install_name `pwd`/\$@ -Xlinker -headerpad_max_install_names"
   74             exeldflags="-Xlinker -headerpad_max_install_names"
   75             ;;
   76         *)
   77             shrpldflags="$shrpldflags -install_name \$(shrpdir)/\$@"
   78             ;;
   79         esac
   80         ;;
   81     cygwin*)
   82         shrpldflags="$shrpldflags -Wl,--out-implib=libperl.dll.a -Wl,--image-base,0x52000000"
   83         linklibperl="-L. -lperl"
   84         ;;
   85     sunos*)
   86         linklibperl="-lperl"
   87         ;;
   88     netbsd*|freebsd[234]*|openbsd*|dragonfly*|bitrig*)
   89         linklibperl="-L. -lperl"
   90         ;;
   91     interix*)
   92         linklibperl="-L. -lperl"
   93         shrpldflags="$shrpldflags -Wl,--image-base,0x57000000"
   94         ;;
   95     aix*)
   96         case "$cc" in
   97         gcc*)
   98             shrpldflags="-shared -Wl,-H512 -Wl,-T512 -Wl,-bhalt:4 -Wl,-bM:SRE -Wl,-bE:perl.exp"
   99             case "$osvers" in
  100             3*) shrpldflags="$shrpldflags -e _nostart"
  101                 ;;
  102             *)  shrpldflags="$shrpldflags -Wl,-bnoentry"
  103                 ;;
  104             esac
  105             shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib"
  106             linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl"
  107             linklibperl_nonshr='-lperl_nonshr'
  108             ;;
  109         *)
  110             shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp"
  111             case "$osvers" in
  112             3*) shrpldflags="$shrpldflags -e _nostart"
  113                 ;;
  114             *)  shrpldflags="$shrpldflags -b noentry"
  115                 ;;
  116             esac
  117             shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib"
  118             linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl"
  119             linklibperl_nonshr='-lperl_nonshr'
  120             ;;
  121         esac
  122         ;;
  123     hpux*)
  124         linklibperl="-L `pwd | sed 's/\/UU$//'` -Wl,+s -Wl,+b$archlibexp/CORE -lperl"
  125         ;;
  126     os390*)
  127             shrpldflags='-W l,XPLINK,dll'
  128         linklibperl='libperl.x'
  129         DPERL_EXTERNAL_GLOB=''
  130         ;;
  131     esac
  132     case "$ldlibpthname" in
  133     '') ;;
  134     *)
  135         case "$osname" in
  136         os2)
  137             ldlibpth=''
  138             ;;
  139         *)
  140         eval "ldlibpthval=\"\$$ldlibpthname\""
  141 
  142         case "$ldlibpthval" in
  143         '')  ldlibpth="$ldlibpthname=` quote "$pwd" `" ;;
  144         *)   ldlibpth="$ldlibpthname=` quote "$pwd" `:` quote "$ldlibpthval" `" ;;
  145         esac
  146 
  147         ;;
  148         esac
  149 
  150         ;;
  151         esac
  152 
  153     case "$osname" in
  154     linux)
  155         # If there is a pre-existing $libperl from a previous
  156         # installation, Linux needs to use LD_PRELOAD to
  157         # override the LD_LIBRARY_PATH setting.  See the
  158         # INSTALL file, under "Building a shared perl library".
  159         # If there is no pre-existing $libperl, we don't need
  160         # to do anything further.
  161         if test -f $archlib/CORE/$libperl; then
  162         rm -f preload
  163         cat <<'EOT' > preload
  164 #! /bin/sh
  165 lib=$1
  166 shift
  167 test -r $lib && export LD_PRELOAD="$lib $LD_PRELOAD"
  168 exec "$@"
  169 EOT
  170         chmod 755 preload
  171         ldlibpth="$ldlibpth `pwd`/preload `pwd`/$libperl"
  172         fi
  173         ;;
  174     os390)  test -f /bin/env && ldlibpth="/bin/env $ldlibpth"
  175         ;;
  176     esac
  177 
  178     ;;
  179 
  180 *)  pldlflags=''
  181     static_ldflags='CCCDLFLAGS='
  182     ;;
  183 esac
  184 
  185 : is Cwd static or dynamic
  186 static_cwd='define'
  187 list_util_dep='$(PERL_EXE)'
  188 for f in $dynamic_ext; do
  189    case $f in
  190        Cwd) static_cwd='undef' ;;
  191        List/Util) list_util_dep=lib/auto/List/Util/Util.$dlext ;;
  192    esac
  193 done
  194 
  195 : Prepare dependency lists for Makefile.
  196 dynamic_list=' '
  197 dynamic_ext_re="lib/auto/re/re.$dlext"
  198 extra_dep='
  199 ext/Pod-Functions/pm_to_blib: cpan/Pod-Simple/pm_to_blib cpan/Pod-Escapes/pm_to_blib pod/perlfunc.pod
  200 cpan/IO-Compress/pm_to_blib: dist/lib/pm_to_blib
  201 '
  202 for f in $dynamic_ext; do
  203     : the dependency named here will never exist
  204       base=`echo "$f" | sed 's/.*\///'`
  205     this_target="lib/auto/$f/$base.$dlext"
  206     dynamic_list="$dynamic_list $this_target"
  207 
  208     : Parallel makes reveal that we have some interdependencies
  209     case $f in
  210     Math/BigInt/FastCalc|Devel/NYTProf) extra_dep="$extra_dep
  211 $this_target: $list_util_dep" ;;
  212     Unicode/Normalize) extra_dep="$extra_dep
  213 $this_target: uni.data" ;;
  214     esac
  215 done
  216 
  217 static_list=' '
  218 for f in $static_ext; do
  219     base=`echo "$f" | sed 's/.*\///'`
  220     static_list="$static_list lib/auto/$f/$base\$(LIB_EXT)"
  221     : Parallel makes reveal that we have some interdependencies
  222     this_target="lib/auto/$f/$base\$(LIB_EXT)"
  223     case $f in
  224     Math/BigInt/FastCalc|Devel/NYTProf) extra_dep="$extra_dep
  225 $this_target: lib/auto/List/Util/Util\$(LIB_EXT)" ;;
  226     Unicode/Normalize) extra_dep="$extra_dep
  227 $this_target: uni.data" ;;
  228     esac
  229 done
  230 
  231 nonxs_list=' '
  232 for f in $nonxs_ext; do
  233     p=`echo "$f" | tr / -`
  234     for d in ext dist cpan; do
  235     if test -d $d/$p; then
  236         nonxs_list="$nonxs_list $d/$p/pm_to_blib"
  237     fi
  238     done
  239 done
  240 
  241 dtrace_h=''
  242 
  243 # three object files generated by 'dtrace -G' when dtrace is enabled
  244 dtrace_perllib_o=''
  245 dtrace_mini_o=''
  246 dtrace_main_o=''
  247 
  248 case "$usedtrace" in
  249 define|true)
  250     dtrace_h='perldtrace.h'
  251     case "$dtraceobject" in
  252     define)
  253         dtrace_perllib_o='dtrace_perllib$(OBJ_EXT)'
  254         dtrace_mini_o='dtrace_mini$(OBJ_EXT)'
  255         dtrace_main_o='dtrace_main$(OBJ_EXT)'
  256         ;;
  257     esac
  258     ;;
  259 esac
  260 
  261 echo "Extracting $Makefile (with variable substitutions)"
  262 $spitshell >$Makefile <<!GROK!THIS!
  263 # $Makefile
  264 # This file is derived from Makefile.SH.  Any changes made here will
  265 # be lost the next time you run Configure.
  266 #  Makefile is used to generate $firstmakefile.  The only difference
  267 #  is that $firstmakefile has the dependencies filled in at the end.
  268 
  269 CC = $cc
  270 LD = $ld
  271 
  272 LDFLAGS = $ldflags
  273 CLDFLAGS = $ldflags
  274 
  275 mallocsrc = $mallocsrc
  276 mallocobj = $mallocobj
  277 LNS = $lns
  278 # NOTE: some systems don't grok "cp -f". XXX Configure test needed?
  279 CPS = $cp
  280 RMS = rm -f
  281 ranlib = $ranlib
  282 ECHO = $echo
  283 
  284 # The following are mentioned only to make metaconfig include the
  285 # appropriate questions in Configure.  If you want to change these,
  286 # edit config.sh instead, or specify --man1dir=/wherever on
  287 # installman commandline.
  288 bin = $installbin
  289 scriptdir = $scriptdir
  290 shrpdir = $archlibexp/CORE
  291 privlib = $installprivlib
  292 man1dir = $man1dir
  293 man1ext = $man1ext
  294 man3dir = $man3dir
  295 man3ext = $man3ext
  296 
  297 # The following are used to build and install shared libraries for
  298 # dynamic loading.
  299 LDDLFLAGS = $lddlflags
  300 SHRPLDFLAGS = $shrpldflags
  301 CCDLFLAGS = $ccdlflags
  302 DLSUFFIX = .$dlext
  303 PLDLFLAGS = $pldlflags
  304 LIBPERL = $libperl
  305 LLIBPERL= $linklibperl
  306 LLIBPERL_NONSHR= $linklibperl_nonshr
  307 SHRPENV = $shrpenv
  308 
  309 # Static targets are ordinarily built without CCCDLFLAGS.  However,
  310 # if building a shared libperl.so that might later be linked into
  311 # another application, then it might be appropriate to also build static
  312 # extensions (usually just DynaLoader) with relocatable code (e.g. -fPIC
  313 # for GNU cc).
  314 STATIC_LDFLAGS = $static_ldflags
  315 
  316 # The following is used to include the current directory in
  317 # the dynamic loader path you are building a shared libperl.
  318 LDLIBPTH = $ldlibpth
  319 
  320 # Sometimes running an executable is an adventure.
  321 RUN = 
  322 
  323 # When cross-compiling we want to use a (mini)perl built for the host, not the target
  324 HOST_PERL = $hostperl
  325 HOST_GENERATE = $hostgenerate
  326 SYSTEM_PERL = $perl
  327 
  328 # These variables may need to be manually set for non-Unix systems.
  329 AR = $full_ar
  330 HOST_EXE_EXT = $_exe
  331 EXE_EXT = $_exe
  332 LIB_EXT = $_a
  333 OBJ_EXT = $_o
  334 PATH_SEP = $p_
  335 
  336 # Macros to invoke a copy of miniperl during the build.  Targets which
  337 # are built using these macros should depend on \$(MINIPERL_EXE)
  338 MINIPERL_EXE = miniperl\$(EXE_EXT)
  339 MINIPERL = \$(LDLIBPTH) ./miniperl\$(EXE_EXT) -Ilib
  340 
  341 # Macros to invoke sort the MANIFEST during build
  342 MANIFEST_SRT = MANIFEST.srt
  343 
  344 !GROK!THIS!
  345 
  346 case "$useshrplib$osname" in
  347 truedarwin)
  348     $spitshell >>$Makefile <<!GROK!THIS!
  349 PERL_EXE_LDFLAGS=$exeldflags
  350 !GROK!THIS!
  351     ;;
  352 esac
  353 
  354 case "$usecrosscompile$perl" in
  355 define?*)
  356     $spitshell >>$Makefile <<!GROK!THIS!
  357 # Macros to invoke a copy of our fully operational perl during the build.
  358 PERL_EXE = perl\$(EXE_EXT)
  359 RUN_PERL = \$(LDLIBPTH) \$(RUN) $perl\$(EXE_EXT)
  360 !GROK!THIS!
  361     ;;
  362 *)
  363     $spitshell >>$Makefile <<!GROK!THIS!
  364 # Macros to invoke a copy of our fully operational perl during the build.
  365 PERL_EXE = perl\$(EXE_EXT)
  366 RUN_PERL = \$(LDLIBPTH) \$(RUN) ./perl\$(EXE_EXT) -Ilib -I.
  367 !GROK!THIS!
  368     ;;
  369 esac
  370 
  371 $spitshell >>$Makefile <<!GROK!THIS!
  372 # Macros to run our tests
  373 RUN_TESTS = \$(LDLIBPTH) ./runtests
  374 
  375 dynamic_ext = $dynamic_list
  376 dynamic_ext_re = $dynamic_ext_re
  377 static_ext = $static_list
  378 nonxs_ext = $nonxs_list
  379 ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
  380 DYNALOADER = DynaLoader\$(OBJ_EXT)
  381 
  382 libs = $perllibs $cryptlib
  383 
  384 public = \$(PERL_EXE) utilities
  385 
  386 shellflags = $shellflags
  387 
  388 # The /dev/tty or the moral equivalent.
  389 devtty = $devtty
  390 
  391 # This is set to  MAKE=$make if your $make command doesn't
  392 # do it for you.
  393 $make_set_make
  394 
  395 # Mention $gmake here so it gets probed for by Configure.
  396 
  397 !GROK!THIS!
  398 
  399 case "${osname}" in
  400 linux*|darwin)
  401 $spitshell >>$Makefile <<!GROK!THIS!
  402 # If you're going to use valgrind and it can't be invoked as plain valgrind
  403 # then you'll need to change this, or override it on the make command line.
  404 VALGRIND ?= valgrind
  405 VG_TEST  ?= ./perl -e 1 2>/dev/null
  406 
  407 !GROK!THIS!
  408     ;;
  409 esac
  410 
  411 case "$dtracexnolibs" in
  412 define) xnolibs=-xnolibs ;;
  413 *) xnolibs= ;;
  414 esac
  415 
  416 $spitshell >>$Makefile <<!GROK!THIS!
  417 DTRACE = $dtrace $xnolibs
  418 DTRACE_H = $dtrace_h
  419 
  420 DTRACE_PERLLIB_O = $dtrace_perllib_o # "dtrace -G" output for perllib_objs
  421 DTRACE_MINI_O    = $dtrace_mini_o    # "dtrace -G" output for common and mini
  422 DTRACE_MAIN_O    = $dtrace_main_o    # "dtrace -G" output for perlmain.o
  423 
  424 FIRSTMAKEFILE = $firstmakefile
  425 
  426 # Any special object files needed by this architecture, e.g. os2/os2.obj
  427 ARCHOBJS = $archobjs
  428 
  429 .SUFFIXES: .c \$(OBJ_EXT) .i .s
  430 
  431 # grrr
  432 SHELL = $sh
  433 
  434 # how to tr(anslate) newlines
  435 TRNL = '$trnl'
  436 
  437 OPTIMIZE = $optimize
  438 
  439 EXTRAS = $extras
  440 
  441 INSTALLPREFIXEXP = $prefix
  442 
  443 !GROK!THIS!
  444 # not used by Makefile but by installperl;
  445 # mentioned here so that metaconfig picks these up
  446 # $installusrbinperl
  447 # $versiononly
  448 
  449 case "${osname}:${osvers}" in
  450 darwin:*)
  451 $spitshell >>$Makefile <<EOF
  452 
  453 # Your locales are broken (osname $osname, osvers $osvers)
  454 # and to avoid the numerous
  455 # perl: warning: Setting locale failed.
  456 # warnings during the build process we reset the locale variables.
  457 
  458 LC_ALL=C
  459 LANG=C
  460 LANGUAGE=C
  461 EOF
  462     ;;
  463 esac
  464 
  465 ## In the following dollars and backticks do not need the extra backslash.
  466 $spitshell >>$Makefile <<'!NO!SUBS!'
  467 
  468 CCCMD    = sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $@
  469 
  470 CCCMDSRC = sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $<
  471 
  472 CONFIGPM_FROM_CONFIG_SH = lib/Config.pm lib/Config_heavy.pl
  473 CONFIGPM = $(CONFIGPM_FROM_CONFIG_SH) lib/Config_git.pl
  474 
  475 CONFIGPOD = lib/Config.pod
  476 
  477 CONFIGH = config.h
  478 !NO!SUBS!
  479 
  480 SH_to_target() {
  481     echo $@ | sed -e s/\\\.SH//g -e s/_/./g
  482 }
  483 
  484 SH='Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH runtests.SH pod/Makefile.SH'
  485 shextract=`SH_to_target $SH`
  486 
  487 ## In the following dollars and backticks do not need the extra backslash.
  488 $spitshell >>$Makefile <<!GROK!THIS!
  489 
  490 private = preplibrary \$(CONFIGPM) \$(CONFIGPOD) git_version.h lib/buildcustomize.pl
  491 
  492 # Files to be built with variable substitution before miniperl
  493 # is available.
  494 sh = $SH
  495 
  496 shextract = $shextract
  497 !GROK!THIS!
  498 
  499 ## In the following dollars and backticks do not need the extra backslash.
  500 $spitshell >>$Makefile <<'!NO!SUBS!'
  501 
  502 addedbyconf = UU $(shextract)
  503 
  504 # Unicode data files generated by mktables
  505 unidatafiles = lib/unicore/Decomposition.pl lib/unicore/TestProp.pl \
  506     lib/unicore/CombiningClass.pl lib/unicore/Name.pl \
  507     lib/unicore/UCD.pl lib/unicore/Name.pm \
  508     lib/unicore/Heavy.pl lib/unicore/mktables.lst
  509 
  510 # Directories of Unicode data files generated by mktables
  511 unidatadirs = lib/unicore/To lib/unicore/lib
  512 
  513 h1 = EXTERN.h INTERN.h XSUB.h av.h $(CONFIGH) cop.h cv.h dosish.h
  514 h2 = embed.h form.h gv.h handy.h hv.h hv_func.h keywords.h mg.h op.h opcode.h
  515 h3 = pad.h patchlevel.h perl.h perlapi.h perly.h pp.h proto.h regcomp.h
  516 h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h
  517 h5 = utf8.h warnings.h mydtrace.h op_reg_common.h l1_char_class_tab.h
  518 h6 = charclass_invlists.h
  519 h = $(h1) $(h2) $(h3) $(h4) $(h5) $(h6)
  520 
  521 c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro_core.c perl.c
  522 c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c
  523 c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c
  524 c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c caretx.c dquote.c time64.c
  525 c5 = $(mallocsrc)
  526 
  527 c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c opmini.c perlmini.c
  528 
  529 obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro_core$(OBJ_EXT) keywords$(OBJ_EXT)
  530 obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT)
  531 obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) caretx$(OBJ_EXT) dquote$(OBJ_EXT) time64$(OBJ_EXT)
  532 
  533 # split the objects into 3 exclusive sets: those used by both miniperl and
  534 # perl, and those used by just one or the other. Doesn't include the
  535 # actual perl(mini)main.o, nor any dtrace objects.
  536 
  537 common_objs    = $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
  538 mini_only_objs = opmini$(OBJ_EXT) perlmini$(OBJ_EXT)
  539 main_only_objs = op$(OBJ_EXT)     perl$(OBJ_EXT)
  540 
  541 miniperl_objs_nodt = $(mini_only_objs) $(common_objs) miniperlmain$(OBJ_EXT)
  542 perllib_objs_nodt  = $(main_only_objs) $(common_objs)
  543 
  544 !NO!SUBS!
  545 
  546 # dtrace with -G modifies the source object files, which can cause
  547 # dependency issues, and can cause the dtrace -G to fail on FreeBSD
  548 # so separate the objects generated by $(CC) from those used to link
  549 # the executable when dtrace -G is involved.
  550 #
  551 # $(FOO:op%os=np%ns) isn't generally portable but is portable to
  552 # the makes on darwin, Solaris, FreeBSD and Linux, which is where we
  553 # use dtrace
  554 
  555 case "$usedtrace:$dtraceobject" in
  556 define:define)
  557     $spitshell >>$Makefile <<'!NO!SUBS!'
  558 
  559 miniperl_dtrace_objs = $(miniperl_objs_nodt:%=mpdtrace/%)
  560 perllib_dtrace_objs = $(perllib_objs_nodt:%=libpdtrace/%)
  561 perlmain_dtrace_objs = maindtrace/perlmain$(OBJ_EXT)
  562 
  563 miniperl_objs = $(miniperl_dtrace_objs) $(DTRACE_MINI_O)
  564 perllib_objs  = $(perllib_dtrace_objs) $(DTRACE_PERLLIB_O)
  565 perlmain_objs = $(perlmain_dtrace_objs) $(DTRACE_MAIN_O)
  566 
  567 miniperl_dep = $(DTRACE_MINI_O)
  568 perllib_dep = $(DTRACE_PERLLIB_O)
  569 perlmain_dep = $(DTRACE_MAIN_O)
  570 
  571 !NO!SUBS!
  572     ;;
  573 *)
  574     $spitshell >>$Makefile <<'!NO!SUBS!'
  575 
  576 miniperl_objs = $(miniperl_objs_nodt) $(DTRACE_MINI_O)
  577 perllib_objs  = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O)
  578 perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O)
  579 
  580 miniperl_dep = $(miniperl_objs)
  581 perllib_dep = $(perllib_objs)
  582 perlmain_dep = $(perlmain_objs)
  583 
  584 !NO!SUBS!
  585     ;;
  586 esac
  587 
  588 $spitshell >>$Makefile <<'!NO!SUBS!'
  589 
  590 perltoc_pod_prereqs = extra.pods pod/perl5303delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
  591 generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
  592 generated_headers = uudmap.h bitcount.h mg_data.h
  593 
  594 lintflags = \
  595     -b \
  596     -n \
  597     -p \
  598     -Ncheck=%all \
  599     -Nlevel=4 \
  600     -errchk=parentheses \
  601     -errhdr=%all \
  602     -errfmt=src \
  603     -errtags \
  604     -erroff=E_ASSIGN_NARROW_CONV \
  605     -erroff=E_BAD_PTR_CAST \
  606     -erroff=E_BAD_PTR_CAST_ALIGN \
  607     -erroff=E_BAD_PTR_INT_COMBINATION \
  608     -erroff=E_BAD_SIGN_EXTEND \
  609     -erroff=E_BLOCK_DECL_UNUSED \
  610     -erroff=E_CASE_FALLTHRU \
  611     -erroff=E_CONST_EXPR \
  612     -erroff=E_CONSTANT_CONDITION \
  613     -erroff=E_END_OF_LOOP_CODE_NOT_REACHED \
  614     -erroff=E_EQUALITY_NOT_ASSIGNMENT \
  615     -erroff=E_EXPR_NULL_EFFECT \
  616     -erroff=E_FALSE_LOGICAL_EXPR \
  617     -erroff=E_INCL_NUSD \
  618     -erroff=E_LOOP_EMPTY \
  619     -erroff=E_MAIN_PARAM \
  620     -erroff=E_POINTER_TO_OBJECT \
  621     -erroff=E_PTRDIFF_OVERFLOW \
  622     -erroff=E_SHIFT_CNT_NEG_TOO_BIG_L \
  623     -erroff=E_STATIC_UNUSED \
  624     -erroff=E_TRUE_LOGICAL_EXPR
  625 
  626 .c$(OBJ_EXT): 
  627     @echo `$(CCCMD)` $(PLDLFLAGS) $*.c
  628     @`$(CCCMD)` $(PLDLFLAGS) $*.c
  629 
  630 .c.i:   perl.h config.h
  631     @echo `$(CCCMDSRC)` -E $*.c \> $*.i
  632     @`$(CCCMDSRC)` -E $*.c > $*.i
  633 
  634 .c.s:   perl.h config.h
  635     @echo `$(CCCMDSRC)` -S $*.c
  636     @`$(CCCMDSRC)` -S $*.c
  637 
  638 all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) $(generated_pods) $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make $(MANIFEST_SRT) common_build
  639     @echo " ";
  640     @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
  641 
  642 $(MANIFEST_SRT):    MANIFEST $(PERL_EXE)
  643     @$(RUN_PERL) Porting/manisort -q || (echo "WARNING: re-sorting MANIFEST"; \
  644         $(RUN_PERL) Porting/manisort -q -o MANIFEST; sh -c true)
  645     @touch $(MANIFEST_SRT)
  646 
  647 .PHONY: all utilities
  648 
  649 # Both git_version.h and lib/Config_git.pl are built
  650 # by make_patchnum.pl.
  651 git_version.h: lib/Config_git.pl
  652 
  653 lib/Config_git.pl: $(MINIPERL_EXE) make_patchnum.pl
  654     $(MINIPERL) make_patchnum.pl
  655 
  656 # make sure that we recompile perl.c if the git version changes
  657 perl$(OBJ_EXT): git_version.h
  658 
  659 !NO!SUBS!
  660 
  661 # Making utilities requires Cwd.  If we have dynamic
  662 # loading, we only need miniperl and Cwd.$dlext.  If we have static
  663 # loading, we need to build perl first.
  664 case "$usedl$static_cwd" in
  665 defineundef)
  666     util_deps='$(MINIPERL_EXE) $(CONFIGPM) lib/auto/Cwd/Cwd$(DLSUFFIX) FORCE'
  667     ;;
  668 definedefine)
  669     util_deps='$(PERL_EXE) $(CONFIGPM) FORCE'
  670     ;;
  671 *)  util_deps='$(PERL_EXE) $(CONFIGPM) FORCE'
  672     ;;
  673 esac
  674 
  675 $spitshell >>$Makefile <<!GROK!THIS!
  676 utils/Makefile: \$(MINIPERL_EXE) \$(CONFIGPM) utils/Makefile.PL
  677     \$(MINIPERL) utils/Makefile.PL
  678 
  679 utilities:  utils/Makefile $util_deps
  680     @echo " "; echo "   Making utilities"; cd utils; \$(LDLIBPTH) \$(MAKE) all
  681 
  682 !GROK!THIS!
  683 
  684 $spitshell >>$Makefile <<'!NO!SUBS!'
  685 
  686 # This is now done by installman only if you actually want the man pages.
  687 #   @echo " "; echo "   Making docs"; cd pod; $(MAKE) all;
  688 
  689 # Phony target to force checking subdirectories.
  690 # Apparently some makes require an action for the FORCE target.
  691 .PHONY: FORCE
  692 FORCE:
  693     @sh -c true
  694 !NO!SUBS!
  695 
  696 for file in op perl; do
  697     if $issymlink $file.c; then
  698         $spitshell >>$Makefile <<!GROK!THIS!
  699 
  700 # We do a copy of the $file.c instead of a symlink because gcc gets huffy
  701 # if we have a symlink forest to another disk (it complains about too many
  702 # levels of symbolic links, even if we have only two)
  703 
  704 ${file}mini.c: $file.c
  705     \$(RMS) ${file}mini.c
  706     \$(CPS) ${file}.c ${file}mini.c
  707 !GROK!THIS!
  708     else
  709         $spitshell >>$Makefile <<!GROK!THIS!
  710 
  711 ${file}mini.c: $file.c
  712     \$(RMS) ${file}mini.c
  713     \$(LNS) ${file}.c ${file}mini.c
  714 !GROK!THIS!
  715     fi
  716 
  717     $spitshell >>$Makefile <<!GROK!THIS!
  718 
  719 ${file}mini\$(OBJ_EXT): ${file}mini.c
  720     echo @\`\$(CCCMD)\` \$(PLDLFLAGS) $DPERL_IS_MINIPERL $DPERL_EXTERNAL_GLOB ${file}mini.c
  721     @\`\$(CCCMD)\` \$(PLDLFLAGS) $DPERL_IS_MINIPERL $DPERL_EXTERNAL_GLOB ${file}mini.c
  722 !GROK!THIS!
  723 done
  724 
  725 $spitshell >>$Makefile <<'!NO!SUBS!'
  726 
  727 globals$(OBJ_EXT): $(generated_headers)
  728 
  729 uudmap.h mg_data.h: bitcount.h
  730 
  731 generate_uudmap$(OBJ_EXT): mg_raw.h
  732 
  733 !NO!SUBS!
  734 
  735 # If hostgerenate isn't defined, then we have to build
  736 # generate_uudmap and run it. This can potentially mean running
  737 # it on the target system if we're cross-compiling.
  738 # If it is defined, then we just run it locally.
  739 case "$hostgenerate" in
  740 ''|'undef')
  741 $spitshell >>$Makefile <<!GROK!THIS!
  742 bitcount.h: generate_uudmap\$(HOST_EXE_EXT)
  743     $run ./generate_uudmap\$(HOST_EXE_EXT) \$(generated_headers)
  744     -@for f in \$(generated_headers); do \\
  745         $from \$\$f; \\
  746     done
  747 
  748 !GROK!THIS!
  749 
  750 $spitshell >>$Makefile <<'!NO!SUBS!'
  751 generate_uudmap$(HOST_EXE_EXT): generate_uudmap$(OBJ_EXT)
  752     $(CC) -o generate_uudmap$(EXE_EXT) $(LDFLAGS) generate_uudmap$(OBJ_EXT) $(libs)
  753 
  754 !NO!SUBS!
  755 ;;
  756 *)
  757 $spitshell >>$Makefile <<'!NO!SUBS!'
  758 bitcount.h: generate_uudmap$(HOST_EXE_EXT)
  759     ./generate_uudmap$(HOST_EXE_EXT) $(generated_headers)
  760 
  761 generate_uudmap$(HOST_EXE_EXT): generate_uudmap$(OBJ_EXT)
  762     -@rm generate_uudmap$(HOST_EXE_EXT)
  763     $(LNS) $(HOST_GENERATE) generate_uudmap$(HOST_EXE_EXT)
  764 
  765 !NO!SUBS!
  766 ;;
  767 esac
  768 
  769 case "$osname" in
  770 amigaos*)
  771 $spitshell >>$Makefile <<'!NO!SUBS!'
  772 perlmain.c: $(MINIPERL_EXE) ext/ExtUtils-Miniperl/pm_to_blib
  773     $(MINIPERL) -MExtUtils::Miniperl -e 'writemain(\\"perlmain.c", @ARGV)' DynaLoader $(static_ext)
  774 
  775 # The file ext.libs is a list of libraries that must be linked in
  776 # for static extensions, e.g. -lm -lgdbm, etc.  The individual
  777 # static extension Makefile's add to it.
  778 ext.libs: $(static_ext)
  779     -@test -f ext.libs || touch ext.libs
  780 
  781 !NO!SUBS!
  782 ;;
  783 *)
  784 $spitshell >>$Makefile <<'!NO!SUBS!'
  785 perlmain.c: $(MINIPERL_EXE) ext/ExtUtils-Miniperl/pm_to_blib
  786     $(MINIPERL) -MExtUtils::Miniperl -e 'writemain(\"perlmain.c", @ARGV)' DynaLoader $(static_ext)
  787 
  788 # The file ext.libs is a list of libraries that must be linked in
  789 # for static extensions, e.g. -lm -lgdbm, etc.  The individual
  790 # static extension Makefile's add to it.
  791 ext.libs: $(static_ext)
  792     -@test -f ext.libs || touch ext.libs
  793 
  794 !NO!SUBS!
  795 ;;
  796 esac
  797 
  798 # How to build libperl.  This is still rather convoluted.
  799 # Load up custom Makefile.SH fragment for shared loading and executables:
  800 case "$osname" in
  801 *)
  802     Makefile_s="$osname/Makefile.SHs"
  803     ;;
  804 esac
  805 
  806 case "$osname" in
  807 aix)
  808     $spitshell >>$Makefile <<!GROK!THIS!
  809 LIBS            = $perllibs
  810 # In AIX we need to change this for building Perl itself from
  811 # its earlier definition (which is for building external
  812 # extensions *after* Perl has been built and installed)
  813 CCDLFLAGS       = `echo $ccdlflags|sed -e 's@-bE:.*/perl\.exp@-bE:perl.exp@'`
  814 
  815 !GROK!THIS!
  816     case "$useshrplib" in
  817     define|true|[yY]*)
  818         $spitshell >>$Makefile <<'!NO!SUBS!'
  819 
  820 LIBPERL_NONSHR      = libperl_nonshr$(LIB_EXT)
  821 MINIPERL_NONSHR     = miniperl_nonshr$(EXE_EXT)
  822 
  823 $(LIBPERL_NONSHR): $(perllib_objs)
  824     $(RMS) $(LIBPERL_NONSHR)
  825     $(AR) rc $(LIBPERL_NONSHR) $(perllib_objs)
  826 
  827 $(MINIPERL_NONSHR): $(LIBPERL_NONSHR) miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT)  perlmini$(OBJ_EXT)
  828     $(CC) $(LDFLAGS) -o $(MINIPERL_NONSHR) miniperlmain$(OBJ_EXT) \
  829         opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(LIBPERL_NONSHR) $(LIBS)
  830 
  831 MINIPERLEXP     = $(MINIPERL_NONSHR)
  832 
  833 LIBPERLEXPORT       = perl.exp
  834 
  835 !NO!SUBS!
  836         
  837         ;;
  838     *)  
  839         $spitshell >>$Makefile <<'!NO!SUBS!'
  840 MINIPERLEXP     = $(MINIPERL_EXE)
  841 
  842 PERLEXPORT      = perl.exp
  843 
  844 !NO!SUBS!
  845     ;;
  846     esac
  847     $spitshell >>$Makefile <<'!NO!SUBS!'
  848 perl.exp: $(MINIPERLEXP) makedef.pl $(CONFIGPM) $(SYM) $(SYMH)
  849     $(MINIPERL) makedef.pl --sort-fold PLATFORM=aix CC_FLAGS="$(OPTIMIZE)" > perl.exp
  850 
  851 !NO!SUBS!
  852     ;;
  853 os2)
  854     $spitshell >>$Makefile <<'!NO!SUBS!'
  855 MINIPERLEXP     = miniperl
  856 
  857 perl5.def: $(MINIPERLEXP) makedef.pl $(CONFIGPM) $(SYM) $(SYMH) miniperl.map
  858     $(MINIPERL) makedef.pl PLATFORM=os2 -DPERL_DLL=$(PERL_DLL) CC_FLAGS="$(OPTIMIZE)" > perl5.def
  859 
  860 !NO!SUBS!
  861     ;;
  862 cygwin)
  863     $spitshell >>$Makefile <<'!NO!SUBS!'
  864 cygwin.c: cygwin/cygwin.c
  865     $(LNS) cygwin/cygwin.c
  866 
  867 LIBPERL_NONSHR      = libperl$(LIB_EXT)
  868 
  869 $(LIBPERL_NONSHR): $(perllib_objs)
  870     $(RMS) $(LIBPERL_NONSHR)
  871     $(AR) rc $(LIBPERL_NONSHR) $(perllib_objs)
  872 
  873 !NO!SUBS!
  874     ;;
  875 esac
  876 
  877 if test -s $Makefile_s ; then
  878     . $Makefile_s
  879     $spitshell >>$Makefile <<!GROK!THIS!
  880 
  881 Makefile: $Makefile_s
  882 !GROK!THIS!
  883 else
  884     case "$dtrace_h" in
  885     ?*)
  886         $spitshell >>$Makefile <<'!NO!SUBS!'
  887 # dtrace dicards const qualifiers from arguments, put them back
  888 $(DTRACE_H): perldtrace.d
  889     $(DTRACE) -h -s perldtrace.d -o $(DTRACE_H).in
  890     sed -e '/const/!s/char \*/const char */g' $(DTRACE_H).in >$(DTRACE_H)
  891     $(RMS) $(DTRACE_H).in
  892 
  893 mydtrace.h: $(DTRACE_H)
  894 
  895 !NO!SUBS!
  896         ;;
  897     esac
  898     case "$dtraceobject" in
  899     define)
  900         $spitshell >>$Makefile <<'!NO!SUBS!'
  901 $(DTRACE_MINI_O): perldtrace.d $(miniperl_objs_nodt)
  902     -rm -rf mpdtrace
  903     mkdir mpdtrace
  904     cp $(miniperl_objs_nodt) mpdtrace/
  905     $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MINI_O) $(miniperl_dtrace_objs)
  906 
  907 $(DTRACE_PERLLIB_O): perldtrace.d $(perllib_objs_nodt)
  908     -rm -rf libpdtrace
  909     mkdir libpdtrace
  910     cp $(perllib_objs_nodt) libpdtrace/
  911     $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_dtrace_objs)
  912 
  913 $(DTRACE_MAIN_O): perldtrace.d perlmain$(OBJ_EXT)
  914     -rm -rf maindtrace
  915     mkdir maindtrace
  916     cp perlmain$(OBJ_EXT) maindtrace/
  917     $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) $(perlmain_dtrace_objs) ||       \
  918       ( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a dummy $(DTRACE_MAIN_O)" && \
  919         $(ECHO) >dtrace_main.c &&                                 \
  920         `$(CCCMD)` $(PLDLFLAGS) dtrace_main.c &&                          \
  921          rm -f dtrace_main.c )
  922 
  923 !NO!SUBS!
  924         ;;
  925     esac
  926     $spitshell >>$Makefile <<'!NO!SUBS!'
  927 $(LIBPERL): $& $(perllib_dep) $(DYNALOADER) $(LIBPERLEXPORT)
  928 !NO!SUBS!
  929     case "$useshrplib" in
  930     true)
  931         $spitshell >>$Makefile <<'!NO!SUBS!'
  932     rm -f $@
  933     $(LD) -o $@ $(SHRPLDFLAGS) $(perllib_objs) $(DYNALOADER) $(libs)
  934 !NO!SUBS!
  935         case "$osname" in
  936         aix)
  937             $spitshell >>$Makefile <<'!NO!SUBS!'
  938     rm -f libperl$(OBJ_EXT)
  939     mv $@ libperl$(OBJ_EXT)
  940     $(AR) qv $(LIBPERL) libperl$(OBJ_EXT)
  941 !NO!SUBS!
  942             ;;
  943         esac
  944         ;;
  945     *)
  946         $spitshell >>$Makefile <<'!NO!SUBS!'
  947     rm -f $(LIBPERL)
  948     $(AR) rc $(LIBPERL) $(perllib_objs) $(DYNALOADER)
  949     @$(ranlib) $(LIBPERL)
  950 !NO!SUBS!
  951         ;;
  952     esac
  953     $spitshell >>$Makefile <<'!NO!SUBS!'
  954 
  955 # How to build executables.
  956 
  957 # The $& notation tells Sequent machines that it can do a parallel make,
  958 # and is harmless otherwise.
  959 # The miniperl -w -MExporter line is a basic cheap test to catch errors
  960 # before make goes on to run preplibrary and then MakeMaker on extensions.
  961 # This is very handy because later errors are often caused by miniperl
  962 # build problems but that's not obvious to the novice.
  963 # The Module used here must not depend on Config or any extensions.
  964 
  965 # The seemingly cranky ordering of having $(MINIPERL_EXE) depend on
  966 # lib/buildcustomize.pl despite the reality that lib/buildcustomize.pl needs
  967 # miniperl to exist first permits us to
  968 # a) have one rule generate both miniperl and lib/buildcustomize.pl
  969 #    (so that lib/buildcustomize.pl is always available. This simplifies things)
  970 # b) have the rest of the Makefile depend on the more obvious $(MINIPERL_EXE)
  971 
  972 $(MINIPERL_EXE): lib/buildcustomize.pl
  973 
  974 !NO!SUBS!
  975 
  976     case "${osname}${osvers}" in
  977     amigaos*)
  978         $spitshell >>$Makefile <<'!NO!SUBS!'
  979 lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
  980     -@rm -f miniperl.xok
  981     $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
  982         $(miniperl_objs) $(libs)
  983 #   $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
  984     $(MINIPERL) -f write_buildcustomize.pl
  985 !NO!SUBS!
  986         ;;
  987     aix*)
  988         $spitshell >>$Makefile <<'!NO!SUBS!'
  989 lib/buildcustomize.pl: $& $(miniperl_objs)
  990     $(CC) -o $(MINIPERL_EXE) $(CLDFLAGS) $(miniperl_objs) $(libs)
  991     $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
  992     $(MINIPERL) -f write_buildcustomize.pl
  993 !NO!SUBS!
  994         ;;
  995     next4*)
  996         $spitshell >>$Makefile <<'!NO!SUBS!'
  997 lib/buildcustomize.pl: $& $(miniperl_objs) write    ldcustomize.pl
  998     $(CC) -o $(MINIPERL_EXE) $(miniperl_objs    libs)
  999     $(LDLIBPTH) ./miniperl$(HOST    _EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
 1000     $(MINIPERL) -f write_buildcustomize.pl    
 1001 !NO!SUBS!
 1002         ;;
 1003     darwin*)
 1004         case "$osvers" in
 1005         [1-6].*) ;;
 1006         *) case "$ldflags" in
 1007             *"-flat_namespace"*) ;;
 1008             *) # to allow opmini.o to override stuff in libperl.dylib
 1009         $spitshell >>$Makefile <<!NO!SUBS!
 1010 NAMESPACEFLAGS = -force_flat_namespace
 1011 !NO!SUBS!
 1012                ;;
 1013             esac
 1014             ;;
 1015         esac
 1016         $spitshell >>$Makefile <<'!NO!SUBS!'
 1017 lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
 1018     -@rm -f miniperl.xok
 1019     $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
 1020         $(miniperl_objs) $(libs)
 1021     $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
 1022     $(MINIPERL) -f write_buildcustomize.pl
 1023 !NO!SUBS!
 1024         ;;
 1025     *)
 1026         if test "X$hostperl" != X; then
 1027             $spitshell >>$Makefile <<!GROK!THIS!
 1028 lib/buildcustomize.pl: \$& \$(miniperl_dep) write_buildcustomize.pl
 1029     -@rm -f miniperl.xok
 1030     -@rm \$(MINIPERL_EXE)
 1031     \$(LNS) \$(HOST_PERL) \$(MINIPERL_EXE)
 1032     \$(LDLIBPTH) ./miniperl\$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
 1033     \$(MINIPERL) -f write_buildcustomize.pl 'osname' "$osname"
 1034 !GROK!THIS!
 1035         else
 1036             $spitshell >>$Makefile <<'!NO!SUBS!'
 1037 lib/buildcustomize.pl: $& $(miniperl_dep) write_buildcustomize.pl
 1038     -@rm -f miniperl.xok
 1039     $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
 1040         $(miniperl_objs) $(libs)
 1041     $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
 1042     $(MINIPERL) -f write_buildcustomize.pl
 1043 !NO!SUBS!
 1044         fi
 1045         ;;
 1046     esac
 1047 
 1048     $spitshell >>$Makefile <<'!NO!SUBS!'
 1049 
 1050 $(PERL_EXE): $& $(perlmain_dep) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) write_buildcustomize.pl
 1051     -@rm -f miniperl.xok
 1052 !NO!SUBS!
 1053 
 1054         case $osname in
 1055     # In AmigaOS the Perl executable needs to be linked with -ldl,
 1056     # but none of the other executables should be.
 1057         amigaos) $spitshell >>$Makefile <<'!NO!SUBS!'
 1058     $(SHRPENV) $(CC) -o perl $(CLDFLAGS) $(CCDLFLAGS) $(perlmain_objs) $(LLIBPERL) $(static_ext) `cat ext.libs` $(libs) -ldl
 1059 !NO!SUBS!
 1060         ;;
 1061         os390) $spitshell >>$Makefile <<'!NO!SUBS!'
 1062     $(SHRPENV) $(CC) -o perl $(CLDFLAGS) $(CCDLFLAGS) $(perlmain_objs) $(LLIBPERL) $(static_ext) `cat ext.libs` $(libs)
 1063 !NO!SUBS!
 1064         ;;
 1065 
 1066     darwin)
 1067         case "$useshrplib$osvers" in
 1068         true1[5-9]*|true[2-9]*) $spitshell >>$Makefile <<'!NO!SUBS!'
 1069     $(SHRPENV) $(CC) -o perl $(PERL_EXE_LDFLAGS) $(CLDFLAGS) $(CCDLFLAGS) $(perlmain_objs) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 1070 !NO!SUBS!
 1071            ;;
 1072         *) $spitshell >>$Makefile <<'!NO!SUBS!'
 1073     $(SHRPENV) $(CC) -o perl $(CLDFLAGS) $(CCDLFLAGS) $(perlmain_objs) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 1074 !NO!SUBS!
 1075            ;;
 1076         esac
 1077         ;;
 1078 
 1079         *) $spitshell >>$Makefile <<'!NO!SUBS!'
 1080     $(SHRPENV) $(CC) -o perl $(CLDFLAGS) $(CCDLFLAGS) $(perlmain_objs) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 1081 !NO!SUBS!
 1082         ;;
 1083         esac
 1084 
 1085     $spitshell >>$Makefile <<'!NO!SUBS!'
 1086 
 1087 # Microperl.  This is just a convenience thing if one happens to
 1088 # build also the full Perl and therefore the real big Makefile:
 1089 # usually one should manually explicitly issue the below command.
 1090 
 1091 .PHONY: microperl
 1092 microperl:
 1093     $(MAKE) -f Makefile.micro
 1094 
 1095 !NO!SUBS!
 1096 
 1097 fi
 1098 
 1099 # Some environment have no system(), which mkpport uses.
 1100 # Let's try running the commands with shell.
 1101 case "${osname}" in
 1102 catamount)
 1103 $spitshell >>$Makefile <<!GROK!THIS!
 1104 .PHONY: makeppport
 1105 makeppport: \$(MINIPERL_EXE) \$(CONFIGPM)
 1106     -@for f in Makefile.PL PPPort_pm.PL PPPort_xs.PL ppport_h.PL; do \
 1107     (cd ext/Devel-PPPort && `pwd`/run.sh ../../$(MINIPERL_EXE) -I../../lib \$\$f); \
 1108     done
 1109 
 1110 !GROK!THIS!
 1111 ;;
 1112 *)
 1113 $spitshell >>$Makefile <<'!NO!SUBS!'
 1114 .PHONY: makeppport
 1115 makeppport: $(MINIPERL_EXE) $(CONFIGPM) $(nonxs_ext)
 1116     $(MINIPERL) mkppport
 1117 
 1118 !NO!SUBS!
 1119 ;;
 1120 esac
 1121 
 1122 $spitshell >>$Makefile <<'!NO!SUBS!'
 1123 
 1124 .PHONY: preplibrary common_build
 1125 preplibrary: $(MINIPERL_EXE) $(CONFIGPM) $(PREPLIBRARY_LIBPERL)
 1126 
 1127 $(CONFIGPM_FROM_CONFIG_SH): $(CONFIGPOD)
 1128 
 1129 $(CONFIGPOD): config.sh $(MINIPERL_EXE) configpm Porting/Glossary lib/Config_git.pl
 1130     $(MINIPERL) configpm
 1131 
 1132 unidatafiles $(unidatafiles) pod/perluniprops.pod: uni.data
 1133 
 1134 uni.data: $(MINIPERL_EXE) $(CONFIGPM) lib/unicore/mktables $(nonxs_ext)
 1135     $(MINIPERL) lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p
 1136 #   Commented out so always runs, mktables looks at far more files than we
 1137 #   can in this makefile to decide if needs to run or not
 1138 #   touch uni.data
 1139 
 1140 # $(PERL_EXE) and ext because pod_lib.pl needs Digest::MD5
 1141 # But also this ensures that all extensions are built before we try to scan
 1142 # them, which picks up Devel::PPPort's documentation.
 1143 pod/perltoc.pod: $(perltoc_pod_prereqs) $(PERL_EXE) $(ext) pod/buildtoc
 1144     $(RUN_PERL) -f pod/buildtoc -q
 1145 
 1146 pod/perlapi.pod: pod/perlintern.pod
 1147 
 1148 pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
 1149     $(MINIPERL) autodoc.pl
 1150 
 1151 pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
 1152     $(MINIPERL) pod/perlmodlib.PL -q
 1153 
 1154 pod/perl5303delta.pod: pod/perldelta.pod
 1155     $(RMS) pod/perl5303delta.pod
 1156     $(LNS) perldelta.pod pod/perl5303delta.pod
 1157 
 1158 extra.pods: $(MINIPERL_EXE)
 1159     -@test ! -f extra.pods || rm -f `cat extra.pods`
 1160     -@rm -f extra.pods
 1161     -@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
 1162         nx=`echo $$x | sed -e "s/README\.//"`; \
 1163         $(LNS) ../$$x "pod/perl"$$nx".pod" ; \
 1164         echo "pod/perl"$$nx".pod" >> extra.pods ; \
 1165     done
 1166 
 1167 extras.make: $(PERL_EXE)
 1168     -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) -MCPAN -e '@ARGV&&make(@ARGV)' `cat extras.lst`
 1169 
 1170 extras.test: $(PERL_EXE)
 1171     -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) -MCPAN -e '@ARGV&&test(@ARGV)' `cat extras.lst`
 1172 
 1173 extras.install: $(PERL_EXE)
 1174     -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) -MCPAN -e '@ARGV&&install(@ARGV)' `cat extras.lst`
 1175 
 1176 .PHONY: install install-strip install-all install-verbose install-silent \
 1177     no-install install.perl install.man install.html
 1178 
 1179 # Set this to an empty string to avoid an attempt of rebuild before install
 1180 INSTALL_DEPENDENCE = all
 1181 
 1182 no_install no-install: install-notify
 1183 
 1184 install: install-all
 1185 !NO!SUBS!
 1186 
 1187 for name in all notify silent strip verbose; do
 1188     flags="--$name";
 1189     flags=`echo $flags | sed -e 's/--all//'`
 1190     if test "X$hostperl" != X; then
 1191         $spitshell >>$Makefile <<EOT
 1192 
 1193 install_$name install-$name: \$(INSTALL_DEPENDENCE) installperl all installman
 1194     \$(HOST_PERL) installperl --destdir=\$(DESTDIR) $flags \$(INSTALLFLAGS) \$(STRIPFLAGS)
 1195     \$(HOST_PERL) installman --destdir=\$(DESTDIR) $flags
 1196 EOT
 1197     else
 1198         $spitshell >>$Makefile <<EOT
 1199 
 1200 install_$name install-$name: \$(INSTALL_DEPENDENCE) installperl all installman
 1201     \$(RUN_PERL) installperl --destdir=\$(DESTDIR) $flags \$(INSTALLFLAGS) \$(STRIPFLAGS)
 1202     \$(RUN_PERL) installman --destdir=\$(DESTDIR) $flags
 1203 EOT
 1204     fi
 1205 
 1206     test $name = notify || echo '   -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) -Ilib -MCPAN -e '\''@ARGV&&install(@ARGV)'\'' `cat extras.lst`' >>$Makefile
 1207 done
 1208 
 1209 if test "X$hostperl" != X; then
 1210     LOCAL_PERL='$(HOST_PERL)'
 1211     $spitshell >>$Makefile <<'!NO!SUBS!'
 1212 install.perl:   $(INSTALL_DEPENDENCE) installperl
 1213     $(HOST_PERL) installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS)
 1214     -@test ! -s extras.lst || $(MAKE) extras.install
 1215 !NO!SUBS!
 1216 else
 1217     LOCAL_PERL='$(RUN_PERL)'
 1218     $spitshell >>$Makefile <<'!NO!SUBS!'
 1219 install.perl:   $(INSTALL_DEPENDENCE) installperl
 1220     $(RUN_PERL) installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS)
 1221     -@test ! -s extras.lst || PATH="`pwd`:\${PATH}" PERL5LIB="`pwd`/lib" \$(RUN_PERL) -Ilib -MCPAN -e '@ARGV&&install(@ARGV)' `cat extras.lst`
 1222 
 1223 !NO!SUBS!
 1224 fi
 1225 
 1226 $spitshell >>$Makefile <<!GROK!THIS!
 1227 install.man:    all installman
 1228     ${LOCAL_PERL} installman --destdir=\$(DESTDIR) \$(INSTALLFLAGS)
 1229 
 1230 # XXX Experimental. Hardwired values, but useful for testing.
 1231 # Eventually Configure could ask for some of these values.
 1232 install.html: all installhtml
 1233     -@test -f README.vms && cd vms && \$(LNS) ../README.vms README_vms.pod && cd ..
 1234     ${LOCAL_PERL} installhtml   \\
 1235       --podroot=. --podpath=. --recurse  \\
 1236       --htmldir=\$(privlib)/html   \\
 1237       --splithead=pod/perlipc     \\
 1238       --splititem=pod/perlfunc    \\
 1239       --ignore=Porting/Maintainers.pm,Porting/pumpkin.pod,Porting/repository.pod \\
 1240       --verbose
 1241 !GROK!THIS!
 1242 
 1243 $spitshell >>$Makefile <<'!NO!SUBS!'
 1244 
 1245 # I now supply perly.c with the kits, so the following section is
 1246 # used only if you force bison to run by saying
 1247 #   make regen_perly
 1248 # You normally shouldn't remake perly.[ch].
 1249 
 1250 .PHONY: regen_perly
 1251 
 1252 run_byacc run-byacc:
 1253     @echo "run_byacc is obsolete; try 'make regen_perly' instead"
 1254 
 1255 # this outputs perly.h, perly.act and perly.tab
 1256 regen_perly regen-perly:
 1257     perl regen_perly.pl
 1258 
 1259 # We don't want to regenerate perly.c and perly.h, but they might
 1260 # appear out-of-date after a patch is applied or a new distribution is
 1261 # made.
 1262 perly.c: perly.y
 1263     -@sh -c true
 1264 
 1265 perly.h: perly.y
 1266     -@sh -c true
 1267 
 1268 SYM  = globvar.sym perlio.sym
 1269 
 1270 SYMH = perlvars.h intrpvar.h
 1271 
 1272 CHMOD_W = chmod +w
 1273 
 1274 # The following files are generated automatically
 1275 #   embed.pl:   proto.h embed.h embedvar.h perlapi.h perlapi.c
 1276 #   opcode.pl:  opcode.h opnames.h pp_proto.h
 1277 #   regcomp.pl: regnodes.h
 1278 #   warnings.pl:    warnings.h lib/warnings.pm
 1279 #   feature.pl: feature.h lib/feature.pm
 1280 # The correct versions should be already supplied with the perl kit,
 1281 # in case you don't have perl available.
 1282 # To force them to be regenerated, run
 1283 #       perl regen.pl
 1284 # with your existing copy of perl
 1285 # (make regen_headers is kept for backwards compatibility)
 1286 
 1287 .PHONY: regen_headers regen_all
 1288 
 1289 regen:  FORCE
 1290     -perl regen.pl
 1291     -perl regen/uconfig_h.pl
 1292 
 1293 regen_headers regen-headers:    FORCE
 1294     -perl regen.pl -v
 1295     -perl regen/uconfig_h.pl -v
 1296 
 1297 regen_meta regen-meta:  META.yml META.json
 1298 
 1299 META.yml:   FORCE
 1300     PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) Porting/makemeta -y
 1301 
 1302 META.json:   FORCE
 1303     PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(RUN_PERL) Porting/makemeta -j
 1304 
 1305 
 1306 regen_all regen-all: regen regen_meta
 1307 
 1308 .PHONY: manisort manicheck
 1309 
 1310 manisort:   FORCE
 1311     @perl Porting/manisort -q || (echo "WARNING: re-sorting MANIFEST"; \
 1312         perl Porting/manisort -q -o MANIFEST; sh -c true)
 1313 
 1314 manicheck:  FORCE
 1315     perl Porting/manicheck
 1316 
 1317 # Extensions:
 1318 # Names added to $(dynamic_ext) or $(static_ext) or $(nonxs_ext) will
 1319 # automatically get built.  There should ordinarily be no need to change
 1320 # any of this part of makefile.
 1321 #
 1322 # The dummy dependency is a place holder in case $(dynamic_ext) or
 1323 # $(static_ext) is empty.
 1324 #
 1325 # DynaLoader may be needed for extensions that use Makefile.PL.
 1326 
 1327 $(DYNALOADER):  $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary FORCE $(nonxs_ext)
 1328     $(MINIPERL) make_ext.pl $@ $(MAKE_EXT_ARGS) MAKE="$(MAKE)" LIBPERL_A=$(LIBPERL) LINKTYPE=static $(STATIC_LDFLAGS)
 1329 
 1330 d_dummy $(dynamic_ext): $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary makeppport $(DYNALOADER) FORCE $(PERLEXPORT) $(LIBPERL)
 1331     $(MINIPERL) make_ext.pl $@ $(MAKE_EXT_ARGS) MAKE="$(MAKE)" LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic
 1332 
 1333 s_dummy $(static_ext):  $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary makeppport $(DYNALOADER) FORCE
 1334     $(MINIPERL) make_ext.pl $@ $(MAKE_EXT_ARGS) MAKE="$(MAKE)" LIBPERL_A=$(LIBPERL) LINKTYPE=static $(STATIC_LDFLAGS)
 1335 
 1336 n_dummy $(nonxs_ext):   $(MINIPERL_EXE) lib/buildcustomize.pl preplibrary FORCE
 1337     $(MINIPERL) make_ext.pl $@ $(MAKE_EXT_ARGS) MAKE="$(MAKE)" LIBPERL_A=$(LIBPERL)
 1338 !NO!SUBS!
 1339 
 1340 $spitshell >>$Makefile <<EOF
 1341 $extra_dep
 1342 EOF
 1343 
 1344 $spitshell >>$Makefile <<'!NO!SUBS!'
 1345 
 1346 .PHONY: printconfig
 1347 printconfig:
 1348     @eval `$(RUN_PERL) -V:$(CONFIGVAR)`; echo $$$(CONFIGVAR)
 1349 
 1350 .PHONY: clean _tidy _mopup _cleaner1 _cleaner2 \
 1351     realclean _realcleaner clobber _clobber \
 1352     distclean veryclean _verycleaner
 1353 
 1354 clean:      realclean
 1355 
 1356 realclean:  _realcleaner _mopup
 1357     @echo "Note that '$(MAKE) realclean' does not delete config.sh or Policy.sh"
 1358 
 1359 _clobber:
 1360     -@rm -f Cross/run-* Cross/to-* Cross/from-* Cross/mkdir
 1361     -rm -rf host
 1362     rm -f t/test_state
 1363     rm -f config.sh cppstdin Policy.sh extras.lst
 1364     rm -f $(MANIFEST_SRT)
 1365 
 1366 clobber:    _realcleaner _mopup _clobber
 1367 
 1368 distclean:  clobber
 1369 
 1370 # Like distclean but also removes emacs backups and *.orig.
 1371 veryclean:  _verycleaner _mopup _clobber
 1372     -@rm -f Obsolete Wanted
 1373 
 1374 # Do not 'make _mopup' directly.
 1375 _mopup:
 1376     rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c generate_uudmap$(EXE_EXT) $(generated_headers)
 1377     -rmdir .depending
 1378     -@test -f extra.pods && rm -f `cat extra.pods`
 1379     -@test -f vms/README_vms.pod && rm -f vms/README_vms.pod
 1380     -rm -f perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o pod/roffitall
 1381     -rm -f perl.export perl.dll perl.libexp perl.map perl.def
 1382     -rm -f *perl.xok
 1383     -rm -f cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump
 1384     -rm -f $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl
 1385     -rm -f config.arch config.over $(DTRACE_H)
 1386 
 1387 _cleaner1:
 1388     -cd os2; rm -f Makefile
 1389     -cd pod; $(LDLIBPTH) $(MAKE) $(CLEAN)
 1390     -cd utils; $(LDLIBPTH) $(MAKE) $(CLEAN)
 1391     -@if test -f $(MINIPERL_EXE) ; then \
 1392     for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \
 1393     $(MINIPERL) make_ext.pl --target=$(CLEAN) $$x MAKE="$(MAKE)" ; \
 1394     done ; \
 1395     else \
 1396     sh $(CLEAN).sh ; \
 1397     fi
 1398     rm -f realclean.sh veryclean.sh
 1399     -rm -f `grep -v ^# mkppport.lst | grep . | sed -e 's/$$/\/ppport.h/'`
 1400 
 1401 # Dear POSIX, thanks for making the default to xargs to be
 1402 # run once if nothhing is passed in. It is such a great help.
 1403 
 1404 # Some systems do not support "?", so keep these files separate.
 1405 
 1406 # The Time::HiRes Makefile *should* remove dist/Time-HiRes/xdefine for 'clean',
 1407 # but it's possible to get a rebuilt checkout into a state where it can't run
 1408 # distclean, and can't recover until the file is gone.
 1409 # There's no harm in adding it to the top level 'distclean' target - it should
 1410 # anyway by then, and miniperl is long gone.
 1411 # Add new rules before that line - the next line (rm -f so_locations ...) is
 1412 # used as a placeholder by a regen script.
 1413 _cleaner2:
 1414     -rm -f core.*perl.*.? t/core.perl.*.? .?*.c
 1415     rm -f core *perl.core t/core t/*perl.core core.* t/core.*
 1416     rm -f t/$(PERL_EXE) t/rantests
 1417     rm -rf t/tmp*
 1418     rm -rf $(addedbyconf)
 1419     rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old utils/Makefile
 1420     rm -f $(private)
 1421     rm -rf $(unidatafiles) $(unidatadirs)
 1422     rm -rf lib/auto
 1423     rm -f lib/.exists lib/*/.exists lib/*/*/.exists
 1424     rm -f h2ph.man
 1425     rm -rf .config
 1426     rm -f preload
 1427     rm -f pod2htmd.tmp
 1428     rm -rf pod/perlfunc pod/perlipc
 1429     -rmdir ext/B/lib
 1430     -rm -f dist/Time-HiRes/xdefine
 1431     rm -f so_locations $(LIBPERL_NONSHR) $(MINIPERL_NONSHR)
 1432     -rmdir lib/version lib/threads lib/inc/ExtUtils lib/inc lib/encoding
 1433     -rmdir lib/autodie/exception lib/autodie/Scope lib/autodie lib/XS
 1434     -rmdir lib/Win32API lib/VMS lib/Unicode/Collate/Locale
 1435     -rmdir lib/Unicode/Collate/CJK lib/Unicode/Collate lib/Tie/Hash
 1436     -rmdir lib/Thread lib/Text lib/Test2/Util lib/Test2/Tools
 1437     -rmdir lib/Test2/IPC/Driver lib/Test2/IPC lib/Test2/Hub/Interceptor
 1438     -rmdir lib/Test2/Hub lib/Test2/Formatter lib/Test2/EventFacet/Info
 1439     -rmdir lib/Test2/EventFacet lib/Test2/Event/TAP lib/Test2/Event
 1440     -rmdir lib/Test2/API lib/Test2 lib/Test/use lib/Test/Tester
 1441     -rmdir lib/Test/Builder/Tester lib/Test/Builder/IO lib/Test/Builder
 1442     -rmdir lib/Test lib/Term lib/TAP/Parser/YAMLish
 1443     -rmdir lib/TAP/Parser/SourceHandler lib/TAP/Parser/Scheduler
 1444     -rmdir lib/TAP/Parser/Result lib/TAP/Parser/Iterator lib/TAP/Parser
 1445     -rmdir lib/TAP/Harness lib/TAP/Formatter/File
 1446     -rmdir lib/TAP/Formatter/Console lib/TAP/Formatter lib/TAP
 1447     -rmdir lib/Sys/Syslog lib/Sys lib/Sub lib/Search lib/Scalar
 1448     -rmdir lib/Pod/Text lib/Pod/Simple lib/Pod/Perldoc lib/PerlIO/via
 1449     -rmdir lib/PerlIO lib/Perl lib/Parse/CPAN lib/Parse lib/Params
 1450     -rmdir lib/Net/FTP lib/Module/Load lib/Module/CoreList lib/Module
 1451     -rmdir lib/Memoize lib/Math/BigInt lib/Math/BigFloat lib/Math lib/MIME
 1452     -rmdir lib/Locale/Maketext lib/Locale lib/List/Util lib/List
 1453     -rmdir lib/JSON/PP lib/JSON lib/IPC lib/IO/Uncompress/Adapter
 1454     -rmdir lib/IO/Uncompress lib/IO/Socket lib/IO/Compress/Zlib
 1455     -rmdir lib/IO/Compress/Zip lib/IO/Compress/Gzip lib/IO/Compress/Base
 1456     -rmdir lib/IO/Compress/Adapter lib/IO/Compress lib/IO
 1457     -rmdir lib/I18N/LangTags lib/I18N lib/Hash/Util lib/Hash lib/HTTP
 1458     -rmdir lib/Filter/Util lib/Filter lib/File/Spec lib/ExtUtils/Typemaps
 1459     -rmdir lib/ExtUtils/ParseXS lib/ExtUtils/MakeMaker/version
 1460     -rmdir lib/ExtUtils/MakeMaker lib/ExtUtils/Liblist
 1461     -rmdir lib/ExtUtils/Constant lib/ExtUtils/Command
 1462     -rmdir lib/ExtUtils/CBuilder/Platform/Windows
 1463     -rmdir lib/ExtUtils/CBuilder/Platform lib/ExtUtils/CBuilder
 1464     -rmdir lib/Exporter lib/Encode/Unicode lib/Encode/MIME/Header
 1465     -rmdir lib/Encode/MIME lib/Encode/KR lib/Encode/JP lib/Encode/CN
 1466     -rmdir lib/Encode lib/Digest lib/Devel lib/Data lib/Config/Perl
 1467     -rmdir lib/Compress/Raw lib/Compress lib/Carp lib/CPAN/Plugin
 1468     -rmdir lib/CPAN/Meta/History lib/CPAN/Meta lib/CPAN/LWP
 1469     -rmdir lib/CPAN/Kwalify lib/CPAN/HTTP lib/CPAN/FTP lib/CPAN/Exception
 1470     -rmdir lib/CPAN/API lib/CPAN lib/Attribute lib/Archive/Tar lib/Archive
 1471     -rmdir lib/App/Prove/State/Result lib/App/Prove/State lib/App/Prove
 1472     -rmdir lib/App lib/Amiga
 1473 
 1474 _realcleaner:
 1475     @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=distclean
 1476     @$(LDLIBPTH) $(MAKE) _cleaner2
 1477 
 1478 _verycleaner:
 1479     @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=veryclean
 1480     @$(LDLIBPTH) $(MAKE) _cleaner2
 1481     -rm -f *~ *.orig */*~ */*.orig */*/*~ */*/*.orig
 1482 
 1483 .PHONY: lint
 1484 lint: $(c)
 1485     rm -f *.ln
 1486     lint $(lintflags) -DPERL_CORE -D_REENTRANT -DDEBUGGING -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(c)
 1487 
 1488 cscopeflags = -Rb  # Recursive, build-only.
 1489 
 1490 .PHONY: cscope
 1491 # To query the cscope.out "cscope -dLnsymbol" where n = 0 means uses,
 1492 # 1 = definitions, 2 = callees, 3 = callers, for example
 1493 # "cscope -dL1Perl_mg_set" or run cscope interactively (no arguments).
 1494 cscope.out cscope: $(c) $(h)
 1495     cscope $(cscopeflags)
 1496 
 1497 # Need to unset during recursion to go out of loop.
 1498 # The README below ensures that the dependency list is never empty and
 1499 # that when MAKEDEPEND is empty $(FIRSTMAKEFILE) doesn't need rebuilding.
 1500 
 1501 MAKEDEPEND = Makefile makedepend
 1502 
 1503 $(FIRSTMAKEFILE):   README $(MAKEDEPEND)
 1504     $(MAKE) depend MAKEDEPEND=
 1505 !NO!SUBS!
 1506 
 1507 for f in $SH; do
 1508     file=`SH_to_target $f`
 1509     $spitshell >>$Makefile <<!GROK!THIS!
 1510 
 1511 $file: $f config.sh
 1512     \$(SHELL) $f
 1513 !GROK!THIS!
 1514 done
 1515 
 1516 $spitshell >>$Makefile <<'!NO!SUBS!'
 1517 
 1518 .PHONY: depend
 1519 depend: makedepend $(DTRACE_H) $(generated_headers)
 1520     sh ./makedepend MAKE="$(MAKE)" cflags
 1521 
 1522 .PHONY: test check test_prep test_prep_nodll test_prep_pre \
 1523     test_prep_reonly test_tty test-tty test_notty test-notty \
 1524     test_harness test_harness_notty minitest test-reonly _test
 1525 
 1526 # The _test target is there just for Test::Smoke, which does a make test_prep
 1527 # always before invoking this target, thus preventing checking again
 1528 _test:
 1529     $(RUN_TESTS) choose
 1530 
 1531 # Cannot delegate rebuilding of t/perl to make
 1532 # to allow interlaced test and minitest
 1533 
 1534 # Architecture-neutral stuff:
 1535 
 1536 test_prep_pre: preplibrary utilities $(nonxs_ext)
 1537 !NO!SUBS!
 1538 
 1539 case "$targethost" in
 1540 '') $spitshell >>$Makefile <<'!NO!SUBS!'
 1541 test_prep test-prep: test_prep_pre $(MINIPERL_EXE) $(unidatafiles) $(PERL_EXE) \
 1542     $(dynamic_ext) $(TEST_PERL_DLL) runtests $(generated_pods) common_build
 1543     cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
 1544 
 1545 !NO!SUBS!
 1546 ;;
 1547 *) $spitshell >>$Makefile <<!GROK!THIS!
 1548 test_prep test-prep: test_prep_pre \$(MINIPERL_EXE) \$(unidatafiles) \$(PERL_EXE) \
 1549     \$(dynamic_ext) \$(TEST_PERL_DLL) runtests \
 1550     \$(generated_pods) common_build
 1551     $to libperl.*
 1552     $to t/*
 1553     $to lib/*
 1554     $to TestInit.pm
 1555     $to win32/FindExt.pm
 1556     $to regen/*
 1557     $to pod/*
 1558     $to MANIFEST
 1559     $to Porting/*
 1560     $to cpan/*/t
 1561     $to dist/*/t
 1562     $to ext/*/t
 1563     $to cpan/Archive-Tar/*
 1564     $to cpan/Module-Metadata/*
 1565     $to cpan/Term-Cap/test.pl
 1566     $to cpan/Pod-Usage/*
 1567     $to cpan/Pod-Parser/*
 1568     $to cpan/IO-Compress/*
 1569     $to cpan/HTTP-Tiny/lib/*
 1570     $to cpan/Filter-Util-Call/filter-util.pl
 1571     $to cpan/Digest-MD5/*
 1572     $to cpan/Digest-SHA/*
 1573     $to cpan/Test-Simple/*
 1574     $to cpan/Pod-Parser/lib/*
 1575     $to cpan/Test-Harness/*
 1576     $to cpan/Scalar-List-Utils/*
 1577     $to ext/IPC-Open3/*
 1578     $to ext/Tie-Memoize/*
 1579     $to ext/POSIX/*
 1580     $to dist/IO/*
 1581 # --- These three are needed by ExtUtils::MM_Unix to verify PERL_CORE
 1582     $to config_h.SH
 1583     $to perl.h
 1584     $to cflags
 1585     $to *.h
 1586 # --- For t/porting/customized.t
 1587     $to vutil.c
 1588     $to vxs.inc
 1589 # --- For t/TEST
 1590     $to config.sh
 1591 # --- For lib/diagnostics.t with -Duseshrplib
 1592     $to \$(PERL_EXE)
 1593     cd t && (rm -f \$(PERL_EXE); \$(LNS) ../\$(PERL_EXE) \$(PERL_EXE)) && cd ..
 1594     $to t/\$(PERL_EXE)
 1595 
 1596 !GROK!THIS!
 1597 ;;
 1598 esac
 1599 
 1600 $spitshell >>$Makefile <<'!NO!SUBS!'
 1601 test_prep_reonly: $(MINIPERL_EXE) $(PERL_EXE) $(dynamic_ext_re) $(TEST_PERL_DLL)
 1602     $(MINIPERL) make_ext.pl $(dynamic_ext_re) MAKE="$(MAKE)" LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic
 1603     cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
 1604 !NO!SUBS!
 1605 
 1606 case "$targethost" in
 1607 '') $spitshell >>$Makefile <<'!NO!SUBS!'
 1608 
 1609 test check: test_prep
 1610     $(RUN_TESTS) choose
 1611 
 1612 !NO!SUBS!
 1613 ;;
 1614 *) $spitshell >>$Makefile <<!GROK!THIS!
 1615 
 1616 test check: test_prep
 1617     $run -cwd $targetdir/t -env "$targetenv LD_LIBRARY_PATH=$targetdir:$targetdir/lib:$targetdir/lib/auto:\$\$LD_LIBRARY_PATH" ./TEST
 1618 
 1619 !GROK!THIS!
 1620 ;;
 1621 esac
 1622 
 1623 $spitshell >>$Makefile <<'!NO!SUBS!'
 1624 test_tty test-tty: test_prep
 1625     $(RUN_TESTS) tty
 1626 
 1627 test_notty test-notty: test_prep
 1628     $(RUN_TESTS) no-tty
 1629 
 1630 !NO!SUBS!
 1631 
 1632 case "${osname}${osvers}" in
 1633 linux*|darwin*)
 1634     $spitshell >>$Makefile <<'!NO!SUBS!'
 1635 # Targets for valgrind testing:
 1636 
 1637 test.valgrind check.valgrind:   test_prep
 1638     @echo "Checking usemymalloc='n' in config.sh..."
 1639     @grep "^usemymalloc="    config.sh
 1640     @grep "^usemymalloc='n'" config.sh >/dev/null || exit 1
 1641     @echo "And of course you have to have valgrind..."
 1642     $(VALGRIND) $(VG_TEST) || exit 1
 1643     PERL_VALGRIND=1 VALGRIND='$(VALGRIND)' TESTFILE=harness $(RUN_TESTS) choose
 1644 !NO!SUBS!
 1645     ;;
 1646 esac
 1647 
 1648 $spitshell >>$Makefile <<'!NO!SUBS!'
 1649 
 1650 # minitest can't depend on lib/Config.pm because that might be where miniperl
 1651 # is crashing.
 1652 minitest_prep:
 1653     -@test -f lib/Config.pm || $(MAKE) lib/Config.pm $(unidatafiles)
 1654     @echo " "
 1655     @echo "You may see some irrelevant test failures if you have been unable"
 1656     @echo "to build lib/Config.pm, or the Unicode data files."
 1657     @echo " "
 1658     - cd t && (rm -f $(PERL_EXE); $(LNS) ../$(MINIPERL_EXE) $(PERL_EXE))
 1659 
 1660 MINITEST_TESTS = base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t opbasic/*.t op/*.t uni/*.t perf/*.t
 1661 
 1662 minitest: $(MINIPERL_EXE) minitest_prep
 1663     - cd t && $(RUN_PERL) TEST $(MINITEST_TESTS) <$(devtty)
 1664 
 1665 minitest-notty minitest_notty: $(MINIPERL_EXE) minitest_prep
 1666     - cd t && PERL_SKIP_TTY_TEST=1 $(RUN_PERL) TEST $(MINITEST_TESTS)
 1667 
 1668 # Test via harness
 1669 
 1670 test_harness test-harness: test_prep
 1671     TESTFILE=harness $(RUN_TESTS) choose
 1672 
 1673 test_harness_notty: test_prep
 1674     HARNESS_NOTTY=1 TESTFILE=harness $(RUN_TESTS) choose
 1675 
 1676 test_reonly test-reonly: test_prep_reonly
 1677     TEST_ARGS='-re \bre\/' TESTFILE=harness $(RUN_TESTS) choose
 1678 
 1679 
 1680 # Porting tests (well-formedness of pod, manifest, etc)
 1681 
 1682 test_porting test-porting: test_prep
 1683     cd t && $(RUN_PERL) harness porting/*.t ../lib/diagnostics.t
 1684 
 1685 !NO!SUBS!
 1686 
 1687 $spitshell>>$Makefile <<!GROK!THIS!
 1688 
 1689 # intended as a common way to add dependencies to test-prep and all
 1690 common_build: $common_build_deps
 1691 
 1692 !GROK!THIS!
 1693 
 1694 $spitshell >>$Makefile <<'!NO!SUBS!'
 1695 
 1696 # Handy way to run perlbug -ok without having to install and run the
 1697 # installed perlbug. We don't re-run the tests here - we trust the user.
 1698 # Please *don't* use this unless all tests pass.
 1699 # If you want to report test failures, use "make nok" instead.
 1700 
 1701 .PHONY: ok okfile oknack okfilenack nok nokfile noknack nokfilenack
 1702 
 1703 ok: utilities
 1704     $(RUN_PERL) utils/perlbug -ok -s '(UNINSTALLED)'
 1705 
 1706 okfile: utilities
 1707     $(RUN_PERL) utils/perlbug -ok -s '(UNINSTALLED)' -F perl.ok
 1708 
 1709 oknack: utilities
 1710     $(RUN_PERL) utils/perlbug -ok -s '(UNINSTALLED)' -A
 1711 
 1712 okfilenack: utilities
 1713     $(RUN_PERL) utils/perlbug -ok -s '(UNINSTALLED)' -F perl.ok -A
 1714 
 1715 nok:    utilities
 1716     $(RUN_PERL) utils/perlbug -nok -s '(UNINSTALLED)'
 1717 
 1718 nokfile:    utilities
 1719     $(RUN_PERL) utils/perlbug -nok -s '(UNINSTALLED)' -F perl.nok
 1720 
 1721 noknack:    utilities
 1722     $(RUN_PERL) utils/perlbug -nok -s '(UNINSTALLED)' -A
 1723 
 1724 nokfilenack:    utilities
 1725     $(RUN_PERL) utils/perlbug -nok -s '(UNINSTALLED)' -F perl.nok -A
 1726 
 1727 .PHONY: clist hlist
 1728 
 1729 clist:  $(c)
 1730     echo $(c) | tr ' ' $(TRNL) >.clist
 1731 
 1732 hlist:  $(h)
 1733     echo $(h) | tr ' ' $(TRNL) >.hlist
 1734 
 1735 .PHONY: distcheck
 1736 distcheck: FORCE
 1737     perl '-MExtUtils::Manifest=&fullcheck' -e 'fullcheck()'
 1738 
 1739 .PHONY: ctags
 1740 
 1741 TAGS: $(c1) $(c2) $(c3) $(c4) $(c5) $(h)
 1742     etags $(c1) $(c2) $(c3) $(c4) $(c5) $(h)
 1743 
 1744 ctags:
 1745     ctags -f Tags -N --totals --languages=c --langmap=c:+.h --exclude=opmini.c --exclude=perlmini.c *.c *.h
 1746 
 1747 # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
 1748 # If this runs make out of memory, delete /usr/include lines.
 1749 !NO!SUBS!
 1750 
 1751 $eunicefix Makefile
 1752 $rm -f $firstmakefile
 1753 
 1754 # Now do any special processing required before building.
 1755 
 1756 case "$ebcdic" in
 1757 define)
 1758     xxx=''
 1759     echo "This is an EBCDIC system, checking if any parser files need regenerating." >&2
 1760 case "$osname" in
 1761 os390|posix-bc)
 1762     ;;
 1763 *)
 1764     echo "'$osname' is an EBCDIC system I don't know that well." >&4
 1765     ;;
 1766 esac
 1767     case "$xxx" in
 1768     '') echo "No parser files were regenerated.  That's okay." >&2 ;;
 1769     esac
 1770     ;;
 1771 esac
 1772 
 1773 # ex: set ts=8 sts=4 sw=4 noet: