X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile.SH;h=b62627b8b1f4c7a7db4d36ad9dc726e67d217fb3;hb=77bb9b23081b62119e8fbe9f5655b8802e4537ae;hp=81d6df4edfca6a1d3dc402d78e868d6ee138a3aa;hpb=f0efd8cf98c95b42a6a81fcafbccdf6224b90044;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Makefile.SH b/Makefile.SH index 81d6df4..b62627b 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -1,3 +1,4 @@ +#! /bin/sh case $CONFIG in '') if test -f config.sh; then TOP=.; @@ -22,9 +23,10 @@ case "$d_dosuid" in *) suidperl='';; esac +linklibperl='$(LIBPERL)' case "$useshrplib" in true) - pldlflags="$cccdlflags" + pldlflags="$cccdlflags" # NeXT-4 specific stuff. Can't we do this in the hint file? case "${osname}${osvers}" in next4*) @@ -32,8 +34,11 @@ true) -compatibility_version 1 -current_version $(PATCHLEVEL) \ -prebind -seg1addr 0x27000000 -install_name $(SHRPDIR)/$@' ;; + sunos*|freebsd[23]*) + linklibperl="-lperl" + ;; esac - ;; + ;; *) pldlflags='' ;; esac @@ -97,6 +102,7 @@ CCDLFLAGS = $ccdlflags DLSUFFIX = .$dlext PLDLFLAGS = $pldlflags LIBPERL = $libperl +LLIBPERL= $linklibperl SHRPENV = $shrpenv dynamic_ext = $dynamic_list @@ -209,18 +215,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 @@ -237,18 +231,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 <<'!NO!SUBS!' - $(LD) $(LDDLFLAGS) -o $@ perl$(OBJ_EXT) $(obj) + $(LD) $(LDDLFLAGS) -o $@ perl$(OBJ_EXT) $(obj) $(libs) !NO!SUBS! ;; *) @@ -273,9 +259,30 @@ $(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) + +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" @@ -283,7 +290,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 @@ -331,12 +344,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 @@ -380,19 +394,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 @@ -408,12 +437,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. @@ -430,7 +453,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 @@ -451,11 +474,11 @@ check test: miniperl perl preplibrary $(dynamic_ext) # Can't depend on lib/Config.pm because that might be where miniperl # is crashing. -minitest: miniperl +minitest: miniperl @echo "You may see some irrelevant test failures if you have been unable" @echo "to build lib/Config.pm." - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \ - && ./perl TEST base/*.t comp/*.t cmd/*.t io/*.t op/*.t .clist @@ -469,15 +492,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!