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