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.