diff options
Diffstat (limited to 'vms/myconfig.com')
-rw-r--r-- | vms/myconfig.com | 319 |
1 files changed, 319 insertions, 0 deletions
diff --git a/vms/myconfig.com b/vms/myconfig.com new file mode 100644 index 0000000000..b9f1bcd476 --- /dev/null +++ b/vms/myconfig.com @@ -0,0 +1,319 @@ +$! #!/bin/sh ---> MYCONFIG.COM + +$! # This script is designed to provide a handy summary of the configuration +$! # information being used to build perl. This is especially useful if you +$! # are requesting help from comp.lang.perl on usenet or via mail. + +$! DCL-ified by Peter Prymmer <pvhp@lns62.lns.cornell.edu> 22-DEC-1995 +$! DCL usage (choose one): +$! @MYCONFIG !or +$! @MYCONFIG/OUTPUT=MYCONFIG.OUT !or +$! @MYCONFIG [node::][which$disk:][[dir.subdir]]CONFIG.SH !or +$! @MYCONFIG/OUTPUT=MYCONFIG.OUT [node::][w$disk:][[dir]]CONFIG.SH +$! version 2: +$! Incorporates Charles Bailey's ideas about bootstrapping system info - +$! myconfig.com is now callable as a "myconfig" target in your maker and +$! may even work if miniperl.exe and config.sh files fail to be made. +$! Thus if: +$! MMK/DESCRIP=[.VMS] !(or MMS or MAKE) +$! does not work then try: +$! MMK/DESCRIP=[.VMS]/OUTPUT=MYPERLBUILD.PROBLEM !(or MMS or MAKE) +$! Then discuss the MYPERLBUILD.PROBLEM file with a local expert. +$! If that still does not work then try: +$! MMK/DESCRIP=[.VMS]/OUT=MYNONFIG.OUT MYCONFIG !(or MMS or MAKE) +$! send output (MYNONFIG.OUT) to an outside expert and ask politely for help. + +$ ECHO = "WRITE SYS$OUTPUT " +$ RATHER_LONG_DEFAULT_DIRECTORY_NAME = F$ENVIRONMENT("DEFAULT") + +$ if (p1.nes."").and.(p2.eqs."") +$ then RATHER_LONG_FILENAME_TO_FIND = p1 !no typo-checking (experts only) +$ else RATHER_LONG_FILENAME_TO_FIND = "CONFIG.SH" +$ endif +$Research: +$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND) +$ if RATHER_LONG_FILENAME_SEARCH.EQS."" +$ then +$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]" +$ then +$ set default [-] +$ goto Research +$ else +$ ECHO "Can't find the perl config.sh file produced by Configure" +$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME' +$! exit 3 +$ goto cannot_find_config_sh +$ endif +$ endif + +$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH' +$Loop: +$ read/end_of_file = Done RATHER_LONG_CONFIG_FILE_HANDLE line +$ name = f$extract(0,f$locate("=",line),line) +$ start = f$locate("'",line)+1 +$ stop = f$locate("'",line) +$ value = f$extract(start,stop-start,line) +$ if (f$locate("#",name).eqs.f$length(name)).and. - + (name.nes."").and. - + (name.nes."'") - !bug in genconfig.pl (vms) for osvers='' ? + then $$'name' = "'" + value !$ not necessary but looks more sh-ish +$ goto Loop + +$Done: +$ close RATHER_LONG_CONFIG_FILE_HANDLE +$ goto spit_it_out + +$cannot_find_config_sh: +$! these parameters are assumed to be passed from make/mm[s|k]: +$! p1=$(CC), p2=$(CFLAGS), p3=$(LINKFLAGS), +$! p4=$(LIBS1), p5=$(LIBS2), p6=$(SOCKLIB), +$! p7=$(EXT), p8=$(DBG) +$! so assign to appropriate $var: +$ $cc = "'"+p1+"'" ! p1=$(CC) from make +$ $ccflags = "'"+p2+"'" ! p2=$(CFLAGS) from make +$ $ldflags = "'"+p3+"'" ! p3=$(LINKFLAGS) from make +$ $libs = "'"+p4+" "+p5+" "+p6+"'" ! p4$(LIBS1),p5$(LIBS2),p6$(SOCKLIB)frm make +$ $staticexts = "'"+p7+"'" ! p7=$(EXT) from make + +$! hard-coded stuff (for now): +$ $cppflags = "'"+"'" !(vestigal) +$ $optimize = "'"+"'" !descrip.mms has /Optimize=2 in $(XTRACCFLAGS) + +$! following assigns done via `dcl` calls in genconfig.pl anyway: +$ $osname = "'"+f$edit(f$getsyi("NODE_SWTYPE"),"COLLAPSE") !genconfig.pl has "osname='VMS'" +$ $osvers = f$edit(f$getsyi("VERSION")-"V","COLLAPSE") +$ if f$getsyi("HW_MODEL").GT.1024 +$ then $$archname = "'VMS_AXP'" !string from descrip.mms vmsperl 12-21-95 +$ else $$archname = "'VMS_VAX'" !string from descrip.mms vmsperl 12-21-95 +$ endif +$ $myname = "" +$ if $myname.eqs."" then $$myname = f$trnlnm("ARPANET_HOST_NAME") +$ if $myname.eqs."" then $$myname = f$trnlnm("INTERNET_HOST_NAME") +$ if $myname.eqs."" then $$myname = f$trnlnm("MULTINET_HOST_NAME") +$ if $myname.eqs."" then $$myname = f$trnlnm("UCX$INET_HOST_NAME") +$ if $myname.eqs."" then $$myname = f$trnlnm("TCPWARE_DOMAINNAME") +$ if $myname.eqs."" then $$myname = f$trnlnm("NEWS_ADDRESS") +$ if $myname.eqs."" then $$myname = f$trnlnm("SYS$NODE") +$! Is this same as genconfig.pl ? (spacing/order unknown): +$ $myuname=$osname+" "+$myname+" "+$osvers+" "+F$GetSyi("HW_NAME")+"'" +$ $osname = $osname+"'" +$ $osvers = "'"+$osvers+"'" + +$look_for_patchlevel_h: +$! +$ RATHER_LONG_FILENAME_TO_FIND = "PATCHLEVEL.H" +$Research_patchlevel_h: +$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND) +$ if RATHER_LONG_FILENAME_SEARCH.EQS."" +$ then +$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]" +$ then +$ set default [-] +$ goto Research_patchlevel_h +$ else +$ ECHO "Can't find the header file patchlevel.h used to make config.sh" +$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME' +$ goto look_for_genconfig.pl +$ endif +$ endif + +$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH' +$read_patchlevel_h: +$ read/end_of_file = patchlevel_h_Done RATHER_LONG_CONFIG_FILE_HANDLE line +$ if f$locate("PATCHLEVEL",line).ne.f$length(line) +$ then +$ line = f$edit(line,"TRIM,COMPRESS") +$ $PATCHLEVEL = f$element(2," ",line) +$ goto patchlevel_h_Done +$ endif +$ goto read_patchlevel_h + +$patchlevel_h_Done: +$ close RATHER_LONG_CONFIG_FILE_HANDLE +$ if $PATCHLEVEL.eqs."" +$ then +$ echo "warning: PATCHLEVEL was not found in ''RATHER_LONG_FILENAME_TO_FIND':" +$ endif + +$look_for_genconfig_pl: +$! +$ if f$search("VMS.DIR").nes."" then set default [.vms] +$ RATHER_LONG_FILENAME_TO_FIND = "GENCONFIG.PL" +$ genconfig_pl_dir = "" +$Research_genconfig_pl: +$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND) +$ if RATHER_LONG_FILENAME_SEARCH.EQS."" +$ then +$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]" +$ then +$ set default [-] +$ goto Research_genconfig_pl +$ else +$ ECHO "Can't find the perl genconfig.pl used to make config.sh" +$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME' +$ goto look_for_config_vms +$ endif +$ else !genconfig.pl has been found +$ genconfig_pl_dir = f$parse(f$environment("DEFAULT"),,,"DIRECTORY",) +$ endif + +$ cnfg_keys = "package/hintfile/ld/dlext/d_stdstdio/" +$ cnfg_keys = cnfg_keys + "usevfork/usemymalloc/so/libpth/" +$ cnfg_keys = cnfg_keys + "dlsrc/cccdlflags/ccdlflags/lddlflags/" + +$ cnfg_vars = "$package/$hint/$ld/$dlext/$d_stdstdio/" +$ cnfg_vars = cnfg_vars + "$usevfork/$usemymalloc/$so/$libpth/" +$ cnfg_vars = cnfg_vars + "$dlsrc/$cccdlflags/$ccdlflags/$lddlflags/" + +$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH' +$read_genconfig_pl: +$ read/end_of_file = Genconfig_pl_Done RATHER_LONG_CONFIG_FILE_HANDLE line +$ if f$locate("=",line).ne.f$length(line) !then may be an assigment +$ then +$ name = f$edit( f$extract(0,f$locate("=",line),line), "COLLAPSE") +$ num = 0 +$key_genconfig_pl: +$ key = f$element(num,"/",cnfg_keys) +$ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys +$ then +$ if key.eqs.name !then is key +$ then +$ start = f$locate("=",line)+1 +$ stop = f$length(line) +$ value = f$extract(start,stop-start,line) +$ var = f$element(num,"/",cnfg_vars) +$ 'var' = value +$ cnfg_keys = cnfg_keys - ("''name'/" ) !trim to shorten future matches +$ cnfg_vars = cnfg_vars - ("''var'/" ) !trim to shorten future matches +$ endif +$ num = num + 1 +$ goto key_genconfig_pl +$ endif ! not end of cnfg_keys +$ endif ! then may be an assigment +$ goto read_genconfig_pl + +$Genconfig_pl_Done: +$ close RATHER_LONG_CONFIG_FILE_HANDLE +$ if cnfg_vars.nes."" +$ then +$ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':" +$ echo "''cnfg_vars'" +$ endif + +$ if (p8.nes."").and.($ld.nes."") then $ld = $ld + " DBG='"+p8+"'" + +$look_for_config_vms: +$ RATHER_LONG_FILENAME_TO_FIND = "''genconfig_pl_dir'CONFIG.VMS" + +$Research_config_vms: +$ RATHER_LONG_FILENAME_SEARCH = F$Search(RATHER_LONG_FILENAME_TO_FIND) +$ if RATHER_LONG_FILENAME_SEARCH.EQS."" +$ then +$ if f$parse(f$environment("DEFAULT"),,,"DIRECTORY",).NES."[000000]" +$ then +$ set default [-] +$ goto Research_config_vms +$ else +$ ECHO "Can't find the perl config.vms used to make config.sh" +$ set default 'RATHER_LONG_DEFAULT_DIRECTORY_NAME' +$ stop +$ exit 3 +$ endif +$ endif + +$ cnfg_keys = "MEM_ALIGNBYTES/CASTNEGFLOAT/CASTFLAGS/RANDBITS/STDCHAR/" +$ cnfg_keys = cnfg_keys+"CASTI32/INTSIZE/VOIDFLAGS/DLSYM_NEEDS_UNDERSCORE" + +$ cnfg_vars = "$alignbytes/$d_castneg/$castflags/$randbits/$stdchar/" +$ cnfg_vars = cnfg_vars+"$d_casti32/$intsize/$voidflags/$d_dlsymun/" + +$ open/read RATHER_LONG_CONFIG_FILE_HANDLE 'RATHER_LONG_FILENAME_SEARCH' +$read_config_vms: +$ read/end_of_file = config_vms_Done RATHER_LONG_CONFIG_FILE_HANDLE line +$! look for "#define" or "#undef" +$ if (f$length(line).ne.0).and.- + ((f$locate("#define",line).eq.0).or.(f$locate("#undef",line).eq.0)) +$ then +$ line = f$edit(line,"COMPRESS, TRIM") +$ name = f$element(1," ",line) !macro +$ num = 0 +$key_config_vms: +$ key = f$element(num,"/",cnfg_keys) +$ if (key .nes. "/").and.(key .nes. "") !not end of cnfg_keys +$ then +$ if key.eqs.name !then is key +$ then +$ var = f$element(num,"/",cnfg_vars) +$ cnfg_keys = cnfg_keys - ("''name'/" ) !trim to shorten future matches +$ cnfg_vars = cnfg_vars - ("''var'/" ) !trim to shorten future matches +$ if (f$locate("#undef",line).eq.0) +$ then +$ 'var' = "'undef'" +$ else !is a #define +$strip_comment: +$ start = f$locate("/*",line) +$ if start.ne.f$length(line) !comment started +$ then +$ if f$locate("*/",line).ne.f$length(line) !comment stopped +$ then stop = f$locate("*/",line)+2 +$ else stop = f$locate("*/",line) +$ endif +$ comment = f$extract(start,stop-start,line) +$ line = line - comment +$ goto strip_comment +$ endif +$ line = f$edit(line,"TRIM") +$ start = f$locate(key,line)+f$length(key) +$ stop = f$length(line) +$ value = f$edit(f$extract(start,stop-start,line),"TRIM") +$ if (value.nes."") +$ then +$ 'var' = "'"+value+"'" +$ else +$ 'var' = "'define'" +$ endif +$ endif !#define +$ endif ! is key of interest +$ num = num + 1 +$ goto key_config_vms +$ endif ! not end of cnfg_keys +$ endif ! then may be #define or #undef of interest +$ goto read_config_vms + +$config_vms_Done: +$ close RATHER_LONG_CONFIG_FILE_HANDLE +$ if cnfg_vars.nes."" +$ then +$ echo "warning: the following variables were not found in ''RATHER_LONG_FILENAME_TO_FIND':" +$ echo "''cnfg_vars'" +$ endif + +$spit_it_out: +$! $spitshell = ECHO !<<!GROK!THIS! +$ ECHO " " +$ ECHO "Summary of my ''$package' (patchlevel ''$PATCHLEVEL') configuration:" +$ ECHO " Platform:" +$ ECHO " osname=''$osname', osver=''$osvers', archname=''$archname'" +$ ECHO " uname=''$myuname'" !->d_has_uname? +$ ECHO " hint=''$hint'" !->hintfile? +$ ECHO " static exts=''$staticexts'" ! added for VMS +$ ECHO " Compiler:" +$ ECHO " cc=''$cc', optimize=''$optimize', ld=''$ld'" +$ ECHO " cppflags=''$cppflags'" +$ ECHO " ccflags =''$ccflags'" !->vms_cc_type? +$ ECHO " ldflags =''$ldflags'" +$ ECHO " stdchar=''$stdchar', d_stdstdio=''$d_stdstdio', usevfork=''$usevfork'" +$ ECHO " voidflags=''$voidflags', castflags=''$castflags', d_casti32=''$d_casti32', d_castneg=''$d_castneg'" +$ ECHO " intsize=''$intsize', alignbytes=''$alignbytes', usemymalloc=''$usemymalloc', randbits=''$randbits'" +$ ECHO " Libraries:" +$ ECHO " so=''$so'" +$ ECHO " libpth=''$libpth'" +$ ECHO " libs=''$libs'" +$ ECHO " libc=''$libc'" +$ ECHO " Dynamic Linking:" +$ ECHO " dlsrc=''$dlsrc', dlext=''$dlext', d_dlsymun=''$d_dlsymun'" +$ ECHO " cccdlflags=''$cccdlflags', ccdlflags=''$ccdlflags', lddlflags=''$lddlflags'" +$ ECHO " " +$ !GROK!THIS! +$ SET DEFAULT 'RATHER_LONG_DEFAULT_DIRECTORY_NAME' +$ EXIT |