[m-dev.] For review: using alternate installation dirs

Warwick Harvey wharvey at cs.monash.edu.au
Mon Jun 14 14:03:01 AEST 1999


As a number of you are aware, I've been working on trying to make it easy 
for a user to install and use libraries in multiple grades in locations 
other than the main Mercury directories.

Currently I'm working on my second attempt, after Zoltan told me I was doing 
it all wrong.  :-)

Anyway, at this stage I've only implemented the *use* of these directories
once installed; installing to them is still to be done.  I don't intend to
commit this stuff until the second part is done, unless somebody convinces
me doing so would be worthwhile.  But I thought I'd post what I've done for
review, to get some feedback and invite input on some of the thornier issues
I've come across.

The first issue is what (if anything) to do about the dependency between the 
`_init.c' file for the program being built and the `.init' files of the 
libraries.  It is not mentioned in the `Using libraries' section of the user 
manual, and similar dependencies on the `.init' files for the standard 
libraries are also ignored.  However, a number of sample programs in the 
extras directory declare it (references, trailed_update, clpr --- but they 
probably all inherited it from the one source, whichever it was that came 
first).

Certainly ignoring the dependency is easier than including it.  :-)  Though
adding it is not too hard, as long as one doesn't also want to be able to
specify which libraries to link on a program-by-program basis (i.e. using
something like `EXTRA_LIBRARIES-foo = bar') --- this appears to make it
downright nasty.

My second issue was going to be about specifying libraries on a 
program-by-program basis, but I've taken some time out from writing this 
mail to actually try it without attempting to include in the above 
dependency, and it seems to be working.  One cannot specify extra 
*directories* on a program-by-program basis (it's not clear that this would 
make sense, even if it were practical), but one can specify extra libraries, 
and they are included in the init code and linked in.

While doing this I discovered that adding extra C2INITFLAGS for a program 
probably doesn't work as desired.  To add extra flags for the program `foo', 
one has to define `C2INITFLAGS-foo_init.c' rather than `C2INITFLAGS-foo'.  
(Debugging Mmakefiles sux :-).  I presume this wasn't intended?  I can fix 
this as a separate change if it is desired.

Please note that I also have not been able to figure out why the definitions 
of `MERCURY_EXTRA_INT_DIRS' and `MERCURY_EXTRA_MOD_LIB_DIRS' in `mmake.in' 
are required for `VPATH' to work.  If somebody could enlighten me, I'd
appreciate it.  :-)

Anyway, here's the diff.  As well as the usual kinds of comments, I'd 
particularly like it if somebody could examine the TeXinfo to make sure I 
haven't done anything stupid or naughty (in general, as well as with regard 
to Mercury standards) because I've not done any TeXinfo hacking before.  
(Also, the existing documentation I browsed in an attempt to deduce what to 
do seems to be inconsistent as to what goes in @code{}, what goes in 
@samp{}, and what doesn't need either --- are there guidelines for this?)

I've included just for illustrative purposes a diff for
`extras/references/samples/Mmakefile' which gives an example of how to use
this stuff, but I have no intention of commiting it because (a) you need to
be able to install the libraries it uses first, and that bit doesn't work
yet, and (b) it uses an absolute path.


Estimated hours taken: 60

Allow the user to conveniently use Mercury libraries installed in
non-standard places, by specifying the variables `EXTRA_LIBRARIES' and
`EXTRA_LIB_DIRS' in their Mmakefile.

doc/user_guide.texi:
	Documented the new `EXTRA_LIBRARIES' and `EXTRA_LIB_DIRS' Mmake
	variables.

scripts/Mmake.vars.in:
	Added/changed definitions appropriately to support the new
	variables.

scripts/c2init.in:
	Added two new options to `c2init':
	-m/--module <module> declares that initialisation code should be
		included for the specified module.
	-M/--module-directory <path> declares a path to search for extra
		modules.

scripts/mmake.in:
	Made sure `MERCURY_EXTRA_INT_DIRS' and `MERCURY_EXTRA_MOD_LIB_DIRS'
	are defined as shell variables, so that adding them to `MMAKE_VPATH'
	in an Mmakefile works.

cvs server: Diffing .
cvs server: Diffing bindist
cvs server: Diffing boehm_gc
cvs server: Diffing boehm_gc/Mac_files
cvs server: Diffing boehm_gc/cord
cvs server: Diffing boehm_gc/cord/private
cvs server: Diffing boehm_gc/include
cvs server: Diffing boehm_gc/include/private
cvs server: Diffing browser
cvs server: Diffing bytecode
cvs server: Diffing bytecode/test
cvs server: Diffing compiler
cvs server: Diffing compiler/notes
cvs server: Diffing debian
cvs server: Diffing doc
Index: doc/user_guide.texi
===================================================================
RCS file: /home/mercury1/repository/mercury/doc/user_guide.texi,v
retrieving revision 1.176
diff -u -r1.176 user_guide.texi
--- user_guide.texi	1999/06/01 09:44:47	1.176
+++ user_guide.texi	1999/06/14 03:59:36
@@ -519,6 +519,18 @@
 Options to pass to the c2init program.
 (Note that compilation model options should be
 specified in @code{GRADEFLAGS}, not in @code{C2INITFLAGS}.)
+
+ at item EXTRA_LIBRARIES
+A list of extra Mercury libraries to link into any programs or libraries
+that you are building.
+Libraries should be specified using their base name; that is, without any
+ at code{lib} prefix or extension.
+For example the library including the files @file{libfoo.a} and @file{foo.init}
+WWW
+
+ at item EXTRA_LIB_DIRS
+A list of extra Mercury library directory hierarchies to search when
+looking for extra libraries.
 @end table
 
 Other variables also exist - see
@@ -571,6 +583,7 @@
 * Building libraries::
 * Installing libraries::
 * Using libraries::
+* Supporting multiple grades and architectures::
 @end menu
 
 @node Writing libraries
@@ -765,6 +778,46 @@
 for each Mercury library being used are all put in a single directory,
 which is probably the simplest way of organizing things, but the
 Mercury implementation does not require that.
+
+ at node Supporting multiple grades and architectures
+ at section Supporting multiple grades and architectures
+
+In order to better support using and installing libraries in multiple
+grades, @samp{mmake} now has some support for alternative library directory
+hierarchies.
+These have the same structure as the @file{@var{prefix}/lib/mercury} tree,
+including the different subdirectories for different grades and different
+machine architectures.
+
+Automatically installing a library and all its associated files to such a
+tree is not yet supported, but until it is the user can use the same
+techniques used for building and installing the core Mercury libraries.
+
+Once a library is installed in such a hierarchy, using it is easy.
+Suppose the user wishes to use the library @samp{mypackage} (installed
+in the tree rooted at @samp{/some/directory/mypackage}) and the library
+ at samp{myotherlib} (installed in the tree rooted at
+ at samp{/some/directory/myotherlib}).
+The user need only set the following Mmake variables:
+
+ at example
+EXTRA_LIB_DIRS = /some/directory/mypackage /some/directory/myotherlib
+EXTRA_LIBRARIES = mypackage myotherlib
+ at end example
+
+Mmake will then ensure that the appropriate directories are searched for
+the relevant interface files, module initialisation files, compiled
+libraries, etc.  Note that for shared libraries to work properly, absolute
+paths must be given for @samp{EXTRA_LIB_DIRS}.
+
+One can specify extra libraries to be used on a program-by-program
+basis.  For instance, if the program @samp{foo} also uses the library
+ at samp{mylib4foo}, but the other programs governed by the Mmakefile don't,
+then one can declare:
+
+ at example
+EXTRA_LIBRARIES-foo = mylib4foo
+ at end example
 
 @node Debugging
 @chapter Debugging
cvs server: Diffing extras
cvs server: Diffing extras/aditi
cvs server: Diffing extras/cgi
cvs server: Diffing extras/complex_numbers
cvs server: Diffing extras/complex_numbers/samples
cvs server: Diffing extras/complex_numbers/tests
cvs server: Diffing extras/dynamic_linking
cvs server: Diffing extras/exceptions
cvs server: Diffing extras/graphics
cvs server: Diffing extras/graphics/mercury_opengl
cvs server: Diffing extras/graphics/mercury_tcltk
cvs server: Diffing extras/graphics/samples
cvs server: Diffing extras/graphics/samples/calc
cvs server: Diffing extras/graphics/samples/maze
cvs server: Diffing extras/graphics/samples/pent
cvs server: Diffing extras/lazy_evaluation
cvs server: Diffing extras/odbc
cvs server: Diffing extras/references
cvs server: Diffing extras/references/samples
Index: extras/references/samples/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/mercury/extras/references/samples/Mmakefile,v
retrieving revision 1.1
diff -u -r1.1 Mmakefile
--- Mmakefile	1998/06/18 04:30:30	1.1
+++ Mmakefile	1999/06/14 03:59:36
@@ -9,15 +9,8 @@
 # We need to use a grade with trailing
 GRADEFLAGS += --use-trail
 
-MGNUCFLAGS= -I..
-
-# Link in the reference library from ..
-MCFLAGS += -I.. $(EXTRA_MCFLAGS)
-MLFLAGS += -R`pwd`/.. -L.. $(EXTRA_MLFLAGS)
-MLLIBS = -lglobal $(EXTRA_MLLIBS)
-VPATH = ..:$(MMAKE_VPATH)
-C2INITFLAGS = ../global.init
-%_init.c: $(C2INITFLAGS)
+EXTRA_LIB_DIRS = /home/wharvey/mercury/libdirs/extras/lib/mercury
+EXTRA_LIBRARIES = global
 
 # We need the following to use shared libraries on Linux
 #MGNUCFLAGS += -DPIC_REG
cvs server: Diffing extras/references/tests
cvs server: Diffing extras/trailed_update
cvs server: Diffing extras/trailed_update/samples
cvs server: Diffing extras/trailed_update/tests
cvs server: Diffing library
cvs server: Diffing lp_solve
cvs server: Diffing lp_solve/lp_examples
cvs server: Diffing profiler
cvs server: Diffing readline
cvs server: Diffing readline/doc
cvs server: Diffing readline/examples
cvs server: Diffing readline/shlib
cvs server: Diffing readline/support
cvs server: Diffing runtime
cvs server: Diffing runtime/GETOPT
cvs server: Diffing runtime/machdeps
cvs server: Diffing samples
cvs server: Diffing samples/c_interface
cvs server: Diffing samples/c_interface/c_calls_mercury
cvs server: Diffing samples/c_interface/cplusplus_calls_mercury
cvs server: Diffing samples/c_interface/mercury_calls_c
cvs server: Diffing samples/c_interface/mercury_calls_cplusplus
cvs server: Diffing samples/c_interface/mercury_calls_fortran
cvs server: Diffing samples/c_interface/simpler_c_calls_mercury
cvs server: Diffing samples/c_interface/simpler_cplusplus_calls_mercury
cvs server: Diffing samples/diff
cvs server: Diffing samples/muz
cvs server: Diffing samples/rot13
cvs server: Diffing scripts
Index: scripts/Mmake.vars.in
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/Mmake.vars.in,v
retrieving revision 1.24
diff -u -r1.24 Mmake.vars.in
--- Mmake.vars.in	1998/12/06 23:48:56	1.24
+++ Mmake.vars.in	1999/06/14 03:59:36
@@ -12,9 +12,28 @@
 # Ensure that commands use /bin/sh not the user's shell
 SHELL		= /bin/sh
 
+ALL_EXTRA_LIBRARIES	= $(TARGET_EXTRA_LIBRARIES) $(EXTRA_LIBRARIES)
+EXTRA_LIB_DIRS		=
+EXTRA_LIBRARIES		=
+
+EXTRA_INT_DIRS		= $(patsubst %,%/ints,$(EXTRA_LIB_DIRS))
+MERCURY_EXTRA_INT_DIRS	= $(EXTRA_INT_DIRS)
+EXTRA_C_LIB_DIRS	= \
+	$(patsubst %,%/lib/$(shell $(MCOGS))/@FULLARCH@,$(EXTRA_LIB_DIRS)) \
+	$(patsubst %,%/lib/@FULLARCH@,$(EXTRA_LIB_DIRS))
+EXTRA_C_INCL_DIRS	= $(patsubst %,%/inc,$(EXTRA_LIB_DIRS))
+EXTRA_MOD_LIB_DIRS	= $(patsubst %,%/modules,$(EXTRA_LIB_DIRS))
+MERCURY_EXTRA_MOD_LIB_DIRS = $(EXTRA_MOD_LIB_DIRS)
+
 # Set the directory search path. 
 # (See the GNU Make manual for documentation about VPATH and GPATH.)
-MMAKE_VPATH	= $(MERCURY_INT_DIR)
+# We need to substitute all spaces with colons for the VPATH to work.
+# Getting a space to be recognised as the first argument of the subst
+# function is problematic; hence the `$(nullstring)' hack.
+nullstring	=
+MMAKE_VPATH	= $(subst $(nullstring) ,:,$(strip \
+			$(MERCURY_EXTRA_INT_DIRS) $(MERCURY_INT_DIR)\
+			$(MERCURY_EXTRA_MOD_LIB_DIRS)))
 VPATH		= $(MMAKE_VPATH) # do not remove the `:' from this comment!!!
 #			 the above comment works around a misfeature of
 #			 autoconf which causes it to delete assignments to
@@ -29,9 +48,10 @@
 EXTRA_GRADEFLAGS =
 
 MC		= mmc
-ALL_MCFLAGS	= $(MCFLAGS) $(EXTRA_MCFLAGS) $(TARGET_MCFLAGS)
+ALL_MCFLAGS	= $(MCFLAGS) $(EXTRA_MCFLAGS) $(TARGET_MCFLAGS) $(LIB_MCFLAGS)
 MCFLAGS		=
 EXTRA_MCFLAGS	=
+LIB_MCFLAGS	= $(patsubst %,-I %,$(EXTRA_INT_DIRS))
 
 MCS		= $(MC) --split-c-files --compile-only
 MCG		= $(MC) --compile-to-c
@@ -41,15 +61,24 @@
 MCSI		= $(MC) --make-short-interface
 MCOI		= $(MC) --make-optimization-interface
 MCTOI		= $(MC) --make-transitive-optimization-interface
+MCOGS		= $(MC) --output-grade-string $(ALL_GRADEFLAGS)
 
-ALL_MCIFLAGS	= $(MCIFLAGS) $(EXTRA_MCIFLAGS) $(TARGET_MCFLAGS)
-ALL_MCPIFLAGS	= $(MCPIFLAGS) $(EXTRA_MCPIFLAGS) $(TARGET_MCFLAGS)
-ALL_MCSIFLAGS	= $(MCSIFLAGS) $(EXTRA_MCSIFLAGS) $(TARGET_MCFLAGS)
-ALL_MCOIFLAGS	= $(MCOIFLAGS) $(EXTRA_MCOIFLAGS) $(TARGET_MCFLAGS)
-ALL_MCTOIFLAGS	= $(MCTOIFLAGS) $(EXTRA_MCTOIFLAGS) $(TARGET_MCFLAGS)
-ALL_MCDFLAGS	= $(MCDFLAGS) $(EXTRA_MCDFLAGS) $(TARGET_MCFLAGS)
-ALL_MCGFLAGS	= $(MCGFLAGS) $(EXTRA_MCGFLAGS) $(TARGET_MCFLAGS)
-ALL_MCSFLAGS	= $(MCSFLAGS) $(EXTRA_MCSFLAGS) $(TARGET_MCFLAGS)
+ALL_MCIFLAGS	= $(MCIFLAGS) $(EXTRA_MCIFLAGS) $(TARGET_MCFLAGS) \
+		  $(LIB_MCFLAGS)
+ALL_MCPIFLAGS	= $(MCPIFLAGS) $(EXTRA_MCPIFLAGS) $(TARGET_MCFLAGS) \
+		  $(LIB_MCFLAGS)
+ALL_MCSIFLAGS	= $(MCSIFLAGS) $(EXTRA_MCSIFLAGS) $(TARGET_MCFLAGS) \
+		  $(LIB_MCFLAGS)
+ALL_MCOIFLAGS	= $(MCOIFLAGS) $(EXTRA_MCOIFLAGS) $(TARGET_MCFLAGS) \
+		  $(LIB_MCFLAGS)
+ALL_MCTOIFLAGS	= $(MCTOIFLAGS) $(EXTRA_MCTOIFLAGS) $(TARGET_MCFLAGS) \
+		  $(LIB_MCFLAGS)
+ALL_MCDFLAGS	= $(MCDFLAGS) $(EXTRA_MCDFLAGS) $(TARGET_MCFLAGS) \
+		  $(LIB_MCFLAGS)
+ALL_MCGFLAGS	= $(MCGFLAGS) $(EXTRA_MCGFLAGS) $(TARGET_MCFLAGS) \
+		  $(LIB_MCFLAGS)
+ALL_MCSFLAGS	= $(MCSFLAGS) $(EXTRA_MCSFLAGS) $(TARGET_MCFLAGS) \
+		  $(LIB_MCFLAGS)
 
 MCIFLAGS	= $(MCFLAGS)
 MCPIFLAGS	= $(MCFLAGS)
@@ -74,9 +103,12 @@
 # the options which should be passed to them.
 #
 C2INIT		= c2init
-ALL_C2INITFLAGS	= $(C2INITFLAGS) $(EXTRA_C2INITFLAGS) $(TARGET_C2INITFLAGS)
+ALL_C2INITFLAGS	= $(C2INITFLAGS) $(EXTRA_C2INITFLAGS) $(TARGET_C2INITFLAGS) \
+		  $(LIB_C2INITFLAGS)
 C2INITFLAGS	=
 EXTRA_C2INITFLAGS =
+LIB_C2INITFLAGS	= $(patsubst %,--module-directory %,$(EXTRA_MOD_LIB_DIRS)) \
+		  $(patsubst %,--module %.init,$(ALL_EXTRA_LIBRARIES))
 
 MGNUC		= mgnuc
 ALL_MGNUCFLAGS	= $(MGNUCFLAGS) $(EXTRA_MGNUCFLAGS) $(TARGET_MGNUCFLAGS) \
@@ -89,15 +121,18 @@
 EXTRA_CFLAGS	=
 
 ML		= ml
-ALL_MLFLAGS	= $(MLFLAGS) $(EXTRA_MLFLAGS) $(TARGET_MLFLAGS)
+ALL_MLFLAGS	= $(MLFLAGS) $(EXTRA_MLFLAGS) $(TARGET_MLFLAGS) $(LIB_MLFLAGS)
 MLFLAGS		= $(EXTRA_MLFLAGS)
 EXTRA_MLFLAGS	=
+LIB_MLFLAGS	= $(patsubst %,-R%,$(EXTRA_C_LIB_DIRS)) \
+		  $(patsubst %,-L%,$(EXTRA_C_LIB_DIRS))
 
 MLOBJS		=
 MLPICOBJS	= $(MLOBJS:.o=.$(EXT_FOR_PIC_OBJECTS))
-ALL_MLLIBS	= $(MLLIBS) $(EXTRA_MLLIBS) $(TARGET_MLLIBS)
+ALL_MLLIBS	= $(MLLIBS) $(EXTRA_MLLIBS) $(TARGET_MLLIBS) $(LIB_MLLIBS)
 MLLIBS		=
 EXTRA_MLLIBS	=
+LIB_MLLIBS	= $(patsubst %,-l%,$(ALL_EXTRA_LIBRARIES))
 
 MNC		= mnc
 ALL_MNCFLAGS	= $(MNCFLAGS) $(EXTRA_MNCFLAGS) $(TARGET_MNCFLAGS)
@@ -201,6 +236,13 @@
 maybe-target-C2INITFLAGS- = $(C2INITFLAGS-$@)
 maybe-target-C2INITFLAGS-undefined =
 
+# The above should probably be redefined as below
+#TARGET_C2INITFLAGS = \
+#  $(maybe-target-C2INITFLAGS-$(findstring undefined,\
+#		  $(origin C2INITFLAGS-$(subst _init.c,,$@))))
+#maybe-target-C2INITFLAGS- = $(C2INITFLAGS-$(subst _init.c,,$@))
+#maybe-target-C2INITFLAGS-undefined =
+
 TARGET_MGNUCFLAGS = \
   $(maybe-base-MGNUCFLAGS-$(findstring undefined,$(origin MGNUCFLAGS-$*)))
 maybe-base-MGNUCFLAGS- = $(MGNUCFLAGS-$*)
@@ -233,6 +275,15 @@
   $(maybe-target-RANLIBFLAGS-$(findstring undefined,$(origin RANLIBFLAGS-$@)))
 maybe-target-RANLIBFLAGS- = $(RANLIBFLAGS-$@)
 maybe-target-RANLIBFLAGS-undefined =
+
+# Note we strip any trailing `_init.c' from `$@' so we get the appropriate
+# "base" name, regardless of whether this variable ends up being used as
+# an argument of a `c2init' rule or an `ml' rule.
+TARGET_EXTRA_LIBRARIES = \
+  $(maybe-target-EXTRA_LIBRARIES-$(findstring undefined,\
+		$(origin EXTRA_LIBRARIES-$(subst _init.c,,$@))))
+maybe-target-EXTRA_LIBRARIES- = $(EXTRA_LIBRARIES-$(subst _init.c,,$@))
+maybe-target-EXTRA_LIBRARIES-undefined =
 
 # Support for compiling Mercury programs with Prolog will probably be
 # dropped one of these days, so it's probably not worth bothering with these.
Index: scripts/c2init.in
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/c2init.in,v
retrieving revision 1.24
diff -u -r1.24 c2init.in
--- c2init.in	1999/06/01 09:46:17	1.24
+++ c2init.in	1999/06/14 03:59:36
@@ -41,6 +41,11 @@
 		(declared in \"init.h\") that can be called from C code.
 		(A more fine-grained interface is also available;
 		see \"init.h\" for details.)
+	-m <module>, --module <module>
+		Include initialization of code listed in the file <module>.
+	-M <path>, --module-directory <path>
+		Include <path> in the list of directories searched to locate
+		modules specified with the \`-m' option.
 	-w <label>, --entry-point <label>
 		Set entry point to <label>.
 		(Default value is \`mercury__main_2_0'.)
@@ -88,6 +93,8 @@
 library_opt=""
 extra_inits_opt=""
 aditi_opt=""
+extra_mod_dirs=""
+extra_modules=""
 
 # include the file `init_grade_options.sh-subr'
 @INIT_GRADE_OPTIONS@
@@ -113,6 +120,12 @@
 	-l-|--no-library)
 		library_opt="";;
 
+	-m|--module)
+		extra_modules="$extra_modules $2"; shift;;
+
+	-M|--module-directory)
+		extra_mod_dirs="$extra_mod_dirs $2"; shift;;
+
 	-w|--entry-point)
 		defentry="$2"; shift;;
 
