~ chicken-core (chicken-5) f01f11ebf08be9c2464b1b4997896e8fe97f50ea


commit f01f11ebf08be9c2464b1b4997896e8fe97f50ea
Merge: 5f17e3fc 8de0ec73
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Nov 8 06:31:56 2010 -0500
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Mon Nov 8 06:31:56 2010 -0500

    merged make-refactoring into temporary branch

diff --cc Makefile.solaris
index 5c28c33c,b82a3f66..e931e571
--- a/Makefile.solaris
+++ b/Makefile.solaris
@@@ -41,9 -41,14 +41,14 @@@ export INSTALL_PROGRAM ?= ginstal
  # options
  
  ifeq ($(C_COMPILER),cc)
- C_COMPILER_OPTIONS ?= -errtags -xdebugformat=stabs -xannotate=no -DHAVE_CHICKEN_CONFIG_H 
+ ifneq (,$(filter-out x86 x86-64,$(ARCH))) # -xannotate=no is not supported on x86/x86-64
+ DISABLE_ANNOTATIONS=-xannotate=no
+ else
+ DISABLE_ANNOTATIONS=
+ endif
+ C_COMPILER_OPTIONS ?= -errtags -xdebugformat=stabs $(DISABLE_ANNOTATIONS) -DHAVE_CHICKEN_CONFIG_H
  else
 -C_COMPILER_OPTIONS ?= -fno-strict-aliasing -DHAVE_CHICKEN_CONFIG_H
 +C_COMPILER_OPTIONS ?= -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H
  endif
  
  ifdef DEBUGBUILD
diff --cc rules.make
index bb84671d,cb5408f5..5c740918
--- a/rules.make
+++ b/rules.make
@@@ -26,13 -26,25 +26,25 @@@
  
  VPATH=$(SRCDIR)
  
+ # Clear Make's default rules for C programs
+ .SUFFIXES:
+ %.o : %.c
+ %: %.o
+ 
  # object files
  
- LIBCHICKEN_OBJECTS_1 = library eval data-structures ports files extras lolevel utils tcp srfi-1 srfi-4 srfi-13 srfi-14 srfi-18 srfi-69 $(POSIXFILE) irregex scheduler profiler stub expand chicken-syntax chicken-ffi-syntax runtime
+ SETUP_API_OBJECTS_1 = setup-api setup-download
+ 
+ LIBCHICKEN_OBJECTS_1 = \
+        library eval data-structures ports files extras lolevel utils tcp srfi-1 srfi-4 srfi-13 \
 -       srfi-14 srfi-18 srfi-69 $(POSIXFILE) regex scheduler \
++       srfi-14 srfi-18 srfi-69 $(POSIXFILE) irregex scheduler \
+        profiler stub expand chicken-syntax chicken-ffi-syntax runtime
  LIBCHICKEN_SHARED_OBJECTS = $(LIBCHICKEN_OBJECTS_1:=$(O))
  LIBCHICKEN_STATIC_OBJECTS = $(LIBCHICKEN_OBJECTS_1:=-static$(O))
  
- COMPILER_OBJECTS_1 = chicken batch-driver compiler optimizer compiler-syntax scrutinizer unboxing support c-platform c-backend
+ COMPILER_OBJECTS_1 = \
 -       chicken batch-driver compiler optimizer compiler-syntax scrutinizer unboxing support \
 -       c-platform c-backend
++	chicken batch-driver compiler optimizer compiler-syntax scrutinizer unboxing support \
++	c-platform c-backend
  COMPILER_OBJECTS        = $(COMPILER_OBJECTS_1:=$(O))
  COMPILER_STATIC_OBJECTS = $(COMPILER_OBJECTS_1:=-static$(O))
  
