# I now supply perly.c with the kits, so don't remake perly.c without byacc
BYACC = $byacc
CC = $cc
-bin = $installbin
-scriptdir = $scriptdir
-privlib = $installprivlib
-mansrc = $mansrc
-manext = $manext
+LD = $ld
+
LDFLAGS = $ldflags
CLDFLAGS = $ldflags
RMS = rm -f
ranlib = $ranlib
+# The following are mentioned only to make metaconfig include the
+# appropriate questions in Configure. If you want to change these,
+# edit config.sh instead, or specify --man1dir=/wherever on
+# installman commandline.
+bin = $installbin
+scriptdir = $scriptdir
+privlib = $installprivlib
+man1dir = $man1dir
+man1ext = $man1ext
+man3dir = $man3dir
+man3ext = $man3ext
+
# The following are used to build and install shared libraries for
# dynamic loading.
LDDLFLAGS = $lddlflags
libs = $libs $cryptlib
-public = perl $suidperl
+public = perl $suidperl utilities translators
shellflags = $shellflags
## To use an alternate make, set \$altmake in config.sh.
MAKE = ${altmake-make}
+
+# These variables will be used in a future version to make
+# the make file more portable to non-unix systems.
+AR = $ar
+EXE_EXT = $exe_ext
+LIB_EXT = $lib_ext
+OBJ_EXT = $obj_ext
+PATH_SEP = $path_sep
+
+FIRSTMAKEFILE = $firstmakefile
+
+# Any special object files needed by this architecture, e.g. os2/os2.obj
+ARCHOBJS = $archobjs
+
!GROK!THIS!
## In the following dollars and backticks do not need the extra backslash.
private = preplibrary lib/ExtUtils/Miniperl.pm lib/Config.pm
-scripts =
+# Files to be built with variable substitution before miniperl
+# is available.
+sh = Makefile.SH cflags.SH config_h.SH makeaperl.SH makedepend.SH \
+ makedir.SH perl_exp.SH writemain.SH
+
+shextract = Makefile cflags config.h makeaperl makedepend \
+ makedir perl_exp writemain
+
+# Files to be built with variable substitution after miniperl is
+# available. Dependencies handled manually below (for now).
-manpages = perl.man
+pl = pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL
-util =
+plextract = pod/pod2html pod/pod2latex pod/pod2man pod/pod2text
-sh = Makefile.SH cflags.SH makedepend.SH makedir.SH writemain.SH
+addedbyconf = UU $(shextract) $(plextract) pstruct
h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h
h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h
obj2 = hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o
obj3 = doop.o doio.o regexec.o taint.o deb.o globals.o
-obj = $(obj1) $(obj2) $(obj3)
+
+obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
# Once perl has been Configure'd and built ok you build different
# perl variants (Debugging, Embedded, Multiplicity etc) by saying:
lintflags = -hbvxac
-addedbyconf = UU
-
# grrr
SHELL = /bin/sh
.c.o:
$(CCCMD) $(PLDLFLAGS) $*.c
-all: makefile miniperl $(private) $(public) $(dynamic_ext)
+all: makefile miniperl $(private) $(plextract) $(public) $(dynamic_ext)
+ @echo " "; echo " Everything is up to date."
+
+translators: miniperl lib/Config.pm FORCE
@echo " "; echo " Making x2p stuff"; cd x2p; $(MAKE) all
- @echo " "; echo " Making docs"; cd pod; $(MAKE) all;
+
+utilities: miniperl lib/Config.pm FORCE
+ @echo " "; echo " Making utilities"; cd utils; $(MAKE) all
+
+
+# This is now done by installman only if you actually want the man pages.
+# @echo " "; echo " Making docs"; cd pod; $(MAKE) all;
# Phony target to force checking subdirectories.
+# Apparently some makes require an action for the FORCE target.
FORCE:
+ @sh -c true
-!NO!SUBS!
-
-: Now on to the rest of the Makefile.
-$spitshell >>Makefile <<'!NO!SUBS!'
# The $& notation tells Sequent machines that it can do a parallel make,
# and is harmless otherwise.
case "$d_shrplib" in
*define*)
$spitshell >>Makefile <<'!NO!SUBS!'
- ld $(LDDLFLAGS) -o $@ perl.o $(obj)
+ $(LD) $(LDDLFLAGS) -o $@ perl.o $(obj)
!NO!SUBS!
;;
*)
$spitshell >>Makefile <<'!NO!SUBS!'
- ar rcu $(perllib) perl.o $(obj)
+ rm -f $(perllib)
+ $(AR) rcu $(perllib) perl.o $(obj)
@$(ranlib) $(perllib)
!NO!SUBS!
;;
$(CCCMD) -DIAMSUID sperl.c
$(RMS) sperl.c
-opcode.h: opcode.pl
- - perl opcode.pl
-
-embed.h: embed_h.sh global.sym interp.sym
- sh embed_h.sh
-
-preplibrary: miniperl lib/Config.pm
+# We have to call our ./makedir because Ultrix 4.3 make can't handle the line
+# test -d lib/auto || mkdir lib/auto
+#
+preplibrary: miniperl lib/Config.pm $(plextract)
@./makedir lib/auto
@echo " AutoSplitting perl library"
@./miniperl -Ilib -e 'use AutoSplit; \
./miniperl configpm tmp
sh mv-if-diff tmp lib/Config.pm
-lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl minimod.PL lib/Config.pm
- ./miniperl minimod.PL > tmp && mv tmp $@
+lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl minimod.pl lib/Config.pm
+ ./miniperl minimod.pl > tmp && mv tmp $@
-install: all
- ./perl installperl
-!NO!SUBS!
+$(plextract): miniperl lib/Config.pm
+ ./miniperl -Ilib $@.PL
-: Only print out the rules for running byacc if the user _has_ byacc.
-: Otherwise, comment them out. Users who really know what they are
-: doing can uncomment them and run yacc or bison or whatever.
-case "$d_byacc" in
-'define')
- comment1=''
- comment2='#' ;;
-*) comment1='#'
- comment2='' ;;
-esac
-
-$spitshell >>Makefile <<!GROK!THIS!
+install: all install.perl install.man
-perly.h: perly.c
- @ echo Dummy dependency for dumb parallel make
- touch perly.h
-
-# I now supply perly.c with the kits, so the following section is
-# used only if you have byacc.
+install.perl: all
+ ./perl installperl
-${comment1}perly.c: perly.y perly.c.diff
-${comment1} @ echo 'Expect' 109 shift/reduce and 1 reduce/reduce conflict
-${comment1} \$(BYACC) -d perly.y
-${comment1} sh \$(shellflags) ./perly.fixer y.tab.c perly.c
-${comment1} mv y.tab.h perly.h
-${comment1} echo 'extern YYSTYPE yylval;' >>perly.h
+install.man: all
+ ./perl installman
-# This version is used if you do not have byacc.
-${comment2}perly.c: perly.y
-${comment2} touch perly.c
+# Not implemented yet.
+#install.html: all
+# ./perl installhtml
-!GROK!THIS!
+# I now supply perly.c with the kits, so the following section is
+# used only if you force byacc to run by saying
+# make run_byacc
+# Since we patch up the byacc output, the perly.fixer script needs
+# to run with precisely the same version of byacc as I use. You
+# normally shouldn't remake perly.[ch].
+
+run_byacc: FORCE
+ @ echo 'Expect' 129 shift/reduce and 1 reduce/reduce conflict
+ $(BYACC) -d perly.y
+ sh $(shellflags) ./perly.fixer y.tab.c perly.c
+ mv y.tab.h perly.h
+ echo 'extern YYSTYPE yylval;' >>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
+# appear out-of-date after a patch is applied or a new distribution is
+# made.
+perly.c: perly.y
+ -@touch perly.c
+
+perly.h: perly.y
+ -@touch perly.h
+
+# The following three header files are generated automatically
+# keywords.h: keywords.pl
+# opcode.h: opcode.pl
+# embed.h: embed.pl global.sym interp.sym
+# The correct versions should be already supplied with the perl kit,
+# in case you don't have perl available.
+# To force them to run, type
+# make regen_headers
+regen_headers: FORCE
+ perl keywords.pl
+ perl opcode.pl
+ perl embed.pl
-$spitshell >>Makefile <<'!NO!SUBS!'
# Extensions:
# Names added to $(dynamic_ext) or $(static_ext) will automatically
# get built. There should ordinarily be no need to change any of
# DynaLoader may be needed for extensions that use Makefile.PL.
$(DYNALOADER): miniperl preplibrary FORCE
- @sh ext/util/make_ext static $@
+ @sh ext/util/make_ext static $@ LIBPERL_A=$(perllib)
d_dummy $(dynamic_ext): miniperl preplibrary $(DYNALOADER) FORCE
- @sh ext/util/make_ext dynamic $@
+ @sh ext/util/make_ext dynamic $@ LIBPERL_A=$(perllib)
s_dummy $(static_ext): miniperl preplibrary $(DYNALOADER) FORCE
- @sh ext/util/make_ext static $@
+ @sh ext/util/make_ext static $@ LIBPERL_A=$(perllib)
clean:
rm -f *.o *.a all perlmain.c
rm -f perl.exp ext.libs
- -cd x2p; $(MAKE) clean
-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 $(perllib)
realclean: clean
+ -cd os2; rm -f Makefile
+ -cd pod; $(MAKE) realclean
+ -cd utils; $(MAKE) realclean
-cd x2p; $(MAKE) realclean
- @for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) ; do \
+ -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) ; do \
sh ext/util/make_ext realclean $$x ; \
done
rm -f *.orig */*.orig *~ */*~ core t/core t/c t/perl
rm -rf $(addedbyconf)
- rm -f Makefile cflags makedepend makedir writemain
- rm -f config.h makefile makefile.old
+ rm -f makefile makefile.old
rm -f $(private)
rm -rf lib/auto
- rm -f h2ph h2ph.man c2ph pstruct
+ rm -f lib/.exists
+ rm -f h2ph.man pstruct
rm -rf .config
@echo "Note that make realclean does not delete config.sh"
# When done, touch perlmain.c so that it doesn't get remade each time.
depend: makedepend
- - test -f perly.h || cp /dev/null perly.h
./makedepend
- - test -s perly.h || /bin/rm -f perly.h
- test -s perlmain.c && touch perlmain.c
cd x2p; $(MAKE) depend
- cd t && chmod +x TEST */*.t
- cd t && (rm -f perl; $(LNS) ../perl perl) && ./perl TEST </dev/tty
+minitest: miniperl
+ - cd t && chmod +x TEST */*.t
+ - cd t && (rm -f perl; $(LNS) ../miniperl perl) \
+ && ./perl TEST base/*.t comp/*.t cmd/*.t io/*.t op/*.t </dev/tty
+
clist: $(c)
echo $(c) | tr ' ' '\012' >.clist
shlist: $(sh)
echo $(sh) | tr ' ' '\012' >.shlist
+pllist: $(pl)
+ echo $(pl) | tr ' ' '\012' >.pllist
+
# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
# If this runs make out of memory, delete /usr/include lines.
!NO!SUBS!