@@ -173,13 +186,43 @@
 		;;
 esac
 
+# Search the extra module directories to locate the extra modules
+# and expand to full path names
+EXTRA_MOD_LIB_MODS=
+for module in $extra_modules 'kludge for broken shells' ; do
+    if [ "$module" = 'kludge for broken shells' ] ; then
+    	true
+    else
+    	if [ -e "$module" ] ; then
+	    # Appropriate absolute or relative path specified
+	    qualified_module=$module
+	else
+	    for dir in $extra_mod_dirs $MERCURY_MOD_LIB_DIR \
+	    		'sentinel for when not found' ; do
+		if [ "$dir" = 'sentinel for when not found' ] ; then
+		    # Pass it through as is and hope mkinit knows how to
+		    # deal with it.
+		    qualified_module=$module
+		else
+		    if [ -e "$dir/$module" ] ; then
+		    	# Found it
+			qualified_module=$dir/$module
+			break
+		    fi
+		fi
+	    done
+	fi
+	EXTRA_MOD_LIB_MODS="$EXTRA_MOD_LIB_MODS $qualified_module"
+    fi
+done
+
 case $# in
 	0) exec $MKINIT $aditi_opt -c"$maxcalls" $init_opt $trace_opt \
 		$library_opt -w"$defentry" $extra_inits_opt \
