Commit | Line | Data |
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 |
5 | $! # are requesting help from comp.lang.perl on usenet or via mail. |
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 |