| 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.misc 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("PERL_VERSION",line).ne.f$length(line) |
| 124 | $ then |
| 125 | $ line = f$edit(line,"TRIM,COMPRESS") |
| 126 | $ $PATCHLEVEL = f$element(2," ",line) |
| 127 | $ if f$type($SUBVERSION).nes."" then goto patchlevel_h_Done |
| 128 | $ endif |
| 129 | $ if f$locate("PERL_SUBVERSION",line).ne.f$length(line) |
| 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 |
| 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 |
| 141 | $ echo "warning: PERL_VERSION was not found in ''RATHER_LONG_FILENAME_TO_FIND':" |
| 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 " " |
| 300 | $ ECHO "Summary of my ''$package' (version ''$PATCHLEVEL' subversion ''$SUBVERSION') configuration:" |
| 301 | $ ECHO " Platform:" |
| 302 | $ ECHO " osname=''$osname', osvers=''$osvers', archname=''$archname'" |
| 303 | $ ECHO " uname=''$myuname'" !->d_has_uname? |
| 304 | $ ECHO " hint=''$hint' d_sigaction='undef'" !->hintfile? |
| 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 |