@@@ -524,12 -227,10 +227,10 @@@ libchicken$(A): $(APPLY_HACK_OBJECT) $(
  
  # import libraries and extensions
  
- .SUFFIXES: .so
- 
  %.so: %.o
 -	$(HOST_LINKER) $(HOST_LINKER_OPTIONS) $(HOST_LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $^ $(HOST_LINKER_OUTPUT_OPTION) $@ \
 -	  $(HOST_LINKER_LIBRARY_PREFIX)chicken$(HOST_LINKER_LIBRARY_SUFFIX) \
 -	  $(HOST_LIBRARIES)
 +	$(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $^ $(LINKER_OUTPUT_OPTION) $@ \
 +	  $(LINKER_LIBRARY_PREFIX)chicken$(LINKER_LIBRARY_SUFFIX) \
 +	  $(LIBRARIES)
  
  # executables
  
@@@ -631,16 -328,11 +328,12 @@@ endi
  
  ifeq ($(NEEDS_RELINKING),yes)
  install-bin:
- 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(CHICKEN_PROGRAM)$(EXE) 
- 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(CSI_PROGRAM)$(EXE)
- 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(CSC_PROGRAM)$(EXE)
- 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(CHICKEN_PROFILE_PROGRAM)$(EXE)
- 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(CHICKEN_INSTALL_PROGRAM)$(EXE)
- 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(CHICKEN_UNINSTALL_PROGRAM)$(EXE)
- 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(CHICKEN_STATUS_PROGRAM)$(EXE)
+ 	$(foreach prog,$(INSTALLED_PROGRAMS),\
+ 		$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(prog)$(EXE) $(NL))
+ 
  	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(IMPORT_LIBRARIES:%=%.so)
  	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(IMPORT_LIBRARIES:%=%.import.so)
 +	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(LIBCHICKEN_SO_FILE)
  	$(MAKE) -f $(SRCDIR)Makefile.$(PLATFORM) CONFIG=$(CONFIG) NEEDS_RELINKING=no RUNTIME_LINKER_PATH="$(LIBDIR)" SONAME_VERSION=.$(BINARYVERSION) install-bin
  # Damn. What was this for, again?
  #
@@@ -795,150 -427,102 +428,102 @@@ endi
  ifeq ($(PLATFORM),cygwin)
  	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(IBINDIR)$(SEP)cygchicken*"
  endif
- 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(IMANDIR)$(SEP)chicken.1" "$(DESTDIR)$(IMANDIR)$(SEP)csi.1" \
- 	  "$(DESTDIR)$(IMANDIR)$(SEP)csc.1" "$(DESTDIR)$(IMANDIR)$(SEP)chicken-profile.1" "$(DESTDIR)$(IMANDIR)$(SEP)chicken-install.1" \
- 	  "$(DESTDIR)$(IMANDIR)$(SEP)chicken-bug.1" "$(DESTDIR)$(IMANDIR)$(SEP)chicken-uninstall.1" \
- 	  "$(DESTDIR)$(IMANDIR)$(SEP)chicken-status.1"
- 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(IINCDIR)$(SEP)chicken.h $(DESTDIR)$(IINCDIR)$(SEP)chicken-config.h"
+ 
+ 	$(foreach obj,$(MANPAGES),\
+ 		$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) \
+ 		"$(DESTDIR)$(IMANDIR)$(SEP)$(obj)" $(NL))
+ 
+ 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(IINCDIR)$(SEP)chicken.h"
+ 	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(IINCDIR)$(SEP)$(CHICKEN_CONFIG_H)"
  	$(REMOVE_COMMAND) $(REMOVE_COMMAND_RECURSIVE_OPTIONS) "$(DESTDIR)$(IDATADIR)"
 +	$(REMOVE_COMMAND) $(REMOVE_COMMAND_RECURSIVE_OPTIONS) "$(DESTDIR)$(IEGGDIR)"
  ifdef WINDOWS_SHELL
  	$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(IBINDIR)$(SEP)csibatch.bat"
  endif
  
  # bootstrapping c sources
  
- .SUFFIXES: .scm
- .SECONDARY: setup-api.import.scm setup-download.import.scm
+ define declare-emitted-import-lib-dependency
+ .SECONDARY: $(1).import.scm
+ $(1).import.scm: $(1).c
+ endef
  
- setup-api.import.scm: setup-api.c
- setup-download.import.scm: setup-download.c
+ $(foreach lib, $(SETUP_API_OBJECTS_1),\
+           $(eval $(call declare-emitted-import-lib-dependency,$(lib))))
+ 
+ bootstrap-lib = $(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@
  
  library.c: $(SRCDIR)library.scm $(SRCDIR)version.scm $(SRCDIR)banner.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib)
  eval.c: $(SRCDIR)eval.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib)
  expand.c: $(SRCDIR)expand.scm $(SRCDIR)synrules.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@
+ 	$(bootstrap-lib)
+ extras.c: $(SRCDIR)extras.scm $(SRCDIR)private-namespace.scm $(SRCDIR)common-declarations.scm
+ 	$(bootstrap-lib)
+ posixunix.c: $(SRCDIR)posixunix.scm $(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm
+ 	$(bootstrap-lib) 
+ posixwin.c: $(SRCDIR)posixwin.scm $(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm
+ 	$(bootstrap-lib) 
+ srfi-69.c: $(SRCDIR)srfi-69.scm $(SRCDIR)common-declarations.scm
+ 	$(bootstrap-lib) -extend $(SRCDIR)private-namespace.scm
 -regex.c: $(SRCDIR)regex.scm $(SRCDIR)irregex.scm $(SRCDIR)common-declarations.scm
++irregex.c: $(SRCDIR)irregex.scm $(SRCDIR)irregex-core.scm $(SRCDIR)irregex-utils.scm $(SRCDIR)common-declarations.scm
+ 	$(bootstrap-lib)
+ #
+ # The ones below just depend on their matching .scm file and common-declarations
+ #
  chicken-syntax.c: $(SRCDIR)chicken-syntax.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@
+ 	$(bootstrap-lib)
  chicken-ffi-syntax.c: $(SRCDIR)chicken-ffi-syntax.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@
+ 	$(bootstrap-lib)
  data-structures.c: $(SRCDIR)data-structures.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@
+ 	$(bootstrap-lib)
  ports.c: $(SRCDIR)ports.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@
+ 	$(bootstrap-lib)
  files.c: $(SRCDIR)files.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@
- extras.c: $(SRCDIR)extras.scm $(SRCDIR)private-namespace.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@
+ 	$(bootstrap-lib)
  lolevel.c: $(SRCDIR)lolevel.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib) 
  tcp.c: $(SRCDIR)tcp.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib) 
  srfi-1.c: $(SRCDIR)srfi-1.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib) 
  srfi-4.c: $(SRCDIR)srfi-4.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib) 
  srfi-13.c: $(SRCDIR)srfi-13.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib) 
  srfi-14.c: $(SRCDIR)srfi-14.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib) 
  srfi-18.c: $(SRCDIR)srfi-18.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
