Below is the original README text file from the PMAKE 2.1 distribution. * For changes made to the pmake/customs code at ICSI, see CHANGES. * For hints on installation see INSTALL. * For notes on security see etc/SECURITY. * For a list of frequently encountered problems and solutions, see etc/FAQ. ------------ October 29, 1989 This is release 2.1 of PMake -- a parallel Make program originally written for the Sprite operating system. In this distribution come several pieces: doc/ Documentation for pmake. pmake.mansp Man page for PMake using the Sprite manual macros. pmake.psc Postscript of same tmac.ansp Sprite manual macros Lst.mansp Man page for the Lst library Lst.psc Postscript of same tutorial.ms Tutorial for PMake. This must be run through ditroff -ms | index/index The exact command is in the makefile. tutorial.psc.Z Compressed Postscript of same prefix.ms Release notes and description of an automounter for NFS called "prefix" prefix.psc.Z Compressed Postscript of same index/ Ditroff post-processor to create indices. tmac.index Macros to create the index. customs/ A term paper on customs cctrl.8 Standard UNIX man page for cctrl utility customs.8 Standard UNIX man page for customs daemon importquota.8 Standard UNIX man page for importquota utility reginfo.1 Standard UNIX man page for reginfo utility lib/ Libraries for PMake mk/ Canned makefiles system.mk System Makefile that must be installed before PMake will run. sprite/ A library to map Sprite runtime functions to UNIX functions. lst/ The linked-list library used to manage pmake's dependency graph and just about everything else. include/ Sprite include files required for the Sprite library. unix/ Files for a local-execution-only version of PMake under BSD UNIX. config.h The definition of several site-dependent constants used mostly in job.c. makefile Makefile to be used with Make to create a local version of PMake customs/ Remote execution system for PMake. src/ Actual PMake source code. prefix/ Automounter for use with PMake and Customs You should edit unix/config.h, makefile and lib/mk/sys.mk, in that order, to produce PMake. system.mk should be installed in the system makefile directory (wherever you decide to put it). "Makefile" and "common.mk" are the makefiles I use to create PMake using PMake (There are essentially three versions that can be made and I got tired of removing the object files each time I wanted to make a different one). It kind of gives you an idea of how wild one can get with conditionals etc. One final word. There are some important differences between PMake and Make. Most of these can be obviated by either giving PMake the -B flag or by renaming it to 'make'. Certain features of the System V version of Make can be accessed either by giving the -v flag, or by invoking PMake as 'smake'. Almost all of the new features of PMake are available when in these compatibility modes, but certain pieces of stupid behaviour that Make exhibits come into play. Read the tutorial... A mailing list has been established at pmake@bsw.uu.net for questions, etc. Administrative stuff should be addressed to pmake-request@bsw.uu.net. Once more, the University of California, Berkeley Softworks and I accept no responsibility for this software. It is provided "as is" in the hope that it may be useful, but there is no warranty of any kind attached. a NOTES SPECIFIC TO RELEASE 2.1: The majority of the changes for this release, with the exception of the addition of the prefix daemon to the distribution, are merely making pmake do what I expect it to do, given the set of features already present in release 2.0. Mostly, this involved the proper support of dynamic sources throughout the program. Other changes of note: * the .ORDER target now exists to allow you to enforce an ordering between targets that do not otherwise depend on each other. This can be used to serialize ranlib's, for example. * the target() function in conditionals allows you to have a system makefile whose targets can be easily overridden by an including makefile. * there are more configuration options in config.h necessitated by the pending inclusion of pmake in the 4.4 BSD release. They see certain things differently from me, so to accomodate them (they're nice people, after all :) I have added some conditional code. * Partial support for the preliminary POSIX standard for Make, including the existence of single-suffix transformations. The system.mk file no longer defines a null suffix, preferring to use these single- suffix rules instead. The .NULL target will still work, however. PMake reverts to using single-suffix transformations if the list of suffixes is cleared out with an empty .SUFFIXES line. * transformation rules can now be deleted in the Make way. * added handling of targets with no commands, using the time that was found for the target, rather than the start of the make, so long as RECHECK isn't defined. Allows the standard yacc definitions file hack (performing a compare and copying if different) to operate properly with a rule like parse.h : parse.c thrown in. * The option parsing has gone from Sprite style to using getopt. Thus, pmake -fD foo.mk DEFINE_ME will no longer work. The proper syntax is pmake -f foo.mk -DDEFINE_ME though whitespace can still be used between -D and DEFINE_ME. * All variables defined on the command-line automatically have their values exported in the environment. * The -e flag is supported to cause the environment be searched before the global variable scope.