Hi,

I did some experiments to get parrot compile on Borland C++
Builder. I got it working until the linking of libparrot.lib (and with
some ugly tricks even got a running make test). The attached patch are
the Changes to Configure and Makefiles which are needed to get there.

Before I want to commit this changes I need some people on diffrent
architectures to test this patch and report problems.

Following things were done:
- s,/,\${slash},g
- remove of && in the makefiles:
  I introduced $(MAKE_C) which calls a perlscript which recursively
  calls $(MAKE) to get rid of 
  cd doc && make && cd ..
  The few cases where && is not used for descending into
  subdirectories it is replaced with ${make_and} which expands to
  && on everything but bcc32
- TLIB needs the options after the outputfile so I introduced
  ${ar_extra}
- The ${link} variable is set to bcc32

The final problem for getting make test running on BCC is the
name-clash key.c and classes/key.c (and some others like this). There
are two possible way to solve this problem:
- rename either key.c or classes/key.c
- build a seperate classes.lib

The patch works on Win32/BCC32 (until linking stage) with
perl Configure --jitcapable=0 --cgoto=0 --cc=bcc32
and on Linux/i386

bye
bö

Index: config/auto/sizes.pl
===================================================================
RCS file: /cvs/public/parrot/config/auto/sizes.pl,v
retrieving revision 1.7
diff -u -r1.7 sizes.pl
--- config/auto/sizes.pl	27 Apr 2003 07:36:44 -0000	1.7
+++ config/auto/sizes.pl	18 Sep 2003 00:31:18 -0000
@@ -118,7 +118,7 @@
     };
 
     # clear int8_t on error