-		$MERCURY_MOD_LIB_MODS
+		$EXTRA_MOD_LIB_MODS $MERCURY_MOD_LIB_MODS
 	   ;;
 	*) exec $MKINIT $aditi_opt -c"$maxcalls" $init_opt $trace_opt \
 		$library_opt -w"$defentry" $extra_inits_opt "$@" \
-		$MERCURY_MOD_LIB_MODS
+		$EXTRA_MOD_LIB_MODS $MERCURY_MOD_LIB_MODS
 	   ;;
 esac
Index: scripts/mmake.in
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/mmake.in,v
retrieving revision 1.27
diff -u -r1.27 mmake.in
--- mmake.in	1998/08/04 14:06:07	1.27
+++ mmake.in	1999/06/14 03:59:36
@@ -66,6 +66,8 @@
 MMAKE_VARS=${MMAKE_VARS=$MMAKE_DIR/Mmake.vars}
 MMAKE_RULES=${MMAKE_RULES=$MMAKE_DIR/Mmake.rules}
 MERCURY_INT_DIR=${MERCURY_INT_DIR=@LIBDIR@/ints}
+MERCURY_EXTRA_INT_DIRS=${MERCURY_EXTRA_INT_DIRS=}
+MERCURY_EXTRA_MOD_LIB_DIRS=${MERCURY_EXTRA_MOD_LIB_DIRS=}
 MERCURY_DEFAULT_GRADE=${MERCURY_DEFAULT_GRADE=@DEFAULT_GRADE@}
 MKTEMP=@MKTEMP@
 
cvs server: Diffing tools
cvs server: Diffing trace
cvs server: Diffing trial
cvs server: Diffing util
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------



More information about the developers mailing list