1 $! #!/bin/sh ---> MYCONFIG.COM
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.misc on usenet or via mail.
7 $! DCL-ified by Peter Prymmer <pvhp@lns62.lns.cornell.edu> 22-DEC-1995
8 $! DCL usage (choose one):
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
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.
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.
26 $ ECHO = "WRITE SYS$OUTPUT "
27 $ RATHER_LONG_DEFAULT_DIRECTORY_NAME = F$ENVIRONMENT("DEFAULT")
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"
34 $ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
35 $ if RATHER_LONG_FILENAME_SEARCH.EQS.""
37 $ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
42 $ ECHO "Can't find the perl config.sh file produced by Configure"
43 $ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
45 $ goto cannot_find_config_sh
49 $ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
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. -
58 (name.nes."'") - !bug in genconfig.pl (vms) for osvers='' ?
59 then $$'name' = "'" + value !$ not necessary but looks more sh-ish
63 $ close RATHER_LONG_CONFIG_FILE_HANDLE
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
78 $! hard-coded stuff (for now):
79 $ $cppflags = "'"+"'" !(vestigal)
80 $ $optimize = "'"+"'" !descrip.mms has /Optimize=2 in $(XTRACCFLAGS)
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
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+"'"
102 $look_for_patchlevel_h:
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.""
109 $ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
112 $ goto Research_patchlevel_h
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
120 $ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
122 $ read/end_of_file = patchlevel_h_Done RATHER_LONG_CONFIG_FILE_HANDLE line
123 $ if f$locate("PATCHLEVEL",line).ne.f$length(line)
125 $ line = f$edit(line,"TRIM,COMPRESS")
126 $ $PATCHLEVEL = f$element(2," ",line)
127 $ goto patchlevel_h_Done
129 $ goto read_patchlevel_h
132 $ close RATHER_LONG_CONFIG_FILE_HANDLE
133 $ if $PATCHLEVEL.eqs.""
135 $ echo "warning: PATCHLEVEL was not found in ''RATHER_LONG_FILENAME_TO_FIND':"
138 $look_for_genconfig_pl:
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.""
147 $ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
150 $ goto Research_genconfig_pl
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
156 $ else !genconfig.pl has been found
157 $ genconfig_pl_dir = f$parse(f$environment("DEFAULT"),,,"DIRECTORY",)
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/"
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/"
168 $ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
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
173 $ name = f$edit( f$extract(0,f$locate("=",line),line), "COLLAPSE")
176 $ key = f$element(num,"/",cnfg_keys)
177 $ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys
179 $ if key.eqs.name !then is key
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)
186 $ cnfg_keys = cnfg_keys - ("''name'/" ) !trim to shorten future matches
187 $ cnfg_vars = cnfg_vars - ("''var'/" ) !trim to shorten future matches
190 $ goto key_genconfig_pl
191 $ endif ! not end of cnfg_keys
192 $ endif ! then may be an assigment
193 $ goto read_genconfig_pl
196 $ close RATHER_LONG_CONFIG_FILE_HANDLE
197 $ if cnfg_vars.nes.""
199 $ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':"
200 $ echo "''cnfg_vars'"
203 $ if (p8.nes."").and.($ld.nes."") then $ld = $ld + " DBG='"+p8+"'"
205 $look_for_config_vms:
206 $ RATHER_LONG_FILENAME_TO_FIND = "''genconfig_pl_dir'CONFIG.VMS"
208 $Research_config_vms:
209 $ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND)
210 $ if RATHER_LONG_FILENAME_SEARCH.EQS.""
212 $ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
215 $ goto Research_config_vms
217 $ ECHO "Can't find the perl config.vms used to make config.sh"
218 $ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'
224 $ cnfg_keys = "MEM_ALIGNBYTES/CASTNEGFLOAT/CASTFLAGS/RANDBITS/STDCHAR/"
225 $ cnfg_keys = cnfg_keys+"CASTI32/INTSIZE/VOIDFLAGS/DLSYM_NEEDS_UNDERSCORE"
227 $ cnfg_vars = "$alignbytes/$d_castneg/$castflags/$randbits/$stdchar/"
228 $ cnfg_vars = cnfg_vars+"$d_casti32/$intsize/$voidflags/$d_dlsymun/"
230 $ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH'
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))
237 $ line = f$edit(line,"COMPRESS, TRIM")
238 $ name = f$element(1," ",line) !macro
241 $ key = f$element(num,"/",cnfg_keys)
242 $ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys
244 $ if key.eqs.name !then is key
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)
254 $ start = f$locate("/*",line)
255 $ if start.ne.f$length(line) !comment started
257 $ if f$locate("*/",line).ne.f$length(line) !comment stopped
258 $ then stop = f$locate("*/",line)+2
259 $ else stop = f$locate("*/",line)
261 $ comment = f$extract(start,stop-start,line)
262 $ line = line - comment
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")
271 $ 'var' = "'"+value+"'"
276 $ endif ! is key of interest
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
284 $ close RATHER_LONG_CONFIG_FILE_HANDLE
285 $ if cnfg_vars.nes.""
287 $ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':"
288 $ echo "''cnfg_vars'"
292 $! $spitshell = ECHO !<<!GROK!THIS!
294 $ ECHO "Summary of my ''$package' (patchlevel ''$PATCHLEVEL') configuration:"
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
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'"
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'"
318 $ SET DEFAULT 'RATHER_LONG_DEFAULT_DIRECTORY_NAME'