source: trunk/essentials/dev-lang/perl/vms/descrip_mms.template@ 3951

Last change on this file since 3951 was 3181, checked in by bird, 19 years ago

perl 5.8.8

File size: 74.1 KB
Line 
1!GROK!THIS!
2# Descrip.MMS for perl5 on VMS
3# Last revised 5-Dec-2001 by Craig Berry -- [email protected]
4#
5#: This file uses MMS syntax, and can be processed using DEC's MMS product,
6#: or the free MMK clone (available by ftp at ftp.spc.edu). If you want to
7#: a Unix-style MAKE tool, run this file through mms2make.pl, which should
8#: be found in the same directory as this file.
9#:
10#: Lines beginning with "#:" will be removed by mms2make.pl when converting
11#: this file to MAKE syntax.
12#
13# tidy -- purge files generated by executing this file
14# clean -- remove all intermediate (e.g. object files, C files generated
15# during build) files generated by executing this file,
16# but leave `installable' files (images, library) intact
17# realclean -- remove all files generated by executing this file
18# cleansrc -- `realclean' + purge *.c,*.h,descrip.mms
19# crtl.opt -- compiler-specific linker options file (made automatically)
20#
21
22#### Start of system configuration section. ####
23
24~DECC~
25~DECCXX~
26~GNUC~
27~ARCH-TYPE~ = 1
28~THREAD~
29~SOCKET~
30~MALLOC~
31~CC~
32~MT~
33~FLAGS~
34~LARGEFILE~
35
36#: >>>>> Architecture-specific options <<<<<
37.ifdef IXE
38O = .ibj
39OLB = .ilb
40E = .ixe
41.else
42.ifdef AXE
43# File type to use for object files
44O = .abj
45# File type to use for object libraries
46OLB = .alb
47# File type to use for executable images
48E = .axe
49.else
50# File type to use for object files
51O = .obj
52# File type to use for object libraries
53OLB = .olb
54# File type to use for executable images
55E = .exe
56.endif
57.endif
58
59.ifdef __IA64__
60ARCH = VMS_IA64
61OBJVAL = $(O)
62.else
63.ifdef __AXP__
64ARCH = VMS_AXP
65OBJVAL = $(O)
66.else
67ARCH = VMS_VAX
68OBJVAL = $(MMS$TARGET_NAME)$(O)
69.endif
70.endif
71
72PERL_VERSION = ~PV~
73
74.ifdef MALLOC
75MALLOC_O = malloc$(O)
76MALLOC_C = malloc$(C)
77.endif
78
79.ifdef DECC_SOCKETS
80SOCKET=1
81.endif
82
83.ifdef SOCKETSHR_SOCKETS
84SOCKET=1
85.endif
86
87# If they defined SOCKET but didn't choose a stack, default to SOCKETSHR
88.ifdef DECC_SOCKETS
89.else
90.ifdef SOCKETSHR_SOCKETS
91.else
92.ifdef SOCKET
93SOCKETSHR_SOCKETS=1
94.endif
95.endif
96.endif
97
98ARCHDIR = [.lib.$(ARCH).$(PERL_VERSION)]
99ARCHCORE = [.lib.$(ARCH).$(PERL_VERSION).CORE]
100ARCHAUTO = [.lib.$(ARCH).$(PERL_VERSION).auto]
101
102#: Backwards compatibility
103.ifdef DECC_PIPES_BROKEN
104PIPES_BROKEN = 1
105.endif
106
107#: >>>>>Compiler-specific options <<<<<
108.ifdef GNUC
109.first
110 @ If F$TrnLnm("Sys").eqs."" Then Define/NoLog SYS GNU_CC_Include:[VMS]
111CC = gcc
112PIPES_BROKEN = 1
113# -fno-builtin avoids bug in gcc up to version 2.6.2 which can destroy
114# data when memcpy() is called on large (>64 kB) blocks of memory
115# (fixed in gcc 2.6.3)
116XTRACCFLAGS = /Obj=$(MMS$TARGET_NAME)$(O)/NoCase_Hack/Optimize=2
117DBGSPECFLAGS =
118XTRADEF =
119XTRAOBJS =
120LIBS1 = GNU_CC:[000000]GCCLIB.OLB/Library
121LIBS2 = Sys$Share:VAXCRTL/Shareable
122POSIX =
123.else
124XTRAOBJS =
125LIBS1 = $(XTRAOBJS)
126DBGSPECFLAGS = /Show=All
127# Some versions of DECCRTL on AXP have a bug in chdir() which causes the change
128# to persist after the image exits, even when this was not requested, iff
129# SYSNAM is enabled. This is fixed in CSC Patch # AXPACRT04_061, but turning
130# off SYSNAM for the MM[SK] subprocess doesn't hurt anything, so we do it
131# just in case.
132.first
133 @ If F$TrnLnm("Sys").eqs."" .and. F$TrnLnm("DECC$System_Include").nes."" Then Define/NoLog SYS DECC$System_Include
134.ifdef __AXP__
135 @ Set Process/Privilege=(NoSYSNAM)
136 @ If F$TrnLnm("Sys").eqs."" .and. F$TrnLnm("DECC$System_Include").eqs."" Then Define/NoLog SYS Sys$Library
137.else
138 @ If F$TrnLnm("Sys").eqs."" .and. F$TrnLnm("DECC$System_Include").eqs."" Then Define/NoLog SYS DECC$Library_Include
139.endif
140
141.ifdef DECCXX
142XTRACCFLAGS = /Include=[]/Standard=ANSI/Prefix=All/Obj=$(OBJVAL)
143.else
144XTRACCFLAGS = /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=$(OBJVAL)
145.endif
146XTRADEF =
147POSIX = POSIX
148.endif
149
150#: >>>>> Configuration options <<<<<
151#: __DEBUG__: builds images with full VMS debugger support
152.ifdef __DEBUG__
153DBGCCFLAGS = /List/Debug/NoOpt$(DBGSPECFLAGS)
154DBGLINKFLAGS = /Trace/Debug/Map/Full/Cross
155DBG = DBG
156.else
157DBGCCFLAGS = /NoList
158DBGLINKFLAGS = /NoTrace/NoMap
159DBG =
160.endif
161
162#: SOCKET: build in support for TCP/IP sockets
163#: By default, used SOCKETSHR library; see ReadMe.VMS
164#: for information on changing socket support
165.ifdef SOCKET
166.ifdef DECC_SOCKETS
167SOCKDEF =
168SOCKLIB =
169.else
170SOCKDEF =
171SOCKLIB = SocketShr/Share
172.endif
173# N.B. the targets for $(SOCKC) and $(SOCKH) assume that the permanent
174# copies live in [.vms], and the `clean' target will delete copies of
175# these files in the current default directory.
176SOCKC = sockadapt.c
177SOCKH = sockadapt.h
178SOCKARCH = $(ARCHCORE)$(SOCKH)
179SOCKO = sockadapt$(O)
180SOCKPM = [.lib]Socket.pm
181.else
182SOCKDEF =
183SOCKLIB =
184SOCKC =
185SOCKH =
186SOCKARCH =
187SOCKO =
188SOCKPM =
189.endif
190
191.ifdef THREADED
192THREADDEF =
193THREAD = THREAD
194.endif
195
196.ifdef OLDTHREADED
197THREADDEF =
198THREAD = THREAD
199THRLIBS1 = sys$share:cma$lib_shr/share|sys$share:cma$rtl/share
200.ifdef __AXP__
201THRLIBS2 = sys$share:cma$open_lib_shr/share|sys$share:cma$open_rtl/share
202.endif
203.endif
204
205.ifdef FAKETHREADED
206THREADDEF =
207THREADH = fakethr.h
208THREAD = THREAD
209.else
210THREADH =
211.endif
212
213# C preprocessor manifest "DEBUGGING" ==> perl -D, not the VMS debugger
214.IFDEF LARGEFILE
215CFLAGS = $(XTRACCFLAGS)$(DBGCCFLAGS)$(FLAGS)/Define=$(LARGEFILE)
216X2PCFLAGS = $(XTRACCFLAGS)$(DBGCCFLAGS)$(FLAGS)/Define=(PERL_FOR_X2P,$(LARGEFILE))
217CORECFLAGS = $(XTRACCFLAGS)$(DBGCCFLAGS)$(FLAGS)/Define=(PERL_CORE,$(LARGEFILE))
218.ELSE
219CFLAGS = $(XTRACCFLAGS)$(DBGCCFLAGS)$(FLAGS)
220X2PCFLAGS = $(XTRACCFLAGS)$(DBGCCFLAGS)$(FLAGS)/Define=PERL_FOR_X2P
221CORECFLAGS = $(XTRACCFLAGS)$(DBGCCFLAGS)$(FLAGS)/Define=PERL_CORE
222.ENDIF
223
224LINKFLAGS = $(DBGLINKFLAGS)
225
226MAKE = $(MMS)
227MAKEFILE = Descrip.MMS # this file
228NOOP = continue
229
230# Macros to invoke a copy of miniperl during the build. Targets which
231# are built using these macros should depend on $(MINIPERL_EXE)
232MINIPERL_EXE = Sys$Disk:[]miniperl$(E)
233MINIPERL = MCR $(MINIPERL_EXE) "-I[.lib]"
234MINIPERLQ = MCR $(MINIPERL_EXE) ""-I[.lib]""
235XSUBPP = $(MINIPERL) "-I[.ext.re]" [.lib.extutils]xsubpp -noprototypes
236# Macro to invoke a preexisting copy of Perl. This is used to regenerate
237# some header files when rebuilding Perl, but premade versions are provided
238# in the distribution, so it's OK if this doesn't work; it's here to make
239# life easier for those who modify Perl and rebuild it.
240INSTPERL = perl
241
242# Space-separated list of "static" extensions to build into perlshr (case counts).
243MYEXT = DynaLoader
244# object files for these extensions; the trailing comma is required if
245# there are any object files specified
246# These must be built separately, or you must add rules below to build them
247myextobj = [.ext.dynaloader]dl_vms$(O),
248EXT = $(MYEXT)
249extobj = $(myextobj)
250
251.ifdef LIBS2
252.else
253LIBS2=
254.endif
255
256.ifdef THRLIBS1
257.else
258THRLIBS1=
259.endif
260
261.ifdef THRLIBS2
262.else
263THRLIBS2=
264.endif
265
266FULLLIBS2 = $(LIBS2)|$(THRLIBS1)|$(THRLIBS2)
267
268#### End of system configuration section. ####
269
270c0 = $(MALLOC_C) $(SOCKC) av.c deb.c doio.c doop.c dump.c globals.c gv.c hv.c
271c1 = mg.c locale.c miniperlmain.c numeric.c op.c pad.c perl.c perlapi.c perlio.c
272c2 = perly.c pp.c pp_ctl.c pp_hot.c pp_pack.c pp_sort.c pp_sys.c regcomp.c regexec.c reentr.c
273c3 = run.c scope.c sv.c taint.c toke.c universal.c utf8.c util.c vms.c xsutils.c
274c = $(c0) $(c1) $(c2) $(c3)
275
276obj0 = $(MALLOC_O) $(SOCKO) av$(O) deb$(O) doio$(O) doop$(O) dump$(O)
277obj1 = globals$(O) gv$(O) hv$(O) locale$(O) mg$(O) miniperlmain$(O) numeric$(O) op$(O) pad$(O)
278obj2 = perl$(O) perlapi$(O) perlio$(O) perly$(O) pp$(O) pp_ctl$(O) pp_hot$(O) reentr$(O)
279obj3 = pp_pack$(O) pp_sort$(O) pp_sys$(O) regcomp$(O) regexec$(O) run$(O) scope$(O) sv$(O) taint$(O) toke$(O)
280obj4 = universal$(O) utf8$(O) util$(O) vms$(O) xsutils$(O)
281obj = $(obj0) $(obj1) $(obj2) $(obj3) $(obj4)
282
283h0 = av.h cc_runtime.h config.h cop.h cv.h embed.h embedvar.h
284h1 = EXTERN.h form.h gv.h handy.h hv.h INTERN.h intrpvar.h
285h2 = iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h opnames.h pad.h
286h3 = patchlevel.h perl.h perlapi.h perlio.h perlsdio.h perlvars.h perly.h
287h4 = pp.h pp_proto.h proto.h regcomp.h regexp.h regnodes.h scope.h
288h5 = sv.h thrdvar.h thread.h utf8.h util.h vmsish.h warnings.h
289h6 = xsub.h $(SOCKH) $(THREADH)
290h = $(h0) $(h1) $(h2) $(h3) $(h4) $(h5) $(h6)
291
292ac0 = $(ARCHCORE)$(sockh) $(ARCHCORE)av.h $(ARCHCORE)cc_runtime.h
293ac1 = $(ARCHCORE)config.h $(ARCHCORE)cop.h $(ARCHCORE)cv.h $(ARCHCORE)embed.h
294ac2 = $(ARCHCORE)embedvar.h $(ARCHCORE)EXTERN.h $(ARCHCORE)fakethr.h
295ac3 = $(ARCHCORE)form.h $(ARCHCORE)gv.h $(ARCHCORE)handy.h $(ARCHCORE)hv.h
296ac4 = $(ARCHCORE)INTERN.h $(ARCHCORE)intrpvar.h $(ARCHCORE)iperlsys.h
297ac5 = $(ARCHCORE)keywords.h $(ARCHCORE)mg.h $(ARCHCORE)nostdio.h
298ac6 = $(ARCHCORE)op.h $(ARCHCORE)opcode.h $(ARCHCORE)opnames.h
299ac7 = $(ARCHCORE)pad.h $(ARCHCORE)patchlevel.h $(ARCHCORE)perl.h
300ac8 = $(ARCHCORE)perlapi.h $(ARCHCORE)perlio.h $(ARCHCORE)perlsdio.h
301ac9 = $(ARCHCORE)perlsfio.h $(ARCHCORE)perlvars.h $(ARCHCORE)perly.h $(ARCHCORE)pp.h
302ac10 = $(ARCHCORE)pp_proto.h $(ARCHCORE)proto.h $(ARCHCORE)reentr.h $(ARCHCORE)reentr.inc $(ARCHCORE)regcomp.h
303ac11 = $(ARCHCORE)regexp.h $(ARCHCORE)regnodes.h $(ARCHCORE)scope.h
304.ifdef SOCKARCH
305ac12 = $(ARCHCORE)sv.h $(ARCHCORE)thrdvar.h $(SOCKARCH)
306.else
307ac12 = $(ARCHCORE)sv.h $(ARCHCORE)thrdvar.h
308.endif
309ac13 = $(ARCHCORE)thread.h $(ARCHCORE)utf8.h $(ARCHCORE)util.h
310ac14 = $(ARCHCORE)vmsish.h $(ARCHCORE)warnings.h $(ARCHCORE)xsub.h
311acopt = $(ARCHCORE)perlshr_attr.opt $(ARCHCORE)$(DBG)perlshr_bld.opt
312ac = $(ac0) $(ac1) $(ac2) $(ac3) $(ac4) $(ac5) $(ac6) $(ac7) $(ac8) $(ac9) $(ac10) $(ac11) $(ac12) $(ac13) $(ac14) $(acopt)
313
314CRTL = []crtl.opt
315CRTLOPTS =,$(CRTL)/Options
316
317.SUFFIXES
318
319.ifdef LINK_ONLY
320.else
321.SUFFIXES $(O) .c .xs
322
323.xs.c :
324 $(XSUBPP) $(MMS$SOURCE) >$(MMS$TARGET)
325
326.c$(O) :
327 $(CC) $(CFLAGS) $(MMS$SOURCE)
328
329.xs$(O) :
330 $(XSUBPP) $(MMS$SOURCE) >$(MMS$SOURCE_NAME).c
331 $(CC) $(CFLAGS) $(MMS$SOURCE_NAME).c
332.endif
333
334# Directories of Unicode data files generated by mktables
335unidatadirs = lib/unicore/To lib/unicore/lib
336
337# Modules which must be installed before we can build extensions
338LIBPREREQ = $(ARCHDIR)Config.pm $(ARCHDIR)Config_heavy.pl [.lib.VMS]Filespec.pm [.lib]DynaLoader.pm [.lib]XSLoader.pm [.lib]lib.pm [.lib.ExtUtils]XSSymSet.pm $(ARCHDIR)vmspipe.com [.lib]re.pm unidatafiles.ts
339
340utils1 = [.lib.pods]perldoc.com [.lib.ExtUtils]Miniperl.pm [.utils]c2ph.com [.utils]h2ph.com
341utils2 = [.utils]h2xs.com [.utils]libnetcfg.com [.lib]perlbug.com [.lib]perlcc.com [.utils]dprofpp.com
342utils3 = [.utils]perlivp.com [.lib]splain.com [.utils]pl2pm.com [.utils]xsubpp.com [.utils]instmodsh.com
343utils4 = [.utils]enc2xs.com [.utils]piconv.com [.utils]cpan.com [.utils]prove.com
344
345.ifdef NOX2P
346all : base extras archcorefiles preplibrary perlpods
347 @ QUALIFIERS := $(MMSQUALIFIERS)
348 @ QUALIFIERS = QUALIFIERS - """" - """"
349 @ write sys$output " "
350 @ write sys$output " Everything is up to date. '$(MMS)''QUALIFIERS' test' to run test suite."
351.else
352all : base extras x2p archcorefiles preplibrary perlpods
353 @ QUALIFIERS := $(MMSQUALIFIERS)
354 @ QUALIFIERS = QUALIFIERS - """" - """"
355 @ write sys$output " "
356 @ write sys$output " Everything is up to date. '$(MMS)''QUALIFIERS' test' to run test suite."
357.endif
358base : miniperl perl
359 @ $(NOOP)
360extras : dynext libmods utils podxform extra.pods
361 @ $(NOOP)
362libmods : $(LIBPREREQ)
363 @ $(NOOP)
364utils : $(utils1) $(utils2) $(utils3) $(utils4)
365 @ $(NOOP)
366podxform : [.lib.pods]pod2text.com [.lib.pods]pod2html.com [.lib.pods]pod2latex.com [.lib.pods]pod2man.com [.lib.pods]podchecker.com [.lib.pods]pod2usage.com [.lib.pods]podselect.com
367 @ $(NOOP)
368x2p : [.x2p]$(DBG)a2p$(E) [.x2p]s2p.com [.x2p]find2perl.com
369 @ $(NOOP)
370extra.pods : miniperl
371 @ @extra_pods.com
372
373pod0 = [.lib.pods]perl.pod [.lib.pods]perl5004delta.pod [.lib.pods]perl5005delta.pod [.lib.pods]perl561delta.pod [.lib.pods]perl56delta.pod
374pod1 = [.lib.pods]perl570delta.pod [.lib.pods]perl571delta.pod [.lib.pods]perl572delta.pod [.lib.pods]perl573delta.pod [.lib.pods]perl581delta.pod
375pod2 = [.lib.pods]perl582delta.pod [.lib.pods]perl583delta.pod [.lib.pods]perl584delta.pod [.lib.pods]perl585delta.pod [.lib.pods]perl586delta.pod
376pod3 = [.lib.pods]perl587delta.pod [.lib.pods]perl588delta.pod [.lib.pods]perl58delta.pod [.lib.pods]perlaix.pod [.lib.pods]perlamiga.pod
377pod4 = [.lib.pods]perlapi.pod [.lib.pods]perlapio.pod [.lib.pods]perlapollo.pod [.lib.pods]perlartistic.pod [.lib.pods]perlbeos.pod [.lib.pods]perlbook.pod
378pod5 = [.lib.pods]perlboot.pod [.lib.pods]perlbot.pod [.lib.pods]perlbs2000.pod [.lib.pods]perlcall.pod [.lib.pods]perlce.pod [.lib.pods]perlcheat.pod
379pod6 = [.lib.pods]perlclib.pod [.lib.pods]perlcn.pod [.lib.pods]perlcompile.pod [.lib.pods]perlcygwin.pod [.lib.pods]perldata.pod
380pod7 = [.lib.pods]perldbmfilter.pod [.lib.pods]perldebguts.pod [.lib.pods]perldebtut.pod [.lib.pods]perldebug.pod [.lib.pods]perldelta.pod
381pod8 = [.lib.pods]perldgux.pod [.lib.pods]perldiag.pod [.lib.pods]perldoc.pod [.lib.pods]perldos.pod [.lib.pods]perldsc.pod [.lib.pods]perlebcdic.pod
382pod9 = [.lib.pods]perlembed.pod [.lib.pods]perlepoc.pod [.lib.pods]perlfaq.pod [.lib.pods]perlfaq1.pod [.lib.pods]perlfaq2.pod [.lib.pods]perlfaq3.pod
383pod10 = [.lib.pods]perlfaq4.pod [.lib.pods]perlfaq5.pod [.lib.pods]perlfaq6.pod [.lib.pods]perlfaq7.pod [.lib.pods]perlfaq8.pod [.lib.pods]perlfaq9.pod
384pod11 = [.lib.pods]perlfilter.pod [.lib.pods]perlfork.pod [.lib.pods]perlform.pod [.lib.pods]perlfreebsd.pod [.lib.pods]perlfunc.pod
385pod12 = [.lib.pods]perlglossary.pod [.lib.pods]perlgpl.pod [.lib.pods]perlguts.pod [.lib.pods]perlhack.pod [.lib.pods]perlhist.pod [.lib.pods]perlhpux.pod
386pod13 = [.lib.pods]perlhurd.pod [.lib.pods]perlintern.pod [.lib.pods]perlintro.pod [.lib.pods]perliol.pod [.lib.pods]perlipc.pod [.lib.pods]perlirix.pod
387pod14 = [.lib.pods]perljp.pod [.lib.pods]perlko.pod [.lib.pods]perllexwarn.pod [.lib.pods]perllinux.pod [.lib.pods]perllocale.pod [.lib.pods]perllol.pod
388pod15 = [.lib.pods]perlmachten.pod [.lib.pods]perlmacos.pod [.lib.pods]perlmacosx.pod [.lib.pods]perlmint.pod [.lib.pods]perlmod.pod
389pod16 = [.lib.pods]perlmodinstall.pod [.lib.pods]perlmodlib.pod [.lib.pods]perlmodstyle.pod [.lib.pods]perlmpeix.pod [.lib.pods]perlnetware.pod
390pod17 = [.lib.pods]perlnewmod.pod [.lib.pods]perlnumber.pod [.lib.pods]perlobj.pod [.lib.pods]perlop.pod [.lib.pods]perlopenbsd.pod
391pod18 = [.lib.pods]perlopentut.pod [.lib.pods]perlos2.pod [.lib.pods]perlos390.pod [.lib.pods]perlos400.pod [.lib.pods]perlothrtut.pod
392pod19 = [.lib.pods]perlpacktut.pod [.lib.pods]perlplan9.pod [.lib.pods]perlpod.pod [.lib.pods]perlpodspec.pod [.lib.pods]perlport.pod [.lib.pods]perlqnx.pod
393pod20 = [.lib.pods]perlre.pod [.lib.pods]perlref.pod [.lib.pods]perlreftut.pod [.lib.pods]perlrequick.pod [.lib.pods]perlreref.pod [.lib.pods]perlretut.pod
394pod21 = [.lib.pods]perlrun.pod [.lib.pods]perlsec.pod [.lib.pods]perlsolaris.pod [.lib.pods]perlstyle.pod [.lib.pods]perlsub.pod [.lib.pods]perlsyn.pod
395pod22 = [.lib.pods]perlthrtut.pod [.lib.pods]perltie.pod [.lib.pods]perltoc.pod [.lib.pods]perltodo.pod [.lib.pods]perltooc.pod [.lib.pods]perltoot.pod
396pod23 = [.lib.pods]perltrap.pod [.lib.pods]perltru64.pod [.lib.pods]perltw.pod [.lib.pods]perlunicode.pod [.lib.pods]perluniintro.pod [.lib.pods]perlutil.pod
397pod24 = [.lib.pods]perluts.pod [.lib.pods]perlvar.pod [.lib.pods]perlvmesa.pod [.lib.pods]perlvms.pod [.lib.pods]perlvos.pod [.lib.pods]perlwin32.pod
398pod25 = [.lib.pods]perlxs.pod [.lib.pods]perlxstut.pod
399pod = $(pod0) $(pod1) $(pod2) $(pod3) $(pod4) $(pod5) $(pod6) $(pod7) $(pod8) $(pod9) $(pod10) $(pod11) $(pod12) $(pod13) $(pod14) $(pod15) $(pod16) $(pod17) $(pod18) $(pod19) $(pod20) $(pod21) $(pod22) $(pod23) $(pod24) $(pod25)
400
401# Would be useful to automate the generation of this rule from pod/buildtoc
402# Plus its corresponding delete in the clean target.
403[.pod]perldelta.pod : [.pod]perl584delta.pod
404 Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET)
405
406perlpods : $(pod)
407 @ $(NOOP)
408
409archcorefiles : $(ac) $(ARCHAUTO)time.stamp
410 @ $(NOOP)
411
412[.lib]re.pm : [.ext.re]re.pm
413 Copy/NoConfirm/Log $(MMS$SOURCE) [.lib]
414
415vmspipe.com : [.vms]vmspipe.com
416 Copy/NoConfirm/Log $(MMS$SOURCE) []
417
418miniperl : $(DBG)miniperl$(E) vmspipe.com
419 @ Continue
420$(MINIPERL_EXE) : miniperlmain$(O), $(DBG)libperl$(OLB) $(CRTL)
421 Link $(LINKFLAGS)/NoDebug/Trace/NoMap/NoFull/NoCross/Exe=$(MMS$TARGET) miniperlmain$(O), $(DBG)libperl$(OLB)/Library/Include=globals $(CRTLOPTS)
422$(DBG)miniperl$(E) : miniperlmain$(O), $(DBG)libperl$(OLB) $(CRTL)
423 Link $(LINKFLAGS)/Trace/Exe=$(MMS$TARGET) miniperlmain$(O),$(DBG)libperl$(OLB)/Library/Include=globals $(CRTLOPTS)
424
425$(DBG)libperl$(OLB) : $(obj)
426 @ If F$Search("$(MMS$TARGET)").eqs."" Then Library/Object/Create $(MMS$TARGET)
427 Library/Object/Replace $(MMS$TARGET) $(MMS$SOURCE_LIST)
428
429perlmain.c : miniperlmain.c $(MINIPERL_EXE) [.vms]writemain.pl
430 $(MINIPERL) [.VMS]Writemain.pl "$(EXT)"
431
432.ifdef __DEBUG__
433# Link an extra perl that doesn't invoke the debugger
434perl : $(DBG)perl$(E)
435 Link $(LINKFLAGS)/NoDebug/Trace/NoMap/NoCross/NoFull/Exe=N$(DBG)perl$(E) perlmain$(O), perlshr.opt/Option, perlshr_attr.opt/Option $(CRTLOPTS)
436.else
437perl : $(DBG)perl$(E)
438 @ Continue
439.endif
440
441$(DBG)perl$(E) : perlmain$(O), $(DBG)perlshr$(E), $(MINIPERL_EXE)
442 @ @[.vms]genopt "PerlShr.Opt/Write" "|" "''F$Environment("Default")'$(DBG)PerlShr$(E)/Share"
443.ifdef MT
444 Link $(LINKFLAGS)/Exe=$(MMS$TARGET) perlmain$(O), perlshr.opt/Option, perlshr_attr.opt/Option $(CRTLOPTS)/THREAD=(MULTI,UPCALL)
445.else
446 Link $(LINKFLAGS)/Exe=$(MMS$TARGET) perlmain$(O), perlshr.opt/Option, perlshr_attr.opt/Option $(CRTLOPTS)
447.endif
448
449$(DBG)perlshr$(E) : $(DBG)libperl$(OLB) $(extobj) $(DBG)perlshr_xtras.ts
450 Link $(LINKFLAGS)/Share=$(MMS$TARGET) $(extobj) []$(DBG)perlshr_bld.opt/Option, perlshr_attr.opt/Option
451
452# The following files are built in one go by gen_shrfls.pl:
453# perlshr_attr.opt, $(DBG)perlshr_bld.opt - VAX and AXP
454# perlshr_gbl*.mar, perlshr_gbl*$(O) - VAX only
455# The song and dance with gen_shrfls.opt accommodates DCL's 255 character
456# line length limit.
457.ifdef PIPES_BROKEN
458# This is a backup target used only with older versions of the DECCRTL which
459# can't deal with pipes properly. See ReadMe.VMS for details.
460$(DBG)perlshr_xtras.ts : perl.h config.h vmsish.h proto.h [.vms]gen_shrfls.pl $(MINIPERL_EXE) $(MAKEFILE) $(CRTL)
461 $(CC) $(CFLAGS)/NoObject/NoList/PreProcess=perl.i perl.h
462 @ $(MINIPERL) -e "print join('|',@ARGV),'|';" "~~NOCC~~perl.i~~$(CC)$(CFLAGS)" >gen_shrfls.opt
463 @ $(MINIPERL) -e "print join('|',@ARGV);" "$(O)" "$(DBG)" "$(OLB)" "$(EXT)" "$(CRTL)" >>gen_shrfls.opt
464 $(MINIPERL) [.vms]gen_shrfls.pl -f gen_shrfls.opt
465 @ Delete/NoLog/NoConfirm perl.i;, gen_shrfls.opt;
466 @ If F$Search("$(DBG)perlshr_xtras.ts").nes."" Then Delete/NoLog/NoConfirm $(DBG)perlshr_xtras.ts;*
467 @ Copy _NLA0: $(DBG)perlshr_xtras.ts
468.else
469$(DBG)perlshr_xtras.ts : perl.h config.h vmsish.h proto.h [.vms]gen_shrfls.pl $(MINIPERL_EXE) $(MAKEFILE) $(CRTL)
470 @ $(MINIPERL) -e "print join('|',@ARGV),'|';" "$(CC)$(CFLAGS)" >gen_shrfls.opt
471 @ $(MINIPERL) -e "print join('|',@ARGV);" "$(O)" "$(DBG)" "$(OLB)" "$(EXT)" "$(CRTL)" >>gen_shrfls.opt
472 $(MINIPERL) [.vms]gen_shrfls.pl -f gen_shrfls.opt
473 @ Delete/NoLog/NoConfirm gen_shrfls.opt;
474 @ If F$Search("$(DBG)perlshr_xtras.ts").nes."" Then Delete/NoLog/NoConfirm $(DBG)perlshr_xtras.ts;*
475 @ Copy _NLA0: $(DBG)perlshr_xtras.ts
476.endif
477
478$(ARCHDIR)Config.pm : [.lib]Config.pm
479 Create/Directory $(ARCHDIR)
480 Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHDIR)
481
482$(ARCHDIR)Config_heavy.pl : [.lib]Config_heavy.pl
483 Create/Directory $(ARCHDIR)
484 Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHDIR)
485
486[.lib]Config.pm : config.h $(MINIPERL_EXE)
487 $(MINIPERL) ConfigPM.
488
489$(ARCHDIR)vmspipe.com : vmspipe.com
490 Copy $(MMS$SOURCE) $(ARCHDIR)
491
492unidatafiles.ts : $(MINIPERL_EXE) [.lib]Config.pm [.lib.unicore]mktables
493 $(MINIPERL) [.lib.unicore]mktables "-C" [.lib.unicore]
494 @ If F$Search("$(MMS$TARGET)").nes."" Then Delete/NoLog/NoConfirm $(MMS$TARGET);*
495 @ Copy/NoConfirm _NLA0: $(MMS$TARGET)
496
497[.ext.dynaloader]dl_vms.c : [.ext.dynaloader]dl_vms.xs $(ARCHDIR)Config.pm [.lib.ExtUtils]XSSymSet.pm $(MINIPERL_EXE) [.lib.VMS]Filespec.pm
498 $(XSUBPP) $(MMS$SOURCE) >$(MMS$TARGET)
499
500[.ext.dynaloader]dl_vms$(O) : [.ext.dynaloader]dl_vms.c
501 $(CC) $(CFLAGS) /Include=([],[.ext.dynaloader])/Object=$(MMS$TARGET) $(MMS$SOURCE)
502
503[.lib]DynaLoader.pm : [.ext.Dynaloader]Dynaloader.pm
504 Copy/NoConfirm/Log $(MMS$SOURCE) [.lib]
505 @ If F$Search("[.lib]auto.dir").eqs."" Then Create/Directory [.lib.auto]
506 @ $(MINIPERL) -e "use AutoSplit; autosplit_lib_modules(@ARGV)" [.lib]DynaLoader.pm
507
508[.lib]XSLoader.pm : [.ext.Dynaloader]XSLoader.pm
509 Copy/NoConfirm/Log $(MMS$SOURCE) [.lib]
510 @ If F$Search("[.lib]auto.dir").eqs."" Then Create/Directory [.lib.auto]
511 @ $(MINIPERL) -e "use AutoSplit; autosplit_lib_modules(@ARGV)" [.lib]XSLoader.pm
512
513[.ext.dynaloader]dynaloader.pm : [.ext.dynaloader]dynaloader_pm.pl
514 $(MINIPERL) $(MMS$SOURCE)
515 @ Rename/Log dynaloader.pm [.ext.dynaloader]
516
517[.ext.dynaloader]xsloader.pm : [.ext.dynaloader]xsloader_pm.pl
518 $(MINIPERL) $(MMS$SOURCE)
519 @ Rename/Log xsloader.pm [.ext.dynaloader]
520
521dynext : $(LIBPREREQ) $(DBG)perlshr$(E) preplibrary
522 @make_ext "$(MINIPERL_EXE)" "$(MMS)"
523
524[.lib]lib.pm : [.lib]lib_pm.PL
525 $(MINIPERL) $(MMS$SOURCE)
526
527[.lib.VMS]Filespec.pm : [.vms.ext]Filespec.pm
528 @ If F$Search("[.lib]VMS.Dir").eqs."" Then Create/Directory [.lib.VMS]
529 Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.VMS]
530
531[.lib.ExtUtils]XSSymSet.pm : [.vms.ext]XSSymSet.pm
532 @ If F$Search("[.lib]ExtUtils.Dir").eqs."" Then Create/Directory [.lib.ExtUtils]
533 Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.ExtUtils]
534
535[.lib.pods]perldoc.com : [.utils]perldoc.PL $(ARCHDIR)Config.pm
536 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
537 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
538 Copy/NoConfirm/Log [.utils]perldoc.com [.lib.pods]
539
540[.lib.ExtUtils]Miniperl.pm : Minimod.PL miniperlmain.c $(ARCHDIR)Config.pm
541 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE) >$(MMS$TARGET)
542
543[.utils]perlivp.com : [.utils]perlivp.PL $(ARCHDIR)Config.pm
544 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
545
546[.utils]cpan.com : [.utils]cpan.PL $(ARCHDIR)Config.pm
547 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
548
549[.utils]prove.com : [.utils]prove.PL $(ARCHDIR)Config.pm
550 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
551
552[.utils]c2ph.com : [.utils]c2ph.PL $(ARCHDIR)Config.pm
553 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
554
555[.utils]dprofpp.com : [.utils]dprofpp.PL $(ARCHDIR)Config.pm
556 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
557
558[.utils]enc2xs.com : [.utils]enc2xs.PL $(ARCHDIR)Config.pm
559 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
560
561[.utils]h2ph.com : [.utils]h2ph.PL $(ARCHDIR)Config.pm
562 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
563
564[.utils]h2xs.com : [.utils]h2xs.PL $(ARCHDIR)Config.pm
565 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
566
567[.utils]instmodsh.com : [.utils]instmodsh.PL $(ARCHDIR)Config.pm
568 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
569
570[.utils]libnetcfg.com : [.utils]libnetcfg.PL $(ARCHDIR)Config.pm
571 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
572
573[.lib]perlbug.com : [.utils]perlbug.PL $(ARCHDIR)Config.pm
574 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
575 Copy/NoConfirm/Log [.utils]perlbug.com [.lib]
576
577[.lib]perlcc.com : [.utils]perlcc.PL $(ARCHDIR)Config.pm
578 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
579 Copy/NoConfirm/Log [.utils]perlcc.com [.lib]
580
581[.utils]piconv.com : [.utils]piconv.PL $(ARCHDIR)Config.pm
582 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
583
584[.utils]pl2pm.com : [.utils]pl2pm.PL $(ARCHDIR)Config.pm
585 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
586
587[.lib]splain.com : [.utils]splain.PL $(ARCHDIR)Config.pm
588 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
589 Copy/NoConfirm/Log [.utils]splain.com [.lib]
590
591[.x2p]find2perl.com : [.x2p]find2perl.PL $(ARCHDIR)Config.pm
592 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
593
594[.x2p]s2p.com : [.x2p]s2p.PL $(ARCHDIR)Config.pm
595 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
596
597[.utils]xsubpp.com : [.utils]xsubpp.PL $(ARCHDIR)Config.pm
598 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
599
600# Rename catches problem with some DECC versions in which object file is
601# placed in current default dir, not same one as source file.
602[.x2p]$(DBG)a2p$(E) : [.x2p]a2p$(O), [.x2p]hash$(O), [.x2p]str$(O), [.x2p]util$(O), [.x2p]walk$(O)
603 @ If F$Search("hash$(O)").nes."" Then Rename/NoLog hash$(O),str$(O),util$(O),walk$(O) [.x2p]
604 Link $(LINKFLAGS) /Exe=$(MMS$TARGET) $(MMS$SOURCE_LIST) $(CRTLOPTS)
605
606# Accommodate buggy cpp in some version of DECC, which chokes on illegal
607# filespec "y.tab.c", and broken gcc cpp, which doesn't start #include ""
608# search in same dir as source file
609[.x2p]a2p$(O) : [.x2p]a2p.c [.x2p]a2py.c [.x2p]INTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h config.h handy.h vmsish.h $(SOCKH) $(MINIPERL_EXE)
610 $(MINIPERL) -pe "s/^#line\s+(\d+)\s+\Q""y.tab.c""/#line $1 ""y_tab.c""/;" $(MMS$SOURCE) >$(MMS$TARGET_NAME)_vms.c
611 $(CC) $(X2PCFLAGS) /Object=$(MMS$TARGET)/Include=([.x2p],[]) $(MMS$TARGET_NAME)_vms.c
612 Delete/Log/NoConfirm $(MMS$TARGET_NAME)_vms.c;
613
614# gcc cpp broken -- doesn't look in directory of source file for #include ""
615.ifdef GNUC
616[.x2p]hash$(O) : [.x2p]hash.c
617 $(CC) $(X2PCFLAGS) /Include=[.x2p] $(MMS$SOURCE)
618
619[.x2p]str$(O) : [.x2p]str.c
620 $(CC) $(X2PCFLAGS) /Include=[.x2p] $(MMS$SOURCE)
621
622[.x2p]util$(O) : [.x2p]util.c
623 $(CC) $(X2PCFLAGS) /Include=[.x2p] $(MMS$SOURCE)
624
625[.x2p]walk$(O) : [.x2p]walk.c
626 $(CC) $(X2PCFLAGS) /Include=[.x2p] $(MMS$SOURCE)
627.endif
628
629[.lib.pods]pod2html.com : [.pod]pod2html.PL $(ARCHDIR)Config.pm
630 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
631 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
632 Copy/NoConfirm/Log [.pod]pod2html.com [.lib.pods]
633
634[.lib.pods]pod2latex.com : [.pod]pod2latex.PL $(ARCHDIR)Config.pm
635 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
636 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
637 Copy/NoConfirm/Log [.pod]pod2latex.com [.lib.pods]
638
639[.lib.pods]pod2man.com : [.pod]pod2man.PL $(ARCHDIR)Config.pm
640 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
641 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
642 Copy/NoConfirm/Log [.pod]pod2man.com [.lib.pods]
643
644[.lib.pods]pod2text.com : [.pod]pod2text.PL $(ARCHDIR)Config.pm
645 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
646 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
647 Copy/NoConfirm/Log [.pod]pod2text.com [.lib.pods]
648
649[.lib.pods]podchecker.com : [.pod]podchecker.PL $(ARCHDIR)Config.pm
650 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
651 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
652 Copy/NoConfirm/Log [.pod]podchecker.com [.lib.pods]
653
654[.lib.pods]pod2usage.com : [.pod]pod2usage.PL $(ARCHDIR)Config.pm
655 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
656 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
657 Copy/NoConfirm/Log [.pod]pod2usage.com [.lib.pods]
658
659[.lib.pods]podselect.com : [.pod]podselect.PL $(ARCHDIR)Config.pm
660 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
661 $(MINIPERL) -"I[-.lib]" $(MMS$SOURCE)
662 Copy/NoConfirm/Log [.pod]podselect.com [.lib.pods]
663
664preplibrary : $(MINIPERL_EXE) $(LIBPREREQ)
665 @ Write Sys$Output "Autosplitting Perl library . . ."
666 @ Create/Directory [.lib.auto]
667 @ $(MINIPERL) -e "use AutoSplit; autosplit_lib_modules(@ARGV)" [.lib]*.pm [.lib.*]*.pm
668
669[.lib.pods]perl.pod : [.pod]perl.pod
670 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
671 Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pods]
672
673[.lib.pods]perl5004delta.pod : [.pod]perl5004delta.pod
674 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
675 Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pods]
676
677[.lib.pods]perl5005delta.pod : [.pod]perl5005delta.pod
678 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
679 Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pods]
680
681[.lib.pods]perl561delta.pod : [.pod]perl561delta.pod
682 @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods]
683 Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pods]