X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile.SH;h=61d2ca49d7223ac0389fd92b97be80ca8a174a0e;hb=756698e49da5b17014f51650e301ccc98df5154e;hp=1dad34044c29b067b5729ca7f9fc4db7c0735444;hpb=9c9e9f0863cb100e2963b00cc837c298fe9d4db4;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Makefile.SH b/Makefile.SH index 1dad340..61d2ca4 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -1,3 +1,4 @@ +#! /bin/sh case $CONFIG in '') if test -f config.sh; then TOP=.; @@ -22,27 +23,38 @@ case "$d_dosuid" in *) suidperl='';; esac -shrpdir=$archlibexp/CORE - +linklibperl='$(LIBPERL)' +shrpldflags='$(LDDLFLAGS)' case "$useshrplib" in true) - pldlflags="$cccdlflags" - case "$osname" in - os2) shrpenv='' ;; - *) shrpenv="env LD_RUN_PATH=$shrpdir";; - esac + pldlflags="$cccdlflags" + # NeXT-4 specific stuff. Can't we do this in the hint file? case "${osname}${osvers}" in next4*) - # Can't we do this in the hint file? - ld='libtool -dynamic -undefined warning -framework System \ - -compatibility_version 1 -current_version $(PATCHLEVEL) \ - -prebind -seg1addr 0x27000000 -install_name $(SHRPDIR)/$@' + ld=libtool + lddlflags="-dynamic -undefined warning -framework System \ + -compatibility_version 1 -current_version $patchlevel \ + -prebind -seg1addr 0x27000000 -install_name \$(shrpdir)/\$@" + ;; + sunos*|freebsd[23]*|netbsd*) + linklibperl="-lperl" + ;; + aix*) + shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp" + case "$osvers" in + 3*) + shrpldflags="$shrpldflags -e _nostart $ldflags $libs $cryptlib" + ;; + *) + shrpldflags="$shrpldflags -b noentry $ldflags $libs $cryptlib" + ;; + esac + aixinstdir=`pwd | sed 's/\/UU$//'` + linklibperl="-L $archlibexp/CORE -L $aixinstdir -lperl" ;; esac - ;; -*) - pldlflags='' - shrpenv='' + ;; +*) pldlflags='' ;; esac @@ -101,10 +113,12 @@ man3ext = $man3ext # The following are used to build and install shared libraries for # dynamic loading. LDDLFLAGS = $lddlflags +SHRPLDFLAGS = $shrpldflags CCDLFLAGS = $ccdlflags DLSUFFIX = .$dlext PLDLFLAGS = $pldlflags LIBPERL = $libperl +LLIBPERL= $linklibperl SHRPENV = $shrpenv dynamic_ext = $dynamic_list @@ -217,18 +231,6 @@ utilities: miniperl lib/Config.pm FORCE FORCE: @sh -c true -# The $& notation tells Sequent machines that it can do a parallel make, -# and is harmless otherwise. -# The miniperl -w -MExporter line is a basic cheap test to catch errors -# before make goes on to run preplibrary and then MakeMaker on extensions. -# This is very handy because later errors are often caused by miniperl -# build problems but that's not obvious to the novice. -# The Module used here must not depend on Config or any extensions. - -miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) - $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain$(OBJ_EXT) $(LIBPERL) $(libs) - @./miniperl -w -Ilib -MExporter -e 0 || $(MAKE) minitest - miniperlmain$(OBJ_EXT): miniperlmain.c $(CCCMD) $(PLDLFLAGS) $*.c @@ -245,18 +247,10 @@ perlmain$(OBJ_EXT): perlmain.c ext.libs: $(static_ext) -@test -f ext.libs || touch ext.libs -perl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs - $(SHRPENV) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LIBPERL) `cat ext.libs` $(libs) - -pureperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs - purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LIBPERL) `cat ext.libs` $(libs) - -quantperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs - quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LIBPERL) `cat ext.libs` $(libs) - !NO!SUBS! + # How to build libperl. This is still rather convoluted. -# Load up custom Makefile.SH fragments? +# Load up custom Makefile.SH fragment for shared loading and executables: if test -r $osname/Makefile.SHs ; then . $osname/Makefile.SHs $spitshell >>Makefile <>Makefile <>Makefile <<'!NO!SUBS!' $(LIBPERL): $& perl$(OBJ_EXT) $(obj) !NO!SUBS! case "$useshrplib" in true) $spitshell >>Makefile <<'!NO!SUBS!' - $(LD) $(LDDLFLAGS) -o $@ perl$(OBJ_EXT) $(obj) + $(LD) $(SHRPLDFLAGS) -o $@ perl$(OBJ_EXT) $(obj) +!NO!SUBS! + case "$osname" in + aix) + $spitshell >>Makefile <<'!NO!SUBS!' + mv $@ libperl$(OBJ_EXT) + $(AR) qv $(LIBPERL) libperl$(OBJ_EXT) !NO!SUBS! + ;; + esac ;; *) $spitshell >>Makefile <<'!NO!SUBS!' @@ -281,9 +283,33 @@ $(LIBPERL): $& perl$(OBJ_EXT) $(obj) !NO!SUBS! ;; esac -fi - -$spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>Makefile <<'!NO!SUBS!' + +# How to build executables. + +# The $& notation tells Sequent machines that it can do a parallel make, +# and is harmless otherwise. +# The miniperl -w -MExporter line is a basic cheap test to catch errors +# before make goes on to run preplibrary and then MakeMaker on extensions. +# This is very handy because later errors are often caused by miniperl +# build problems but that's not obvious to the novice. +# The Module used here must not depend on Config or any extensions. + +miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) + $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain$(OBJ_EXT) $(LLIBPERL) $(libs) + @./miniperl -w -Ilib -MExporter -e 0 || $(MAKE) minitest + +perl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs + $(SHRPENV) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) + +pureperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs + purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) + +purecovperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs + purecov $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o purecovperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) + +quantperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs + quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) # This version, if specified in Configure, does ONLY those scripts which need # set-id emulation. Suidperl must be setuid root. It contains the "taint" @@ -291,7 +317,13 @@ $spitshell >>Makefile <<'!NO!SUBS!' # has been invoked correctly. suidperl: $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs - $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o suidperl perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) + $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o suidperl perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) + +!NO!SUBS! + +fi + +$spitshell >>Makefile <<'!NO!SUBS!' sperl$(OBJ_EXT): perl.c perly.h patchlevel.h $(h) $(RMS) sperl.c @@ -339,12 +371,13 @@ install.man: all installman # normally shouldn't remake perly.[ch]. run_byacc: FORCE - @ echo 'Expect' 130 shift/reduce and 1 reduce/reduce conflict + @ echo 'Expect' 113 shift/reduce and 1 reduce/reduce conflict $(BYACC) -d perly.y sh $(shellflags) ./perly.fixer y.tab.c perly.c - sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' perly.c >perly.tmp && mv perly.tmp perly.c - mv y.tab.h perly.h - echo 'extern YYSTYPE yylval;' >>perly.h + sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \ + -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c + echo 'extern YYSTYPE yylval;' >>y.tab.h + cmp -s y.tab.h perly.h && rm -f y.tab.h || mv y.tab.h perly.h - perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms # We don't want to regenerate perly.c and perly.h, but they might @@ -388,19 +421,34 @@ d_dummy $(dynamic_ext): miniperl preplibrary $(DYNALOADER) FORCE s_dummy $(static_ext): miniperl preplibrary $(DYNALOADER) FORCE @sh ext/util/make_ext static $@ LIBPERL_A=$(LIBPERL) -clean: +clean: _tidy _mopup + +realclean: _cleaner _mopup + @echo "Note that make realclean does not delete config.sh" + +clobber: _cleaner _mopup + rm -f config.sh cppstdin + +distclean: clobber + +# Do not 'make _mopup' directly. +_mopup: rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c rm -f perl.exp ext.libs -rm -f perl.export perl.dll perl.libexp perl.map perl.def + rm -f perl suidperl miniperl $(LIBPERL) + +# Do not 'make _tidy' directly. +_tidy: -cd pod; $(MAKE) clean -cd utils; $(MAKE) clean -cd x2p; $(MAKE) clean -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) ; do \ sh ext/util/make_ext clean $$x ; \ done - rm -f perl suidperl miniperl $(LIBPERL) -realclean: clean +# Do not 'make _cleaner' directly. +_cleaner: -cd os2; rm -f Makefile -cd pod; $(MAKE) realclean -cd utils; $(MAKE) realclean @@ -416,12 +464,6 @@ realclean: clean rm -f lib/.exists rm -f h2ph.man pstruct rm -rf .config - @echo "Note that make realclean does not delete config.sh" - -clobber: realclean - rm -f config.sh cppstdin - -distclean: clobber # The following lint has practically everything turned on. Unfortunately, # you have to wade through a lot of mumbo jumbo that can't be suppressed. @@ -438,7 +480,7 @@ MAKEDEPEND = makedepend $(FIRSTMAKEFILE): Makefile $(MAKEDEPEND) $(MAKE) depend MAKEDEPEND= -config.h: config.sh +config.h: config_h.SH config.sh $(SHELL) config_h.SH perl.exp: perl_exp.SH config.sh @@ -454,16 +496,23 @@ depend: makedepend makedepend: makedepend.SH config.sh sh ./makedepend.SH -check test: miniperl perl preplibrary $(dynamic_ext) - - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../perl$(EXE_EXT) perl$(EXE_EXT)) && ./perl TEST .clist @@ -477,15 +526,12 @@ shlist: $(sh) pllist: $(pl) echo $(pl) | tr ' ' '\012' >.pllist -Makefile: Makefile.SH ./config.sh +Makefile: Makefile.SH ./config.sh $(SHELL) Makefile.SH -distcheck : FORCE +distcheck: FORCE perl '-MExtUtils::Manifest=&fullcheck' -e 'fullcheck()' -manifest : - perl '-MExtUtils::Manifest=&mkmanifest' -e 'mkmanifest()' - # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE # If this runs make out of memory, delete /usr/include lines. !NO!SUBS!