~ chicken-core (chicken-5) 6d20552c1a11bb59b8258e413b01ac4caa83e360


commit 6d20552c1a11bb59b8258e413b01ac4caa83e360
Author:     Peter Bex <Peter.Bex@xs4all.nl>
AuthorDate: Sun Sep 5 17:21:42 2010 +0200
Commit:     Peter Bex <Peter.Bex@xs4all.nl>
CommitDate: Sun Sep 5 17:21:42 2010 +0200

    Refactor setup API stuff (re-use the same lib building declaration as other libs), and refactor "utility programs", for lack of a better word

diff --git a/rules.make b/rules.make
index 886e2a9d..4f03fbd2 100644
--- a/rules.make
+++ b/rules.make
@@ -41,6 +41,8 @@ IMPORT_LIB_OBJECTS_1 = \
 SETUP_API_IMPORT_LIB_OBJECTS_1 = \
 	setup-api setup-download
 
+SETUP_API_OBJECTS = $(SETUP_API_IMPORT_LIB_OBJECTS)
+
 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 \
@@ -54,22 +56,33 @@ COMPILER_OBJECTS_1 = \
 COMPILER_OBJECTS        = $(COMPILER_OBJECTS_1:=$(O))
 COMPILER_STATIC_OBJECTS = $(COMPILER_OBJECTS_1:=-static$(O))
 
+# This excludes the compiler (the "chicken" binary) itself
+UTILITY_PROGRAMS = \
+	csc csi chicken-install chicken-uninstall chicken-status chicken-profile
+
+# TODO: It looks like csi-static is never built, and not installed either.
+# probably a relic from earlier versions
+ALWAYS_STATIC_UTILITY_PROGRAMS = \
+	chicken-bug csi-static
+
 
 # library objects
 
-define declare-libchicken-object
+define declare-shared-library-object # reused in the setup API bit
 $(1)$(O): $(1).c chicken.h $$(CHICKEN_CONFIG_H)
 	$$(C_COMPILER) $$(C_COMPILER_OPTIONS) $$(INCLUDES) \
 	  $$(C_COMPILER_COMPILE_OPTION) $$(C_COMPILER_OPTIMIZATION_OPTIONS) $$(C_COMPILER_SHARED_OPTIONS) \
 	  $$(C_COMPILER_BUILD_RUNTIME_OPTIONS) $$< $$(C_COMPILER_OUTPUT)
 endef
 
+declare-libchicken-object = $(declare-shared-library-object)
+
 $(foreach obj, $(LIBCHICKEN_OBJECTS_1),\
           $(eval $(call declare-libchicken-object,$(obj))))
 
 # static versions
 
-define declare-static-libchicken-object
+define declare-static-library-object
 $(1)-static$(O): $(1).c chicken.h $$(CHICKEN_CONFIG_H)
 	$$(C_COMPILER) $$(C_COMPILER_OPTIONS) $$(INCLUDES) \
 	  $$(C_COMPILER_COMPILE_OPTION) $$(C_COMPILER_OPTIMIZATION_OPTIONS) \
@@ -77,6 +90,8 @@ $(1)-static$(O): $(1).c chicken.h $$(CHICKEN_CONFIG_H)
 	  $$(C_COMPILER_BUILD_RUNTIME_OPTIONS) $$< $$(C_COMPILER_OUTPUT)
 endef
 
+declare-static-libchicken-object = $(declare-static-library-object)
+
 $(foreach obj, $(LIBCHICKEN_OBJECTS_1),\
           $(eval $(call declare-static-libchicken-object,$(obj))))
 
@@ -94,17 +109,16 @@ $(foreach obj,$(IMPORT_LIB_OBJECTS_1),\
 
 # setup extension objects
 
-setup-api$(O): setup-api.c chicken.h $(CHICKEN_CONFIG_H)
-	$(HOST_C_COMPILER) $(HOST_C_COMPILER_OPTIONS) $(HOST_C_COMPILER_PTABLES_OPTIONS) $(INCLUDES) -DC_SHARED \
-	  $(HOST_C_COMPILER_COMPILE_OPTION) $(HOST_C_COMPILER_OPTIMIZATION_OPTIONS) $(HOST_C_COMPILER_SHARED_OPTIONS) \
-	  $(HOST_C_COMPILER_BUILD_RUNTIME_OPTIONS) $< $(HOST_C_COMPILER_OUTPUT)
-setup-download$(O): setup-download.c chicken.h $(CHICKEN_CONFIG_H)
-	$(HOST_C_COMPILER) $(HOST_C_COMPILER_OPTIONS) $(HOST_C_COMPILER_PTABLES_OPTIONS) $(INCLUDES) -DC_SHARED \
-	  $(HOST_C_COMPILER_COMPILE_OPTION) $(HOST_C_COMPILER_OPTIMIZATION_OPTIONS) $(HOST_C_COMPILER_SHARED_OPTIONS) \
-	  $(HOST_C_COMPILER_BUILD_RUNTIME_OPTIONS) $< $(HOST_C_COMPILER_OUTPUT)
+declare-setup-api-object = $(declare-shared-library-object)
+
+$(foreach obj,$(SETUP_API_OBJECTS_1),\
+          $(eval $(call declare-setup-api-object,$(obj))))
+
+
+declare-setup-api-import-lib-object = $(declare-import-lib-object)
 
 $(foreach obj,$(SETUP_API_IMPORT_LIB_OBJECTS_1),\
-          $(eval $(call declare-import-lib-object,$(obj))))
+          $(eval $(call declare-setup-api-import-lib-object,$(obj))))
 
 # compiler objects
 
