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 |
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 |
cceca5ed |
123 | $ if f$locate("PERL_VERSION",line).ne.f$length(line) |
c07a80fd |
124 | $ then |
125 | $ line = f$edit(line,"TRIM,COMPRESS") |
126 | $ $PATCHLEVEL = f$element(2," ",line) |
6a6d91dc |
127 | $ if f$type($SUBVERSION).nes."" then goto patchlevel_h_Done |
128 | $ endif |
cceca5ed |
129 | $ if f$locate("PERL_SUBVERSION",line).ne.f$length(line) |
6a6d91dc |
130 | $ then |
131 | $ line = f$edit(line,"TRIM,COMPRESS") |
132 | $ $SUBVERSION = f$element(2," ",line) |
133 | $ if f$type($PATCHLEVEL).nes."" then goto patchlevel_h_Done |
c07a80fd |
134 | $ endif |
135 | $ goto read_patchlevel_h |
136 | |
137 | $patchlevel_h_Done: |
138 | $ close RATHER_LONG_CONFIG_FILE_HANDLE |
139 | $ if $PATCHLEVEL.eqs."" |
140 | $ then |
cceca5ed |
141 | $ echo "warning: PERL_VERSION was not found in ''RATHER_LONG_FILENAME_TO_FIND':" |
c07a80fd |
142 | $ endif |
143 | |
144 | $look_for_genconfig_pl: |
145 | $! |
146 | $ if f$search("VMS.DIR").nes."" then set default [.vms] |
147 | $ RATHER_LONG_FILENAME_TO_FIND = "GENCONFIG.PL" |
148 | $ genconfig_pl_dir = "" |
149 | $Research_genconfig_pl: |
150 | $ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND) |
151 | $ if RATHER_LONG_FILENAME_SEARCH.EQS."" |
152 | $ then |
153 | $ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]" |
154 | $ then |
155 | $ set default [-] |
156 | $ goto Research_genconfig_pl |
157 | $ else |
158 | $ ECHO "Can't find the perl genconfig.pl used to make config.sh" |
159 | $ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME' |
160 | $ goto look_for_config_vms |
161 | $ endif |
162 | $ else !genconfig.pl has been found |
163 | $ genconfig_pl_dir = f$parse(f$environment("DEFAULT"),,,"DIRECTORY",) |
164 | $ endif |
165 | |
166 | $ cnfg_keys = "package/hintfile/ld/dlext/d_stdstdio/" |
167 | $ cnfg_keys = cnfg_keys + "usevfork/usemymalloc/so/libpth/" |
168 | $ cnfg_keys = cnfg_keys + "dlsrc/cccdlflags/ccdlflags/lddlflags/" |
169 | |
170 | $ cnfg_vars = "$package/$hint/$ld/$dlext/$d_stdstdio/" |
171 | $ cnfg_vars = cnfg_vars + "$usevfork/$usemymalloc/$so/$libpth/" |
172 | $ cnfg_vars = cnfg_vars + "$dlsrc/$cccdlflags/$ccdlflags/$lddlflags/" |
173 | |
174 | $ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH' |
175 | $read_genconfig_pl: |
176 | $ read/end_of_file = Genconfig_pl_Done RATHER_LONG_CONFIG_FILE_HANDLE line |
177 | $ if f$locate("=",line).ne.f$length(line) !then may be an assigment |
178 | $ then |
179 | $ name = f$edit( f$extract(0,f$locate("=",line),line), "COLLAPSE") |
180 | $ num = 0 |
181 | $key_genconfig_pl: |
182 | $ key = f$element(num,"/",cnfg_keys) |
183 | $ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys |
184 | $ then |
185 | $ if key.eqs.name !then is key |
186 | $ then |
187 | $ start = f$locate("=",line)+1 |
188 | $ stop = f$length(line) |
189 | $ value = f$extract(start,stop-start,line) |
190 | $ var = f$element(num,"/",cnfg_vars) |
191 | $ 'var' = value |
192 | $ cnfg_keys = cnfg_keys - ("''name'/" ) !trim to shorten future matches |
193 | $ cnfg_vars = cnfg_vars - ("''var'/" ) !trim to shorten future matches |
194 | $ endif |
195 | $ num = num + 1 |
196 | $ goto key_genconfig_pl |
197 | $ endif ! not end of cnfg_keys |
198 | $ endif ! then may be an assigment |
199 | $ goto read_genconfig_pl |
200 | |
201 | $Genconfig_pl_Done: |
202 | $ close RATHER_LONG_CONFIG_FILE_HANDLE |
203 | $ if cnfg_vars.nes."" |
204 | $ then |
205 | $ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':" |
206 | $ echo "''cnfg_vars'" |
207 | $ endif |
208 | |
209 | $ if (p8.nes."").and.($ld.nes."") then $ld = $ld + " DBG='"+p8+"'" |
210 | |
211 | $look_for_config_vms: |
212 | $ RATHER_LONG_FILENAME_TO_FIND = "''genconfig_pl_dir'CONFIG.VMS" |
213 | |
214 | $Research_config_vms: |
215 | $ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND) |
216 | $ if RATHER_LONG_FILENAME_SEARCH.EQS."" |
217 | $ then |
218 | $ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]" |
219 | $ then |
220 | $ set default [-] |
221 | $ goto Research_config_vms |
222 | $ else |
223 | $ ECHO "Can't find the perl config.vms used to make config.sh" |
224 | $ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME' |
225 | $ stop |
226 | $ exit 3 |
227 | $ endif |
228 | $ endif |
229 | |
230 | $ cnfg_keys = "MEM_ALIGNBYTES/CASTNEGFLOAT/CASTFLAGS/RANDBITS/STDCHAR/" |
231 | $ cnfg_keys = cnfg_keys+"CASTI32/INTSIZE/VOIDFLAGS/DLSYM_NEEDS_UNDERSCORE" |
232 | |
233 | $ cnfg_vars = "$alignbytes/$d_castneg/$castflags/$randbits/$stdchar/" |
234 | $ cnfg_vars = cnfg_vars+"$d_casti32/$intsize/$voidflags/$d_dlsymun/" |
235 | |
236 | $ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH' |
237 | $read_config_vms: |
238 | $ read/end_of_file = config_vms_Done RATHER_LONG_CONFIG_FILE_HANDLE line |
239 | $! look for "#define" or "#undef" |
240 | $ if (f$length(line).ne.0).and.- |
241 | ((f$locate("#define",line).eq.0).or.(f$locate("#undef",line).eq.0)) |
242 | $ then |
243 | $ line = f$edit(line,"COMPRESS, TRIM") |
244 | $ name = f$element(1," ",line) !macro |
245 | $ num = 0 |
246 | $key_config_vms: |
247 | $ key = f$element(num,"/",cnfg_keys) |
248 | $ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys |
249 | $ then |
250 | $ if key.eqs.name !then is key |
251 | $ then |
252 | $ var = f$element(num,"/",cnfg_vars) |
253 | $ cnfg_keys = cnfg_keys - ("''name'/" ) !trim to shorten future matches |
254 | $ cnfg_vars = cnfg_vars - ("''var'/" ) !trim to shorten future matches |
255 | $ if (f$locate("#undef",line).eq.0) |
256 | $ then |
257 | $ 'var' = "'undef'" |
258 | $ else !is a #define |
259 | $strip_comment: |
260 | $ start = f$locate("/*",line) |
261 | $ if start.ne.f$length(line) !comment started |
262 | $ then |
263 | $ if f$locate("*/",line).ne.f$length(line) !comment stopped |
264 | $ then stop = f$locate("*/",line)+2 |
265 | $ else stop = f$locate("*/",line) |
266 | $ endif |
267 | $ comment = f$extract(start,stop-start,line) |
268 | $ line = line - comment |
269 | $ goto strip_comment |
270 | $ endif |
271 | $ line = f$edit(line,"TRIM") |
272 | $ start = f$locate(key,line)+f$length(key) |
273 | $ stop = f$length(line) |
274 | $ value = f$edit(f$extract(start,stop-start,line),"TRIM") |
275 | $ if (value.nes."") |
276 | $ then |
277 | $ 'var' = "'"+value+"'" |
278 | $ else |
279 | $ 'var' = "'define'" |
280 | $ endif |
281 | $ endif !#define |
282 | $ endif ! is key of interest |
283 | $ num = num + 1 |
284 | $ goto key_config_vms |
285 | $ endif ! not end of cnfg_keys |
286 | $ endif ! then may be #define or #undef of interest |
287 | $ goto read_config_vms |
288 | |
289 | $config_vms_Done: |
290 | $ close RATHER_LONG_CONFIG_FILE_HANDLE |
291 | $ if cnfg_vars.nes."" |
292 | $ then |
293 | $ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':" |
294 | $ echo "''cnfg_vars'" |
295 | $ endif |
296 | |
297 | $spit_it_out: |
298 | $! $spitshell = ECHO !<<!GROK!THIS! |
299 | $ ECHO " " |
cceca5ed |
300 | $ ECHO "Summary of my ''$package' (version ''$PATCHLEVEL' subversion ''$SUBVERSION') configuration:" |
c07a80fd |
301 | $ ECHO " Platform:" |
5a5da427 |
302 | $ ECHO " osname=''$osname', osvers=''$osvers', archname=''$archname'" |
c07a80fd |
303 | $ ECHO " uname=''$myuname'" !->d_has_uname? |
6a6d91dc |
304 | $ ECHO " hint=''$hint' d_sigaction='undef'" !->hintfile? |
c07a80fd |
305 | $ ECHO " static exts=''$staticexts'" ! added for VMS |
306 | $ ECHO " Compiler:" |
307 | $ ECHO " cc=''$cc', optimize=''$optimize', ld=''$ld'" |
308 | $ ECHO " cppflags=''$cppflags'" |
309 | $ ECHO " ccflags =''$ccflags'" !->vms_cc_type? |
310 | $ ECHO " ldflags =''$ldflags'" |
311 | $ ECHO " stdchar=''$stdchar', d_stdstdio=''$d_stdstdio', usevfork=''$usevfork'" |
312 | $ ECHO " voidflags=''$voidflags', castflags=''$castflags', d_casti32=''$d_casti32', d_castneg=''$d_castneg'" |
313 | $ ECHO " intsize=''$intsize', alignbytes=''$alignbytes', usemymalloc=''$usemymalloc', randbits=''$randbits'" |
314 | $ ECHO " Libraries:" |
315 | $ ECHO " so=''$so'" |
316 | $ ECHO " libpth=''$libpth'" |
317 | $ ECHO " libs=''$libs'" |
318 | $ ECHO " libc=''$libc'" |
319 | $ ECHO " Dynamic Linking:" |
320 | $ ECHO " dlsrc=''$dlsrc', dlext=''$dlext', d_dlsymun=''$d_dlsymun'" |
321 | $ ECHO " cccdlflags=''$cccdlflags', ccdlflags=''$ccdlflags', lddlflags=''$lddlflags'" |
322 | $ ECHO " " |
323 | $ !GROK!THIS! |
324 | $ SET DEFAULT 'RATHER_LONG_DEFAULT_DIRECTORY_NAME' |
325 | $ EXIT |