Change to use $^O and &Cwd:cwd
[p5sagit/p5-mst-13.2.git] / vms / myconfig.com
CommitLineData
c07a80fd 1$! #!/bin/sh ---> MYCONFIG.COM
2
3$! # This script is designed to provide a handy summary of the configuration
4$! # information being used to build perl. This is especially useful if you
482b294c 5$! # are requesting help from comp.lang.perl.misc on usenet or via mail.
c07a80fd 6
7$! DCL-ified by Peter Prymmer <pvhp@lns62.lns.cornell.edu> 22-DEC-1995
8$! DCL usage (choose one):
9$! @MYCONFIG !or
10$! @MYCONFIG/OUTPUT=MYCONFIG.OUT !or
11$! @MYCONFIG [node::][which$disk:][[dir.subdir]]CONFIG.SH !or
12$! @MYCONFIG/OUTPUT=MYCONFIG.OUT [node::][w$disk:][[dir]]CONFIG.SH
13$! version 2:
14$! Incorporates Charles Bailey's ideas about bootstrapping system info -
15$! myconfig.com is now callable as a "myconfig" target in your maker and
16$! may even work if miniperl.exe and config.sh files fail to be made.
17$! Thus if:
18$! MMK/DESCRIP=[.VMS] !(or MMS or MAKE)
19$! does not work then try:
20$! MMK/DESCRIP=[.VMS]/OUTPUT=MYPERLBUILD.PROBLEM !(or MMS or MAKE)
21$! Then discuss the MYPERLBUILD.PROBLEM file with a local expert.
22$! If that still does not work then try:
23$! MMK/DESCRIP=[.VMS]/OUT=MYNONFIG.OUT MYCONFIG !(or MMS or MAKE)
24$! send output (MYNONFIG.OUT) to an outside expert and ask politely for help.
25
26$ ECHO = "WRITE SYS$OUTPUT "
27$ RATHER_LONG_DEFAULT_DIRECTORY_NAME = F$ENVIRONMENT("DEFAULT")
28
29$ if (p1.nes."").and.(p2.eqs."")
30$ then RATHER_LONG_FILENAME_TO_FIND = p1 !no typo-checking (experts only)
31$ else RATHER_LONG_FILENAME_TO_FIND = "CONFIG.SH"
32$ endif
33$Research:
34$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
35$ if RATHER_LONG_FILENAME_SEARCH.EQS.""
36$ then
37$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
38$ then
39$ set default [-]
40$ goto Research
41$ else
42$ ECHO "Can't find the perl config.sh file produced by Configure"
43$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
44$! exit 3
45$ goto cannot_find_config_sh
46$ endif
47$ endif
48
49$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
50$Loop:
51$ read/end_of_file = Done RATHER_LONG_CONFIG_FILE_HANDLE line
52$ name = f$extract(0,f$locate("=",line),line)
53$ start = f$locate("'",line)+1
54$ stop = f$locate("'",line)
55$ value = f$extract(start,stop-start,line)
56$ if (f$locate("#",name).eqs.f$length(name)).and. -
57 (name.nes."").and. -
58 (name.nes."'") - !bug in genconfig.pl (vms) for osvers='' ?
59 then $$'name' = "'" + value !$ not necessary but looks more sh-ish
60$ goto Loop
61
62$Done:
63$ close RATHER_LONG_CONFIG_FILE_HANDLE
64$ goto spit_it_out
65
66$cannot_find_config_sh:
67$! these parameters are assumed to be passed from make/mm[s|k]:
68$! p1=$(CC), p2=$(CFLAGS), p3=$(LINKFLAGS),
69$! p4=$(LIBS1), p5=$(LIBS2), p6=$(SOCKLIB),
70$! p7=$(EXT), p8=$(DBG)
71$! so assign to appropriate $var:
72$ $cc = "'"+p1+"'" ! p1=$(CC) from make
73$ $ccflags = "'"+p2+"'" ! p2=$(CFLAGS) from make
74$ $ldflags = "'"+p3+"'" ! p3=$(LINKFLAGS) from make
75$ $libs = "'"+p4+" "+p5+" "+p6+"'" ! p4$(LIBS1),p5$(LIBS2),p6$(SOCKLIB)frm make
76$ $staticexts = "'"+p7+"'" ! p7=$(EXT) from make
77
78$! hard-coded stuff (for now):
79$ $cppflags = "'"+"'" !(vestigal)
80$ $optimize = "'"+"'" !descrip.mms has /Optimize=2 in $(XTRACCFLAGS)
81
82$! following assigns done via `dcl` calls in genconfig.pl anyway:
83$ $osname = "'"+f$edit(f$getsyi("NODE_SWTYPE"),"COLLAPSE") !genconfig.pl has "osname='VMS'"
84$ $osvers = f$edit(f$getsyi("VERSION")-"V","COLLAPSE")
85$ if f$getsyi("HW_MODEL").GT.1024
86$ then $$archname = "'VMS_AXP'" !string from descrip.mms vmsperl 12-21-95
87$ else $$archname = "'VMS_VAX'" !string from descrip.mms vmsperl 12-21-95
88$ endif
89$ $myname = ""
90$ if $myname.eqs."" then $$myname = f$trnlnm("ARPANET_HOST_NAME")
91$ if $myname.eqs."" then $$myname = f$trnlnm("INTERNET_HOST_NAME")
92$ if $myname.eqs."" then $$myname = f$trnlnm("MULTINET_HOST_NAME")
93$ if $myname.eqs."" then $$myname = f$trnlnm("UCX$INET_HOST_NAME")
94$ if $myname.eqs."" then $$myname = f$trnlnm("TCPWARE_DOMAINNAME")
95$ if $myname.eqs."" then $$myname = f$trnlnm("NEWS_ADDRESS")
96$ if $myname.eqs."" then $$myname = f$trnlnm("SYS$NODE")
97$! Is this same as genconfig.pl ? (spacing/order unknown):
98$ $myuname=$osname+" "+$myname+" "+$osvers+" "+F$GetSyi("HW_NAME")+"'"
99$ $osname = $osname+"'"
100$ $osvers = "'"+$osvers+"'"
101
102$look_for_patchlevel_h:
103$!
104$ RATHER_LONG_FILENAME_TO_FIND = "PATCHLEVEL.H"
105$Research_patchlevel_h:
106$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
107$ if RATHER_LONG_FILENAME_SEARCH.EQS.""
108$ then
109$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
110$ then
111$ set default [-]
112$ goto Research_patchlevel_h
113$ else
114$ ECHO "Can't find the header file patchlevel.h used to make config.sh"
115$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
116$ goto look_for_genconfig.pl
117$ endif
118$ endif
119
120$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
121$read_patchlevel_h:
122$ read/end_of_file = patchlevel_h_Done RATHER_LONG_CONFIG_FILE_HANDLE line
123$ if f$locate("PATCHLEVEL",line).ne.f$length(line)
124$ then
125$ line = f$edit(line,"TRIM,COMPRESS")
126$ $PATCHLEVEL = f$element(2," ",line)
127$ goto patchlevel_h_Done
128$ endif
129$ goto read_patchlevel_h
130
131$patchlevel_h_Done:
132$ close RATHER_LONG_CONFIG_FILE_HANDLE
133$ if $PATCHLEVEL.eqs.""
134$ then
135$ echo "warning: PATCHLEVEL was not found in ''RATHER_LONG_FILENAME_TO_FIND':"
136$ endif
137
138$look_for_genconfig_pl:
139$!
140$ if f$search("VMS.DIR").nes."" then set default [.vms]
141$ RATHER_LONG_FILENAME_TO_FIND = "GENCONFIG.PL"
142$ genconfig_pl_dir = ""
143$Research_genconfig_pl:
144$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
145$ if RATHER_LONG_FILENAME_SEARCH.EQS.""
146$ then
147$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
148$ then
149$ set default [-]
150$ goto Research_genconfig_pl
151$ else
152$ ECHO "Can't find the perl genconfig.pl used to make config.sh"
153$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
154$ goto look_for_config_vms
155$ endif
156$ else !genconfig.pl has been found
157$ genconfig_pl_dir = f$parse(f$environment("DEFAULT"),,,"DIRECTORY",)
158$ endif
159
160$ cnfg_keys = "package/hintfile/ld/dlext/d_stdstdio/"
161$ cnfg_keys = cnfg_keys + "usevfork/usemymalloc/so/libpth/"
162$ cnfg_keys = cnfg_keys + "dlsrc/cccdlflags/ccdlflags/lddlflags/"
163
164$ cnfg_vars = "$package/$hint/$ld/$dlext/$d_stdstdio/"
165$ cnfg_vars = cnfg_vars + "$usevfork/$usemymalloc/$so/$libpth/"
166$ cnfg_vars = cnfg_vars + "$dlsrc/$cccdlflags/$ccdlflags/$lddlflags/"
167
168$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
169$read_genconfig_pl:
170$ read/end_of_file = Genconfig_pl_Done RATHER_LONG_CONFIG_FILE_HANDLE line
171$ if f$locate("=",line).ne.f$length(line) !then may be an assigment
172$ then
173$ name = f$edit( f$extract(0,f$locate("=",line),line), "COLLAPSE")
174$ num = 0
175$key_genconfig_pl:
176$ key = f$element(num,"/",cnfg_keys)
177$ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys
178$ then
179$ if key.eqs.name !then is key
180$ then
181$ start = f$locate("=",line)+1
182$ stop = f$length(line)
183$ value = f$extract(start,stop-start,line)
184$ var = f$element(num,"/",cnfg_vars)
185$ 'var' = value
186$ cnfg_keys = cnfg_keys - ("''name'/" ) !trim to shorten future matches
187$ cnfg_vars = cnfg_vars - ("''var'/" ) !trim to shorten future matches
188$ endif
189$ num = num + 1
190$ goto key_genconfig_pl
191$ endif ! not end of cnfg_keys
192$ endif ! then may be an assigment
193$ goto read_genconfig_pl
194
195$Genconfig_pl_Done:
196$ close RATHER_LONG_CONFIG_FILE_HANDLE
197$ if cnfg_vars.nes.""
198$ then
199$ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':"
200$ echo "''cnfg_vars'"
201$ endif
202
203$ if (p8.nes."").and.($ld.nes."") then $ld = $ld + " DBG='"+p8+"'"
204
205$look_for_config_vms:
206$ RATHER_LONG_FILENAME_TO_FIND = "''genconfig_pl_dir'CONFIG.VMS"
207
208$Research_config_vms:
209$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
210$ if RATHER_LONG_FILENAME_SEARCH.EQS.""
211$ then
212$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
213$ then
214$ set default [-]
215$ goto Research_config_vms
216$ else
217$ ECHO "Can't find the perl config.vms used to make config.sh"
218$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
219$ stop
220$ exit 3
221$ endif
222$ endif
223
224$ cnfg_keys = "MEM_ALIGNBYTES/CASTNEGFLOAT/CASTFLAGS/RANDBITS/STDCHAR/"
225$ cnfg_keys = cnfg_keys+"CASTI32/INTSIZE/VOIDFLAGS/DLSYM_NEEDS_UNDERSCORE"
226
227$ cnfg_vars = "$alignbytes/$d_castneg/$castflags/$randbits/$stdchar/"
228$ cnfg_vars = cnfg_vars+"$d_casti32/$intsize/$voidflags/$d_dlsymun/"
229
230$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
231$read_config_vms:
232$ read/end_of_file = config_vms_Done RATHER_LONG_CONFIG_FILE_HANDLE line
233$! look for "#define" or "#undef"
234$ if (f$length(line).ne.0).and.-
235 ((f$locate("#define",line).eq.0).or.(f$locate("#undef",line).eq.0))
236$ then
237$ line = f$edit(line,"COMPRESS, TRIM")
238$ name = f$element(1," ",line) !macro
239$ num = 0
240$key_config_vms:
241$ key = f$element(num,"/",cnfg_keys)
242$ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys
243$ then
244$ if key.eqs.name !then is key
245$ then
246$ var = f$element(num,"/",cnfg_vars)
247$ cnfg_keys = cnfg_keys - ("''name'/" ) !trim to shorten future matches
248$ cnfg_vars = cnfg_vars - ("''var'/" ) !trim to shorten future matches
249$ if (f$locate("#undef",line).eq.0)
250$ then
251$ 'var' = "'undef'"
252$ else !is a #define
253$strip_comment:
254$ start = f$locate("/*",line)
255$ if start.ne.f$length(line) !comment started
256$ then
257$ if f$locate("*/",line).ne.f$length(line) !comment stopped
258$ then stop = f$locate("*/",line)+2
259$ else stop = f$locate("*/",line)
260$ endif
261$ comment = f$extract(start,stop-start,line)
262$ line = line - comment
263$ goto strip_comment
264$ endif
265$ line = f$edit(line,"TRIM")
266$ start = f$locate(key,line)+f$length(key)
267$ stop = f$length(line)
268$ value = f$edit(f$extract(start,stop-start,line),"TRIM")
269$ if (value.nes."")
270$ then
271$ 'var' = "'"+value+"'"
272$ else
273$ 'var' = "'define'"
274$ endif
275$ endif !#define
276$ endif ! is key of interest
277$ num = num + 1
278$ goto key_config_vms
279$ endif ! not end of cnfg_keys
280$ endif ! then may be #define or #undef of interest
281$ goto read_config_vms
282
283$config_vms_Done:
284$ close RATHER_LONG_CONFIG_FILE_HANDLE
285$ if cnfg_vars.nes.""
286$ then
287$ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':"
288$ echo "''cnfg_vars'"
289$ endif
290
291$spit_it_out:
292$! $spitshell = ECHO !<<!GROK!THIS!
293$ ECHO " "
294$ ECHO "Summary of my ''$package' (patchlevel ''$PATCHLEVEL') configuration:"
295$ ECHO " Platform:"
296$ ECHO " osname=''$osname', osver=''$osvers', archname=''$archname'"
297$ ECHO " uname=''$myuname'" !->d_has_uname?
298$ ECHO " hint=''$hint'" !->hintfile?
299$ ECHO " static exts=''$staticexts'" ! added for VMS
300$ ECHO " Compiler:"
301$ ECHO " cc=''$cc', optimize=''$optimize', ld=''$ld'"
302$ ECHO " cppflags=''$cppflags'"
303$ ECHO " ccflags =''$ccflags'" !->vms_cc_type?
304$ ECHO " ldflags =''$ldflags'"
305$ ECHO " stdchar=''$stdchar', d_stdstdio=''$d_stdstdio', usevfork=''$usevfork'"
306$ ECHO " voidflags=''$voidflags', castflags=''$castflags', d_casti32=''$d_casti32', d_castneg=''$d_castneg'"
307$ ECHO " intsize=''$intsize', alignbytes=''$alignbytes', usemymalloc=''$usemymalloc', randbits=''$randbits'"
308$ ECHO " Libraries:"
309$ ECHO " so=''$so'"
310$ ECHO " libpth=''$libpth'"
311$ ECHO " libs=''$libs'"
312$ ECHO " libc=''$libc'"
313$ ECHO " Dynamic Linking:"
314$ ECHO " dlsrc=''$dlsrc', dlext=''$dlext', d_dlsymun=''$d_dlsymun'"
315$ ECHO " cccdlflags=''$cccdlflags', ccdlflags=''$ccdlflags', lddlflags=''$lddlflags'"
316$ ECHO " "
317$ !GROK!THIS!
318$ SET DEFAULT 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
319$ EXIT