4.4BSD/usr/src/contrib/mkmf/README
Copyright (c) 1991, 1993 Peter J. Nicklin.
Copyright (c) 1991, 1993 Version Technology.
All Rights Reserved.
$License: VT.1.1 $
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met: (1) Redistributions of source code must retain the above
copyright notice, this list of conditions and the following
disclaimer. (2) Redistributions in binary form must reproduce the
above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution. (3) All advertising materials mentioning
features or use of this software must display the following
acknowledgement: ``This product includes software developed by
Version Technology.'' Neither the name of Version Technology nor
the name of Peter J. Nicklin may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY VERSION TECHNOLOGY ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL VERSION TECHNOLOGY BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
Report problems and direct questions to nicklin@netcom.com
$Header: README,v 4.7 93/05/25 23:02:58 nicklin Exp $
Title: mkmf makefile editor (revision 4.11)
Author: Peter J. Nicklin
Address: Version Technology
1540 Hilton Court
San Jose, California 95130
Telephone: (408) 379-0171
Email: nicklin@netcom.com
Description:
The mkmf makefile editor creates program and library makefiles for the
make(1) command. Mkmf has the following features:
- Automatically inserts source and object code file names in
makefiles.
- Provides standard makefile templates for programs and libraries.
- Allows user-defined makefile templates.
- Generates included file dependencies for C, C++, Pascal, and Fortran
source code
- Allows arbitrary editing of makefiles with a regular text editor
Installation instructions (portable makefiles):
1. The default location of mkmf is in /usr/contrib. Alter the
INSTALLDIR definition in mkmf/Makefile to change this location.
2. Create directories $INSTALLDIR/bin and $INSTALLDIR/lib/mkmf.
3. Choose a directory in which to install the manual page, and edit
the DEST macro in mkmf/man/man1/Makefile. The makefile assumes
that you want to install the formatted manual page in
$INSTALLDIR/man/cat1. Alter the makefile to suit your own system.
4. Change to the mkmf directory and execute "make install". If
something goes wrong, don't panic. Just fix the problem and
restart "make install".
Installation instructions (4.4BSD makefiles):
1. The default location of mkmf is in /usr/contrib. Alter the
INSTALLDIR definition in mkmf/src/Makefile and
mkmf/templates/Makefile to change this location.
2. Create directories $INSTALLDIR/bin and $INSTALLDIR/lib/mkmf.
3. Change to the mkmf directory and execute "make install". If
something goes wrong, don't panic. Just fix the problem and
restart "make install".
Testing:
1. A number of tests have been included with this version of the
makefile editor. To test mkmf, carry out the following steps:
2. Set the PROJECT environment variable to correspond to the
pathname of the topmost directory in the mkmf directory
hierarchy (i.e. the pathname of the directory in which you are
reading this README file).
3. Change to the tmp directory and execute the ptest shell command.
Porting Hints:
1. Examine the config.h file in the src directory. Several
definitions control the conditional compilation of the mkmf
source code for variants of the UNIX operating system. You can
build a profile of your operating system environment with these
definitions and include it in this file. You may wish to send
this profile to the address above so that it can be supported
in future versions of mkmf.
2. Examine the Makefile in the src directory. If your C
preprocessor does not support a system-specific definition, you
will need to add a -D definition to CFLAGS corresponding to the
profile that you have created in config.h. Use the Apollo SYSV
or Cray UNICOS5 definitions as examples.
3. The default location for the standard makefile templates is
/usr/contrib/lib/mkmf which is defined in Mkmf.h. You can
specify a different location via the INSTALLDIR definition
which you can set via a -D option in the CFLAGS makefile macro.
4. The standard makefile templates use the cp(1) command to install
files. You may want to redefine the INSTALL macro to use a
different command such as /etc/install.
Licensing and Support:
Revision 4.11 of mkmf has been contributed to the 4.4BSD
Berkeley Software Distribution by Version Technology subject to
the conditions included at the top of this file. Alternative
licensing and support arrangements are also available. Contact
Version Technology for details.
Bugfixes/Changes for 4.4BSD:
1. Mkmf ports more readily to both 4BSD and System V UNIX systems.
In particular, mkmf has been ported to Hewlett-Packard HP-UX
7.0 on the HP9000 Series 300 and and 800 systems, HP-UX 8.0 on
the HP9000 Series 300 and 700 systems, Apollo Domain/OS 10.2
and 10.3 on a DN4500, Sun OS 4.1 on a 4/110, IBM AIX 3.1 on an
RS/6000, Apple Macintosh A/UX 2.0.1 on a Macintosh IIfx, Cray
UNICOS 5.0 and 6.0 on a Cray Y/MP, Xenix, and 4.4BSD.
2. Mkmf searches for C++ header files in /usr/include/CC.
3. Mkmf recognizes C++ source files with suffixes such as .cc,
.cxx, .cpp, and .C, and C++ header files with suffixes such as
.hxx, .hpp, and .H.
4. Mkmf recognizes C++ -I options in CXXFLAGS, CCFLAGS, and C++FLAGS.
5. Mkmf supports the VPATH source directory path mechanism of
make(1). For versions of make(1) that don't recognize VPATH,
the -S option symbolically links files from directories in
VPATH into the current directory.
6. Mkmf optionally generates dependencies for /usr/include files
if the SYSHDRS macro is specified in the makefile.
7. Mkmf reads the environment and recognizes all variables as
macro definitions. The -e option allows the environment
variables to override the macro definitions in the makefile.
8. Mkmf supports alternate archive libraries via the LPATH macro
and the -L linker option.
9. Mkmf supports language-dependent templates via the -M option.
The templates now reside in /usr/contrib/lib/mkmf. The location
of this directory may be specified via the INSTALLDIR compile-
time option in the source makefile.
10. Mkmf generate library makefiles with target or dependency names
as archive library members if the -L option is specified.
11. Mkmf avoids adding source files to the SRCS macro definition
if they can be generated by source transformation rules.
12. Mkmf looks for #include <filename> references in directories
specified by -I preprocessor flags.
13. Mkmf accepts macro names which include underscores.
14. Mkmf ignores SCCS files and files beginning with #.
15. Mkmf allows Apollo Domain/OS pathnames beginning with //.
16. Mkmf uses the cp(1) command to install programs and libraries
instead of /etc/install.
Bugfixes/Changes for 4.3BSD:
1. Mkmf was previously part of the SPMS Software Project Management
System. It is now completely independent.
2. Mkmf now searches for include files in the directory containing
the file currently being processed, rather than the current
working directory. This only affects nested include files which
are external to the current working directory.
3. Mkmf now reads multiple -I options in CFLAGS and FFLAGS correctly.
4. Mkmf can now process the example presented by Kim Walden in
Software-Practice and Experience, vol. 14, no. 6, pp. 575-585,
June 1984.