12-Jan-00:
This file is getting very out-of-date. There have been numerous
improvements, bugfixes, and so on since the last entry. hmake
now works with all Haskell compilers, including ghc, hbc, and
nhc98. It is thus distributed separately from the nhc98 compiler
now.
13-Jun-98:
A major overhaul of everything. The script now uses /bin/sh instead
of tcsh, and recognises a better set of options. The programs NhcMk
and Older now compile cleanly with nhc13. I have added an option to
search for (and generate) object files in a separate target directory.
I have added a simple parser for cpp-directives in source files, as
these can alter which `import' lines are seen.
30-Oct-97:
Files with a .gc extension are now recognised (they use the GreenCard
preprocessor) and treated as normal .hs files. (nhc13 does the
actual pre-processing, but nhc13make extracts the import declarations.)
5-Mar-96:
If the interface files is taken from a directory specified
with -I ocr -P, then the corresponding object file is also
taken from that directory. This didn't work before
6-June-94:
nhcmake now use different environment variables for binaries
and interface files.
29-Mar-94:
nhcmake can now be compiled with either hbc or nhc. The flag
-O is changed to -D.
20-Feb-94:
hbcmake/lmlmake is translated into Haskell and changed so that it compiles
under nhc. A lot of the extra bells and whistles are removed and the default
compiler is nhc. NhcMk make works both under RISC OS and (with the flagg -unix)
under Unix.
17-Nov-93:
hbcmake now uses the script "hbcmakehbc" to compile. The script
allows per file compilation flags to be specified in the file "Flags".
28-Oct-93:
LDFLAGS are now extracted from Makefile too.
All flags found in the environment variables LDFLAGS and
HBCFLAGS/LMLFLAGS, in a Makefile, and on the
command line are now passed to the compiler/linker.
An environment variable can no longer be used to override
Makefile definitions.
Man pages updated.
13-Oct-93:
Some small updates to the man pages.
Improved extraction of LMLFLAGS/HBCFLAGS from Makefile.
11-Oct-93:
Changed cmds.m to generate commands for sh instead of csh. This
solves a problem with very long `quotes`.
Changed hbcmake/lmlmake scripts to run output from lmlmk through
sh instead of csh.
13-Jul-93:
Added some new environment variables: HBC & LMLC to specify alternate
compilers to hbc and lmlc; LMLMK_CONFIG to make it possible to compile
languages other than Haskell/LML. Set it to
s_ext:ls_ext:i_ext:inc:comp:compflags:pathvar
where s_ext is the source file extension
ls_ext is the extension for literate style source files
i_ext is the interface file extension
inc specifies how to extract dependencies (haskell or cpp)
compflags specifies compiler flags to use
pathvar is the name of an env var containg the include path
The two configs for LML and Haskell built in to lmlmk are:
.m:.lm:.t:cpp:lmlc:LMLFLAGS:LMLINCPATH
.hs:.lhs:.hi:haskell:hbc:HBCFLAGS:HBCINCPATH
1-Mar-93:
lmlmake used to die with "Fail: hd on []" if a ".t" file without a
corresponding ".m" file was encountered.
Now it doesn't die anymore, but instead it tries to compile the
".t" file. (Harmless, but should be fixed.)
22-Jan-93:
Corrected what directories are searched when compiling a file that
is not in the current directory. Hope I got it right this time.
E.g. lmlxmake -Ifoo bar/main.m
main.m: #include "sub.t" -- searches bar and foo
17-Jan-93:
New flag: -strip to produce a stripped executable
New flag: -o name to specify the name of the executable
8-Jan-93:
Corrected what directories are searched when compiling a file that
is not in the current directory.
E.g. lmlxmake -Ifoo bar/main.m
main.m: #include "sub.t" -- searches bar and bar/foo
E.g. lmlxmake -I/foo bar/main.m
main.m: #include "sub.t" -- searches bar and /foo
25-Jul-92:
LMLINCLUDE env var now used internally only. Setting it from outside
has no effect.
24-Jul-92:
Included ".h" files are now checked for further depencencies (applies
only to LML programs).
Support for -I flag and a new env variable LMLINCLUDE added.
23-Apr-92:
hbcmake is now aware of that modules can be imported from hbc_libraries.
If a module isn't found in the current directory, but found in the
library, it is ignored and assumed to be linked in automatically.
-i flag added to hbcmake, works as for hbc & lmlc.
hbcmake and lmlmk uses HBCINCPATH.
lmlmk uses LMLINCPATH when compiling LML programs.
12-Mar-92:
Fast hack: you can now put the word "lmlmake_ignore" after an include
directive to tell lmlmake to ignore the dependence on that module.
(You have to include the appropriate object files in LDFLAGS)
25-Feb-92:
lmlmk now works better in the presence of links (inode numbers are used
to identify source files). When two links refer to the same file, one of
them is ignored. This means that only one .o and one .t file is created
and this can cause problems! (To be fixed)
12-Feb-92:
lmlmk now adds $LDFLAGS at end of link commands. -l args handled in
lmlmake/hbcmake script by adding them to LDFLAGS.
lmlmk now generates commands to compile independent modules in parallel
if env var PARALLEL is set.
8-Jan-92:
New script file hbcmake to compile Haskell programs.
lmlmk uses environment variable LMLMK_LANG, which can be set
to "lml" or "hbc".
7-Jan-92:
Fixed two bugs in the parsing of file names. One caused names like
"../../papp/tstmenu" to parsed as a file called "../." with the
extension "/papp/tstmenu". The other caused "../../x" and "./../x"
to be treated as equal to "x".
27-Dec-91: first release
|