[m-rev.] .NET bootstrapping
Fergus Henderson
fjh at cs.mu.OZ.AU
Sat Feb 15 07:34:05 AEDT 2003
On 06-Feb-2003, Peter Ross <pro at missioncriticalit.com> wrote:
> Next test will be to compile a program. Don't think it will work as I
> still need to fully implement some of the pragma foreign_procs.
I've passed that test. My stage 1 compiler has successfully compiled
samples/hello.m.
I tried running a bootcheck, but that ran into the stack overflow problem
when building the stage two dependencies. Solved that one using editbin,
as Pete suggested. (It's a bit of a pain that editbin will be required
to bootstrap the compiler, since editbin is not part of the MS.NET CLR
Framework SDK.)
Next problem was with io__putback_char, solved by the patch to lexer.m
which I posted earlier.
Next problem was a "System.UnauthorizedAccessException"
that seems to be related to the fact that io__open_input was opening
files in read/write mode rather than read-only mode.
I have a patch for that one.
Plus a fix for unify_ref and compare_ref in runtime/mercury_il.il,
and lots of minor tweeks to the Mmakefiles and to tools/bootcheck.
Here is the diff in case anyone wants to duplicate my efforts.
I won't commit these changes yet. I will clean these patches up
for proper submission later.
We're getting close now. But it's pretty slow. Building the stage 2
dependencies has taken 25 minutes now and is still going. I'm going
to get some sleep ;-)
cvs server: Diffing .
cvs server: Diffing analysis
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/doc
cvs server: Diffing boehm_gc/include
cvs server: Diffing boehm_gc/include/private
cvs server: Diffing boehm_gc/tests
cvs server: Diffing browser
Index: browser/.cvsignore
===================================================================
RCS file: /home/mercury1/repository/mercury/browser/.cvsignore,v
retrieving revision 1.17
diff -u -d -u -r1.17 .cvsignore
--- browser/.cvsignore 29 Aug 2002 04:37:04 -0000 1.17
+++ browser/.cvsignore 14 Feb 2003 20:19:40 -0000
@@ -1,3 +1,5 @@
+*.il
+*.pdb
*.dep
*.c
*.d
cvs server: Diffing bytecode
cvs server: Diffing compiler
Index: compiler/.cvsignore
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/.cvsignore,v
retrieving revision 1.20
diff -u -d -u -r1.20 .cvsignore
--- compiler/.cvsignore 10 Oct 2002 06:01:48 -0000 1.20
+++ compiler/.cvsignore 14 Feb 2003 20:19:40 -0000
@@ -1,3 +1,5 @@
+*.il
+*.pdb
*.c
*.d
*.h
Index: compiler/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/Mmakefile,v
retrieving revision 1.66
diff -u -d -u -r1.66 Mmakefile
--- compiler/Mmakefile 13 Feb 2003 08:28:42 -0000 1.66
+++ compiler/Mmakefile 14 Feb 2003 20:19:40 -0000
@@ -163,12 +163,16 @@
$(MC_PROG).depend: regenerate_preprocessed_files Mercury.modules
+ifneq ($(findstring il,$(GRADE)),il)
+# XXX This doesn't work for .NET, so currently it is disabled
+# for the `il' grades.
# This directory contains source files for which the module
# name doesn't match the file name, so smart recompilation
# won't work without the Mercury.modules file.
.PHONY: Mercury.modules
Mercury.modules:
$(MC) -f *.m
+endif
.PHONY: all
all: mercury
@@ -185,9 +189,18 @@
LN = ln
-mercury_compile: $(MC_PROG)
+ifneq ("$(EXT_FOR_EXE)","")
+.PHONY: mercury_compile
+mercury_compile: mercury_compile$(EXT_FOR_EXE)
+endif
+
+mercury_compile$(EXT_FOR_EXE): $(MC_PROG)$(EXT_FOR_EXE)
rm -f mercury_compile$(EXT_FOR_EXE)
$(LN) $(MC_PROG)$(EXT_FOR_EXE) mercury_compile$(EXT_FOR_EXE)
+ifeq ($(findstring il,$(GRADE)),il)
+ # set the stack size to 100M -- the default of 1M is too low
+ -editbin /nologo /stack:100000000 mercury_compile$(EXT_FOR_EXE)
+endif
libmercury_compile.a: lib$(MC_PROG).a
rm -f libmercury_compile.a
@@ -208,6 +221,8 @@
# (We used to just build mlds_to_gcc.err, but that caused bootstrapping problems
# with the source distribution; using the .c files is little more robust.)
+ifneq ($(findstring il,$(GRADE)),il)
+
.PHONY: depend
depend: mlds_to_gcc.depend
@@ -219,6 +234,7 @@
.PHONY: cs
cs: mlds_to_gcc.c gcc.c
+endif
#-----------------------------------------------------------------------------#
Index: compiler/mercury_compile.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/mercury_compile.m,v
retrieving revision 1.273
diff -u -d -u -r1.273 mercury_compile.m
--- compiler/mercury_compile.m 11 Feb 2003 02:14:26 -0000 1.273
+++ compiler/mercury_compile.m 14 Feb 2003 20:19:40 -0000
@@ -18,8 +18,8 @@
:- import_module io, list.
-:- pred main(io__state, io__state).
-:- mode main(di, uo) is det.
+:- pred real_main(io__state, io__state).
+:- mode real_main(di, uo) is det.
% main(Args).
:- pred main(list(string), io__state, io__state).
@@ -121,7 +121,7 @@
%-----------------------------------------------------------------------------%
-main -->
+real_main -->
gc_init,
% All messages go to stderr
@@ -170,6 +170,9 @@
%-----------------------------------------------------------------------------%
:- pred gc_init(io__state::di, io__state::uo) is det.
+
+% This version is only used if there is no matching foreign_proc version.
+gc_init --> [].
:- pragma foreign_proc("C",
gc_init(_IO0::di, _IO::uo),
Index: compiler/passes_aux.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/passes_aux.m,v
retrieving revision 1.51
diff -u -d -u -r1.51 passes_aux.m
--- compiler/passes_aux.m 5 Feb 2003 14:41:14 -0000 1.51
+++ compiler/passes_aux.m 14 Feb 2003 20:19:41 -0000
@@ -524,8 +524,9 @@
%
io__make_temp(TmpFile),
io__call_system_return_signal(
- string__append_list([Command, " > ", TmpFile, " 2>&1"]),
- Result),
+ % XXX FIXME
+ %string__append_list([Command, " > ", TmpFile, " 2>&1"]),
+ Command, Result),
(
{ Result = ok(exited(Status)) },
maybe_write_string(PrintCommand, "% done.\n"),
@@ -633,6 +634,12 @@
).
% Are we compiling in a win32 environment?
+ %
+ % If in doubt, use_win32 should succeed. This is only used to
+ % decide whether to invoke Bourne shell command and shell scripts
+ % directly, or whether to invoke them via `sh -c ...'. The latter
+ % should work correctly in a Unix environment too, but is a little
+ % less efficient since it invokes another process.
:- pred use_win32 is semidet.
:- pragma foreign_proc("C",
use_win32,
@@ -644,6 +651,9 @@
SUCCESS_INDICATOR = 0;
#endif
").
+% The following clause is only used if there is no matching foreign_proc.
+% See comment above for why it is OK to just succeed here.
+use_win32 :- semidet_succeed.
maybe_report_sizes(HLDS) -->
globals__io_lookup_bool_option(statistics, Statistics),
Index: compiler/stack_layout.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/stack_layout.m,v
retrieving revision 1.73
diff -u -d -u -r1.73 stack_layout.m
--- compiler/stack_layout.m 15 Nov 2002 04:50:28 -0000 1.73
+++ compiler/stack_layout.m 14 Feb 2003 20:19:47 -0000
@@ -151,6 +151,11 @@
%---------------------------------------------------------------------------%
+% This version is only used if there is no matching foreign_proc version.
+% XXX why is this implemented in C anyway? Why not just use Mercury?
+concat_string_list(StringsList, _Len, String) :-
+ String = string__append_list(StringsList).
+
:- pred stack_layout__concat_string_list(list(string)::in, int::in,
string::out) is det.
Index: compiler/top_level.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/top_level.m,v
retrieving revision 1.1
diff -u -d -u -r1.1 top_level.m
--- compiler/top_level.m 20 Mar 2002 12:37:29 -0000 1.1
+++ compiler/top_level.m 14 Feb 2003 20:19:47 -0000
@@ -27,6 +27,14 @@
:- include_module mercury_compile.
+:- use_module io.
+:- use_module top_level.mercury_compile.
+:- pred main(io.state::di, io.state::uo) is det.
+
+:- implementation.
+
+main --> top_level.mercury_compile.real_main.
+
:- end_module top_level.
%-----------------------------------------------------------------------------%
cvs server: Diffing compiler/notes
cvs server: Diffing debian
cvs server: Diffing deep_profiler
Index: deep_profiler/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/mercury/deep_profiler/Mmakefile,v
retrieving revision 1.8
diff -u -d -u -r1.8 Mmakefile
--- deep_profiler/Mmakefile 23 Jan 2003 00:24:08 -0000 1.8
+++ deep_profiler/Mmakefile 14 Feb 2003 20:19:47 -0000
@@ -52,13 +52,14 @@
# Add some additional dependencies, so that Mmake knows to remake the
# profiler if one of the libraries changes.
+ifneq ($(findstring il,$(GRADE)),il)
mdprof_cgi: $(RUNTIME_DIR)/lib$(RT_LIB_NAME).$A
mdprof_cgi: $(LIBRARY_DIR)/lib$(STD_LIB_NAME).$A
mdprof_test: $(RUNTIME_DIR)/lib$(RT_LIB_NAME).$A
mdprof_test: $(LIBRARY_DIR)/lib$(STD_LIB_NAME).$A
-# Should also depend on $(BOEHM_GC_DIR)/libgc(_prof).$A, but only
-# if in .gc(.prof) grade; GNU make does not support dynamic dependencies,
-# so just leave it out.
+# XXX Should also depend on $(BOEHM_GC_DIR)/libgc(_prof).$A, but only
+# if in .gc(.prof) grade.
+endif
$(cs_subdir)mdprof_cgi_init.c: $(UTIL_DIR)/mkinit
$(cs_subdir)mdprof_test_init.c: $(UTIL_DIR)/mkinit
cvs server: Diffing deep_profiler/notes
cvs server: Diffing doc
cvs server: Diffing java
cvs server: Diffing java/library
cvs server: Diffing java/runtime
cvs server: Diffing library
Index: library/io.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/io.m,v
retrieving revision 1.290
diff -u -d -u -r1.290 io.m
--- library/io.m 14 Feb 2003 17:22:20 -0000 1.290
+++ library/io.m 14 Feb 2003 20:19:50 -0000
@@ -3621,6 +3621,9 @@
// Likewise for the `writer' field.
System::IO::Stream *stream; // The stream itself
+ System::IO::Stream *raw_stream;
+ // The underlying (unbuffered) stream,
+ // if the stream itself is a BufferedStream.
System::IO::TextReader *reader; // A stream reader for reading it
int putback;
// the next character or byte to read,
@@ -3773,35 +3776,47 @@
static mercury_open(MR_String filename, MR_String openmode,
ML_file_encoding_kind file_encoding)
{
- MR_MercuryFile mf = new MR_MercuryFileStruct();
- System::IO::FileMode fa;
+ MR_MercuryFile mf;
+ System::IO::FileMode mode;
+ System::IO::FileAccess access;
+ System::IO::FileShare share;
System::IO::Stream *stream = 0;
+ static int open_count = 0;
+
+ open_count++;
+ System::Console::Out->WriteLine(System::String::Concat(
+ S""[open: #"", S"":"",
+ filename, S"", "", openmode, S""]""));
try {
- // XXX get this right...
if (System::String::op_Equality(openmode, ""r"")) {
- fa = System::IO::FileMode::Open;
- } else if (System::String::op_Equality(openmode, ""a"")) {
- fa = System::IO::FileMode::Append;
+ // Like '<' in Bourne shell.
+ // Read a file. The file must exist already.
+ mode = System::IO::FileMode::Open;
+ access = System::IO::FileAccess::Read;
} else if (System::String::op_Equality(openmode, ""w"")) {
- fa = System::IO::FileMode::Truncate;
+ // Like '>' in Bourne shell.
+ // Overwrite an existing file, or create a new file.
+ mode = System::IO::FileMode::Create;
+ access = System::IO::FileAccess::Write;
+ } else if (System::String::op_Equality(openmode, ""a"")) {
+ // Like '>>' in Bourne shell.
+ // Append to an existing file, or create a new file.
+ mode = System::IO::FileMode::Append;
+ access = System::IO::FileAccess::Write;
} else {
- MR_String msg;
- msg = System::String::Concat(
+ mercury::runtime::Errors::SORRY(System::String::Concat(
""foreign code for this function, open mode:"",
- openmode);
- mercury::runtime::Errors::SORRY(msg);
-
- // fa = XXX;
+ openmode));
}
- if (fa == System::IO::FileMode::Truncate &&
- !System::IO::File::Exists(filename))
- {
- stream = System::IO::File::Create(filename);
- } else {
- stream = System::IO::File::Open(filename, fa);
- }
+ // For Unix compatibility, we allow files
+ // to be read or written by multiple processes
+ // simultaneously. XXX Is this a good idea?
+ share = System::IO::FileShare::ReadWrite;
+
+ stream = System::IO::File::Open(filename, mode, access, share);
+
} catch (System::IO::IOException* e) {
MR_io_exception = e;
}
@@ -3809,11 +3824,12 @@
if (!stream) {
return 0;
} else {
- stream = new System::IO::BufferedStream(stream);
-
// we initialize the `reader' and `writer' fields to null;
// they will be filled in later if they are needed.
- mf = mercury_file_init(stream, NULL, NULL, file_encoding);
+ mf = mercury_file_init(
+ new System::IO::BufferedStream(stream),
+ NULL, NULL, file_encoding);
+ mf->raw_stream = stream;
return mf;
}
}
@@ -4309,6 +4325,11 @@
static void
mercury_close(MR_MercuryFile mf)
{
+ static int close_count = 0;
+ close_count++;
+ System::Console::Out->WriteLine(System::String::Concat(
+ S""[close: #"", S""]""));
+
if (mf->reader) {
mf->reader->Close();
mf->reader = NULL;
@@ -4319,6 +4340,10 @@
}
mf->stream->Close();
mf->stream = NULL;
+ if (mf->raw_stream) {
+ mf->raw_stream->Close();
+ mf->raw_stream = NULL;
+ }
}
").
Index: library/lexer.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/lexer.m,v
retrieving revision 1.36
diff -u -d -u -r1.36 lexer.m
--- library/lexer.m 9 Jul 2002 01:30:18 -0000 1.36
+++ library/lexer.m 14 Feb 2003 20:19:50 -0000
@@ -38,7 +38,15 @@
; junk(char) % junk character in the input stream
; error(string) % some other invalid token
; io_error(io__error) % error reading from the input stream
- ; eof. % end-of-file
+ ; eof % end-of-file
+ ; integer_dot(int). % the lexer will never return this.
+ % The integer_dot/1 token is used
+ % internally in the lexer, to keep
+ % the grammar LL(1) so that only one
+ % character of pushback is needed.
+ % But the lexer will convert
+ % integer_dot/1 tokens to integer/1
+ % tokens before returning them.
% For every token, we record the line number of the line on
% which the token occurred.
@@ -158,6 +166,9 @@
string__append("I/O error: ", IO_ErrorMessage, String).
lexer__token_to_string(error(Message), String) :-
string__append_list(["illegal token (", Message, ")"], String).
+lexer__token_to_string(integer_dot(Int), String) :-
+ string__int_to_string(Int, IntString),
+ string__append_list(["integer `", IntString, "'."], String).
% We build the tokens up as lists of characters in reverse order.
% When we get to the end of each token, we call
@@ -171,13 +182,25 @@
lexer__get_token_list(Tokens) -->
lexer__get_token(Token, Context),
- ( { Token = eof } ->
+ lexer__get_token_list_2(Token, Context, Tokens).
+
+:- pred lexer__get_token_list_2(token, token_context, token_list,
+ io__state, io__state).
+:- mode lexer__get_token_list_2(in, in, out, di, uo) is det.
+lexer__get_token_list_2(Token0, Context0, Tokens) -->
+ ( { Token0 = eof } ->
{ Tokens = token_nil }
- ; { Token = end ; Token = error(_) ; Token = io_error(_) } ->
- { Tokens = token_cons(Token, Context, token_nil) }
+ ; { Token0 = end ; Token0 = error(_) ; Token0 = io_error(_) } ->
+ { Tokens = token_cons(Token0, Context0, token_nil) }
+ ; { Token0 = integer_dot(Int) } ->
+ lexer__get_context(Context1),
+ lexer__get_dot(Token1),
+ lexer__get_token_list_2(Token1, Context1, Tokens1),
+ { Tokens = token_cons(integer(Int), Context0, Tokens1) }
;
- { Tokens = token_cons(Token, Context, Tokens1) },
- lexer__get_token_list(Tokens1)
+ lexer__get_token(Token1, Context1),
+ lexer__get_token_list_2(Token1, Context1, Tokens1),
+ { Tokens = token_cons(Token0, Context0, Tokens1) }
).
lexer__string_get_token_list(String, Tokens) -->
@@ -1741,8 +1764,17 @@
lexer__get_float_decimals([Char, '.' | Chars], Token)
;
io__putback_char(Char),
- io__putback_char('.'),
- { lexer__rev_char_list_to_int(Chars, 10, Token) }
+ % We can't putback the ".", because io__putback_char
+ % only guarantees one character of pushback.
+ % So instead, we return an `integer_dot' token;
+ % the main loop of lexer__get_token_list_2 will
+ % handle this appropriately.
+ { lexer__rev_char_list_to_int(Chars, 10, Token0) },
+ { Token0 = integer(Int) ->
+ Token = integer_dot(Int)
+ ;
+ Token = Token0
+ }
)
).
Index: library/parser.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/parser.m,v
retrieving revision 1.39
diff -u -d -u -r1.39 parser.m
--- library/parser.m 12 Feb 2003 04:58:24 -0000 1.39
+++ library/parser.m 14 Feb 2003 20:19:50 -0000
@@ -866,6 +866,7 @@
parser__could_start_term(error(_), no).
parser__could_start_term(io_error(_), no).
parser__could_start_term(eof, no).
+parser__could_start_term(integer_dot(_), no).
%-----------------------------------------------------------------------------%
cvs server: Diffing profiler
Index: profiler/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/mercury/profiler/Mmakefile,v
retrieving revision 1.22
diff -u -d -u -r1.22 Mmakefile
--- profiler/Mmakefile 23 Jan 2003 00:24:12 -0000 1.22
+++ profiler/Mmakefile 14 Feb 2003 20:19:50 -0000
@@ -35,11 +35,12 @@
# Add some additional dependencies, so that Mmake knows to remake the
# profiler if one of the libraries changes.
+ifneq ($(findstring il,$(GRADE)),il)
mercury_profile: $(RUNTIME_DIR)/lib$(RT_LIB_NAME).$A
mercury_profile: $(LIBRARY_DIR)/lib$(STD_LIB_NAME).$A
-# Should also depend on $(BOEHM_GC_DIR)/libgc(_prof).$A, but only
-# if in .gc(.prof) grade; GNU make does not support dynamic dependencies,
-# so just leave it out.
+# XXX Should also depend on $(BOEHM_GC_DIR)/libgc(_prof).$A, but only
+# if in .gc(.prof) grade.
+endif
$(cs_subdir)mercury_profile_init.c: $(UTIL_DIR)/mkinit
cvs server: Diffing robdd
cvs server: Diffing runtime
Index: runtime/mercury_il.il
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_il.il,v
retrieving revision 1.18
diff -u -d -u -r1.18 mercury_il.il
--- runtime/mercury_il.il 10 Feb 2003 18:03:16 -0000 1.18
+++ runtime/mercury_il.il 14 Feb 2003 20:19:50 -0000
@@ -257,6 +257,7 @@
get_ftn_ptr_ref_compare() {
ldftn void ['mercury'] 'mercury'.'private_builtin__cpp_code'.'mercury_code'::
do_compare__ref_1_0(
+ class [mscorlib]System.Object[],
class [mscorlib]System.Object[]&,
class [mscorlib]System.Object, class [mscorlib]System.Object)
ret
@@ -266,6 +267,7 @@
get_ftn_ptr_ref_unify() {
ldftn int32 ['mercury'] 'mercury'.'private_builtin__cpp_code'.'mercury_code'::
do_unify__ref_1_0(
+ class [mscorlib]System.Object[],
class [mscorlib]System.Object, class [mscorlib]System.Object)
ret
}
cvs server: Diffing runtime/GETOPT
cvs server: Diffing runtime/machdeps
cvs server: Diffing samples
Index: samples/interpreter.m
===================================================================
RCS file: /home/mercury1/repository/mercury/samples/interpreter.m,v
retrieving revision 1.5
diff -u -d -u -r1.5 interpreter.m
--- samples/interpreter.m 4 Nov 1999 03:16:52 -0000 1.5
+++ samples/interpreter.m 14 Feb 2003 20:19:50 -0000
@@ -23,6 +23,8 @@
:- interface.
:- import_module io.
+:- type zzzzzz ---> aaa ; bbb.
+
:- pred main(io__state, io__state).
:- mode main(di, uo) is det.
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 samples/solutions
cvs server: Diffing samples/tests
cvs server: Diffing samples/tests/c_interface
cvs server: Diffing samples/tests/c_interface/c_calls_mercury
cvs server: Diffing samples/tests/c_interface/cplusplus_calls_mercury
cvs server: Diffing samples/tests/c_interface/mercury_calls_c
cvs server: Diffing samples/tests/c_interface/mercury_calls_cplusplus
cvs server: Diffing samples/tests/c_interface/mercury_calls_fortran
cvs server: Diffing samples/tests/c_interface/simpler_c_calls_mercury
cvs server: Diffing samples/tests/c_interface/simpler_cplusplus_calls_mercury
cvs server: Diffing samples/tests/diff
cvs server: Diffing samples/tests/muz
cvs server: Diffing samples/tests/rot13
cvs server: Diffing samples/tests/solutions
cvs server: Diffing samples/tests/toplevel
cvs server: Diffing scripts
cvs server: Diffing tests
cvs server: Diffing tests/benchmarks
cvs server: Diffing tests/debugger
cvs server: Diffing tests/debugger/declarative
cvs server: Diffing tests/dppd
cvs server: Diffing tests/general
cvs server: Diffing tests/general/accumulator
cvs server: Diffing tests/general/string_format
cvs server: Diffing tests/general/structure_reuse
cvs server: Diffing tests/grade_subdirs
cvs server: Diffing tests/hard_coded
cvs server: Diffing tests/hard_coded/exceptions
cvs server: Diffing tests/hard_coded/purity
cvs server: Diffing tests/hard_coded/sub-modules
cvs server: Diffing tests/hard_coded/typeclasses
cvs server: Diffing tests/invalid
cvs server: Diffing tests/invalid/purity
cvs server: Diffing tests/misc_tests
cvs server: Diffing tests/mmc_make
cvs server: Diffing tests/mmc_make/lib
cvs server: Diffing tests/recompilation
cvs server: Diffing tests/tabling
cvs server: Diffing tests/term
cvs server: Diffing tests/valid
cvs server: Diffing tests/warnings
cvs server: Diffing tools
Index: tools/bootcheck
===================================================================
RCS file: /home/mercury1/repository/mercury/tools/bootcheck,v
retrieving revision 1.145
diff -u -d -u -r1.145 bootcheck
--- tools/bootcheck 26 Jan 2003 13:41:29 -0000 1.145
+++ tools/bootcheck 14 Feb 2003 20:19:59 -0000
@@ -323,9 +323,11 @@
case $use_subdirs in
yes) cs_subdir=Mercury/cs/
ss_subdir=Mercury/ss/
+ ils_subdir=Mercury/ils/
;;
no) cs_subdir=
ss_subdir=
+ ils_subdir=
;;
esac
@@ -342,6 +344,17 @@
# then we need to copy the profiler directory.
# So to be safe, we just enable this by default.
copy_profiler=true
+ ;;
+esac
+case $grade in
+ il|ilc) target_ext=il
+ target_subdir=$ils_subdir
+ target_opt=
+ # See comment above
+ copy_profiler=true
+ # The IL back-end generates native Windows executables,
+ # which do not understand symlinks. So we need to use cp.
+ use_cp=true
;;
esac
cvs server: Diffing trace
cvs server: Diffing util
cvs server: Diffing vim
cvs server: Diffing vim/after
cvs server: Diffing vim/ftplugin
cvs server: Diffing vim/syntax
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
The University of Melbourne | of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list