Estimated hours taken: 0.1
Mmakefile:
Add a missing $(deps_subdir) before a reference to library.dep,
so that it works with --use-subdirs.
It already had the $(dep_subdir) in front of all the
references to compiler.dep and profiler.dep, I had just
accidentally missed on occurrence for library.dep.
Mmakefile:
library/Mmakefile:
Ensure that things get recompiled properly if you modify the
VERSION file and the run `mmake' from the top-level directory.
Also an unrelated change:
Mmakefile:
Add a new `install_main' target, which is like
`install' except that it doesn't invoke `install_grades'.
Estimated hours taken: 1
Fix some Mmakefile errors that were diagnosed by `--warn-undefined-variables'.
Also, make a small fix to mmake.in and add empty definitions for various
Mmake variables to avoid spurious warnings.
scripts/mmake.in:
Add ` dep*' to the patterns for which we do not
pass `--warn-undefined-variables'; previously it
matched "$@" against `dep*', which did not catch the
case of `mmake -k depend'.
^^^
scripts/Mmake.vars.in:
Add definition for `ds_subdir'.
Define `MLLIBS' as `$(EXTRA_MLLIBS)' rather than empty,
and add empty definition for `EXTRA_MLLIBS'.
Add empty definition for `MAIN_TARGET'.
Mmakefile:
Fix misspelling: `deps_subdir' not `dep_subdir'.
Add empty definitions for `PREINSTALL_HACK', `POSTINSTALL_HACK',
and `MMAKEFLAGS'.
boehm_gc/Mmakefile:
Add empty definition for `PROF'.
runtime/Mmakefile:
Add empty definition for `DLL_CFLAGS'.
library/Mmakefile:
Add empty definition for `CHECK_TERM_OPTS'.
compiler/Mmakefile:
Add empty definition for `MTAGSFLAGS'.
Estimated hours taken: 6
Fix some problems with the `--use-subdirs' option.
The compiler itself now compiles and bootstraps fine with --use-subdirs.
compiler/modules.m:
Put `.h' files in the source directory, rather than
in the `Mercury/hs' subdirectory.
compiler/mercury_compile.m:
scripts/Mmake.rules:
If `--use-subdirs' is enabled, pass `-I.' to the C compiler,
so that #include statements work relative to the source directory
rather than relative to the `Mercury/cs' subdirectory.
scripts/Mmake.vars.in:
Define $(cs_subdir), $(os_subdir) etc. variables;
these are set to the directory to use for .c, .o, etc. files,
(including the trailing `/'), or to the empty string,
if --use-subdirs is not set.
scripts/Mmake.rules:
Use $(cs_subdir), $(os_subdir) etc. to avoid the code
duplication created by my previous change to handle
--use-subdirs.
Also add lots of comments, and reorder the code
in a more logical order.
Mmakefile:
library/Mmakefile:
compiler/Mmakefile:
profiler/Mmakefile:
tests/term/Mmakefile:
tests/valid/Mmakefile:
Use $(cs_subdir), $(os_subdir) etc. to fix a few hard-coded
file-names (e.g. *.dep, *_init.[co], tree234.o) that were
used in some of the rules.
library/Mmakefile:
Add `rm -f tags' to the rule for `mmake realclean'.
tools/bootcheck:
Add `--use-subdirs' option (defaults to setting of the
MMAKE_USE_SUBDIRS environment variable).
Change the code which compares the stage2 & stage3 C files
to use the appropriate location for them based on the
setting of this option.
Estimated hours taken: 0.1
Mmakefile:
Fix a bug in the rule for `mmake tar':
to make all the interface files in the library directory,
it needs to do `mmake all-ints', not `mmake ints opts'.
(Also there is no need to explicitly make the `ints' in the
compiler or profiler directory. The necessary int files will
be built automatically when building the .c files.)
Estimated hours taken: 2
Fix the boehm_gc problem with libc6 on Linux systems.
This is a Mercury only fix because the boehm_gc doesn't use autoconf.
(It's not the world's most elegant fix, but it does fix the problem).
Mmakefile:
Remove boehm_gc/mercury_boehm_gc_conf.h when cleaning up.
README.Linux:
Update the documentation about this fix.
configure.in:
Check whether we should #include <asm/sigcontext.h> in
the GC.
boehm_gc/os_dep.c:
Only include <asm/sigcontext.h> if it will work.
boehm_gc/mercury_boehm_gc_conf.h.in:
New configuration header file.
Estimated hours taken: 1
Fix some installation problems on MS Windows.
Mmakefile:
Fix a bug: the definitions of the variables
PREINSTALL_HACK_FOR_WINDOWS and POSTINSTALL_HACK_FOR_WINDOWS
preceded their use. The fix was just to move the definitions
closer to near the start of the file.
README.MS-Windows:
Update the documentation to reflect gnu-win32 b18.
Update the patch at the end to reflect the above change to Mmakefile.
Estimated hours taken: 1
Mmakefile:
README.MS-Windows:
Move most of the stuff in the patch file at the end of
README.MS-Windows into Mmakefile, because the patch file
was a maintenence problem (people would change Mmakefile
and not update the patch).
Estimated hours taken: 2
Cleaned up runtime directory.
runtime/*.c:
- Renamed all .c files as mercury_*.c
Some have been renamed to make their purpose clearer.
call.mod -> mercury_ho_call.c
runtime/*.h:
- Moved contents of .h files to mercury_*.h
- *.h now contain #include mercury_*.h. They be removed later.
- Updated references to conf.h -> mercury_conf.h
runtime/conf.h.in:
- Renamed conf.h.in as mercury_conf.h.in.
Didn't leave a forwarding header for this one, as conf.h was
never part of the repository anyway.
runtime/Mmakefile:
- Convert lists to one-per-line lists.
- Add mercury_accurate_gc.h to HDRS.
- Remove all .mod files
- Make sure runtime.init uses the ORIG_CS not MOD_CS.
- Fix the rules for "clean_o" and "clean_mod_c", which used
wildcards like "*.o" to remove files. The one that removed
all .c files corresponding with *.mod, instead of using MOD_CS
was particularly vicious.
- Cope with the file renamings.
configure.in:
- Cope with the file renamings.
Estimated hours taken: 0.25
.README.in:
Mmakefile:
bindist/Mmakefile:
bindist/bindist.Makefile.in:
tools/bootcheck:
Delete all references to `lp_solve'. It is not needed anymore,
now that we have written our own solver.
Estimated hours taken: 0.25
Mmakefile:
If building or installing `lp_solve' fails, ignore the error.
This avoids portability problems with lp_solve's reliance
on yacc and lex causing too much hassle...
Estimated hours taken: 0.25
Mmakefile:
Change the rule for `mmake tar' so that the
mercury-<version>-extras.tar.gz file will unpack into a subdirectory
mercury-<version>/extras rather than into the directory
mercury-<version>-extras.
Estimated hours taken: 0.25
Fix a couple of bugs in the Mmakefile stuff for the lp_solve directory.
Mmakefile:
Add `lp_solve' target.
lp_solve/Mmakefile:
Add dependency so that `install_lp_solve' will build `lp_solve'
before trying to install it.
Estimated hours taken: 2
Changes needed to include `lp_solve' in the Mercury distribution.
Note that these changes include it in the main distribution; that is temporary.
For copyright reasons, it ought to be moved to the `extras' distribution,
lp_solve/lpkit.h:
Delete definition of `NULL' that conflicted with system header files.
lp_solve/COPYING:
New file, explaining the copying policy.
lp_solve/Mmakefile:
New file, contains rules for building and installing lp_solve.
Mmakefile:
bindist/Mmakefile:
bindist/bindist.Makefile.in:
Add rules for installing lp_solve and for including it in the
source and binary distributions.
.README.in:
Mention lp_solve.
Estimated hours taken: 3
Mmakefile:
Fix a bug in the rule for install_grades that broke the
libraries installed for grade `asm_fast.gc.tr' on
mercury.cs.mu.oz.au. The problem was that it was not
removing the C files in the library directory, which had
been generated for a different grade, before making the new grade.
Estimated hours taken: 0.5
Split the distribution into
mercury-$VERSION.tar.gz (main distribution)
mercury-$VERSION-extras.tar.gz (extras directory)
Mmakefile:
Change rule for `tar' target to build
mercury-$(VERSION)-extras.tar.gz as well, and not put
extras in the main distribution.
tools/test_mercury:
Deal with extras tar files when creating stable releases, and
putting them on the ftp site.
Estimated hours taken: 2
Localize the definition of the version number into a single file.
Automate the building of releases, including daily "rotd"
(release-of-the-day) releases.
VERSION:
New file, defines the version number.
Also document the general scheme for assigning version numbers.
Mmake.common.in:
Add `include VERSION'.
Mmakefile:
bindist/Mmakefile:
configure.in:
Use the version number in VERSION rather than hard-coding it
in multiple places.
Mmakefile:
README:
.README.in:
INSTALL:
.INSTALL.in:
Change things so that README and INSTALL are automatically
generated from .README.in and .INSTALL.in respectively, using
the version number defined in VERSION.
BUGS:
Remove an unnecessary reference to the version number.
RELEASE_NOTES:
Change this file so that the version number is only mentioned
in one place. Bump the version number here to 0.7 in preparation
for the next release.
library/Mmakefile:
library/library.m:
library/library.m.in:
Change things so that library.m is automatically generated from
library.m.in using the version number in VERSION.
Also change it so that library__version says which architecture
it was configured for.
tools/test_mercury:
Override the version specified in the VERSION file in the CVS
repository with either `rotd-YYYY-MM-DD' or (when making a release)
with a specified $RELEASE_VERSION.
When running on murliboobo, if the version built passes all its
tests, copy it to the /pub/mercury/beta-releases directory on
ftp://turiel.cs.mu.oz.au.
compiler/notes/release_checklist.m:
Change the release checklist to say that you only need to
update the version number in VERSION rather than in 6 different
places. Also change the procedure for building the final
tar file to reflect the above changes to the `test_mercury' script.
Estimated hours taken: 1.5
Update the copyright messages so that (a) they contain the correct years
and (b) they say "Copyright (C) ... _The_ University of Melbourne".
Estimated hours taken: 0.5
Fix a warning about the rule for making `library/library.init'
clashing with the default rule for creating a `.init' file
in the automatically-generated `library/library.dep' file.
The initialization for the library is different to the
standard automatically-generated initialization, because
the library contains C code that needs explicit initialization.
(because it has BEGIN_MODULE ... END_MODULE macros in it); this
C code hence has `INIT blah' comments in it naming functions that
need to be inserted in the `.init' file so that they will be called
at initialization time.
Mmakefile:
library/Mmakefile:
compiler/Mmakefile:
profiler/Mmakefile:
tools/bootcheck:
tools/linear:
tools/binary:
s/library.init/libmercury.init/g
Estimated hours taken: 1
mercury/Mmakefile:
Change the rule for `mmake tar' so that it includes the test
directory but does not include the `trial', `bytecode',
or `lp_solve' directories.