GENMAK is a program for creating customized MAKE files compatible with
the Turbo MAKE utility. The output created by GENMAK can be
easily modified with the TC editor. Requirements for using GENMAK
- the Turbo Make utility
- a librarian utility
- a linking utility
The ideal conditions for GENMAK are when between 15 - 20 EXE files
must be created and there are between 30 - 40 OBJ support files.
GENMAK thinks that a directory containing a variable number of C and H
files are all related in some way to a "target" system:
- some C files are intended to become EXE files
- some C files are intended to become OBJ files
that support those in the first category
- H files, INC files, etc. should be specified in
MAKE dependency rules, but are not intended to
become EXE or OBJ files
Because the number of OBJ modules can sometimes be quite large, the
maximum size of the LINK/TLINK command tail (128 bytes) poses problems.
To work around this, GENMAK likes to put all OBJ files into a single
LIB file (designated by the MAKE macro, PROJECT_LIBRARY). This approach
requires that you have a librarian utility, such as LIB, OLIB, TLIB, etc
(designated by the MAKE macro, LIBRARIAN_NAME) in your PATH.
When the EXE files are linked, the project library is included.
1. Move all the C files needed by your target system
into the directory containing GENMAK.
2. Run GENMAK
a. The information panel provides an opportunity
to adjust the macros. The default values
assume a LARGE memory model with the related
link files (C0L.OBJ, etc) on drive D:
If you are using commercial libraries, be
sure to include those in the LINK_SUFFIX
macro. Failure to do this may cause a
system crash when LINK/TLINK gets underway.
b. GENMAK then examines each C file for
occurences of the include directive. When
an include directive is encountered (even
those commented or ifdef'ed out), it uses
the following rule: if the include file
is enclosed in angle brackets (such as
file is enclosed in quotes, it is picked up
as a MAKE dependency.
c. When the scanning process is complete, GENMAK
will a pop-up menu to determine the disposition
of each file:
- The file should be compiled to an OBJ
file. In this case, the file is
compiled and added to your project
library (a "lib" file).
- The file should be compiled as an EXE
file. In this case, the file is compiled
and linked to the project library file.
- The file should be ignored.
d. GENMAK will return with a message giving the file
specification of the MAKE file, it will look some-
thing like TMP1.$$$ as it is named via the "tmpnam"
3. Pull the new MAKE file into a text editor and make
any necessary modifications. With the Turbo MAKE
utility, you can simulate a run with the -n option
(make -n -ftmp1.$$$).
Caveats and Observations
Creating a MAKE macro to specify your "include" and "lib"
subdirectories is a bewildering exercise. My advice is to
An interesting idea for those particularly convoluted situations
is to try something like: make -n -fmymake >oneshot.bat
then edit the batch file.
Don't forget that the Microsoft linker will concatenate the
options you pass on the command tail with any options existing
in your LINK environment variable. My autoexec contains the
set link=/SE:1000 /PAC /F
Another interesting, not clearly documented feature of the
Turbo Make utility is the ability to insert a dependency
condition without having a related command. This is my
technique for incorporating multiple EXE files into a
single make (using a "psuedo" rule called COMPLETE).
GENMAK does not understand the following concepts:
- Nested includes
- Include statements that have been commented out
- Include statements that have been defined out
GENMAK is public domain. You are free to use/gain from it as
you see fit without obligation on your part. There is no
obligation or liability on my part. Garry J. Vass [72307,3311]