home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / vms / myconfig.com < prev    next >
Text File  |  1999-07-20  |  13KB  |  326 lines

  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
  326.