home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / make / cook.1 < prev    next >
Encoding:
Text File  |  1996-11-16  |  11.5 KB  |  397 lines

  1.  
  2.  
  3.  
  4. readme(cook)                         readme(cook)
  5.  
  6.  
  7. NAME
  8.        cook - a    file construction tool
  9.  
  10. DESCRIPTION
  11.        Put simply, the cook program is yet another make-oid.
  12.  
  13.        The cook    program    is a tool for constructing files, and
  14.        maintaining referential integrity between files.     It is
  15.        given a set of files to create, and recipes of how to
  16.        create and maintain them.  In any non-trivial program
  17.        there will be prerequisites to performing the actions
  18.        necessary to creating any file, such as include files.
  19.        The cook    program    provides a mechanism to    define these.
  20.  
  21.        When a program is being developed or maintained,    the
  22.        programmer will typically change    one file of several which
  23.        comprise    the program.  The cook program examines    the last-
  24.        modified    times of the files to see when the prerequisites
  25.        of a file have changed, implying    that the file needs to be
  26.        recreated as it is logically out    of date.
  27.  
  28.        The cook    program    also provides a    facility for implicit
  29.        recipes,    allowing users to specify how to form a    file with
  30.        a given suffix from a file with a different suffix.  For
  31.        example,    to create filename.o from filename.c
  32.  
  33. NEW IN THIS RELEASE
  34.        A number    of features have been added to cook with this
  35.        release.     A few of them are detailed here:
  36.  
  37.        * There are new ``f77'' and ``g77'' cookbooks, to allow
  38.        Fortran sources,    in addition to C sources.
  39.  
  40.        * There is a new    [options] function, which expands to the
  41.        current settings    of the command line options.  This is
  42.        useful for recursive cook directory structures.    See the
  43.        Reference Manual    for more information.
  44.  
  45.        * There is a new    ``recursive'' cookbook,    to assist in
  46.        constructing recursive cook structures.
  47.  
  48.        * The find_libs program now understands about shared
  49.        libraries.
  50.  
  51.        * A bug which made the builtin [glob] function far to
  52.        generous    has been corrected.
  53.  
  54.        * A bug which caused some expression evaluation errors to
  55.        be ignored has been corrected.
  56.  
  57.        * The ``set update'' flag has been re-named the ``set
  58.        time-adjust'' flag, to more closely describe what it does.
  59.        The old name will continue to work indefinitely.
  60.  
  61.  
  62.  
  63.  
  64.                                 1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. readme(cook)                         readme(cook)
  71.  
  72.  
  73.        * There is a new    ``set time-adjust-back'' flag, which sets
  74.        recipe target times to be exactly one (1) second    younger
  75.        than the    youngest ingredient.  This is usually an
  76.        adjustment into the recent past.
  77.  
  78.        The following changes were made in the previous release:
  79.  
  80.        * The fingerprint code has been improved    to work    better
  81.        with the    search_list functionality.
  82.  
  83.        * The diagnostics have been improved when cook ``don't
  84.        know how''.  A list of attempted    ingredients is included
  85.        in the error message.
  86.  
  87.        * There is a new    mkdir recipe flag.  This creates recipe
  88.        target directories before the recipe body is run.  See the
  89.        Reference Manual    for more information.
  90.  
  91.        * There is a new    unlink recipe flag.  This unlinks recipe
  92.        targets before the recipe body is run.  See the Reference
  93.        Manual for more information.
  94.  
  95.        * There is a new    recurse    recipe flag.  This overrides the
  96.        infinite    loop recipe heuristic, allowing    recipes    to recuse
  97.        upon themselves if one of their ingredients matches one of
  98.        their targets.  See the Reference Manual    for more
  99.        information.
  100.  
  101.        The following changes were made in the previous release:
  102.  
  103.        * The AIX code to handle    archive    files has been fixed.
  104.  
  105.        * The fingerprint code now works    on 64-bit systems.
  106.  
  107.        The following changes were made in the previous release:
  108.  
  109.        * Fixed a bug in    the leading-dot    removal    code, and added
  110.        an option to make it user-settable.  Fixed a bug    in the
  111.        search_path depth code.
  112.  
  113.        The following changes were made in the previous release:
  114.  
  115.        * The c_incl program now    correctly prints the names of
  116.        absent include files, causing them to be    cooked correctly
  117.        in a greater number of cases.
  118.  
  119.        * Recipes with no ingredients are now only applied if the
  120.        target is absent.  To still use the previous behaviour,
  121.        use the "set force" clause on the recipe.
  122.  
  123.        * It is now possible to supplement the last-modified time
  124.        with a fingerprint, so cook does    even fewer unnecesary
  125.        recompilations than before.  Put    the statement
  126.           set fingerprint;
  127.  
  128.  
  129.  
  130.                                 2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. readme(cook)                         readme(cook)
  137.  
  138.  
  139.        somewhere near the top of your Howto.cook file for this to
  140.        be the default for your project.
  141.  
  142.        * There is a new    form of    include    directive:
  143.           #include-cooked filename...
  144.        When files are included in this way, cook will check to
  145.        make sure they are up-to-date.  If not, they will be
  146.        cooked, and then    cook will start    again and re-read the
  147.        cookbook.  This is most often used for maintaining
  148.        include-dependency files.
  149.  
  150.        * Cook now configured using a program called configure,
  151.        distributed with    the package.  The configure program is
  152.        generated by GNU    Autoconf.  See the BUILDING file for more
  153.        details.
  154.  
  155.        * The semantics of search_list have been    improved.  It is
  156.        now guaranteed that when    ingredients change they    result in
  157.        targets earlier in the search_list being    updated.
  158.  
  159.        * There is now a    make2cook translator, to translate
  160.        Makefile    files into Howto.cook files.  Most of the GNU
  161.        Make extensions are understood.    There is no exact
  162.        semantic    mapping    between    make and cook, so manual editing
  163.        is sometimes required.  See make2cook(1)    for more
  164.        information.
  165.  
  166.        * Cook now understands archive member references, in the
  167.        same format as used by make, et al.  Archive member
  168.        references benefit from stat caching and    fingerprinting,
  169.        just as normal files do.
  170.  
  171.        Plus the    usual crop of bug fixes    and tinkering.    For
  172.        excruciating detail, and    also acknowlegements of    those who
  173.        generously sent me feedback, please see the
  174.        aux/CHANGES.1.9 file included in    this distribution.
  175.  
  176. HISTORY
  177.        The cook    program    was originally developed (starting in
  178.        1988) because I was marooned on an operating system
  179.        without anything    even vaguely resembling    make(1).  Since    I
  180.        had to write my own, I added a few improvements.     When I
  181.        finally escaped back to UNIX, it    took only two days to
  182.        port cook to SystemV.  I    have since deleted all code for
  183.        that original operating system, although    clues to its
  184.        identity    are still present.  There is no    prize for
  185.        guessing    what it    was.
  186.  
  187.        After I had cook    up on UNIX, the    progress the world had
  188.        made caught up with me.    It was gratifying that many of
  189.        the features other make-oid authors had thought necessary
  190.        were either already present, or easily and seamlessly
  191.        added.
  192.  
  193.  
  194.  
  195.  
  196.                                 3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. readme(cook)                         readme(cook)
  203.  
  204.  
  205. ARCHIVE    SITE
  206.        The latest version of cook is available by anonymous FTP
  207.        from:
  208.        Host:   ftp.agso.gov.au
  209.        Dir:       /pub/Aegis
  210.        File:   README           # what is in this directory
  211.        File:   README.html           # ditto,    but prettier
  212.        File:   cook.1.9.README     # the README from the tar file
  213.        File:   cook.1.9.lsm           # LSM format description
  214.        File:   cook.1.9.patch.gz   # patch to take 1.8 to 1.9
  215.        File:   cook.1.9.ps.gz      # PostScript of the Manual
  216.        File:   cook.1.9.tar.gz     # the complete source
  217.  
  218.        To use anonymous    ftp, give "anonymous" as the user name
  219.        (omit the quotes) and your email    address    as the password.
  220.  
  221.        This directory also contains a few other    pieces of
  222.        software    written    by me.    Please have a look if you are
  223.        interested.
  224.  
  225.    Mirrors
  226.        The main    FTP site has limited network bandwidth.     The
  227.        above directory is also mirrored    by archie.au in    the
  228.        /pub/Aegis directory.  This site    has good bandwidth and
  229.        connectivity, but limits    the number of non-Australian
  230.        users.
  231.  
  232.        Cook is also carried by sunsite.unc.edu in its Linux
  233.        archives.  You will be able to find Cook    on any of its
  234.        mirrors.
  235.        Host:   sunsite.unc.edu
  236.        Dir:       /pub/Linux/devel/make
  237.        File:   cook.1.9.README     # the README from the tar file
  238.        File:   cook.1.9.lsm           # LSM format description
  239.        File:   cook.1.9.patch.gz   # patch to take 1.8 to 1.9
  240.        File:   cook.1.9.ps.gz      # PostScript of the Manual
  241.        File:   cook.1.9.tar.gz     # the complete source
  242.        This site is extensively    mirrored around    the world, so
  243.        look for    a copy near you    (you will get much better
  244.        response).
  245.  
  246.    ftp by email
  247.        For those of you    without    ftp, I recommend the use of an
  248.        ftp-by-email server.  Here is a list of a few (there are
  249.        many more):
  250.           ftpmail@decwrl.dec.com
  251.           ftpmail@cs.uow.edu.au
  252.  
  253.        In general, you can get a help message about how    to use
  254.        each system by sending email with a subject of "help" and
  255.        a message body containing just the word "help".
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.                                 4
  263.  
  264.  
  265.  
  266.  
  267.  
  268. readme(cook)                         readme(cook)
  269.  
  270.  
  271. MAILING    LIST
  272.        A mailing list has been created so that users of    cook may
  273.        exchange    ideas about how    to use the cook    program.
  274.        Discussion may include, but is not limited to: bugs,
  275.        enhancements, and applications.    The list is not
  276.        moderated.
  277.  
  278.        The address of the mailing list is
  279.           cook-users@agso.gov.au
  280.        Please DO NOT send subscribe requests to    this address.
  281.  
  282.        To subscribe to this mailing list, send an email    message
  283.        to majordomo@agso.gov.au    with a message body containing
  284.        the single line
  285.           subscribe    cook-users
  286.        Please note that    agso.gov.au is an Internet site, so if
  287.        you have    an address which is not    readily    derived    from your
  288.        mail headers (majordomo is only a Perl program, after all)
  289.        you will    need to    use a message of the form:
  290.           subscribe    cook-users address
  291.        where address is    an email address which makes sense from
  292.        an Internet site.
  293.  
  294.        The software which handles this mailing list CANNOT send
  295.        you a copy of the cook program.    Please use ftp or ftp-by-
  296.        email, instead.
  297.  
  298. BUILDING COOK
  299.        Full instructions for building the cook program may be
  300.        found in    the BUILDING file included in this distribution.
  301.  
  302. COPYRIGHT
  303.        cook version 1.9
  304.        Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994,
  305.        1995, 1996 Peter    Miller;    All rights reserved.
  306.  
  307.        This program is free software; you can redistribute it
  308.        and/or modify it    under the terms    of the GNU General Public
  309.        License as published by the Free    Software Foundation;
  310.        either version 2    of the License,    or (at your option) any
  311.        later version.
  312.  
  313.        This program is distributed in the hope that it will be
  314.        useful, but WITHOUT ANY WARRANTY; without even the implied
  315.        warranty    of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  316.        PURPOSE.     See the GNU General Public License for    more
  317.        details.
  318.  
  319.        You should have received    a copy of the GNU General Public
  320.        License along with this program;    if not,    write to the Free
  321.        Software    Foundation, Inc., 675 Mass Ave,    Cambridge, MA
  322.        02139, USA.
  323.  
  324.        It should be in the LICENSE file    included with this
  325.  
  326.  
  327.  
  328.                                 5
  329.  
  330.  
  331.  
  332.  
  333.  
  334. readme(cook)                         readme(cook)
  335.  
  336.  
  337.        distribution.
  338.  
  339. AUTHOR
  340.        Peter Miller   UUCP     uunet!munnari!agso.gov.au!pmiller
  341.        /\/\*          Internet     pmiller@agso.gov.au
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.                                 6
  395.  
  396.  
  397.