Dmake is a make utility similar to GNU make.
This program is installable using the rpm package manager. See below for the install string. Required prerequisites are automatically processed by the package manager and, if needed, downloaded and installed.
yum install dmake-debuginfo
yum install dmake
Program is distributed as ZIP package: download to temporary directory and unpack to destination folder. See below for download link(s).
Following ones are the download links for manual installation:
Dmake v. 4.1 (7/4/2004, Jon Saxton) | Readme/What's new |
This archive contains dmake compiled for OS/2 and for Windows 2000. I
expect that the Windows 2000 version will work on Windows NT and XP but
I have not tested it in those environments. In particular, I do not know
how Windows XP reports itself in the global environment.
The cfg subdirectory contains the run-time configuration files that I
use for gcc 3.2.x and Visual Age C++ 3.6.5 in both environments. Copy
the contents of the cfg subdirectory to a location of your choosing and
set an environment variable to point at that directory. The one you need
to set is DMAKEROOT. For example:
set dmakeroot=d:/u/etc/dmake
You also need to have three other environment variables set to have dmake
find its subordinate files.
OS
OSRELEASE
OSENVIRONMENT
These are documented in startup.mk in the cfg subdirectory. OS is probably
set already to something like Windows_NT or ecs. If not, then you'll have
to set it yourself. Try using win32 or os2 since the two aforementioned
settings will be translated to those values anyway.
For OS/2 the environment settings can appear in config.sys and for Windows
they can be set from "My Computer" properties. However those are not
necessarily the best places.
As mentioned above, OS is probably set globally and that is OK. It is
probably a good idea to set DMAKEROOT globally also, However OSRELEASE
and OSENVIRONMENT vary according to the compiler you are using and those
are probably better set by the startup script for the text session in
which the compiler is used. For example, on OS/2 my VAC++ setenv.cmd and
my UNIXOS2 gcc_shell.cmd set OSRELEASE to "vac" and "gcc" respectively.
For more information read the comments in startup.mk and the file OS2NOTES
in the source archive.
Hmm ... in case you didn't download the source archive, I'll include
OS2NOTES and the manual in this archive as well.
Jon Saxton
April 2004 |
hobbes.nmsu.edu/download/pub/os2/dev/util/dmake41x.zip | ||
Dmake v. 4.1 (Source code, , Jon Saxton) | Readme/What's new |
Notes on the port of dmake to OS/2
==================================
Jon Saxton
March 2004
Dmake is a make utility on steroids. It is extremely powerful and highly
configurable. It has been ported to many operating systems. It is capable
of using multiple computers on a network to build complex projects.
I am a long-time user of dmake but I am not an expert. I have not used
anything approaching all of its features. When I need to do something a
bit beyond the mundane, I consult the (somewhat outdated but still accurate)
manual.
My main reason for using dmake rather than some other comparable tool is
historical. I had tried dmake some years ago and so I was somewhat familiar
with it. Then about four years ago I started writing C and C++ programs for
UNIX. As far as possible I do all the development and testing on OS/2. Once
I am satisfied that the program is working, I squirt the source code over the
wire to a UNIX system for compiling and linking. I maintain exactly one set
of source files for each project and I do not want to maintain two distinct
makefiles. By writing my makefiles for processing by dmake, it is possible
for me to have one makefile which works unchanged on OS/2 and UNIX.
There are probably other tools which would work just as well (gnu make
is one that springs to mind), but I have not investigated those.
Quite recently I needed to have one of my OS/2-UNIX programs execute on
Windows 2000. I found a compiled version of dmake on the internet and it
worked perfectly for that project but it turned out to be a slightly more
recent version than the one I had been using on OS/2 and UNIX so I decided
to update my version.
For some time now the official dmake web site (http://dmake.wticorp.com)
seems to have been inaccessible. Meanwhile dmake is used by the Open Office
team as its build tool and the dmake source code is part of the Open Office
distribution. That is what I used for this exercise.
I fixed a few minor spelling errors:
openning -> opening
infering -> inferring
and changed all the grave accents used as quote marks to apostrophes
` -> '
for no reason other than that to me the pairing of the grave accent with
the apostrophe is `really' ugly on every display that I have used.
I constructed the OS/2-gcc version of config.h by hand and modified the
OS/2 version of switchar.c to return '-' as the switch character instead
of '/'. This has the side-effect of causing the directory separator to
be reported as '/' instead of '\'. There are very few circumstances in
which this matters and using '/' on all platforms has the benefit of
consistency. However it is not necessary for portable makefiles because
the configuration files supplied with dmake define the macro $/ to be
the directory separator character. Using $/ in place of / would insert
the correct separator in any environment so I could have left switchar.c
alone.
There were other places where \ needed to be changed to / but as I write
I can only remember one, namely slash.h.
The changes I made to the primary dmake sources were pretty trivial but
I did make build a new "gcc" directory underneath "os2". That directory
contains a tempnam.c file like the pre-existing ones in the "icc" heirarchy
but it is not used. The gcc/emx build uses the one in os2.
As I said above, the manual (man/dmake.nc) is somewhat outdated. The
current version of dmake supports a small range of logical and arithmetic
operators. For example, one can say
.IF $(COLOUR) == yellow
.IF $(COLOUR) != yellow
.IF $(ANSWER) >= 42
.IF $(COLOUR) == yellow || $(ANSWER) == 42
The comparison operators are:
== equal
!= not equal
> greater
< less
>= greater or equal
<= less or equal
and the logical operators are:
&& and
|| or
I haven't yet figured out the precedence of the logical operators yet but
they are both of lower precedence than the comparison operators.
When dmake starts up, it needs to find its configuration file. For OS/2
the program looks for "startup.mk" in a directory described by the environ-
ment variable DMAKEROOT. Thus if you have in config.sys or the startup
script for your text session
set dmakeroot=d:/u/etc/dmake
then dmake will look for d:/u/etc/dmake/startup.mk. This is established
by a line in startup.h which gets included in ruletab.c.
The configuration file can be specified more directly by setting another
environment variable, namely "makestartup". For example,
set makestartup=d:/u/etc/dmake/startup.mk
will have exactly the same effect as the dmakeroot setting shown earlier.
I have included a sample set of run-time configuration files. These start
with "startup.mk" which ultimately includes all the others that are
appropriate for the extant build environment. I have added extensive notes
to startup.mk and less extensive notes to the others.
============ Windows 2000 =============
While I was at it, I built a new version of dmake for Windows (NT/2000).
I tried running the configure script under mingw but it failed and since
I was in no mood to debug the script so I just made a selective copy of
the files in the os2 subdirectory into the winnt subdirectory and tweaked
them ever so slightly to make the initial compile work. From a gcc text
session type
make.cmd winnt-gcc
to build the Windows version. I opened an msys window then ran cmd.exe
on top to get the correct environment.
All the notes for OS/2 apply equally to Windows. |
hobbes.nmsu.edu/download/pub/os2/dev/util/dmake41s.zip |
This work is licensed under a Creative Commons Attribution 4.0 International License.
Add new comment