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