home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3636 < prev    next >
Internet Message Format  |  1991-07-16  |  1KB

  1. From: montnaro@spyder.crd.ge.com (Skip Montanaro)
  2. Newsgroups: comp.sys.sgi,alt.sources
  3. Subject: predefined macros
  4. Message-ID: <MONTNARO.91Jul15091019@spyder.crd.ge.com>
  5. Date: 15 Jul 91 13:10:19 GMT
  6.  
  7.  
  8. Robert Skinner posted a short script to comp.sys.sgi last week that prints
  9. the predefined macros for the C compiler. I modified it to clean up after
  10. itself, pick up defines generated with -D, and work on a number of other
  11. machines. I don't know who the original author is (Robert picked it up from
  12. the net as well), but s/he deserves credit for a clever idea. Here 'tis.
  13.  
  14. ----------cut----------
  15. #!/bin/sh
  16.  
  17. # what-defs: prints names of predefined cpp macros
  18. # tested on Sun3, Sun4, SGI, HP, Stellar, Convex, DECstation, Moto 1147
  19.  
  20. # stupid, stupid Ultrix! I have a "which" function that I cannot use, because
  21. # the Ultrix /bin/sh does not understand shell functions! (try /bin/sh5!)
  22. # also, the Ultrix "test" command does not understand the -x flag!
  23.  
  24. path="`echo $PATH | sed -e 's/:/ /g'`"
  25. cc=`for dir in $path ; do
  26.     if [ -r $dir/cc ] ; then
  27.     echo $dir/cc
  28.     exit
  29.     fi
  30. done`
  31.  
  32. strings -a -2 /lib/cpp $cc |
  33. sed -e 's/^-D//' |
  34. sort -u |
  35. sed -n '/^[a-zA-Z_][a-zA-Z0-9_]*$/s//#ifdef &\
  36. "%&"\
  37. #endif/p' >/tmp/$$.c
  38.  
  39. cc -E /tmp/$$.c |
  40. sed -n '/%/s/[%"]//gp'
  41.  
  42. rm -f /tmp/$$.c
  43. ----------cut----------
  44.  
  45. --
  46. Skip (montanaro@crdgw1.ge.com)
  47.