1#! /bin/sh 2case $PERL_CONFIG_SH in 3'') 4 if test -f config.sh 5 then TOP=. 6 else 7 echo "Can't find config.sh."; exit 1 8 fi 9 . $TOP/config.sh 10 ;; 11esac 12 13# H.Merijn Brand [17 Feb 2004] 14# This comment is just to ensure that Configure will find variables that 15# are removed/replaced in patches on blead, but are still needed in the 16# 5.8.x, 5.6.x and 5.005.x maintainance tracks. 17# metaconfig -m will scan all .SH files on this level (not deeper), and 18# not in x2p and other subfolders. This file is as good as any .SH 19# patch references 20# #22227 $baserev 21# #22302 $yacc $byacc 22 23# H.Merijn Brand [30 Oct 2004] 24# Mentioned for the same reason for future reference 25# #23434 $d_strlcat $d_strlcpy 26 27: This forces SH files to create target in same directory as SH file. 28: This is so that make depend always knows where to find SH derivatives. 29case "$0" in 30*/*) cd `expr X$0 : 'X\(.*\)/'` ;; 31esac 32 33case "$d_dosuid" in 34*define*) suidperl='suidperl' ;; 35*) suidperl='';; 36esac 37 38linklibperl='$(LIBPERL)' 39shrpldflags='$(LDDLFLAGS)' 40ldlibpth='' 41DPERL_EXTERNAL_GLOB='-DPERL_EXTERNAL_GLOB' 42case "$useshrplib" in 43true) 44 # Prefix all runs of 'miniperl' and 'perl' with 45 # $ldlibpth so that ./perl finds *this* shared libperl. 46 case "$LD_LIBRARY_PATH" in 47 '') 48 ldlibpth="LD_LIBRARY_PATH=`pwd`";; 49 *) 50 ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";; 51 esac 52 53 pldlflags="$cccdlflags" 54 static_target='static_pic' 55 case "${osname}${osvers}" in 56 next4*) 57 ld=libtool 58 lddlflags="-dynamic -undefined warning -framework System \ 59 -compatibility_version 1 -current_version $patchlevel \ 60 -prebind -seg1addr 0x27000000 -install_name \$(shrpdir)/\$@" 61 ;; 62 rhapsody*|darwin*) 63 shrpldflags="${ldflags} -dynamiclib \ 64 -compatibility_version \ 65 ${api_revision}.${api_version}.${api_subversion} \ 66 -current_version \ 67 ${revision}.${patchlevel}.${subversion} \ 68 -install_name \$(shrpdir)/\$@" 69 ;; 70 cygwin*) 71 linklibperl="-lperl" 72 ;; 73 sunos*) 74 linklibperl="-lperl" 75 ;; 76 netbsd*|freebsd[234]*|openbsd*|dragonfly*) 77 linklibperl="-L. -lperl" 78 ;; 79 interix*) 80 linklibperl="-L. -lperl" 81 shrpldflags="$shrpldflags -Wl,--image-base,0x57000000" 82 ;; 83 aix*) 84 shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp" 85 case "$osvers" in 86 3*) shrpldflags="$shrpldflags -e _nostart" 87 ;; 88 *) shrpldflags="$shrpldflags -b noentry" 89 ;; 90 esac 91 shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib" 92 linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl" 93 ;; 94 hpux*) 95 linklibperl="-L `pwd | sed 's/\/UU$//'` -Wl,+s -Wl,+b$archlibexp/CORE -lperl" 96 ;; 97 os390*) 98 shrpldflags='-W l,XPLINK,dll' 99 linklibperl='libperl.x' 100 DPERL_EXTERNAL_GLOB='' 101 ;; 102 esac 103 case "$ldlibpthname" in 104 '') ;; 105 *) 106 case "$osname" in 107 os2) 108 ldlibpth='' 109 ;; 110 *) 111 eval "ldlibpth=\"$ldlibpthname=`pwd`:\$$ldlibpthname\"" 112 ;; 113 esac 114 # Strip off any trailing :'s 115 ldlibpth=`echo $ldlibpth | sed 's/:*$//'` 116 ;; 117 esac 118 119 case "$ldlibpth" in 120 # Protect any spaces 121 *" "*) ldlibpth=`echo $ldlibpth|sed 's/ /\\\\ /g'` ;; 122 esac 123 124 case "$osname" in 125 linux) 126 # If there is a pre-existing $libperl from a previous 127 # installation, Linux needs to use LD_PRELOAD to 128 # override the LD_LIBRARY_PATH setting. See the 129 # INSTALL file, under "Building a shared perl library". 130 # If there is no pre-existing $libperl, we don't need 131 # to do anything further. 132 if test -f $archlib/CORE/$libperl; then 133 rm -f preload 134 cat <<'EOT' > preload 135#! /bin/sh 136lib=$1 137shift 138test -r $lib && export LD_PRELOAD="$lib $LD_PRELOAD" 139exec "$@" 140EOT 141 chmod 755 preload 142 ldlibpth="$ldlibpth `pwd`/preload `pwd`/$libperl" 143 fi 144 ;; 145 os390) test -f /bin/env && ldlibpth="/bin/env $ldlibpth" 146 ;; 147 esac 148 149 ;; 150 151*) pldlflags='' 152 static_target='static' 153 ;; 154esac 155 156: Prepare dependency lists for Makefile. 157dynamic_list=' ' 158extra_dep='' 159for f in $dynamic_ext; do 160 : the dependency named here will never exist 161 base=`echo "$f" | sed 's/.*\///'` 162 this_target="lib/auto/$f/$base.$dlext" 163 dynamic_list="$dynamic_list $this_target" 164 165 : Parallel makes reveal that we have some interdependencies 166 case $f in 167 Math/BigInt/FastCalc) extra_dep="$extra_dep 168$this_target: lib/auto/List/Util/Util.$dlext" ;; 169 Unicode/Normalize) extra_dep="$extra_dep 170$this_target: uni.data" ;; 171 esac 172done 173 174static_list=' ' 175for f in $static_ext; do 176 base=`echo "$f" | sed 's/.*\///'` 177 static_list="$static_list lib/auto/$f/$base\$(LIB_EXT)" 178done 179 180nonxs_list=' ' 181for f in $nonxs_ext; do 182 base=`echo "$f" | sed 's/.*\///'` 183 nonxs_list="$nonxs_list ext/$f/pm_to_blib" 184done 185 186echo "Extracting Makefile (with variable substitutions)" 187$spitshell >Makefile <<!GROK!THIS! 188# Makefile.SH 189# This file is derived from Makefile.SH. Any changes made here will 190# be lost the next time you run Configure. 191# Makefile is used to generate $firstmakefile. The only difference 192# is that $firstmakefile has the dependencies filled in at the end. 193 194CC = $cc 195LD = $ld 196 197LDFLAGS = $ldflags 198CLDFLAGS = $ldflags 199 200mallocsrc = $mallocsrc 201mallocobj = $mallocobj 202madlysrc = $madlysrc 203madlyobj = $madlyobj 204LNS = $lns 205# NOTE: some systems don't grok "cp -f". XXX Configure test needed? 206CPS = $cp 207RMS = rm -f 208ranlib = $ranlib 209 210# The following are mentioned only to make metaconfig include the 211# appropriate questions in Configure. If you want to change these, 212# edit config.sh instead, or specify --man1dir=/wherever on 213# installman commandline. 214bin = $installbin 215scriptdir = $scriptdir 216shrpdir = $archlibexp/CORE 217privlib = $installprivlib 218man1dir = $man1dir 219man1ext = $man1ext 220man3dir = $man3dir 221man3ext = $man3ext 222 223# The following are used to build and install shared libraries for 224# dynamic loading. 225LDDLFLAGS = $lddlflags 226SHRPLDFLAGS = $shrpldflags 227CCDLFLAGS = $ccdlflags 228DLSUFFIX = .$dlext 229PLDLFLAGS = $pldlflags 230LIBPERL = $libperl 231LLIBPERL= $linklibperl 232SHRPENV = $shrpenv 233 234# Static targets are ordinarily built without CCCDLFLAGS. However, 235# if building a shared libperl.so that might later be linked into 236# another application, then it might be appropriate to also build static 237# extensions (usually just DynaLoader) with relocatable code (e.g. -fPIC 238# for GNU cc). This is handled by ext/util/make_ext. 239STATIC = $static_target 240 241# The following is used to include the current directory in 242# the dynamic loader path you are building a shared libperl. 243LDLIBPTH = $ldlibpth 244 245# Sometimes running an executable is an adventure. 246RUN = $run 247 248dynamic_ext = $dynamic_list 249static_ext = $static_list 250nonxs_ext = $nonxs_list 251ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext) 252DYNALOADER = DynaLoader\$(OBJ_EXT) 253 254libs = $perllibs $cryptlib 255 256public = perl\$(EXE_EXT) $suidperl utilities translators 257 258shellflags = $shellflags 259 260# This is set to MAKE=$make if your $make command doesn't 261# do it for you. 262$make_set_make 263 264# Mention $gmake here so it gets probed for by Configure. 265 266# These variables may need to be manually set for non-Unix systems. 267AR = $full_ar 268EXE_EXT = $_exe 269LIB_EXT = $_a 270OBJ_EXT = $_o 271PATH_SEP = $p_ 272 273# If you're going to use valgrind and it can't be invoked as plain valgrind 274# then you'll need to change this, or override it on the make command line. 275VALGRIND=valgrind 276 277FIRSTMAKEFILE = $firstmakefile 278 279# Any special object files needed by this architecture, e.g. os2/os2.obj 280ARCHOBJS = $archobjs 281 282.SUFFIXES: .c \$(OBJ_EXT) .i .s 283 284# grrr 285SHELL = $sh 286 287# how to tr(anslate) newlines 288TRNL = '$trnl' 289 290OPTIMIZE = $optimize 291 292EXTRAS = $extras 293 294INSTALLPREFIXEXP = $prefix 295 296!GROK!THIS! 297# not used by Makefile but by installperl; 298# mentioned here so that metaconfig picks these up 299# $installusrbinperl 300# $versiononly 301 302case "${osname}:${osvers}" in 303darwin:*) 304$spitshell >>Makefile <<EOF 305 306# Your locales are broken (osname $osname, osvers $osvers) 307# and to avoid the numerous 308# perl: warning: Setting locale failed. 309# warnings during the build process we reset the locale variables. 310 311LC_ALL=C 312LANG=C 313LANGUAGE=C 314EOF 315 ;; 316esac 317 318## In the following dollars and backticks do not need the extra backslash. 319$spitshell >>Makefile <<'!NO!SUBS!' 320 321CCCMD = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $@` 322 323CCCMDSRC = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $<` 324 325CONFIGPM = lib/Config.pm lib/Config_heavy.pl 326private = preplibrary $(CONFIGPM) lib/Config.pod lib/ExtUtils/Miniperl.pm 327 328# Files to be built with variable substitution before miniperl 329# is available. 330sh = Makefile.SH cflags.SH config_h.SH makeaperl.SH makedepend.SH \ 331 makedir.SH myconfig.SH writemain.SH pod/Makefile.SH 332 333shextract = Makefile cflags config.h makeaperl makedepend \ 334 makedir myconfig writemain pod/Makefile 335 336# Files to be built with variable substitution after miniperl is 337# available. Dependencies handled manually below (for now). 338 339pl = pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL \ 340 pod/pod2usage.PL pod/podchecker.PL pod/podselect.PL 341 342# lib/lib.pm is not listed here because it has a rule of its own. 343plextract = pod/pod2html pod/pod2latex pod/pod2man pod/pod2text \ 344 pod/pod2usage pod/podchecker pod/podselect 345 346addedbyconf = UU $(shextract) $(plextract) lib/lib.pm pstruct 347 348# Unicode data files generated by mktables 349unidatafiles = lib/unicore/Canonical.pl lib/unicore/Exact.pl \ 350 lib/unicore/Properties lib/unicore/Decomposition.pl \ 351 lib/unicore/CombiningClass.pl lib/unicore/Name.pl lib/unicore/PVA.pl 352 353# Directories of Unicode data files generated by mktables 354unidatadirs = lib/unicore/To lib/unicore/lib 355 356h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h 357h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h opcode.h 358h3 = pad.h patchlevel.h perl.h perlapi.h perly.h pp.h proto.h regcomp.h 359h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h 360h5 = utf8.h warnings.h 361h = $(h1) $(h2) $(h3) $(h4) $(h5) 362 363c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro.c perl.c 364c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c 365c3 = taint.c toke.c util.c deb.c run.c universal.c xsutils.c pad.c globals.c 366c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c 367c5 = $(madlysrc) $(mallocsrc) 368 369c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c perlmain.c opmini.c 370 371obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro$(OBJ_EXT) 372obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) perl$(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) 373obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(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) 374 375obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) 376 377lintflags = \ 378 -b \ 379 -n \ 380 -p \ 381 -Ncheck=%all \ 382 -Nlevel=4 \ 383 -errchk=parentheses \ 384 -errhdr=%all \ 385 -errfmt=src \ 386 -errtags \ 387 -erroff=E_ASSIGN_NARROW_CONV \ 388 -erroff=E_BAD_PTR_CAST \ 389 -erroff=E_BAD_PTR_CAST_ALIGN \ 390 -erroff=E_BAD_PTR_INT_COMBINATION \ 391 -erroff=E_BAD_SIGN_EXTEND \ 392 -erroff=E_BLOCK_DECL_UNUSED \ 393 -erroff=E_CASE_FALLTHRU \ 394 -erroff=E_CONST_EXPR \ 395 -erroff=E_CONSTANT_CONDITION \ 396 -erroff=E_END_OF_LOOP_CODE_NOT_REACHED \ 397 -erroff=E_EQUALITY_NOT_ASSIGNMENT \ 398 -erroff=E_EXPR_NULL_EFFECT \ 399 -erroff=E_FALSE_LOGICAL_EXPR \ 400 -erroff=E_INCL_NUSD \ 401 -erroff=E_LOOP_EMPTY \ 402 -erroff=E_MAIN_PARAM \ 403 -erroff=E_POINTER_TO_OBJECT \ 404 -erroff=E_PTRDIFF_OVERFLOW \ 405 -erroff=E_SHIFT_CNT_NEG_TOO_BIG_L \ 406 -erroff=E_STATIC_UNUSED \ 407 -erroff=E_TRUE_LOGICAL_EXPR 408 409splintflags = \ 410 -I/usr/lib/gcc/i486-linux-gnu/4.0.2/include/ \ 411 -D__builtin_va_list=va_list \ 412 -Dsigjmp_buf=jmp_buf \ 413 -warnposix \ 414 \ 415 +boolint \ 416 +charintliteral \ 417 -fixedformalarray \ 418 -mustfreefresh \ 419 -nestedextern \ 420 -predboolint \ 421 -predboolothers \ 422 -preproc \ 423 -boolops \ 424 -shadow \ 425 -nullstate \ 426 +longintegral \ 427 +matchanyintegral \ 428 -type \ 429 \ 430 +line-len 999 \ 431 +weak 432 433splintfiles = $(c1) 434 435.c$(OBJ_EXT): 436 $(CCCMD) $(PLDLFLAGS) $*.c 437 438.c.i: 439 $(CCCMDSRC) -E $*.c > $*.i 440 441.c.s: 442 $(CCCMDSRC) -S $*.c 443 444all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make 445 @echo " "; 446 @echo " Everything is up to date. Type '$(MAKE) test' to run test suite." 447 448.PHONY: all translators utilities 449 450translators: miniperl$(EXE_EXT) $(CONFIGPM) FORCE 451 @echo " "; echo " Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all 452 453utilities: miniperl$(EXE_EXT) $(CONFIGPM) $(plextract) lib/lib.pm FORCE 454 @echo " "; echo " Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all 455 456 457# This is now done by installman only if you actually want the man pages. 458# @echo " "; echo " Making docs"; cd pod; $(MAKE) all; 459 460# Phony target to force checking subdirectories. 461# Apparently some makes require an action for the FORCE target. 462.PHONY: FORCE 463FORCE: 464 @sh -c true 465!NO!SUBS! 466$spitshell >>Makefile <<!GROK!THIS! 467 468# We do a copy of the op.c instead of a symlink because gcc gets huffy 469# if we have a symlink forest to another disk (it complains about too many 470# levels of symbolic links, even if we have only two) 471 472opmini.c: op.c 473 \$(RMS) opmini.c 474 \$(CPS) op.c opmini.c 475 476opmini\$(OBJ_EXT): opmini.c 477 \$(CCCMD) \$(PLDLFLAGS) $DPERL_EXTERNAL_GLOB opmini.c 478 479globals\$(OBJ_EXT): uudmap.h 480 481uudmap.h: generate_uudmap\$(EXE_EXT) 482 \$(RUN) ./generate_uudmap\$(EXE_EXT) >uudmap.h 483 484generate_uudmap\$(EXE_EXT): generate_uudmap\$(OBJ_EXT) 485 \$(CC) -o generate_uudmap \$(LDFLAGS) generate_uudmap\$(OBJ_EXT) \$(libs) 486 487!GROK!THIS! 488$spitshell >>Makefile <<'!NO!SUBS!' 489miniperlmain$(OBJ_EXT): miniperlmain.c patchlevel.h 490 $(CCCMD) $(PLDLFLAGS) $*.c 491 492perlmain.c: miniperlmain.c config.sh $(FIRSTMAKEFILE) 493 sh writemain $(DYNALOADER) $(static_ext) > perlmain.c 494 495!NO!SUBS! 496case "$osname" in 497cygwin) 498 ;; # Let cygwin/Makefile.SHs do its work. 499*) 500 $spitshell >>Makefile <<'!NO!SUBS!' 501perlmain$(OBJ_EXT): perlmain.c 502 $(CCCMD) $(PLDLFLAGS) $*.c 503 504!NO!SUBS! 505 ;; 506esac 507$spitshell >>Makefile <<'!NO!SUBS!' 508# The file ext.libs is a list of libraries that must be linked in 509# for static extensions, e.g. -lm -lgdbm, etc. The individual 510# static extension Makefile's add to it. 511ext.libs: $(static_ext) 512 -@test -f ext.libs || touch ext.libs 513 514!NO!SUBS! 515 516# How to build libperl. This is still rather convoluted. 517# Load up custom Makefile.SH fragment for shared loading and executables: 518case "$osname" in 519*) 520 Makefile_s="$osname/Makefile.SHs" 521 ;; 522esac 523 524case "$osname" in 525aix) 526 $spitshell >>Makefile <<!GROK!THIS! 527LIBS = $perllibs 528# In AIX we need to change this for building Perl itself from 529# its earlier definition (which is for building external 530# extensions *after* Perl has been built and installed) 531CCDLFLAGS = `echo $ccdlflags|sed -e 's@-bE:.*/perl\.exp@-bE:perl.exp@'` 532 533!GROK!THIS! 534 case "$useshrplib" in 535 define|true|[yY]*) 536 $spitshell >>Makefile <<'!NO!SUBS!' 537 538LIBPERL_NONSHR = libperl_nonshr$(LIB_EXT) 539MINIPERL_NONSHR = miniperl_nonshr$(EXE_EXT) 540 541$(LIBPERL_NONSHR): $(obj) 542 $(RMS) $(LIBPERL_NONSHR) 543 $(AR) rcu $(LIBPERL_NONSHR) $(obj) 544 545$(MINIPERL_NONSHR): $(LIBPERL_NONSHR) miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) 546 $(CC) $(LDFLAGS) -o $(MINIPERL_NONSHR) miniperlmain$(OBJ_EXT) \ 547 opmini$(OBJ_EXT) $(LIBPERL_NONSHR) $(LIBS) 548 549MINIPERLEXP = $(MINIPERL_NONSHR) 550 551LIBPERLEXPORT = perl.exp 552 553!NO!SUBS! 554 555 ;; 556 *) 557 $spitshell >>Makefile <<'!NO!SUBS!' 558MINIPERLEXP = miniperl$(EXE_EXT) 559 560PERLEXPORT = perl.exp 561 562!NO!SUBS! 563 ;; 564 esac 565 $spitshell >>Makefile <<'!NO!SUBS!' 566perl.exp: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) 567 ./$(MINIPERLEXP) makedef.pl PLATFORM=aix CC_FLAGS="$(OPTIMIZE)" | sort -u | sort -f > perl.exp 568 569!NO!SUBS! 570 ;; 571os2) 572 $spitshell >>Makefile <<'!NO!SUBS!' 573MINIPERLEXP = miniperl 574 575perl5.def: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) miniperl.map 576 ./$(MINIPERLEXP) makedef.pl PLATFORM=os2 -DPERL_DLL=$(PERL_DLL) CC_FLAGS="$(OPTIMIZE)" > perl5.def 577 578!NO!SUBS! 579 ;; 580esac 581 582if test -r $Makefile_s ; then 583 . $Makefile_s 584 $spitshell >>Makefile <<!GROK!THIS! 585 586Makefile: $Makefile_s 587!GROK!THIS! 588else 589 $spitshell >>Makefile <<'!NO!SUBS!' 590$(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) 591!NO!SUBS! 592 case "$useshrplib" in 593 true) 594 $spitshell >>Makefile <<'!NO!SUBS!' 595 rm -f $@ 596 $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs) 597!NO!SUBS! 598 case "$osname" in 599 aix) 600 $spitshell >>Makefile <<'!NO!SUBS!' 601 rm -f libperl$(OBJ_EXT) 602 mv $@ libperl$(OBJ_EXT) 603 $(AR) qv $(LIBPERL) libperl$(OBJ_EXT) 604!NO!SUBS! 605 ;; 606 esac 607 ;; 608 *) 609 $spitshell >>Makefile <<'!NO!SUBS!' 610 rm -f $(LIBPERL) 611 $(AR) rcu $(LIBPERL) $(obj) $(DYNALOADER) 612 @$(ranlib) $(LIBPERL) 613!NO!SUBS! 614 ;; 615 esac 616 $spitshell >>Makefile <<'!NO!SUBS!' 617 618# How to build executables. 619 620# The $& notation tells Sequent machines that it can do a parallel make, 621# and is harmless otherwise. 622# The miniperl -w -MExporter line is a basic cheap test to catch errors 623# before make goes on to run preplibrary and then MakeMaker on extensions. 624# This is very handy because later errors are often caused by miniperl 625# build problems but that's not obvious to the novice. 626# The Module used here must not depend on Config or any extensions. 627 628!NO!SUBS! 629 630 case "${osname}${osvers}" in 631 aix*|beos*) 632 $spitshell >>Makefile <<'!NO!SUBS!' 633miniperl: $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) 634 $(CC) -o miniperl $(CLDFLAGS) \ 635 `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ 636 miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) 637 $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest 638!NO!SUBS! 639 ;; 640 next4*) 641 $spitshell >>Makefile <<'!NO!SUBS!' 642miniperl: $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) 643 $(CC) -o miniperl `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ 644 miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) 645 $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest 646!NO!SUBS! 647 ;; 648 darwin*) 649 case "$osvers" in 650 [1-6].*) ;; 651 *) case "$ldflags" in 652 *"-flat_namespace"*) ;; 653 *) # to allow opmini.o to override stuff in libperl.dylib 654 $spitshell >>Makefile <<!NO!SUBS! 655NAMESPACEFLAGS = -force_flat_namespace 656!NO!SUBS! 657 ;; 658 esac 659 ;; 660 esac 661 $spitshell >>Makefile <<'!NO!SUBS!' 662miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) 663 -@rm -f miniperl.xok 664 $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl \ 665 `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ 666 miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) 667 $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest 668!NO!SUBS! 669 ;; 670 *) 671 $spitshell >>Makefile <<'!NO!SUBS!' 672miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) 673 -@rm -f miniperl.xok 674 $(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl \ 675 `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ 676 miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) 677 $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest 678!NO!SUBS! 679 ;; 680 esac 681 682 $spitshell >>Makefile <<'!NO!SUBS!' 683 684perl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) 685 -@rm -f miniperl.xok 686 $(SHRPENV) $(LDLIBPTH) $(CC) -o perl$(PERL_SUFFIX) $(PERL_PROFILE_LDFLAGS) $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) 687 688# Purify/Quantify Perls. 689 690pureperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) 691 $(SHRPENV) $(LDLIBPTH) purify $(CC) -o pureperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) 692 693purecovperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) 694 $(SHRPENV) $(LDLIBPTH) purecov $(CC) -o purecovperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) 695 696quantperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) 697 $(SHRPENV) $(LDLIBPTH) quantify $(CC) -o quantperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) 698 699# Valgrind perl (currently Linux only) 700 701perl.valgrind.config: config.sh 702 @echo "To build perl.valgrind you must Configure -Doptimize=-g -Uusemymalloc, checking..." 703 @$(MAKE) perl.config.dashg 704 @echo "Checking usemymalloc='n' in config.sh..." 705 @grep "^usemymalloc=" config.sh 706 @grep "^usemymalloc='n'" config.sh >/dev/null || exit 1 707 @echo "And of course you have to have valgrind..." 708 $(VALGRIND) ./perl -e 1 2>/dev/null || exit 1 709 710# Third Degree Perl (Tru64 only) 711 712perl.config.dashg: 713 @echo "Checking optimize='-g' in config.sh..." 714 @grep "^optimize=" config.sh 715 @egrep "^optimize='(.*-g.*)'" config.sh >/dev/null || exit 1 716 717perl.third.config: config.sh 718 @echo "To build perl.third you must Configure -Doptimize=-g -Uusemymalloc, checking..." 719 @$(MAKE) perl.config.dashg 720 @echo "Checking usemymalloc='n' in config.sh..." 721 @grep "^usemymalloc=" config.sh 722 @grep "^usemymalloc='n'" config.sh >/dev/null || exit 1 723 724perl.third: /usr/bin/atom perl.third.config perl 725 atom -tool third -L. -all -gp -toolargs="-invalid -uninit heap+stack+copy -min 0" perl 726 @echo "Now you may run perl.third and then study perl.3log." 727 728# Pixie Perls (Tru64 and IRIX only) 729 730perl.pixie.config: config.sh 731 @echo "To build perl.pixie you must Configure -Doptimize=-g, checking..." 732 @$(MAKE) perl.config.dashg 733 734perl.pixie.atom: /usr/bin/atom perl 735 atom -tool pixie -L. -all -toolargs="-quiet" perl 736 737perl.pixie.irix: perl 738 pixie perl 739 740perl.pixie: /usr/bin/pixie perl.pixie.config perl 741 if test -x /usr/bin/atom; then \ 742 $(MAKE) perl.pixie.atom; \ 743 else \ 744 $(MAKE) perl.pixie.irix; \ 745 fi 746 @echo "Now you may run perl.pixie and then run pixie." 747 748# Gprof Perl 749 750perl.config.dashpg: 751 @echo "Checking optimize='-pg' in config.sh..." 752 @grep "^optimize=" config.sh 753 @grep "^optimize='.*-pg.*'" config.sh >/dev/null || exit 1 754 755perl.gprof.config: config.sh 756 @echo "To build perl.gprof you must Configure -Doptimize=-pg, checking..." 757 @$(MAKE) perl.config.dashpg 758 759perl.gprof: /usr/bin/gprof perl.gprof.config 760 @-rm -f perl 761 $(MAKE) PERL_SUFFIX=.gprof PERL_PROFILE_LDFLAGS=-pg perl 762 @echo "Now you may run perl.gprof and then run gprof perl.gprof." 763 764# Gcov Perl 765 766perl.config.gcov: 767 @echo "To build perl.gcov you must use gcc 3.0 or newer, checking..." 768 @echo "Checking gccversion in config.sh..." 769 @grep "^gccversion=" config.sh 770 @grep "^gccversion='[3-9]\." config.sh >/dev/null || exit 1 771 @echo "To build perl.gcov you must Configure -Dccflags=-fprofile-arcs -ftest-coverage, checking..." 772 @echo "Checking ccflags='-fprofile-arcs -ftest-coverage' in config.sh..." 773 @grep "^ccflags=" config.sh 774 @grep "^ccflags='.*-fprofile-arcs -ftest-coverage.*'" config.sh >/dev/null || exit 1 775 776perl.gcov: perl.config.gcov 777 @-rm -f perl 778 $(MAKE) PERL_SUFFIX=.gcov PERL_PROFILE_LDFLAGS='' perl 779 @echo "Now you may run perl.gcov and then run gcov some.c." 780 781# Microperl. This is just a convenience thing if one happens to 782# build also the full Perl and therefore the real big Makefile: 783# usually one should manually explicitly issue the below command. 784 785.PHONY: microperl 786microperl: 787 $(MAKE) -f Makefile.micro 788 789# This version, if specified in Configure, does ONLY those scripts which need 790# set-id emulation. Suidperl must be setuid root. It contains the "taint" 791# checks as well as the special code to validate that the script in question 792# has been invoked correctly. 793 794suidperl$(EXE_EXT): $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) 795 $(SHRPENV) $(LDLIBPTH) $(CC) -o suidperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) 796 797!NO!SUBS! 798 799fi 800 801$spitshell >>Makefile <<'!NO!SUBS!' 802 803sperl$(OBJ_EXT): perl.c $(h) 804 $(RMS) sperl.c 805 $(LNS) perl.c sperl.c 806 $(CCCMD) -DIAMSUID sperl.c 807 $(RMS) sperl.c 808 809# We have to call our ./makedir because Ultrix 4.3 make can't handle the line 810# test -d lib/auto || mkdir lib/auto 811# We need to autosplit in two steps because VOS can't handle so many args 812# 813.PHONY: preplibrary 814preplibrary: miniperl$(EXE_EXT) $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL) 815 @sh ./makedir lib/auto 816 @echo " AutoSplitting perl library" 817 $(LDLIBPTH) $(RUN) ./miniperl -Ilib -e 'use AutoSplit; \ 818 autosplit_lib_modules(@ARGV)' lib/*.pm 819 $(LDLIBPTH) $(RUN) ./miniperl -Ilib -e 'use AutoSplit; \ 820 autosplit_lib_modules(@ARGV)' lib/*/*.pm 821 $(MAKE) lib/re.pm 822 823.PHONY: makeppport 824makeppport: miniperl$(EXE_EXT) $(CONFIGPM) 825 $(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib mkppport 826 827lib/Config.pod: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary 828 $(LDLIBPTH) $(RUN) ./miniperl -Ilib configpm 829 830$(CONFIGPM): lib/Config.pod 831 832lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl $(CONFIGPM) 833 $(LDLIBPTH) $(RUN) ./miniperl minimod.pl > lib/ExtUtils/Miniperl.pm 834 835lib/re.pm: ext/re/re.pm 836 @-rm -f $@ 837 cp ext/re/re.pm lib/re.pm 838 839$(plextract): miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p 840 @-rm -f $@ 841 $(LDLIBPTH) $(RUN) ./miniperl -I`pwd`/lib $@.PL 842 843x2p/s2p: miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p.PL 844 cd x2p; $(LDLIBPTH) $(MAKE) s2p 845 846lib/lib.pm: miniperl$(EXE_EXT) $(CONFIGPM) 847 @-rm -f $@ 848 $(LDLIBPTH) $(RUN) ./miniperl -Ilib lib/lib_pm.PL 849 850unidatafiles $(unidatafiles): uni.data 851 852uni.data: miniperl$(EXE_EXT) $(CONFIGPM) lib/unicore/mktables 853 cd lib/unicore && $(LDLIBPTH) $(RUN) ../../miniperl -I../../lib mktables -w 854 touch uni.data 855 856extra.pods: miniperl$(EXE_EXT) 857 -@test ! -f extra.pods || rm -f `cat extra.pods` 858 -@rm -f extra.pods 859 -@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \ 860 nx=`echo $$x | sed -e "s/README\.//"`; \ 861 cd pod ; $(LNS) ../$$x "perl"$$nx".pod" ; cd .. ; \ 862 echo "pod/perl"$$nx".pod" >> extra.pods ; \ 863 done 864 -@rm -f pod/perlvms.pod 865 -@test -f vms/perlvms.pod && cd pod && $(LNS) ../vms/perlvms.pod perlvms.pod && cd .. && echo "pod/perlvms.pod" >> extra.pods 866 -@rm -f pod/perldelta.pod 867 -@test -f pod/perl595delta.pod && cd pod && $(LNS) perl595delta.pod perldelta.pod && cd .. && echo "pod/perldelta.pod" >> extra.pods # See buildtoc 868 869extras.make: perl$(EXE_EXT) 870 -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&make(@ARGV)' `cat extras.lst` 871 872extras.test: perl$(EXE_EXT) 873 -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&test(@ARGV)' `cat extras.lst` 874 875extras.install: perl$(EXE_EXT) 876 -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&install(@ARGV)' `cat extras.lst` 877 878.PHONY: install install-strip install-all install-verbose install-silent \ 879 no-install install.perl install.man install.html 880 881META.yml: Porting/makemeta Porting/Maintainers.pl Porting/Maintainers.pm 882 $(LDLIBPTH) $(RUN) ./miniperl -Ilib Porting/makemeta 883 884install-strip: 885 $(MAKE) STRIPFLAGS=-s install DESTDIR="$(DESTDIR)" 886 887install install-all: 888 $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) DESTDIR="$(DESTDIR)" 889 890install-verbose: 891 $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-V DESTDIR="$(DESTDIR)" 892 893install-silent: 894 $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-S DESTDIR="$(DESTDIR)" 895 896no-install: 897 $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-n DESTDIR="$(DESTDIR)" 898 899# Set this to an empty string to avoid an attempt of rebuild before install 900INSTALL_DEPENDENCE = all 901 902install.perl: $(INSTALL_DEPENDENCE) installperl 903 $(LDLIBPTH) ./perl installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS) 904 -@test ! -s extras.lst || $(MAKE) extras.install 905 906install.man: all installman 907 $(LDLIBPTH) ./perl installman --destdir=$(DESTDIR) $(INSTALLFLAGS) 908 909# XXX Experimental. Hardwired values, but useful for testing. 910# Eventually Configure could ask for some of these values. 911install.html: all installhtml 912 -@test -f README.vms && cd vms && $(LNS) ../README.vms README_vms.pod && cd .. 913 $(LDLIBPTH) ./perl installhtml \ 914 --podroot=. --podpath=. --recurse \ 915 --htmldir=$(privlib)/html \ 916 --htmlroot=$(privlib)/html \ 917 --splithead=pod/perlipc \ 918 --splititem=pod/perlfunc \ 919 --libpods=perlfunc:perlguts:perlvar:perlrun:perlop \ 920 --ignore=Porting/Maintainers.pm,Porting/patching.pod,Porting/pumpkin.pod,Porting/repository.pod \ 921 --verbose 922 923 924# I now supply perly.c with the kits, so the following section is 925# used only if you force bison to run by saying 926# make regen_perly 927# You normally shouldn't remake perly.[ch]. 928 929.PHONY: regen_perly 930 931run_byacc: 932 @echo "run_byacc is obsolete; try 'make regen_perly' instead" 933 934# this outputs perly.h, perly.act and perly.tab 935regen_perly: 936 perl regen_perly.pl 937 938# We don't want to regenerate perly.c and perly.h, but they might 939# appear out-of-date after a patch is applied or a new distribution is 940# made. 941perly.c: perly.y 942 -@sh -c true 943 944perly.h: perly.y 945 -@sh -c true 946 947# No compat3.sym here since and including the 5.004_50. 948# No interp.sym since 5.005_03. 949SYM = global.sym globvar.sym perlio.sym pp.sym 950 951SYMH = perlvars.h intrpvar.h 952 953CHMOD_W = chmod +w 954 955# The following files are generated automatically 956# autodoc.pl: pod/perlapi.pod pod/perlintern.pod 957# embed.pl: proto.h embed.h embedvar.h global.sym 958# perlapi.h perlapi.c 959# [* embed.pl needs pp.sym generated by opcode.pl! *] 960# keywords.pl: keywords.h 961# opcode.pl: opcode.h opnames.h pp_proto.h pp.sym 962# regcomp.pl: regnodes.h 963# warnings.pl: warnings.h lib/warnings.pm 964# The correct versions should be already supplied with the perl kit, 965# in case you don't have perl available. 966# To force them to be regenerated, run 967# perl regen.pl 968# with your existing copy of perl 969# (make regen_headers is kept for backwards compatibility) 970 971AUTOGEN_FILES = keywords.h opcode.h opnames.h pp_proto.h pp.sym proto.h \ 972 embed.h embedvar.h global.sym \ 973 pod/perlintern.pod pod/perlapi.pod \ 974 perlapi.h perlapi.c regnodes.h \ 975 warnings.h lib/warnings.pm 976 977.PHONY: regen_headers regen_pods regen_all 978 979regen regen_headers: FORCE 980 -perl regen.pl 981 982regen_pods: FORCE 983 -cd pod; $(LDLIBPTH) $(MAKE) regen_pods 984 985regen_all: regen regen_pods 986 987.PHONY: manisort manicheck 988 989manisort: FORCE 990 LC_ALL=C sort -fdc MANIFEST || (echo "WARNING: re-sorting MANIFEST"; \ 991 LC_ALL=C sort -fdo MANIFEST MANIFEST) 992 993manicheck: FORCE 994 perl Porting/manicheck 995 996# Extensions: 997# Names added to $(dynamic_ext) or $(static_ext) or $(nonxs_ext) will 998# automatically get built. There should ordinarily be no need to change 999# any of this part of makefile. 1000#
1001# The dummy dependency is a place holder in case $(dynamic_ext) or 1002# $(static_ext) is empty. 1003# 1004# DynaLoader may be needed for extensions that use Makefile.PL. 1005 1006$(DYNALOADER): miniperl$(EXE_EXT) preplibrary FORCE 1007 @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) 1008 1009d_dummy $(dynamic_ext): miniperl$(EXE_EXT) preplibrary makeppport $(DYNALOADER) FORCE 1010 @$(LDLIBPTH) sh ext/util/make_ext dynamic $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) 1011 1012s_dummy $(static_ext): miniperl$(EXE_EXT) preplibrary makeppport $(DYNALOADER) FORCE 1013 @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) 1014 1015n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE 1016 @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) 1017!NO!SUBS! 1018 1019$spitshell >>Makefile <<EOF 1020$extra_dep 1021EOF 1022 1023$spitshell >>Makefile <<'!NO!SUBS!' 1024 1025.PHONY: printconfig 1026printconfig: 1027 @eval `$(LDLIBPTH) ./perl -Ilib -V:$(CONFIGVAR)`; echo $$$(CONFIGVAR) 1028 1029.PHONY: clean _tidy _mopup _cleaner1 _cleaner2 \ 1030 realclean _realcleaner clobber _clobber \ 1031 distclean veryclean _verycleaner \ 1032 cleanup_unpacked_files unpack_files 1033 1034clean: cleanup_unpacked_files _tidy _mopup 1035 1036realclean: cleanup_unpacked_files _realcleaner _mopup 1037 @echo "Note that '$(MAKE) realclean' does not delete config.sh or Policy.sh" 1038 1039_clobber: 1040 -@rm -f Cross/run-* Cross/to-* Cross/from-* 1041 rm -f config.sh cppstdin Policy.sh extras.lst 1042 1043clobber: cleanup_unpacked_files _realcleaner _mopup _clobber 1044 1045distclean: clobber 1046 1047# Like distclean but also removes emacs backups and *.orig. 1048veryclean: _verycleaner _mopup _clobber 1049 -@rm -f Obsolete Wanted 1050 1051# Do not 'make _mopup' directly. 1052_mopup: 1053 rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c uudmap.h generate_uudmap$(EXE_EXT) 1054 -rmdir .depending 1055 -@test -f extra.pods && rm -f `cat extra.pods` 1056 -@test -f vms/README_vms.pod && rm -f vms/README_vms.pod 1057 -rm -f perl.exp ext.libs extra.pods uni.data opmini.o 1058 -rm -f perl.export perl.dll perl.libexp perl.map perl.def 1059 -rm -f perl.loadmap miniperl.loadmap perl.prelmap miniperl.prelmap 1060 -rm -f perl.third lib*.so.perl.third perl.3log t/perl.third t/perl.3log 1061 -rm -f perl.pixie lib*.so.perl.pixie lib*.so.Addrs 1062 -rm -f perl.Addrs perl.Counts t/perl.Addrs t/perl.Counts *perl.xok 1063 -rm -f perlld cygwin.c ld2 libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump 1064 -rm -f perl$(EXE_EXT) suidperl$(EXE_EXT) miniperl$(EXE_EXT) $(LIBPERL) libperl.* microperl 1065 -rm -f opcode.h-old opnames.h-old pp.sym-old pp_proto.h-old 1066 -rm -f config.over 1067 1068# Do not 'make _tidy' directly. 1069_tidy: 1070 -cd pod; $(LDLIBPTH) $(MAKE) clean 1071 -cd utils; $(LDLIBPTH) $(MAKE) clean 1072 -cd x2p; $(LDLIBPTH) $(MAKE) clean 1073 -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \ 1074 $(LDLIBPTH) sh ext/util/make_ext clean $$x MAKE=$(MAKE) ; \ 1075 done 1076 1077_cleaner1: 1078 -cd os2; rm -f Makefile 1079 -cd pod; $(LDLIBPTH) $(MAKE) $(CLEAN) 1080 -cd utils; $(LDLIBPTH) $(MAKE) $(CLEAN) 1081 -cd x2p; $(LDLIBPTH) $(MAKE) $(CLEAN) 1082 -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \ 1083 $(LDLIBPTH) sh ext/util/make_ext $(CLEAN) $$x MAKE=$(MAKE) ; \ 1084 done 1085 -@test ! -f $(RUN) ./miniperl$(EXE_EXT) || $(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib mkppport --clean 1086 1087# Some systems do not support "?", so keep these files separate. 1088_cleaner2: 1089 -rm -f core.*perl.*.? t/core.perl.*.? .?*.c 1090 rm -f core *perl.core t/core t/*perl.core core.* t/core.* 1091 rm -f t/misctmp* t/forktmp* t/tmp* t/c t/perl$(EXE_EXT) t/rantests 1092 rm -f so_locations $(LIBPERL_NONSHR) $(MINIPERL_NONSHR) 1093 rm -rf $(addedbyconf) 1094 rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old 1095 rm -f $(private) 1096 rm -rf $(unidatafiles) $(unidatadirs) 1097 rm -rf lib/auto 1098 rm -f lib/.exists lib/*/.exists lib/*/*/.exists 1099 rm -f h2ph.man pstruct 1100 rm -rf .config 1101 rm -f preload 1102 rm -rf lib/Encode lib/Compress lib/Hash lib/re 1103 rm -rf lib/IO/Compress lib/IO/Uncompress 1104 rm -f lib/ExtUtils/ParseXS/t/XSTest.c 1105 rm -f lib/ExtUtils/ParseXS/t/XSTest$(OBJ_EXT) 1106 rm -f lib/ExtUtils/ParseXS/t/XSTest$(DLSUFFIX) 1107 -rmdir lib/B lib/Data 1108 -rmdir lib/Filter/Util lib/IO/Socket 1109 -rmdir lib/List lib/MIME lib/Scalar lib/Sys 1110 -rmdir lib/threads lib/XS 1111 1112_realcleaner: 1113 @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=realclean 1114 @$(LDLIBPTH) $(MAKE) _cleaner2 1115 1116_verycleaner: 1117 @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=veryclean 1118 @$(LDLIBPTH) $(MAKE) _cleaner2 1119 -rm -f *~ *.orig */*~ */*.orig */*/*~ */*/*.orig 1120 1121.PHONY: lint 1122lint: $(c) 1123 rm -f *.ln 1124 lint $(lintflags) -DPERL_CORE -D_REENTRANT -DDEBUGGING -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(c) 1125 1126.PHONY: splint 1127splint: $(c) 1128 splint $(splintflags) -DPERL_CORE -D_REENTRANT -DDEBUGGING -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(splintfiles) 1129 1130# Need to unset during recursion to go out of loop. 1131# The README below ensures that the dependency list is never empty and 1132# that when MAKEDEPEND is empty $(FIRSTMAKEFILE) doesn't need rebuilding. 1133 1134MAKEDEPEND = Makefile makedepend 1135 1136$(FIRSTMAKEFILE): README $(MAKEDEPEND) 1137 $(MAKE) depend MAKEDEPEND= 1138 1139config.h: config_h.SH config.sh 1140 $(SHELL) config_h.SH 1141 1142# When done, touch perlmain.c so that it doesn't get remade each time. 1143.PHONY: depend 1144depend: makedepend 1145 sh ./makedepend MAKE=$(MAKE) 1146 - test -s perlmain.c && touch perlmain.c 1147 cd x2p; $(MAKE) depend 1148 1149# Cannot postpone this until $firstmakefile is ready ;-) 1150makedepend: makedepend.SH config.sh 1151 sh ./makedepend.SH 1152 1153.PHONY: test check test_prep test_prep_nodll test_prep_pre _test_prep \ 1154 test_tty test-tty _test_tty test_notty test-notty _test_notty \ 1155 utest ucheck test.utf8 check.utf8 test.torture torturetest \ 1156 test.utf16 check.utf16 utest.utf16 ucheck.utf16 \ 1157 test.third check.third utest.third ucheck.third test_notty.third \ 1158 test.deparse test_notty.deparse test_harness test_harness_notty \ 1159 minitest coretest test.taintwarn 1160 1161# Cannot delegate rebuilding of t/perl to make 1162# to allow interlaced test and minitest 1163 1164TESTFILE=TEST 1165 1166_test_prep: unpack_files 1167 cd t && (rm -f $(PERL)$(EXE_EXT); $(LNS) ../$(PERL)$(EXE_EXT) $(PERL)$(EXE_EXT)) 1168 1169# Architecture-neutral stuff: 1170 1171test_prep_pre: preplibrary utilities $(nonxs_ext) 1172 1173test_prep: test_prep_pre miniperl$(EXE_EXT) $(unidatafiles) perl$(EXE_EXT) $(dynamic_ext) $(TEST_PERL_DLL) 1174 PERL=./perl $(MAKE) _test_prep 1175 1176_test_tty: 1177 cd t && $(PERL_DEBUG) $(LDLIBPTH) $(PERL) $(TESTFILE) $(TEST_ARGS) </dev/tty 1178 1179_test_notty: 1180 cd t && $(PERL_DEBUG) PERL_SKIP_TTY_TEST=1 $(LDLIBPTH) $(PERL) $(TESTFILE) $(TEST_ARGS) 1181 1182unpack_files: 1183 $(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib uupacktool.pl -u -m 1184 1185cleanup_unpacked_files: 1186 -@test ! -f $(RUN) ./miniperl$(EXE_EXT) || $(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib uupacktool.pl -c 1187 1188# The second branch is for testing without a tty or controlling terminal, 1189# see t/op/stat.t 1190_test: 1191 if (true </dev/tty) >/dev/null 2>&1; then \ 1192 $(MAKE) TEST_ARGS=$(TEST_ARGS) TESTFILE=$(TESTFILE) _test_tty ; \ 1193 else \ 1194 $(MAKE) TEST_ARGS=$(TEST_ARGS) TESTFILE=$(TESTFILE) _test_notty ; \ 1195 fi 1196 @echo "Ran tests" > t/rantests 1197 1198test check: test_prep 1199 PERL=./perl $(MAKE) _test 1200 1201test_tty: test_prep 1202 PERL=./perl $(MAKE) _test_tty 1203 1204test_notty: test_prep 1205 PERL=./perl $(MAKE) _test_notty 1206 1207utest ucheck test.utf8 check.utf8: test_prep 1208 PERL=./perl TEST_ARGS=-utf8 $(MAKE) _test 1209 1210coretest: test_prep 1211 PERL=./perl TEST_ARGS=-core $(MAKE) _test 1212 1213test-prep: test_prep 1214 1215test-tty: test_tty 1216 1217test-notty: test_notty 1218 1219# Torture testing 1220 1221test.torture torturetest: test_prep 1222 PERL=./perl TEST_ARGS=-torture $(MAKE) _test 1223 1224# Targets for UTF16 testing: 1225 1226minitest.utf16: minitest.prep 1227 - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \ 1228 && $(LDLIBPTH) ./perl TEST -minitest -utf16 base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty 1229 1230test.utf16 check.utf16: test_prep 1231 PERL=./perl $(MAKE) TEST_ARGS=-utf16 _test 1232 1233utest.utf16 ucheck.utf16: test_prep 1234 PERL=./perl $(MAKE) TEST_ARGS="-utf8 -utf16" _test 1235 1236# Targets for valgrind testing: 1237 1238test_prep.valgrind: test_prep perl.valgrind 1239 PERL=./perl $(MAKE) _test_prep 1240 1241test.valgrind check.valgrind: test_prep perl.valgrind.config 1242 PERL=./perl PERL_DEBUG=PERL_VALGRIND=1 VALGRIND='$(VALGRIND)' $(MAKE) _test 1243 1244utest.valgrind ucheck.valgrind: test_prep.valgrind perl.valgrind.config 1245 PERL=./perl PERL_DEBUG=PERL_VALGRIND=1 TEST_ARGS=-utf8 $(MAKE) _test 1246 1247test_notty.valgrind: test_prep.valgrind perl.valgrind.config 1248 PERL=./perl $(MAKE) PERL_DEBUG=PERL_VALGRIND=1 _test_notty 1249 1250# Targets for Third Degree testing. 1251 1252test_prep.third: test_prep perl.third 1253 PERL=./perl.third $(MAKE) _test_prep 1254 1255test.third check.third: test_prep.third perl.third 1256 PERL=./perl.third PERL_DEBUG=PERL_3LOG=1 $(MAKE) _test 1257 1258utest.third ucheck.third: test_prep.third perl.third 1259 PERL=./perl.third PERL_DEBUG=PERL_3LOG=1 TEST_ARGS=-utf8 $(MAKE) _test 1260 1261test_notty.third: test_prep.third perl.third 1262 PERL=./perl.third $(MAKE) PERL_DEBUG=PERL_3LOG=1 _test_notty 1263 1264# Targets for Deparse testing. 1265 1266test.deparse: test_prep 1267 PERL=./perl TEST_ARGS=-deparse $(MAKE) _test 1268 1269test_notty.deparse: test_prep 1270 PERL=./perl TEST_ARGS=-deparse $(MAKE) _test_notty 1271 1272# Targets to run the test suite with -t 1273 1274test.taintwarn: test_prep 1275 PERL=./perl TEST_ARGS=-taintwarn $(MAKE) _test 1276 1277minitest.prep: 1278 -@test -f lib/lib.pm && test -f lib/Config.pm || \ 1279 $(MAKE) lib/Config.pm lib/lib.pm $(unidatafiles) 1280 @echo " " 1281 @echo "You may see some irrelevant test failures if you have been unable" 1282 @echo "to build lib/Config.pm, lib/lib.pm or the Unicode data files." 1283 @echo " " 1284 1285# Can't depend on lib/Config.pm because that might be where miniperl 1286# is crashing. 1287minitest: miniperl$(EXE_EXT) lib/re.pm minitest.prep 1288 - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \ 1289 && $(LDLIBPTH) ./perl TEST -minitest base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty 1290 1291# Test via harness 1292 1293test_harness: test_prep 1294 PERL=./perl $(MAKE) TESTFILE=harness _test 1295 1296test_harness_notty: test_prep 1297 PERL=./perl HARNESS_NOTTY=1 $(MAKE) TESTFILE=harness _test 1298 1299# Handy way to run perlbug -ok without having to install and run the 1300# installed perlbug. We don't re-run the tests here - we trust the user. 1301# Please *don't* use this unless all tests pass. 1302# If you want to report test failures, use "make nok" instead. 1303 1304.PHONY: ok okfile oknack okfilenack nok nokfile noknack nokfilenack 1305 1306ok: utilities 1307 $(LDLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' 1308 1309okfile: utilities 1310 $(LDLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -F perl.ok 1311 1312oknack: utilities 1313 $(LDLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -A 1314 1315okfilenack: utilities 1316 $(LDLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -F perl.ok -A 1317 1318nok: utilities 1319 $(LDLIBPTH) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' 1320 1321nokfile: utilities 1322 $(LDLIBPTH) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -F perl.nok 1323 1324noknack: utilities 1325 $(LDLIBPTH) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -A 1326 1327nokfilenack: utilities 1328 $(LDLIBPTH) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -F perl.nok -A 1329 1330.PHONY: clist hlist shlist pllist 1331 1332clist: $(c) 1333 echo $(c) | tr ' ' $(TRNL) >.clist 1334 1335hlist: $(h) 1336 echo $(h) | tr ' ' $(TRNL) >.hlist 1337 1338shlist: $(sh) 1339 echo $(sh) | tr ' ' $(TRNL) >.shlist 1340 1341pllist: $(pl) 1342 echo $(pl) | tr ' ' $(TRNL) >.pllist 1343 1344Makefile: Makefile.SH ./config.sh 1345 $(SHELL) Makefile.SH 1346 1347.PHONY: distcheck 1348distcheck: FORCE 1349 perl '-MExtUtils::Manifest=&fullcheck' -e 'fullcheck()' 1350 1351.PHONY: elc 1352elc: emacs/cperl-mode.elc 1353 1354emacs/cperl-mode.elc: emacs/cperl-mode.el 1355 -cd emacs; emacs -batch -q -no-site-file -f batch-byte-compile cperl-mode.el 1356 1357.PHONY: etags ctags tags 1358 1359etags: TAGS 1360 1361TAGS: emacs/cperl-mode.elc 1362 sh emacs/ptags 1363 1364# Let's hope make will not go into an infinite loop on case-unsensitive systems 1365# This may also fail if . is in the head of the path, since perl will 1366# require -Ilib 1367tags: TAGS 1368 perl emacs/e2ctags.pl TAGS > tags 1369 1370ctags: 1371 ctags -f Tags -N --totals --languages=c --langmap=c:+.h --exclude=opmini.c *.c *.h 1372 1373# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE 1374# If this runs make out of memory, delete /usr/include lines. 1375!NO!SUBS! 1376 1377$eunicefix Makefile 1378case `pwd` in 1379*SH) 1380 $rm -f ../Makefile 1381 $ln Makefile ../Makefile 1382 ;; 1383esac 1384$rm -f $firstmakefile 1385 1386# Now do any special processing required before building. 1387 1388case "$ebcdic" in 1389define) 1390 xxx='' 1391 echo "This is an EBCDIC system, checking if any parser files need regenerating." >&2 1392case "$osname" in 1393os390|posix-bc) 1394 if cd x2p 1395 then 1396 rm -f y.tab.c y.tab.h 1397 case "$osname" in 1398 posix-bc) 1399 # we are using two different yaccs in BS2000 Posix! 1400 byacc a2p.y >/dev/null 2>&1 1401 ;; 1402 *) # e.g. os390 1403 yacc a2p.y >/dev/null 2>&1 1404 ;; 1405 esac 1406 if cmp -s y.tab.c a2p.c 1407 then 1408 rm -f y.tab.c 1409 else 1410 echo "a2p.y -> a2p.c" >&2 1411 mv -f y.tab.c a2p.c 1412 chmod u+w a2p.c 1413 sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \ 1414 -e 's|^static void __YY_YACC_MAIN.*BS2000.*|/*static main deleted*/|' \ 1415 -e 's/y\.tab/a2p/g' a2p.c >a2p.tmp && mv a2p.tmp a2p.c 1416 xxx="$xxx a2p.c" 1417 fi 1418 # In case somebody yacc -d:ed the a2p.y. 1419 if test -f y.tab.h 1420 then 1421 if cmp -s y.tab.h a2p.h 1422 then 1423 rm -f y.tab.h 1424 else 1425 echo "a2p.h -> a2p.h" >&2 1426 mv -f y.tab.h a2p.h 1427 xxx="$xxx a2p.h" 1428 fi 1429 fi 1430 cd .. 1431 fi 1432 ;; 1433vmesa) 1434 # Do nothing in VM/ESA. 1435 ;; 1436*) 1437 echo "'$osname' is an EBCDIC system I don't know that well." >&4 1438 ;; 1439esac 1440 case "$xxx" in 1441 '') echo "No parser files were regenerated. That's okay." >&2 ;; 1442 esac 1443 ;; 1444esac 1445 1446# ex: set ts=8 sts=4 sw=4 noet: 1447

