This is dmake version 1.0, a utility for automating compilation. It requires Gno v2.0 or later. This is the readme for two archives: dmake100.shk -- a minimal distribution consisting of the executable, configuration file, and documentation. dmake100src.shk -- the entire source hierarchy, including documentation. Executables not included. Ftp archive maintainers: This version supercedes any dmake archive labelled v0.4.3b or earlier. The file dmake.ps.Z which should already be at your site is a current man page and should be retained. ======= CHANGES -- Ignore comments in square brackets; they are for internal ======= reference, and therefore may not be otherwise meaningful. v1.0 -- Added a check on the return value of setenv() in execp() when using default $PATH. [runargv.c] Fixed the bug (with help from Jawaid) that didn't allow sub- shells to be executed. [runargv.c: changed exec to fork2 and _execve] Made a few changes to the lenviron library, upon which dmake is dependant. This included fixing a bug where the first (physically) listed directory in $PATH would not be checked for executables. Sources are provided for this distribution. Sources were also cleaned up and placed in the expected hierarchy. The assignment of segments was redone; hopefully they're now grouped a bit better according to usage. On startup, dmake will do a memory purge provided that the environment variable NOPURGE is _not_ set. Unless there are complaints, I will be leaving this implemented as a system("purge >.null"); Under conditions where dmake removes the intermediate *.o files, it was not removing the respective *.root files. This is now fixed Through a bit of a kludge; the default .REMOVE rule defined in startup.mk now invokes "rmroot" as well as "rm". "rmroot" will delete .root files for any .a or .o files given as arguments on its command line. The .a and .o files don't actually have to exist. "rmroot" will ignore any other arguments. Cleaned up the code a bit with the help of gcc. There were spots where sloppy conditionals may have made incorrect branches. Fixed bug where, if an absolute path name was used in a recipe, there was an inappropriate free. [runargv.c: strdup'd path in execp] The bug with using a makefile in other than the current directory (the -f option) seems to be fixed, although it wasn't explicitly actioned. Let me know if you find a problem with it. Similarily, the $00/0000 memory trashing bug seems to be fixed. This may be related to a reference to memory free'd in execp(). Fixed bug where the $(shell ...) function macro was trying to dup stdin rather than stdout. [function.c: _exec_shell()] Standard location of files has been changed. Binaries by default are now located in /usr/local/bin, and startup.mk in /usr/local/lib. Man pages remain in /usr/man. Added a $(MV) macro to startup.mk for the default move command. Added rules to startup.mk to allow Pascal targets to be correctly made. ========================== COPYRIGHT and DISTRIBUTION ========================== -- Copyright (c) 1990 by Dennis Vadura. All rights reserved. -- -- This program is free software; you can redistribute it and/or -- modify it under the terms of the GNU General Public License -- (version 1), as published by the Free Software Foundation, and -- found in the file 'LICENSE' included with this distribution. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warrant of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.