<!--
     PMake - A Tutorial

     $FreeBSD$
-->

<chapter id="intro">
  <title>Introduction</title>

  <para><application>PMake</application> is a program for creating other
    programs, or anything else you can think of for it to do.  The basic idea
    behind <application>PMake</application> is that, for any given system, be
    it a program or a document or whatever, there will be some files that
    depend on the state of other files (on when they were last modified).
    <application>PMake</application> takes these dependencies, which you must
    specify, and uses them to build whatever it is you want it to
    build.</para>

  <para><application>PMake</application> is almost fully-compatible with
    <application>Make</application>, with which you may already be familiar.
    <application>PMake</application>'s most important feature is its ability
    to run several different jobs at once, making the creation of systems
    considerably faster.  It also has a great deal more functionality than
    <application>Make</application>.</para>

  <para>This tutorial is divided into three main sections corresponding to
    basic, intermediate and advanced <application>PMake</application> usage.
    If you already know <application>Make</application> well, you will only
    need to skim <xref linkend="basics"> (there are some aspects of
    <application>PMake</application> that I consider basic to its use that did
    not exist in <application>Make</application>).
    Things in <xref linkend="shortcuts"> make life much easier, while those in
    <xref linkend="gods"> are strictly for those who know what they are doing.
    <xref linkend="glossary"> has definitions for the jargon I use and
    <xref linkend="answers"> contains possible solutions to the problems
    presented throughout the tutorial.</para>
  </chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "chapter")
     End:
-->
