home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / software / 5270 < prev    next >
Encoding:
Internet Message Format  |  1993-01-08  |  21.3 KB

  1. Path: sparky!uunet!auspex-gw!mbinesh
  2. From: mbinesh@Auspex.COM (Mac Binesh)
  3. Newsgroups: comp.software-eng
  4. Subject: GNU Code Coverage tool - Summary
  5. Keywords: GNU Code Coverage Summary
  6. Message-ID: <16300@auspex-gw.auspex.com>
  7. Date: 9 Jan 93 01:10:59 GMT
  8. Sender: news@auspex-gw.auspex.com
  9. Lines: 635
  10. Nntp-Posting-Host: auspex.auspex.com
  11.  
  12. Here is a summary of all email that I have received so far regarding
  13. GNU Code Coverage tool. Thanks to all for their responses.
  14.  
  15. The first email is from Brian Marick who is the Author of GNU Code Coverage
  16. Test program and the second is the installation procedure.
  17.  
  18. Mac Binesh
  19. Sr. Software Engineer
  20. Auspex Systems
  21.  
  22. ----------------------------Summary---------------------
  23.  
  24. From marick@hal.cs.uiuc.edu Wed Jan  6 10:45:41 1993
  25. To: mbinesh@auspex.com
  26. Subject: Re: GNU code coverage tool
  27. Newsgroups: comp.software-eng
  28. Content-Length: 4840
  29. X-Lines: 126
  30. Status: RO
  31.  
  32.                             GCT 1.4BETA
  33.                             Patchlevel 0
  34.                             Nov 10, 1992
  35.  
  36. The Generic Coverage Tool (GCT) is a freeware coverage tool that
  37. measures how thoroughly tests exercise C programs.  It can measure the
  38. following:
  39.  
  40. - how often branches have been taken in either direction. (branch coverage)
  41. - how often cases in switches have been taken.
  42. - how often nested logical conditions have evaluated to true and false
  43.   (multiple condition coverage)
  44. - how often loops have iterated zero, one, and more than one times
  45.   (loop coverage)
  46. - how often the boundaries of relational operators have been probed
  47.   (relational coverage)
  48. - how often routines have been entered
  49. - how often call sites have been exercised
  50. - how often routines have had multiple threads of execution in them
  51. - weak mutation coverage (a research technique).
  52.  
  53. If you use branch coverage, you will find the combination of branch,
  54. multiple condition, loop, and relational operator coverage to be more
  55. effective at little extra cost.  Routine and call coverage are useful
  56. for system testing.  Race coverage is useful for system testing of
  57. multiprocessor systems.
  58.  
  59. The tool has been widely used in production environments, including
  60. the UNIX kernel.  
  61.  
  62. MECHANISM
  63.  
  64. The tool takes C source code, adds instrumentation, then uses the
  65. system C compiler (or a compiler of your choice) to produce an object
  66. file.  Alternately, the instrumented source can be captured and moved
  67. to another machine for compilation.  
  68.  
  69. GCT is designed to work with existing makefiles (or other system build
  70. mechanisms).  Most makefiles will require no changes.
  71.  
  72. For efficiency's sake, coverage information is stored in an internal
  73. log.  The log is written on exit (or, in the case of an unending
  74. program like the UNIX kernel, extracted from the running program).
  75.  
  76. Instrumented programs run slower than the original programs.  How much
  77. slower depends on the program, how much of it is instrumented, and
  78. what types of coverage are measured.  An instrumented GCT runs 44%
  79. slower than normal.  (I instrument GCT to measure branch, loop,
  80. multiple condition, and relational coverage.)
  81.  
  82. Reporting tools produce detailed reports on missing coverage, summary
  83. reports for the whole program, and per-routine and per-file summaries.
  84.  
  85. NEW FEATURES
  86.  
  87. This is a list of changes from GCT 1.3:
  88.  
  89. - GCT now behaves like a true compiler. After instrumenting,
  90.   it calls the C compiler.  The original source is never touched.
  91.   The old behavior is retained as an option.
  92. - GCT can insert gct_readlog and gct_writelog calls for you.
  93.   You needn't edit the source. Original behavior is retained as an option.
  94. - More flexible reporting tools (including per-file and
  95.   per-routine reports from greport and gsummary)
  96. - Better control over the interface to different C compilers.
  97. - More flexibility in editing (suppressing, ignoring) mapfile entries.
  98. - Previously unsupported ANSI C constructs now supported
  99. - Optional locking of logfiles 
  100. - Numerous minor usability improvements
  101.  
  102.  
  103. RETRIEVING GCT
  104.  
  105.  
  106. GCT is available via anonymous FTP from cs.uiuc.edu.  The current
  107. version is in the directory pub/testing/gct.files.  To retrieve GCT,
  108. go to that directory and fetch one of these files:  ftp.ps
  109. (postscript) or ftp.txt (formatted to be read online).  Follow those
  110. instructions.
  111.  
  112.  
  113. DEFICIENCIES
  114.  
  115. 1.  The tool itself runs only on UNIX, although the instrumented code
  116. may be compiled wherever you like.  (An earlier version of GCT also
  117. ran on Apollo Aegis SR10; porting this version is probably trivial.)
  118.  
  119. 2.  The tool is based on the GNU C compiler and still contains the
  120. original code generation and optimization code.  This has two
  121. practical disadvantages:
  122.  
  123. - The tool is large.  For the full installation (which includes the
  124. source, compiled executables, a large test suite, and all the
  125. documentation), you will need roughly 33,000 1K blocks.
  126. (The tests - which are not required - take up about 17,000 blocks.)
  127. The final executables will require roughly 3000 1K blocks.
  128.  
  129. - The original compiler is made portable through machine and system
  130. configuration files.  These must still be used.  The distribution
  131. includes configuration files for many different machines.  If there
  132. isn't one for your machine, you may be able to use one for a similar
  133. machine.
  134.  
  135.  
  136. MAILING LIST
  137.  
  138. Gct@cs.uiuc.edu is a mailing list for GCT users.  It is used to
  139. distribute bug reports, bug fixes, troubleshooting hints, proposed
  140. major and minor revisions, documentation errata, and anything else of
  141. interest to GCT users.  Mail to Gct-Request@cs.uiuc.edu will get you
  142. added to the list.
  143.  
  144. ADVERTISING
  145.  
  146. I provide GCT as a public service - and as a concrete demonstration of
  147. my skills.  I provide testing tools, training, and consulting.
  148. Contact me at:
  149.  
  150. Brian Marick
  151. Testing Foundations
  152. 809 Balboa
  153. Champaign, IL  61820
  154. (217) 351-7228
  155. marick@cs.uiuc.edu, testing!marick@uunet.uu.net
  156.  
  157. ----------------------------------------------------------------------------
  158.  
  159. From tensu@cs.tut.fi Thu Jan  7 05:33:32 1993
  160. To: mbinesh@auspex.com
  161. Subject: Re: Gnu code coverage tool
  162. Newsgroups: comp.software-eng
  163. Organization: Tampere University of Technology
  164. Cc: 
  165. Content-Length: 15782
  166. X-Lines: 479
  167. Status: RO
  168.  
  169. In article <16249@auspex-gw.auspex.com> you write:
  170. >I am looking for any information or leads on how to
  171. >get an evaluation copy of a GNU code coverage test 
  172. >tool that might exist out there. 
  173.  
  174. Here is a GCT.README-file.
  175.  
  176.                         GCT 1.3 Patchlevel 2
  177.                         July 19, 1992
  178. INTRODUCTION
  179.  
  180. This file describes how to install the Generic Coverage Tool, GCT.
  181.  
  182. GCT measures how thoroughly tests exercise C programs.  It measures
  183. branch coverage, loop coverage, multi-condition coverage, relational
  184. operator coverage, and several other types of coverage.
  185.  
  186. GCT is free software; you can redistribute it and/or modify
  187. it under the terms of the GNU General Public License as published by
  188. the Free Software Foundation; either version 1, or (at your option)
  189. any later version.
  190.  
  191. GCT is distributed in the hope that it will be useful,
  192. but WITHOUT ANY WARRANTY; without even the implied warranty of
  193. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  194. GNU General Public License for more details.
  195.  
  196.  
  197. There is a GCT mailing list:  gct@ernie.cs.uiuc.edu.  To join the
  198. list, send mail to gct-request@ernie.cs.uiuc.edu.
  199.  
  200. Please send comments about these installation instructions - or any
  201. part of GCT - to me.  My address is given below.
  202.  
  203. Enjoy.
  204.  
  205.     Brian Marick
  206.  
  207.  
  208. ADVERTISEMENT
  209.  
  210. In addition to this free software, I also offer services that you can
  211. pay for.
  212.  
  213. 1. GCT support and training.
  214.  
  215. 2. On-site training courses in several testing topics.
  216.  
  217. 3. Custom toolsmithing.
  218.  
  219. 3. Consulting.
  220.  
  221. I plan major improvements to GCT: C++, better support for large,
  222. rapidly changing systems, support for powerful and flexible data
  223. analysis, support for reusable test components, porting to non-UNIX
  224. systems, and so on.  Funding for future versions cheerfully accepted;
  225. benefits to you include support, getting what you need when you need
  226. it, and designs that closely match your needs.
  227.  
  228. For more information, contact
  229.  
  230.     Brian Marick
  231.     Testing Foundations
  232.     809 Balboa
  233.     Champaign, Ill.  61820
  234.     (217) 351-7228
  235.     marick@cs.uiuc.edu
  236.  
  237.  
  238. INSTALLATION
  239.  
  240. GCT comes in three parts:
  241.     The source.  You need this.
  242.     The documentation.  You almost certainly want this.
  243.     The test suite.  Since a small installation test suite is
  244.         bundled with the source, you don't need this.
  245.         However, it's wise to run the full test suite if you're
  246.         installing on a new type of machine.
  247.  
  248. Read this whole section before starting.  If you're installing GCT
  249. just for evaluation, to see if it's worth spending more time on, you
  250. can skip the steps marked with (*).  After you go through the GCT
  251. Tutorial, you can come back and finish the complete installation.
  252.  
  253. 1. Make a directory for the source.  The name is unimportant; "gct" is
  254. a good choice.  Change to that directory.
  255.  
  256. You will need roughly 30,000 1K blocks during the installation
  257. process.  If you don't install the test suites, you'll save 16,000
  258. blocks.  The documentation requires less than 1000 blocks.
  259.  
  260. The final executables will require roughly 5000 1K blocks.
  261.  
  262. 2A.  (If you can fetch GCT via anonymous FTP.)
  263.  
  264. Log in to cs.uiuc.edu as user "anonymous".  Give your email address as
  265. the password.  Change directory to /pub/testing/gct.VERSION, where
  266. VERSION is the version of GCT you want.  Look at the directory, and
  267. you will see these files:
  268.  
  269.     src.tar.Z     the source
  270.     doc.tar.Z    the documentation
  271.     tests.tar.Z    the tests
  272.  
  273. These are compressed tar files.  You may also see files like
  274.  
  275.     src.patch.1
  276.     doc.patch.1
  277.  
  278. and so on.  These are bug fixes and minor enhancements that do not
  279. justify an entirely new release.  See the file PATCHES in the
  280. directory for a description of the patches.  See the patch(1) manpage
  281. to find out how to apply patches.  (If there is no patch(1) on your
  282. system, you can get it from various anonymous FTP repositories.)
  283. Smaller patches can also be applied by hand.
  284.  
  285. Finally, you may see files like
  286.  
  287.     notes.machinename
  288.  
  289. These are files for the config.notes directory (see below) which
  290. arrived after the distribution was made.
  291.  
  292. Fetch one or more of the compressed tar files.  Remember to transfer
  293. in binary mode.
  294.  
  295. Type
  296.     zcat src.tar.Z | tar xf -
  297.  
  298. This installs the source.  If you see error messages like 
  299.  
  300.     src/: cannot create
  301.  
  302. and you're on System V, use "tar xof -" instead of "tar xf -".
  303.  
  304. If you fetched the documentation, type
  305.  
  306.     zcat doc.tar.Z | tar xf -
  307.  
  308. to install it. If you fetched the test suites, type
  309.  
  310.     zcat tests.tar.Z | tar xf -
  311.  
  312.  
  313. You may also fetch and install the patches.  (Patches 1 and 2 have 
  314. already been installed.)
  315.  
  316. 2B. (If you're installing GCT from tape)
  317.  
  318. Type
  319.  
  320.     tar xvf /dev/nrst1
  321.  
  322. This installs the source.  Replace "/dev/nrst1" with the appropriate
  323. non-rewinding tape device on your machine.  If you see error messages
  324. like 
  325.  
  326.     src/: cannot create
  327.  
  328. and you're on System V, use "tar xof -" instead of "tar xf -".
  329.  
  330. If you want the documentation, type
  331.  
  332.     mt -f /dev/nrst1 fsf 1
  333.     tar xvf /dev/nrst1 
  334.  
  335. to retrieve the next file.  If you don't want the documentation, skip
  336. past it with
  337.  
  338.     mt -f /dev/nrst1 fsf 2
  339.  
  340. or the equivalent on your machine.
  341.  
  342. If you want the test suites, type
  343.  
  344.     tar xvf /dev/rst1 
  345.  
  346. Note that the rewinding tape device was used.  Otherwise,
  347.  
  348.     mt -f /dev/rst1 rewind
  349.  
  350. 3. Look in the "config.notes" subdirectory of "src".  It describes
  351. special-case installation procedures for particular systems, such as
  352. the Apollo.
  353.  
  354. 4. Change to the "src" directory and edit "Makefile".
  355.  
  356. 4.1. Change the macro called "bindir" to be the directory where you
  357. want the executables to go.
  358.  
  359. 4.2. Change the macro called "libdir" to be the directory where you
  360. want libraries and gct's C preprocessor to go.
  361.  
  362. 4.3. Change the macro called "mandir" to be the directory where you
  363. want manpages to go.  Also change "manext" to be the same as the
  364. last letter of "mandir".  
  365.  
  366. 4.4. By default, the makefile installs the programs and manual pages using
  367. "cp".  On BSD-derived systems, you may want to change the
  368. "INSTALL" macro to "install -c".  On some System V systems,
  369. you may want to use "cpset".
  370.  
  371. 4.5. A useful GNU emacs utility, gedit.el, is by default installed in
  372. $(libdir).  You may want to install it with other local emacs utilities.
  373. Search for "gedit.el" in the Makefile and change what you find.
  374.  
  375. 5. Configure the system for your machine type and operating system.
  376. This is done by typing
  377.  
  378.     config.gcc TYPE
  379.  
  380. The types are listed in the file called INSTALL.  Common values
  381. are "sun4-os4" for Sparc systems running SunOS 4.x, "sysV68" for
  382. Motorola machines running V68R5 or V68R6, "sysV88" for Motorola
  383. 88K machines running R32, or "sysV88R4" for Motorola 88K machines
  384. running System V Release 4.
  385.  
  386. If your system is not listed in INSTALL, try a similar system.  GCT's
  387. configuration files are those of the GNU C compiler.  GCT actually
  388. uses very little of that configuration information.  So, one
  389. configuration file is often as good as another, if they both describe
  390. roughly the same version of UNIX.  For example, the configuration file
  391. for a VAX running BSD Unix can be used to produce a GCT for a Sun 3
  392. running SunOS 3 (though there is also a sun3-os3 configuration file).
  393.  
  394. The "src/config.notes" files may help.  If they didn't, and you get
  395. GCT working, tell me what the next release's config.notes should say.
  396.  
  397. 6.  Type
  398.  
  399.     make
  400.  
  401. 7 (*).  Head off a possible system-dependent problem that shows up
  402. when processing functions that take a variable number of arguments.
  403. These functions use the standard C macros va_start(), va_arg(), and
  404. va_end(), defined in /usr/include/varargs.h.  These macros are
  405. sometimes of the form
  406.  
  407. #ifdef DEFINITION_PREDEFINED_BY_THE_SYSTEM_SUPPLIED_C_COMPILER
  408. #define va_arg(list, mode) ... something that works...
  409. #else
  410. #define va_arg(list, mode) ... something that doesn't work...
  411. #endif
  412.  
  413. For example, on Sun 4 systems, va_arg() is defined incorrectly unless
  414. __BUILTIN_VA_ARG_INCR is defined.
  415.  
  416. To find out if you have this problem, change to the varargs
  417. subdirectory.  Then execute cc-var as follows:
  418.  
  419.     cc-var initial
  420.  
  421. If you see 
  422.  
  423.     "Normal" function arguments (integers, doubles, and pointers) work.
  424.     Structure arguments to functions work.
  425.     Coverage results are correct.
  426.  
  427. continue to the next step.  Otherwise, 
  428.     1. Examine /usr/include/varargs.h to discover what the #defines are.
  429.     2. Edit the src/tm.h file (this is a symbolic link to the config/tm-*.h
  430.        file for your machine).
  431.     3. Add the necessary #defines to CPP_PREDEFINES.
  432.     4. Remake GCT.
  433.     5. Mail what you did to me so I can include it in the standard
  434.        distribution.  (I've already done this for sun4-os4.)
  435.  
  436. If <stdarg.h> exists on your system, the same fix probably applies.
  437. We'll check that later in the installation.
  438.  
  439. 8 (*).  If you retrieved the test suites, type
  440.  
  441.     cd testdir
  442.     run standard
  443.  
  444. The tests take a long time to run.  (An hour is typical.) As each test
  445. runs, it will log results.  If a test logs nothing but its name, it
  446. succeeded. A portion of a successful log looks like this:
  447.  
  448. ==  branch/
  449. ====  quest  
  450. ====  if  
  451. ====  switch  
  452. ====  switch2  
  453. ====  switch3  
  454.  
  455. You may also run the weak mutation test suite by typing
  456.  
  457.     run weak
  458.  
  459. Note, however, that programs instrumented for weak mutation tend to be
  460. a challenge to older C compilers, so you may see spurious failures.
  461. The tests may also be in error; it's easy to write unportable weak
  462. mutation tests.  Please report any failures you see, and I'll tell you
  463. if they're a real problem.
  464.  
  465. 9.  If you are satisfied with the results of the tests, return to the
  466. "src" directory and type
  467.  
  468.     make install
  469.  
  470. To install the manpages, type
  471.  
  472.     make man_install
  473.  
  474. (The manpages are in the "doc" tar file, so this won't work if you
  475. didn't extract that.)
  476.  
  477. 10.  After installing, run the installation test suite.  It checks that
  478. GCT was installed correctly and that it seems to be working.  Make
  479. sure that the directory where you installed GCT is in your $PATH, then
  480.  
  481.     cd testdir
  482.     run install
  483.  
  484. You should see
  485.  
  486.     ==  installed/
  487.     ==  multiple-dir/
  488.     ==  demo/
  489.     ==== basic-gsummary
  490.     ==== basic-greport
  491.     ==== basic-all
  492.     ==== greport-addition
  493.     ==== gedit
  494.     ==== gedit-gsummary
  495.     ==== gedit-greport
  496.  
  497. 11. To print the documentation, go to the "gct/doc" directory.  The
  498. documents are in these directories:
  499.  
  500. tutorial    A Tutorial Introduction to GCT
  501. user-guide    Generic Coverage Tool (GCT) User's Guide
  502. trouble        GCT Troubleshooting
  503. race        Using Race Coverage with GCT
  504. weak-mutation    Using Weak Mutation Coverage with GCT
  505. manpages    The manual pages (already installed)
  506.  
  507. You will want at least the first three documents.  Postscript files
  508. are in each of the directories; they end in ".ps" (tutorial.ps, for
  509. example).  Plain-text files end in "txt".  You can also format the
  510. source, which is written in either the MS or ME nroff macro sets.
  511. You'll probably have to change the file doc/include/Make.tmpl.
  512.  
  513. 12 (*).  If users instrument programs containing functions with a
  514. variable number of arguments, then compile them with the GNU C
  515. compiler (gcc), they may run into problems.  By default, GCT looks for
  516. <varargs.h> in /usr/include.  The definition of va_arg() in that file
  517. may be incompatible with gcc, which has its own private copy of
  518. <varargs.h>.  The solution is to tell GCT to use gcc's <varargs.h>.
  519. This could be done with GCT's -I option (which works just like a C
  520. compiler's -I option).  But that would result in too many makefiles
  521. having the location of gcc's include files hardcoded into them.
  522. They would break when gcc was moved, or a new version was installed,
  523. or the makefile was moved to a new machine.  
  524.  
  525. I'll describe below how you'll know if you have a problem.  If you do, 
  526. you have two possible solutions:
  527.  
  528. Choice 1:  Tell gcc users that they must warn GCT that they'll compile
  529. with gcc by invoking GCT as
  530.  
  531.     gct -test-cc gcc
  532.  
  533. This causes GCT to look for include files in $(libdir)/gct-include/gcc
  534. before looking in /usr/include.  ($(libdir) was defined in step 4
  535. above.)  To arrange for the right files to be accessible through that
  536. directory, type something like this:
  537.  
  538. # ln -s $(GCC_INCLUDE) $(libdir)/gct-include/gcc
  539.  
  540. replacing $(libdir) with whatever you chose in step 4 and $(GCC_INCLUDE)
  541. with the appropriate directory on your machine.  On my development
  542. machine, that could be either
  543.  
  544.     /local/lib/gnu/gcc-lib/sparc-sunos4.1/2.1/include     (gcc version 2.1)
  545. or 
  546.     /local/lib/gnu/gcc-include                (gcc version 1.40)
  547.  
  548. (Note:  if your system doesn't support symbolic links, copy the
  549. contents instead.)
  550.  
  551. Choice 2: If everyone who'll use GCT will also use gcc, you can make
  552. gcc the default compiler.  Do this with
  553.  
  554. # ln -s $(GCC_INCLUDE) $(libdir)/gct-include/default
  555.  
  556. GCT always looks in gct-include/default before /usr/include.  It normally
  557. doesn't exist, but now you've made it identical to gcc's private include directory.
  558.  
  559. Of course, anyone who uses cc will now likely be unable to instrument
  560. programs that use <varargs.h>.  However, if you type
  561.  
  562. # ln -s /usr/include $(libdir)/gct-include/cc
  563.  
  564. cc users can instrument varargs-containing programs with
  565.  
  566.     gct -test-cc cc
  567.  
  568. 12.1.  To determine if there's a problem on your machine, use
  569. the 'run' script in the src/varargs directory.
  570. Type
  571.  
  572.     run
  573.  
  574. and follow the instructions.  If all is well, you're finished with the
  575. installation.  (NOTE:  Scripts like 'run' are hard to write well,
  576. especially when you can't try them on a lot of machines.  Please tell
  577. me if you have problems or suggestions.)
  578.  
  579. 'run' tries these combinations:
  580.  
  581. - Instrumentation of code that uses <varargs.h>, using -test-cc if
  582.   desired, followed by compilation by gcc.
  583. - Instrumentation of code that uses <stdarg.h> (the ANSI replacement 
  584.   for <varargs.h>), using -test-cc if desired, followed by compilation by gcc.
  585. - Instrumentation of code that uses <varargs.h>, using -test-cc if desired,
  586.   followed by compilation by cc.
  587. - Instrumentation of code that uses <stdarg.h>, using -test-cc if desired,
  588.   followed by compilation by cc.  Note:  in most cases, cc is not an 
  589.   ANSI compiler, so expect this to fail.
  590.  
  591. You can experiment with changes to $(libdir)/gct-include to see their
  592. effect.  Pick the configuration that will be most useful to your
  593. users.  If you have compilers other than 'cc' and gcc, you can use the
  594. run script to find out if they work, and perhaps set up links in
  595. gct-include that will make them work.
  596.  
  597. 12.2.  When you finish configuring GCT, run 'run' one last time.
  598. It will produce a file called 'gct-varargs', which summarizes for
  599. users what they need to know.  
  600.  
  601. If there are cases that DON'T work (other than compiling a
  602. <stdarg.h>-using program with cc, which usually would fail irrespective
  603. of instrumentation), 
  604.     1.  Copy gct-varargs to $(libdir).  
  605.     2.  Make sure everyone can read it.
  606.     3.  Type 'gct -test-varargs' to make sure it was installed correctly.
  607.  
  608. When GCT encounters a function with a variable-length argument list,
  609. it prints a warning, but only if gct-varargs is installed.
  610.  
  611. INSTALLATION TROUBLESHOOTING
  612.  
  613. Installation problem after copying source
  614.  
  615. Symptoms:  
  616.  
  617. The tar file was read and then the source was copied to another
  618. directory or another machine.  The makefile fails with a message like
  619. "Cannot load command 'bison'".
  620.  
  621. Solution:
  622.  
  623. Two C files, cexp.c and c-parse.tab.c, are created using the BISON
  624. parser-generator.  The original source files are cexp.y and c-parse.y.
  625. In the tar file, the C files are newer than the Y files, so that the
  626. makefile doesn't attempt to recreate them.  If you copy the btool
  627. sources around, the dates on the files will change, and the makefile
  628. may attempt to recreate the C files from the Y files.  Unless you
  629. have BISON on your system, the make will fail.  The solution is to
  630. touch the C files after the copy:
  631.  
  632.     % cp -r * $destdir
  633.     % cd $destdir
  634.     % touch cexp.c c-parse.tab.c
  635.     % make
  636.  
  637.  
  638.  
  639. - - - - - - - - - 
  640.  
  641.     Tensu
  642.  
  643. -- 
  644. Tero Ahtee * tensu@cs.tut.fi  *  Tampere  *  Finland  *  Europe 
  645. Login ergo sum.   <>   Workload is not killing - it is challenging.
  646. COMMERCIAL : Why should you pay less for a better computer - buy IBM !
  647.