-    if($@) {
+    if($@ || !exists $results{hugeintval}) {
       Configure::Data->set('int8_t' => undef);
       next;
     }
Index: config/gen/makefiles/imcc.in
===================================================================
RCS file: /cvs/public/parrot/config/gen/makefiles/imcc.in,v
retrieving revision 1.29
diff -u -r1.29 imcc.in
--- config/gen/makefiles/imcc.in	12 Sep 2003 21:30:42 -0000	1.29
+++ config/gen/makefiles/imcc.in	18 Sep 2003 00:31:18 -0000
@@ -44,7 +44,7 @@
 # do it for you.
 #
 ${make_set_make}
-
+MAKE_C = ${make_c}
 
 all : flags_dummy imcc${exe}
 
@@ -52,8 +52,8 @@
 	echo Compiling with:
 	@$(PERL) ../../tools/dev/cc_flags.pl ./CFLAGS echo $(CFLAGS) xx$(O) -c xx.c
 
-../../$(PARROTLIB):
-	cd ..${slash}.. && $(MAKE) $(PARROTLIB) && cd languages${slash}imcc
+..${slash}..${slash}$(PARROTLIB):
+	$(MAKE_C) ..${slash}.. $(PARROTLIB)
 
 # The .flag files are needed because we are keeping some derived files in CVS,
 # which does not keep accurate timestamps on the files, relative to each other.
Index: config/gen/makefiles/languages.in
===================================================================
RCS file: /cvs/public/parrot/config/gen/makefiles/languages.in,v
retrieving revision 1.3
diff -u -r1.3 languages.in
--- config/gen/makefiles/languages.in	15 Sep 2003 07:23:07 -0000	1.3
+++ config/gen/makefiles/languages.in	18 Sep 2003 00:31:18 -0000
@@ -1,15 +1,17 @@
-MAKE = ${make}
+PERL = ${perl}
+${make_set_make}
+MAKE_C = ${make_c}
 
 all : imcc jako scheme befunge bf cola ook perl6
 
-test : imcc.test regex.test befunge.test bf.test ook.test perl6.test
+test : imcc.test scheme.test regex.test befunge.test bf.test ook.test perl6.test
 
 # Could someone please comment on the reason for all these *.dummy
 # targets?
 imcc: imcc.dummy
 
 imcc.dummy:
-	cd imcc && $(MAKE) && cd ..
+	$(MAKE_C) imcc
 
 imcc.test:
 	cd imcc && $(MAKE) test && cd ..
@@ -17,62 +19,65 @@
 jako: jako.dummy imcc.dummy
 
 jako.dummy:
-	cd jako && $(MAKE) && cd ..
+	$(MAKE_C) jako
 
 scheme: scheme.dummy
 
 scheme.dummy:
-	cd scheme && $(MAKE) && cd ..
+	$(MAKE_C) scheme
+
+scheme.test:
+	$(MAKE_C) scheme test
 
 regex: regex.dummy
 
 regex.dummy:
-	cd regex && $(MAKE) && cd ..
+	$(MAKE_C) regex
 
 regex.test :
-	cd regex && $(MAKE) test && cd ..
+	$(MAKE_C) regex test
 
 befunge : befunge.dummy
 
 befunge.dummy:
-	cd befunge && $(MAKE) && cd ..
+	$(MAKE_C) befunge
 
 befunge.test:
-	cd befunge && $(MAKE) test && cd ..
+	$(MAKE_C) befunge test
 
 bf : bf.dummy
 
 bf.dummy:
-	cd bf && $(MAKE) && cd ..
+	$(MAKE_C) bf
 
 bf.test:
-	cd bf && $(MAKE) test && cd ..
+	$(MAKE_C) bf test
 
 cola : cola.dummy
 
 cola.dummy:
-	cd cola && $(MAKE) && cd ..
+	$(MAKE_C) cola
 
 ook : ook.dummy
 
 ook.dummy:
-	cd ook && $(MAKE) && cd ..
+	$(MAKE_C) ook
 
 ook.test:
-	cd ook && $(MAKE) test && cd ..
+	$(MAKE_C) ook test
 
 perl6 : perl6.dummy
 
 perl6.dummy:
-	cd perl6 && $(MAKE) && cd ..
+	$(MAKE_C) perl6
 
 perl6.test:
-	cd perl6 && $(MAKE) test && cd ..
+	$(MAKE_C) perl6 test
 
 clean:
-	cd imcc && $(MAKE) clean && cd ..
-	cd jako && $(MAKE) clean && cd ..
-	cd scheme && $(MAKE) clean && cd ..
+	$(MAKE_C) imcc clean
+	$(MAKE_C) jako clean
+	$(MAKE_C) scheme clean
 
 update:
 	cvs -q update -dP
Index: config/gen/makefiles/root.in
===================================================================
RCS file: /cvs/public/parrot/config/gen/makefiles/root.in,v
retrieving revision 1.120
diff -u -r1.120 root.in
--- config/gen/makefiles/root.in	15 Sep 2003 08:59:21 -0000	1.120
+++ config/gen/makefiles/root.in	18 Sep 2003 00:31:19 -0000
@@ -1,7 +1,7 @@
 VERSION=${VERSION}${DEVEL}
 
 BUILDPREFIX =
-PREFIX = /usr/local/parrot/0.0.10
+PREFIX = /usr${slash}local${slash}parrot/0.0.10
 EXEC_PREFIX = $(PREFIX)
 BINDIR = $(EXEC_PREFIX)/bin
 LIBDIR = $(EXEC_PREFIX)/lib
@@ -20,7 +20,7 @@
 LD_OUT = ${ld_out}
 LD_SHARED_FLAGS=${ld_shared_flags}
 
-INC=./${inc}
+INC=.${slash}${inc}
 
 NONGEN_HEADERS = ${nongen_headers}
 
@@ -36,21 +36,27 @@
 #
 ###############################################################################
 
-GEN_MAKEFILES = Makefile classes/Makefile languages/Makefile docs/Makefile \
-	languages/jako/Makefile languages/miniperl/Makefile \
-	languages/scheme/Makefile languages/befunge/Makefile \
-	languages/bf/Makefile languages/imcc/Makefile \
-	languages/ook/Makefile languages/perl6/Makefile
-
-GEN_CONFIGS  = include/parrot/config.h include/parrot/platform.h \
-	include/parrot/platform_interface.h \
-	include/parrot/has_header.h \
-	include/parrot/feature.h \
-	lib/Parrot/Config.pm lib/Parrot/PMC.pm platform.c \
-	include/parrot/core_pmcs.h core_pmcs.c \
-	CFLAGS languages/imcc/CFLAGS \
+GEN_MAKEFILES = Makefile classes${slash}Makefile languages${slash}Makefile \
+	docs${slash}Makefile languages${slash}jako${slash}Makefile \
+	languages${slash}miniperl${slash}Makefile \
+	languages${slash}scheme${slash}Makefile \
+	languages${slash}befunge${slash}Makefile \
+	languages${slash}bf${slash}Makefile \
+	languages${slash}imcc${slash}Makefile \
+	languages${slash}ook${slash}Makefile \
+	languages${slash}perl6${slash}Makefile
+
+GEN_CONFIGS  = include${slash}parrot${slash}config.h \
+	include${slash}parrot${slash}platform.h \
+	include${slash}parrot${slash}platform_interface.h \
+	include${slash}parrot${slash}has_header.h \
+	include${slash}parrot${slash}feature.h \
+	lib${slash}Parrot${slash}Config.pm \
+	lib${slash}Parrot${slash}PMC.pm platform.c \
+	include${slash}parrot${slash}core_pmcs.h core_pmcs.c \
+	CFLAGS languages${slash}imcc${slash}CFLAGS \
 	libparrot.def \
-	runtime/parrot/include/*.pasm
+	runtime${slash}parrot${slash}include${slash}*.pasm
 
 STICKY_FILES = $(GEN_CONFIGS) $(GEN_MAKEFILES) myconfig
 
@@ -67,14 +73,14 @@
 
 GEN_OPSFILES =
 
-GEN_HEADERS = $(INC)/vtable.h $(INC)/oplib/core_ops.h \
-	$(INC)/oplib/core_ops_prederef.h \
-	$(INC)/oplib/core_ops_switch.h $(INC)/jit_emit.h
+GEN_HEADERS = $(INC)${slash}vtable.h $(INC)${slash}oplib${slash}core_ops.h \
+	$(INC)${slash}oplib${slash}core_ops_prederef.h \
+	$(INC)${slash}oplib${slash}core_ops_switch.h $(INC)${slash}jit_emit.h
 
 GEN_SOURCES = core_ops.c core_ops_prederef.c fingerprint.c nci.c \
-              core_ops_switch.c jit_cpu.c exec_cpu.c
+	core_ops_switch.c jit_cpu.c exec_cpu.c
 
-GEN_MODULES = lib/Parrot/OpLib/core.pm
+GEN_MODULES = lib${slash}Parrot${slash}OpLib${slash}core.pm
 
 FLUID_FILES = $(GEN_OPSFILES) $(GEN_HEADERS) $(GEN_SOURCES) $(GEN_MODULES)
 
@@ -94,13 +100,13 @@
 
 CLASS_O_FILES = ${pmc_classes_o}
 
-ENCODING_O_FILES = encodings/singlebyte$(O) encodings/utf8$(O) \
-	encodings/utf16$(O) encodings/utf32$(O)
+ENCODING_O_FILES = encodings${slash}singlebyte$(O) encodings${slash}utf8$(O) \
+	encodings${slash}utf16$(O) encodings${slash}utf32$(O)
 
-CHARTYPE_O_FILES = chartypes/unicode$(O) chartypes/usascii$(O)
+CHARTYPE_O_FILES = chartypes${slash}unicode$(O) chartypes${slash}usascii$(O)
 
-IO_O_FILES = io/io$(O) io/io_buf$(O) io/io_unix$(O) io/io_win32$(O) \
-	io/io_stdio$(O) io/io_passdown$(O)
+IO_O_FILES = io${slash}io$(O) io${slash}io_buf$(O) io${slash}io_unix$(O) \
+	io${slash}io_win32$(O) io${slash}io_stdio$(O) io${slash}io_passdown$(O)
 
 INTERP_O_FILES = exceptions$(O) global_setup$(O) interpreter$(O) parrot$(O) \
 	register$(O) core_ops$(O) core_ops_prederef$(O) core_ops_switch$(O) \
@@ -159,7 +165,7 @@
 PINFO = pbc_info${exe}
 PDB = pdb${exe}
 
-IMCC_PROG = languages/imcc/imcc${exe}
+IMCC_PROG = languages${slash}imcc${slash}imcc${exe}
 
 # lclint has changed name to splint at v3.0
 LINT = splint
@@ -186,9 +192,10 @@
 # do it for you.
 #
 ${make_set_make}
+MAKE_C = ${make_c}
 
 .c$(O) :
-	@$(PERL) tools/dev/cc_flags.pl ./CFLAGS $(CC) $(CFLAGS) ${cc_o_out}$@ -c $<
+	@$(PERL) tools${slash}dev${slash}cc_flags.pl .${slash}CFLAGS $(CC) $(CFLAGS) ${cc_o_out}$@ -c $<
 
 all : flags_dummy $(TEST_PROG) $(IMCC_PROG) docs
 
@@ -198,25 +205,25 @@
 
 flags_dummy:
 	echo Compiling with:
-	@$(PERL) tools/dev/cc_flags.pl ./CFLAGS echo $(CFLAGS) xx$(O) -c xx.c
+	@$(PERL) tools${slash}dev${slash}cc_flags.pl .${slash}CFLAGS echo $(CFLAGS) xx$(O) -c xx.c
 
 
-mops : examples/assembly/mops${exe} examples/mops/mops${exe}
+mops : examples${slash}assembly${slash}mops${exe} examples${slash}mops${slash}mops${exe}
 
-$(TEST_PROG) : test_main$(O) $(GEN_HEADERS) $(LIBPARROT) lib/Parrot/OpLib/core.pm
+$(TEST_PROG) : test_main$(O) $(GEN_HEADERS) $(LIBPARROT) lib${slash}Parrot${slash}OpLib${slash}core.pm
 	$(LINK) ${ld_out}$(TEST_PROG) $(LINKFLAGS) test_main$(O) $(LIBPARROT) $(C_LIBS)
 	$(PERL) -MExtUtils::Command -e mv $(TEST_PROG) test_main$(EXE)
 
 lib_deps_object : $(O_FILES)
-	$(PERL) tools/dev/lib_deps.pl object $(O_FILES)
+	$(PERL) tools${slash}dev${slash}lib_deps.pl object $(O_FILES)
 
 lib_deps_source : $(GENERAL_H_FILES)
-	$(PERL) tools/dev/lib_deps.pl source all_source
+	$(PERL) tools${slash}dev${slash}lib_deps.pl source all_source
 
 lib_deps : lib_deps_object lib_deps_source
 
 check_source : $(GENERAL_H_FILES)
-	$(PERL) tools/dev/check_source_standards.pl all_source
+	$(PERL) tools${slash}dev${slash}check_source_standards.pl all_source
 
 ###############################################################################
 #
@@ -224,19 +231,19 @@
 #
 ###############################################################################
 
-shared : $(GEN_HEADERS) blib/lib/libparrot$(SO) $(LIBPARROT)
+shared : $(GEN_HEADERS) blib${slash}lib${slash}libparrot$(SO) $(LIBPARROT)
 static : $(GEN_HEADERS) $(LIBPARROT)
 
 $(LIBPARROT) : $(O_FILES)
-	$(MKDIR) blib blib/lib
-	$(AR_CR) ${ar_out}$@ $(O_FILES)
+	$(MKDIR) blib blib${slash}lib
+	$(AR_CR) ${ar_out}$@ ${ar_extra} $(O_FILES)
 	$(RANLIB) $@
 
-blib/lib/libparrot$(SO) : $(O_FILES)
-	$(MKDIR) blib blib/lib
-	$(LD) $(LD_SHARED) $(LD_SHARED_FLAGS) $(LDFLAGS) $(LD_OUT)blib/lib/libparrot$(SO) $(O_FILES) $(C_LIBS)
+blib${slash}lib${slash}libparrot$(SO) : $(O_FILES)
+	$(MKDIR) blib blib${slash}lib
+	$(LD) $(LD_SHARED) $(LD_SHARED_FLAGS) $(LDFLAGS) $(LD_OUT)blib${slash}lib${slash}libparrot$(SO) $(O_FILES) $(C_LIBS)
 
-$(TEST_PROG_SO) : test_main$(O) blib/lib/libparrot$(SO) lib/Parrot/OpLib/core.pm
+$(TEST_PROG_SO) : test_main$(O) blib${slash}lib${slash}libparrot$(SO) lib${slash}Parrot${slash}OpLib${slash}core.pm
 	$(LINK) $(LINKFLAGS) $(LD_OUT)$(TEST_PROG) test_main$(O) $(LIBPARROT) $(C_LIBS)
 
 # XXX The dependancies on SO.MAJOR.MINOR and SO.VERSION are removed
@@ -313,10 +320,10 @@
 
 test_main$(O) : test_main.c $(GENERAL_H_FILES)
 
-lib/Parrot/OpLib/core.pm : $(OPS_FILES) ops2pm.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm
+lib${slash}Parrot${slash}OpLib${slash}core.pm : $(OPS_FILES) ops2pm.pl lib${slash}Parrot${slash}OpsFile.pm lib${slash}Parrot${slash}Op.pm
 	$(PERL) ops2pm.pl $(OPS_FILES)
 
-fingerprint.c : fingerprint_c.pl lib/Parrot/OpLib/core.pm
+fingerprint.c : fingerprint_c.pl lib${slash}Parrot${slash}OpLib${slash}core.pm
 	$(PERL) fingerprint_c.pl > fingerprint.c
 
 ###############################################################################
@@ -325,23 +332,23 @@
 #
 ###############################################################################
 
-examples/assembly/mops.pbc : examples/assembly/mops.pasm
-	cd examples && cd assembly && $(MAKE) mops.pbc PERL=$(PERL) && cd .. && cd ..
+examples${slash}assembly${slash}mops.pbc : examples${slash}assembly${slash}mops.pasm
+	$(MAKE_C) examples${slash}assembly mops.pbc
 
-examples/assembly/mops.c : examples/assembly/mops.pbc pbc2c.pl
-	$(PERL) pbc2c.pl examples/assembly/mops.pbc > examples/assembly/mops.c
+examples${slash}assembly${slash}mops.c : examples${slash}assembly${slash}mops.pbc pbc2c.pl
+	$(PERL) pbc2c.pl examples${slash}assembly${slash}mops.pbc > examples${slash}assembly${slash}mops.c
 
-examples/assembly/mops${exe} : examples/assembly/mops$(O) $(LIBPARROT)
-	$(LINK) $(LINKFLAGS) ${ld_out}examples/assembly/mops${exe} examples/assembly/mops$(O) $(LIBPARROT) $(C_LIBS)
+examples${slash}assembly${slash}mops${exe} : examples${slash}assembly${slash}mops$(O) $(LIBPARROT)
+	$(LINK) $(LINKFLAGS) ${ld_out}examples${slash}assembly${slash}mops${exe} examples${slash}assembly${slash}mops$(O) $(LIBPARROT) $(C_LIBS)
 
-examples/assembly/life.pbc : examples/assembly/life.pasm
-	cd examples && cd assembly && $(MAKE) life.pbc PERL=$(PERL) && cd .. && cd ..
+examples${slash}assembly${slash}life.pbc : examples${slash}assembly${slash}life.pasm
+	$(MAKE_C) examples${slash}assembly life.pbc
 
-examples/assembly/life.c : examples/assembly/life.pbc pbc2c.pl
-	$(PERL) pbc2c.pl examples/assembly/life.pbc > examples/assembly/life.c
+examples${slash}assembly${slash}life.c : examples${slash}assembly${slash}life.pbc pbc2c.pl
+	$(PERL) pbc2c.pl examples${slash}assembly${slash}life.pbc > examples${slash}assembly${slash}life.c
 
-examples/assembly/life${exe} : examples/assembly/life$(O) $(LIBPARROT)
-	$(LINK) $(LINKFLAGS) ${ld_out}examples/assembly/life${exe} examples/assembly/life$(O) $(LIBPARROT) $(C_LIBS)
+examples${slash}assembly${slash}life${exe} : examples${slash}assembly${slash}life$(O) $(LIBPARROT)
+	$(LINK) $(LINKFLAGS) ${ld_out}examples${slash}assembly${slash}life${exe} examples${slash}assembly${slash}life$(O) $(LIBPARROT) $(C_LIBS)
 
 ###############################################################################
 #
@@ -349,11 +356,11 @@
 #
 ###############################################################################
 
-examples/mops/mops$(O) : examples/mops/mops.c
+examples${slash}mops${slash}mops$(O) : examples${slash}mops${slash}mops.c
 
-examples/mops/mops${exe} : examples/mops/mops$(O)
-	$(LINK) $(LINKFLAGS) ${ld_out}examples/mops/mops${exe} \
-	examples/mops/mops$(O) $(LIBPARROT) $(C_LIBS)
+examples${slash}mops${slash}mops${exe} : examples${slash}mops${slash}mops$(O)
+	$(LINK) $(LINKFLAGS) ${ld_out}examples${slash}mops${slash}mops${exe} \
+	examples${slash}mops${slash}mops$(O) $(LIBPARROT) $(C_LIBS)
 
 
 ###############################################################################
@@ -372,15 +379,15 @@
 
 list$(O) : $(GENERAL_H_FILES)
 
-jit$(O) : $(GENERAL_H_FILES) ${jit_h} $(INC)/jit_emit.h
+jit$(O) : $(GENERAL_H_FILES) ${jit_h} $(INC)${slash}jit_emit.h
 
 jit_debug$(O) : $(GENERAL_H_FILES) ${jit_h}
 
-jit_cpu$(O): $(GENERAL_H_FILES) ${jit_h} $(INC)/jit_emit.h
+jit_cpu$(O): $(GENERAL_H_FILES) ${jit_h} $(INC)${slash}jit_emit.h
 
-exec$(O) : $(GENERAL_H_FILES) ${exec_h} ${jit_h} $(INC)/jit_emit.h
+exec$(O) : $(GENERAL_H_FILES) ${exec_h} ${jit_h} $(INC)${slash}jit_emit.h
 
-exec_cpu$(O): $(GENERAL_H_FILES) ${exec_h} ${jit_h} $(INC)/jit_emit.h
+exec_cpu$(O): $(GENERAL_H_FILES) ${exec_h} ${jit_h} $(INC)${slash}jit_emit.h
 
 exec_start$(O) : $(GENERAL_H_FILES) ${exec_h}
 
@@ -402,7 +409,7 @@
 
 trace$(O) : $(GENERAL_H_FILES)
 
-debug$(O) : $(GENERAL_H_FILES) $(INC)/debug.h
+debug$(O) : $(GENERAL_H_FILES) $(INC)${slash}debug.h
 
 method_util$(O) : $(GENERAL_H_FILES)
 
@@ -414,37 +421,37 @@
 
 encoding$(O) : $(GENERAL_H_FILES)
 
-chartype/usascii$(O) : $(GENERAL_H_FILES)
+chartype${slash}usascii$(O) : $(GENERAL_H_FILES)
 
-chartype/unicode$(O) : $(GENERAL_H_FILES)
+chartype${slash}unicode$(O) : $(GENERAL_H_FILES)
 
 dynext$(O) : $(GENERAL_H_FILES)
 
 exceptions$(O) : $(GENERAL_H_FILES)
 
-encoding/singlebyte$(O) : $(GENERAL_H_FILES)
+encoding${slash}singlebyte$(O) : $(GENERAL_H_FILES)
 
-encoding/utf8$(O) : $(GENERAL_H_FILES)
+encoding${slash}utf8$(O) : $(GENERAL_H_FILES)
 
-encoding/utf16$(O) : $(GENERAL_H_FILES)
+encoding${slash}utf16$(O) : $(GENERAL_H_FILES)
 
-encoding/utf32$(O) : $(GENERAL_H_FILES)
+encoding${slash}utf32$(O) : $(GENERAL_H_FILES)
 
 events$(O) : $(GENERAL_H_FILES)
 
 interpreter$(O) : interpreter.c $(GENERAL_H_FILES) ${jit_h}
 
-io/io$(O) : $(GENERAL_H_FILES) io/io_private.h
+io${slash}io$(O) : $(GENERAL_H_FILES) io${slash}io_private.h
 
-io/io_buf$(O) : $(GENERAL_H_FILES) io/io_private.h
+io${slash}io_buf$(O) : $(GENERAL_H_FILES) io${slash}io_private.h
 
-io/io_unix$(O) : $(GENERAL_H_FILES) io/io_private.h
+io${slash}io_unix$(O) : $(GENERAL_H_FILES) io${slash}io_private.h
 
-io/io_win32$(O) : $(GENERAL_H_FILES) io/io_private.h
+io${slash}io_win32$(O) : $(GENERAL_H_FILES) io${slash}io_private.h
 
-io/io_stdio$(O) : $(GENERAL_H_FILES) io/io_private.h
+io${slash}io_stdio$(O) : $(GENERAL_H_FILES) io${slash}io_private.h
 
-io/io_passdown$(O) : $(GENERAL_H_FILES) io/io_private.h
+io${slash}io_passdown$(O) : $(GENERAL_H_FILES) io${slash}io_private.h
 
 memory$(O) : $(GENERAL_H_FILES)
 
@@ -466,7 +473,7 @@
 
 tsq$(O) : $(GENERAL_H_FILES)
 
-embed$(O) : $(GENERAL_H_FILES) $(INC)/debug.h
+embed$(O) : $(GENERAL_H_FILES) $(INC)${slash}debug.h
 
 core_ops$(O) : $(GENERAL_H_FILES) core_ops.c
 
@@ -482,17 +489,17 @@
 	$(PERL) build_nativecall.pl call_list.txt
 
 #core_ops depends upon config.h so that it gets updated along with updates to config.h's version numbers
-core_ops.c $(INC)/oplib/core_ops.h : $(OPS_FILES) ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm $(INC)/config.h
+core_ops.c $(INC)${slash}oplib${slash}core_ops.h : $(OPS_FILES) ops2c.pl lib${slash}Parrot${slash}OpsFile.pm lib${slash}Parrot${slash}Op.pm $(INC)${slash}config.h
 	$(PERL) ops2c.pl C $(OPS_FILES)
 
 core_ops_prederef$(O) : $(GENERAL_H_FILES) core_ops_prederef.c
 
-core_ops_prederef.c $(INC)/oplib/core_ops_prederef.h : $(OPS_FILES) ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm $(INC)/config.h
+core_ops_prederef.c $(INC)${slash}oplib${slash}core_ops_prederef.h : $(OPS_FILES) ops2c.pl lib${slash}Parrot${slash}OpsFile.pm lib${slash}Parrot${slash}Op.pm $(INC)${slash}config.h
 	$(PERL) ops2c.pl CPrederef $(OPS_FILES)
 
 core_ops_switch$(O) : $(GENERAL_H_FILES) core_ops_switch.c
 
-core_ops_switch.c $(INC)/oplib/core_ops_switch.h : $(OPS_FILES) ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm $(INC)/config.h
+core_ops_switch.c $(INC)${slash}oplib${slash}core_ops_switch.h : $(OPS_FILES) ops2c.pl lib${slash}Parrot${slash}OpsFile.pm lib${slash}Parrot${slash}Op.pm $(INC)${slash}config.h
 	$(PERL) ops2c.pl CSwitch $(OPS_FILES)
 
 ${cg_c}
@@ -512,45 +519,45 @@
 # $(STICKY_FILES) : Configure.pl
 #	$(PERL) Configure.pl
 
-$(INC)/vtable.h : vtable.tbl vtable_h.pl
+$(INC)${slash}vtable.h : vtable.tbl vtable_h.pl
 	$(PERL) vtable_h.pl
 
-$(INC)/jit_emit.h: jit/${jitcpuarch}/jit_emit.h
-	$(PERL) -MFile::Copy=cp -e ${PQ}cp q|jit/${jitcpuarch}/jit_emit.h|, q|$(INC)/jit_emit.h|${PQ}
-$(INC)/exec_dep.h: jit/${jitcpuarch}/exec_dep.h
-	$(PERL) -MFile::Copy=cp -e ${PQ}cp q|jit/${jitcpuarch}/exec_dep.h|, q|$(INC)/exec_dep.h|${PQ}
-jit_cpu.c: lib/Parrot/OpLib/core.pm $(INC)/jit_emit.h jit/${jitcpuarch}/core.jit
+$(INC)${slash}jit_emit.h: jit${slash}${jitcpuarch}${slash}jit_emit.h
+	$(PERL) -MFile::Copy=cp -e ${PQ}cp q|jit${slash}${jitcpuarch}${slash}jit_emit.h|, q|$(INC)${slash}jit_emit.h|${PQ}
+$(INC)${slash}exec_dep.h: jit${slash}${jitcpuarch}${slash}exec_dep.h
+	$(PERL) -MFile::Copy=cp -e ${PQ}cp q|jit${slash}${jitcpuarch}${slash}exec_dep.h|, q|$(INC)${slash}exec_dep.h|${PQ}
+jit_cpu.c: lib${slash}Parrot${slash}OpLib${slash}core.pm $(INC)${slash}jit_emit.h jit${slash}${jitcpuarch}${slash}core.jit
 	$(PERL) jit2h.pl ${jitcpuarch} jit_cpu.c
-exec_cpu.c: lib/Parrot/OpLib/core.pm $(INC)/jit_emit.h jit/${jitcpuarch}/core.jit ${exec_h} $(INC)/exec_dep.h
+exec_cpu.c: lib${slash}Parrot${slash}OpLib${slash}core.pm $(INC)${slash}jit_emit.h jit${slash}${jitcpuarch}${slash}core.jit ${exec_h} $(INC)${slash}exec_dep.h
 	$(PERL) jit2h.pl ${jitcpuarch} exec_cpu.c
 
-docs : docs/.dummy
+docs : docs.dummy
 
-docs/.dummy :
-	cd docs && $(MAKE) && cd ..
+docs.dummy :
+	$(MAKE_C) docs
 
 languages : languages.dummy
 
 languages.dummy :
-	cd languages && $(MAKE) && cd ..
+	$(MAKE_C) languages
 
 languages-test :
 	cd languages && $(MAKE) test && cd ..
 
 # If anything in the classes directory is out of date,
 # then run `make` in sub-dir to rebuild only the out of date files.
-$(CLASS_O_FILES) : $(CLASS_PMC_FILES) $(NONGEN_HEADERS)
-	cd classes && $(MAKE) && cd ..
+$(CLASS_O_FILES) : $(CLASS_PMC_FILES) $(INC)${slash}vtable.h
+	$(MAKE_C) classes
 
 
 $(IMCC_PROG) : $(LIBPARROT)        \
-               languages/imcc/*.c \
-               languages/imcc/*.h \
-               languages/imcc/*.y \
-               languages/imcc/*.l
-	cd languages${slash}imcc && $(MAKE) && cd ..${slash}..
+		languages${slash}imcc${slash}*.c \
+		languages${slash}imcc${slash}*.h \
+		languages${slash}imcc${slash}*.y \
+		languages${slash}imcc${slash}*.l
+	$(MAKE_C) languages${slash}imcc
 	$(PERL) -MExtUtils::Command -e mv $(IMCC_PROG) $(TEST_PROG)
-	cd languages${slash}imcc && $(MAKE) && cd ..${slash}..
+	$(MAKE_C) languages${slash}imcc
 
 # the chmod doesn't work here, so move imcc and make it again :-(
 # $(PERL) -MExtUtils::Command -e chmod 0755 $(TEST_PROG)
@@ -647,9 +654,9 @@
 	        examples/assembly/mops${exe} examples/assembly/mops.c \
 	        examples/assembly/mops$(O) examples/assembly/mops.pbc \
 	        examples/mops/mops$(O) examples/mops/mops${exe}
-	cd docs && $(MAKE) clean && cd ..
-	cd classes && $(MAKE) clean && cd ..
-	cd languages && $(MAKE) clean && cd ..
+	$(MAKE_C) docs clean
+	$(MAKE_C) classes clean
+	$(MAKE_C) languages clean
 
 progclean:
 	$(RM_F) $(O_FILES) \
@@ -658,7 +665,7 @@
 	        $(PDB) pdb$(O) \
 	        $(DIS) disassemble$(O)
 	$(RM_RF) blib
-	cd classes && $(MAKE) progclean && cd ..
+	$(MAKE_C) classes progclean
 
 testclean :
 	$(RM_F) t/op/*.pasm t/op/*.pbc t/op/*.out t/op/*.o t/op/*.stabs.s \
@@ -728,7 +735,7 @@
 rpms : release
 	sudo cp parrot-$(VERSION).tar.gz /usr/src/*/SOURCES
 	sudo cp parrot.spec /usr/src/*/SPECS
-	cd /usr/src/*/SPECS && sudo rpm -ba parrot.spec
+	cd /usr/src/*/SPECS ${make_and} sudo rpm -ba parrot.spec
 
 ###############################################################################
 #
Index: config/init/data.pl
===================================================================
RCS file: /cvs/public/parrot/config/init/data.pl,v
retrieving revision 1.14
diff -u -r1.14 data.pl
--- config/init/data.pl	17 Sep 2003 19:13:21 -0000	1.14
+++ config/init/data.pl	18 Sep 2003 00:31:19 -0000
@@ -71,9 +71,12 @@
     ar            => $Config{ar},
     ar_flags      => 'cr',
     ar_out        => '',                  # for Win32
+    ar_extra      => '',                  # for Borland C
     ranlib        => $Config{ranlib},
     make          => $Config{make},
     make_set_make => $Config{make_set_make},
+    make_and      => '&&',
+    make_c        => '$(PERL) -e \'chdir shift @ARGV; system q{$(MAKE)}, @ARGV; exit $$? >> 8;\'',
 
     cp            => 'cp',
     slash         => '/',
Index: config/init/hints.pl
===================================================================
RCS file: /cvs/public/parrot/config/init/hints.pl,v
retrieving revision 1.4
diff -u -r1.4 hints.pl
--- config/init/hints.pl	28 Dec 2002 01:35:48 -0000	1.4
+++ config/init/hints.pl	18 Sep 2003 00:31:19 -0000
@@ -11,13 +11,16 @@
 sub runstep {
   my $hints = "config/init/hints/" . lc($^O) . ".pl";
   my $hints_used = 0;
+  print "[ ";
   if(-e $hints) {
+    print "$hints ";
     do $hints;
     die $@ if $@;
     $hints_used++;
   }
   $hints = "config/init/hints/local.pl";
   if(-e $hints) {
+    print "$hints ";
     do $hints;
     die $@ if $@;
     $hints_used++;
@@ -25,6 +28,7 @@
   if ($hints_used == 0) {
     print "(no hints) ";
   }
+  print "]";
 }
 
 1;
Index: config/init/hints/mswin32.pl
===================================================================
RCS file: /cvs/public/parrot/config/init/hints/mswin32.pl,v
retrieving revision 1.12
diff -u -r1.12 mswin32.pl
--- config/init/hints/mswin32.pl	15 Sep 2003 16:32:03 -0000	1.12
+++ config/init/hints/mswin32.pl	18 Sep 2003 00:31:19 -0000
@@ -16,7 +16,8 @@
 	Configure::Data->set(
 		rm_f  => '$(PERL) -MExtUtils::Command -e rm_f',
 		rm_rf => '$(PERL) -MExtUtils::Command -e rm_rf',
-		PQ    => '"'
+                PQ    => '"',
+                make_c=> '$(PERL) -e "chdir shift @ARGV; system \'$(MAKE)\', @ARGV; exit $$? >> 8;"'
 	);
 
 	if( $is_msvc ) {
@@ -59,6 +60,8 @@
 	if( $is_bcc ) {
 		Configure::Data->set(
 			o => '.obj',
+                        a => '.lib',
+                        so => '.dll',
 			ccflags => '-O2 -w-8066 -DWIN32 -DNO_STRICT -DNDEBUG -D_CONSOLE',
 			cc_o_out => '-o',
 			cc_exe_out => '-e',
@@ -72,8 +75,18 @@
 			ld_shared => '-WD',
 			libs => 'import32.lib cw32.lib',
 			
+                        link => 'bcc32.exe',
+                        linkflags => '',
+
 			cp => 'copy',
-			slash => '\\'
+                        ar => 'tlib',
+                        ar_flags => '',
+                        ar_out => '',
+                        ar_extra => '/au',
+                        slash => '\\',
+                        make_and => "\n\t",
+
+                        blib_lib_libparrot_a => 'blib\lib\libparrot.lib',
 		);
 	}
 	elsif( $is_mingw ) {
Index: config/inter/pmc.pl
===================================================================
RCS file: /cvs/public/parrot/config/inter/pmc.pl,v
retrieving revision 1.10
diff -u -r1.10 pmc.pl
--- config/inter/pmc.pl	26 Aug 2003 10:05:30 -0000	1.10
+++ config/inter/pmc.pl	18 Sep 2003 00:31:19 -0000
@@ -85,8 +85,9 @@
   }
 
   # build list of libraries for link line in Makefile
-  (my $pmc_classes_o   = $pmc_o   ) =~ s/^| / classes\//g;
-  (my $pmc_classes_pmc = $pmc_list) =~ s/^| / classes\//g;
+  my $slash = Configure::Data->get('slash');
+  (my $pmc_classes_o   = $pmc_o   ) =~ s/^| / classes${slash}/g;
+  (my $pmc_classes_pmc = $pmc_list) =~ s/^| / classes${slash}/g;
 
   # Gather the actual names (with MixedCase) of all of the
   # non-abstract built-in PMCs.

Reply via email to