- srfi-69.c: $(SRCDIR)srfi-69.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ -extend $(SRCDIR)private-namespace.scm
+ 	$(bootstrap-lib) 
  utils.c: $(SRCDIR)utils.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
- posixunix.c: $(SRCDIR)posixunix.scm $(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
- posixwin.c: $(SRCDIR)posixwin.scm $(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
- irregex.c: $(SRCDIR)irregex.scm $(SRCDIR)irregex-core.scm $(SRCDIR)irregex-utils.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@
+ 	$(bootstrap-lib) 
  scheduler.c: $(SRCDIR)scheduler.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib) 
  profiler.c: $(SRCDIR)profiler.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
+ 	$(bootstrap-lib) 
  stub.c: $(SRCDIR)stub.scm $(SRCDIR)common-declarations.scm
- 	$(CHICKEN) $< $(CHICKEN_LIBRARY_OPTIONS) -output-file $@ 
- 
- chicken.import.c: $(SRCDIR)chicken.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- lolevel.import.c: $(SRCDIR)lolevel.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- srfi-1.import.c: $(SRCDIR)srfi-1.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- srfi-4.import.c: $(SRCDIR)srfi-4.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- data-structures.import.c: $(SRCDIR)data-structures.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- ports.import.c: $(SRCDIR)ports.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- files.import.c: $(SRCDIR)files.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- posix.import.c: $(SRCDIR)posix.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- srfi-13.import.c: $(SRCDIR)srfi-13.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- srfi-69.import.c: $(SRCDIR)srfi-69.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- extras.import.c: $(SRCDIR)extras.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- irregex.import.c: $(SRCDIR)irregex.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- srfi-14.import.c: $(SRCDIR)srfi-14.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- tcp.import.c: $(SRCDIR)tcp.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- foreign.import.c: $(SRCDIR)foreign.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- scheme.import.c: $(SRCDIR)scheme.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- csi.import.c: $(SRCDIR)csi.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- srfi-18.import.c: $(SRCDIR)srfi-18.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- utils.import.c: $(SRCDIR)utils.import.scm
- 	$(CHICKEN) $< $(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $@ 
- setup-api.import.c: $(SRCDIR)setup-api.scm
- 	$(CHICKEN) $(SRCDIR)setup-api.import.scm $(CHICKEN_IMPORT_LIBRARY_OPTIONS) \
- 	  -output-file $@ 
- setup-download.import.c: $(SRCDIR)setup-download.scm
- 	$(CHICKEN) $(SRCDIR)setup-download.import.scm $(CHICKEN_IMPORT_LIBRARY_OPTIONS) \
- 	  -output-file $@ 
+ 	$(bootstrap-lib) 
+ 
+ define declare-bootstrap-import-lib
+ $(1).import.c: $$(SRCDIR)$(1).import.scm
+ 	$$(CHICKEN) $$< $$(CHICKEN_IMPORT_LIBRARY_OPTIONS) -output-file $$@
+ endef
+ 
+ $(foreach obj, $(IMPORT_LIBRARIES),\
+           $(eval $(call declare-bootstrap-import-lib,$(obj))))
+ 
+ # Bootstrap compiler objects
+ 
+ define declare-bootstrap-compiler-object
+ $(1).c: $$(SRCDIR)$(1).scm $$(SRCDIR)compiler-namespace.scm \
+ 	  $$(SRCDIR)private-namespace.scm $$(SRCDIR)tweaks.scm
+ 	$$(CHICKEN) $$< $$(CHICKEN_COMPILER_OPTIONS) -output-file $$@ 
+ endef
  
- chicken.c: $(SRCDIR)chicken.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
- support.c: $(SRCDIR)support.scm $(SRCDIR)banner.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
- compiler.c: $(SRCDIR)compiler.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
- optimizer.c: $(SRCDIR)optimizer.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
- compiler-syntax.c: $(SRCDIR)compiler-syntax.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
- scrutinizer.c: $(SRCDIR)scrutinizer.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
- unboxing.c: $(SRCDIR)unboxing.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
- batch-driver.c: $(SRCDIR)batch-driver.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
- c-platform.c: $(SRCDIR)c-platform.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
- c-backend.c: $(SRCDIR)c-backend.scm $(SRCDIR)compiler-namespace.scm \
- 	  $(SRCDIR)private-namespace.scm $(SRCDIR)tweaks.scm
- 	$(CHICKEN) $< $(CHICKEN_COMPILER_OPTIONS) -output-file $@ 
+ $(foreach obj, $(COMPILER_OBJECTS_1),\
+           $(eval $(call declare-bootstrap-compiler-object,$(obj))))
  
 -
  csi.c: $(SRCDIR)csi.scm $(SRCDIR)banner.scm $(SRCDIR)private-namespace.scm
  	$(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ -extend $(SRCDIR)private-namespace.scm
  chicken-profile.c: $(SRCDIR)chicken-profile.scm
@@@ -1059,11 -627,11 +628,11 @@@ buildhead
  boot-chicken:
  	$(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) PREFIX=/nowhere CONFIG= \
  	  SRCDIR=$(SRCDIR) CHICKEN=$(CHICKEN) PROGRAM_SUFFIX=-boot-stage1 STATICBUILD=1 \
- 	  C_COMPILER_OPTIMIZATION_OPTIONS= \
 -	  C_COMPILER_OPTIMIZATION_OPTIONS= HACKED_APPLY= \
++	  C_COMPILER_OPTIMIZATION_OPTIONS= C_HACKED_APPLY= \
  	  confclean chicken-boot-stage1$(EXE)
  	$(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) PREFIX=/nowhere CONFIG= \
- 	  SRCDIR=$(SRCDIR) CHICKEN=$(PWD)/chicken-boot-stage1$(EXE) PROGRAM_SUFFIX=-boot STATICBUILD=1 \
- 	  C_COMPILER_OPTIMIZATION_OPTIONS= \
+ 	  SRCDIR=$(SRCDIR) CHICKEN=$(PWD)/chicken-boot-stage1$(EXE) PROGRAM_SUFFIX=-boot \
 -	  STATICBUILD=1 HACKED_APPLY= C_COMPILER_OPTIMIZATION_OPTIONS= \
++	  STATICBUILD=1 C_COMPILER_OPTIMIZATION_OPTIONS= \
  	  touchfiles chicken-boot$(EXE) confclean
  
  .PHONY: touchfiles
Trap