summaryrefslogtreecommitdiff
blob: 6d9628701481d5172c576de523e2e7651703eb1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
diff --git a/GNUmakefile b/GNUmakefile
index 9bc40ca..c697f14 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -49,6 +49,9 @@ STANDARD_TARGETS \
 	  fullcheck libs install-target install-dev bench
 
 .PHONY: $(STANDARD_TARGETS) dist boot-chicken
+# Build this file's targets sequentially.  This avoids executing overlapping
+# makes if the user specifies multiple targets.
+.NOTPARALLEL:
 
 $(STANDARD_TARGETS):
 	$(MAKE) -f $(SRCDIR)/Makefile.$(PLATFORM) CONFIG=$(CONFIG) $@
diff --git a/README b/README
index 8d0d067..551b716 100644
--- a/README
+++ b/README
@@ -72,7 +72,7 @@
         platforms.
 
 	Note that parallel builds (using the "-j" make(1) option) are
-	*not* supported.
+	also supported. Beware that parallel install will not work though.
 
         If you invoke "make" later with different configuration parameters,
         it is advisable to run:
diff --git a/rules.make b/rules.make
index 929b0a3..a8cb9b0 100644
--- a/rules.make
+++ b/rules.make
@@ -243,8 +243,8 @@ lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A): $(APPLY_HACK_OBJECT) $(LIBCHIC
 
 # import libraries and extensions
 
-%.so: %.o
-	$(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $^ $(LINKER_OUTPUT_OPTION) $@ \
+%.so: %.o $(PRIMARY_LIBCHICKEN)
+	$(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_DLOADABLE_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ \
 	  $(LINKER_LIBRARY_PREFIX)$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(LINKER_LIBRARY_SUFFIX) \
 	  $(LIBRARIES)
 
@@ -578,9 +578,9 @@ chicken-profile.c: $(SRCDIR)chicken-profile.scm
 	$(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ 
 chicken-install.c: $(SRCDIR)chicken-install.scm setup-download.c setup-api.c
 	$(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ 
-chicken-uninstall.c: $(SRCDIR)chicken-uninstall.scm
+chicken-uninstall.c: $(SRCDIR)chicken-uninstall.scm setup-api.c
 	$(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ 
-chicken-status.c: $(SRCDIR)chicken-status.scm
+chicken-status.c: $(SRCDIR)chicken-status.scm setup-api.c
 	$(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ 
 csc.c: $(SRCDIR)csc.scm
 	$(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ 
@@ -671,14 +671,17 @@ bench: $(CHICKEN_SHARED_EXECUTABLE) $(CSI_SHARED_EXECUTABLE) $(CSC_PROGRAM)$(EXE
 .PHONY: boot-chicken
 
 boot-chicken:
+	$(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) CONFIG= confclean
 	$(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) PREFIX=/nowhere CONFIG= \
 	  SRCDIR=$(SRCDIR) CHICKEN=$(CHICKEN) PROGRAM_SUFFIX=-boot-stage1 STATICBUILD=1 \
 	  C_COMPILER_OPTIMIZATION_OPTIONS= C_HACKED_APPLY= \
-	  confclean chicken-boot-stage1$(EXE)
+	  chicken-boot-stage1$(EXE)
+	$(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) CONFIG= touchfiles
 	$(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= \
-	  touchfiles chicken-boot$(EXE) confclean
+	  chicken-boot$(EXE)
+	$(MAKE) -f Makefile.$(PLATFORM) PLATFORM=$(PLATFORM) CONFIG= confclean
 
 .PHONY: touchfiles