@@ -139,35 +153,27 @@ endif
 
 # program objects
 
-chicken-profile$(O): chicken-profile.c chicken.h $(CHICKEN_CONFIG_H)
-	$(C_COMPILER) $(C_COMPILER_OPTIONS) $(INCLUDES) $(C_COMPILER_SHARED_OPTIONS) \
-	  $(C_COMPILER_COMPILE_OPTION) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< $(C_COMPILER_OUTPUT)
-chicken-install$(O): chicken-install.c chicken.h $(CHICKEN_CONFIG_H)
-	$(C_COMPILER) $(C_COMPILER_OPTIONS) $(INCLUDES) $(C_COMPILER_SHARED_OPTIONS) \
-	  $(C_COMPILER_COMPILE_OPTION) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< $(C_COMPILER_OUTPUT)
-chicken-uninstall$(O): chicken-uninstall.c chicken.h $(CHICKEN_CONFIG_H)
-	$(C_COMPILER) $(C_COMPILER_OPTIONS) $(INCLUDES) $(C_COMPILER_SHARED_OPTIONS) \
-	  $(C_COMPILER_COMPILE_OPTION) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< $(C_COMPILER_OUTPUT)
-chicken-status$(O): chicken-status.c chicken.h $(CHICKEN_CONFIG_H)
-	$(C_COMPILER) $(C_COMPILER_OPTIONS) $(INCLUDES) $(C_COMPILER_SHARED_OPTIONS) \
-	  $(C_COMPILER_COMPILE_OPTION) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< $(C_COMPILER_OUTPUT)
-csc$(O): csc.c chicken.h $(CHICKEN_CONFIG_H)
-	$(C_COMPILER) $(C_COMPILER_OPTIONS) $(INCLUDES) $(C_COMPILER_SHARED_OPTIONS) \
-	  $(C_COMPILER_COMPILE_OPTION) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< $(C_COMPILER_OUTPUT)
-csi$(O): csi.c chicken.h $(CHICKEN_CONFIG_H)
-	$(C_COMPILER) $(C_COMPILER_OPTIONS) $(INCLUDES) $(C_COMPILER_SHARED_OPTIONS) \
-	  $(C_COMPILER_COMPILE_OPTION) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< $(C_COMPILER_OUTPUT)
+define declare-utility-program-object
+$(1)(O): $(1).c chicken.h $$(CHICKEN_CONFIG_H)
+	$$(C_COMPILER) $$(C_COMPILER_OPTIONS) $$(INCLUDES) $$(C_COMPILER_SHARED_OPTIONS) \
+	  $$(C_COMPILER_COMPILE_OPTION) $$(C_COMPILER_OPTIMIZATION_OPTIONS) $$< $$(C_COMPILER_OUTPUT)
+endef
+
+$(foreach obj, $(UTILITY_PROGRAMS),\
+          $(eval $(call declare-utility-program-object,$(obj))))
+
 
 # static program objects
 
-csi-static$(O): csi.c chicken.h $(CHICKEN_CONFIG_H)
-	$(C_COMPILER) $(C_COMPILER_OPTIONS) $(INCLUDES) \
-	  $(C_COMPILER_STATIC_OPTIONS) \
-	  $(C_COMPILER_COMPILE_OPTION) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< $(C_COMPILER_OUTPUT)
-chicken-bug$(O): chicken-bug.c chicken.h $(CHICKEN_CONFIG_H)
-	$(C_COMPILER) $(C_COMPILER_OPTIONS)  $(INCLUDES) \
-	  $(C_COMPILER_STATIC_OPTIONS) \
-	  $(C_COMPILER_COMPILE_OPTION) $(C_COMPILER_OPTIMIZATION_OPTIONS) $< $(C_COMPILER_OUTPUT)
+define declare-always-static-utility-program-object
+$(1)(O): $(1).c chicken.h $$(CHICKEN_CONFIG_H)
+	$$(C_COMPILER) $$(C_COMPILER_OPTIONS) $$(INCLUDES) \
+	  $$(C_COMPILER_STATIC_OPTIONS) \
+	  $$(C_COMPILER_COMPILE_OPTION) $$(C_COMPILER_OPTIMIZATION_OPTIONS) $$< $$(C_COMPILER_OUTPUT)
+endef
+
+$(foreach obj, $(ALWAYS_STATIC_UTILITY_PROGRAMS),\
+          $(eval $(call declare-always-static-utility-program-object,$(obj))))
 
 # resource objects
 
Trap