wingo pushed a commit to branch wip-whippet
in repository guile.

commit 19f66fab086874fd9aaede3e9eb759be55892e7e
Author: Andy Wingo <wi...@igalia.com>
AuthorDate: Wed Aug 9 21:42:57 2023 +0200

    Bin in bin, obj in obj; prettify makefile
---
 Makefile | 78 ++++++++++++++++++++++++++++++----------------------------------
 1 file changed, 37 insertions(+), 41 deletions(-)

diff --git a/Makefile b/Makefile
index fcd6c85d4..70d351d68 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
-TESTS=quads mt-gcbench ephemerons # MT_GCBench MT_GCBench2
-COLLECTORS= \
+TESTS = quads mt-gcbench ephemerons # MT_GCBench MT_GCBench2
+COLLECTORS = \
        bdw \
        semi \
        \
@@ -19,55 +19,50 @@ COLLECTORS= \
        stack-conservative-parallel-generational-whippet \
        heap-conservative-parallel-generational-whippet
 
-DEFAULT_BUILD:=opt
+DEFAULT_BUILD := opt
 
-BUILD_CFLAGS_opt=-O2 -g -DNDEBUG
-BUILD_CFLAGS_optdebug=-Og -g -DGC_DEBUG=1
-BUILD_CFLAGS_debug=-O0 -g -DGC_DEBUG=1
+BUILD_CFLAGS_opt      = -O2 -g -DNDEBUG
+BUILD_CFLAGS_optdebug = -Og -g -DGC_DEBUG=1
+BUILD_CFLAGS_debug    = -O0 -g -DGC_DEBUG=1
 
-BUILD_CFLAGS=$(BUILD_CFLAGS_$(or $(BUILD),$(DEFAULT_BUILD)))
+BUILD_CFLAGS = $(BUILD_CFLAGS_$(or $(BUILD),$(DEFAULT_BUILD)))
 
-CC=gcc
-CFLAGS=-Wall -flto -fno-strict-aliasing -fvisibility=hidden -Wno-unused 
$(BUILD_CFLAGS)
-CPPFLAGS=-Iapi
-LDFLAGS=-lpthread -flto
-DEPFLAGS=-MMD -MP -MF $(@:%.o=.deps/%.d)
-COMPILE=$(CC) $(CFLAGS) $(CPPFLAGS) $(DEPFLAGS) -o $@
-LINK=$(CC) $(LDFLAGS) -o $@
-PLATFORM=gnu-linux
+CC       = gcc
+CFLAGS   = -Wall -flto -fno-strict-aliasing -fvisibility=hidden -Wno-unused 
$(BUILD_CFLAGS)
+CPPFLAGS = -Iapi
+LDFLAGS  = -lpthread -flto
+DEPFLAGS = -MMD -MP -MF $(@:obj/%.o=.deps/%.d)
+COMPILE  = $(CC) $(CFLAGS) $(CPPFLAGS) $(DEPFLAGS) -o $@
+LINK     = $(CC) $(LDFLAGS) -o $@
+PLATFORM = gnu-linux
 
-ALL_TESTS=$(foreach COLLECTOR,$(COLLECTORS),$(addsuffix 
.$(COLLECTOR),$(TESTS)))
+ALL_TESTS = $(foreach COLLECTOR,$(COLLECTORS),$(addsuffix 
.$(COLLECTOR),$(TESTS)))
 
-all: $(ALL_TESTS)
+all: $(ALL_TESTS:%=bin/%)
+.deps obj bin: ; mkdir -p $@
 
-OBJS=gc-platform.o gc-stack.o gc-options.o
-OBJS+=$(foreach TEST,$(TESTS),$(TEST).gc-ephemeron.o)
-OBJS+=$(foreach TEST,$(ALL_TESTS),$(TEST).gc.o $(TEST).o)
-DEPS=$(OBJS:%.o=.deps/%.d)
-$(OBJS): | .deps
-.deps: ; mkdir -p .deps
-include $(wildcard $(DEPS))
+include $(wildcard .deps/*)
 
-gc-platform.o: src/gc-platform-$(PLATFORM).c
+obj/gc-platform.o: src/gc-platform-$(PLATFORM).c | .deps obj
        $(COMPILE) -c $<
-gc-stack.o: src/gc-stack.c
+obj/gc-stack.o: src/gc-stack.c | .deps obj
        $(COMPILE) -c $<
-gc-options.o: src/gc-options.c
+obj/gc-options.o: src/gc-options.c | .deps obj
        $(COMPILE) -c $<
-%.gc-ephemeron.o: src/gc-ephemeron.c
+obj/%.gc-ephemeron.o: src/gc-ephemeron.c | .deps obj
        $(COMPILE) -include benchmarks/$*-embedder.h -c $<
 
-GC_STEM_bdw=bdw
-GC_CFLAGS_bdw=-DGC_CONSERVATIVE_ROOTS=1 -DGC_CONSERVATIVE_TRACE=1
-GC_IMPL_CFLAGS_bdw=`pkg-config --cflags bdw-gc`
-GC_LIBS_bdw=`pkg-config --libs bdw-gc`
+GC_STEM_bdw       = bdw
+GC_CFLAGS_bdw     = -DGC_CONSERVATIVE_ROOTS=1 -DGC_CONSERVATIVE_TRACE=1
+GC_IMPL_CFLAGS_bdw = `pkg-config --cflags bdw-gc`
+GC_LIBS_bdw        = `pkg-config --libs bdw-gc`
 
-GC_STEM_semi=semi
-GC_CFLAGS_semi=-DGC_PRECISE_ROOTS=1
+GC_STEM_semi       = semi
+GC_CFLAGS_semi     = -DGC_PRECISE_ROOTS=1
 
 define whippet_variant
-GC_STEM_$(1)=whippet
-GC_CFLAGS_$(1)=$(2)
+GC_STEM_$(1)       = whippet
+GC_CFLAGS_$(1)     = $(2)
 endef
 
 define generational_whippet_variants
@@ -89,7 +84,6 @@ endef
 $(eval $(call trace_whippet_variants))
 
 # $(1) is the benchmark, $(2) is the collector configuration
-# gc_stem for bdw: bdw
 make_gc_var    = $$($(1)$(subst -,_,$(2)))
 gc_impl        = $(call make_gc_var,GC_STEM_,$(1)).c
 gc_attrs       = $(call make_gc_var,GC_STEM_,$(1))-attrs.h
@@ -97,11 +91,11 @@ gc_cflags      = $(call make_gc_var,GC_CFLAGS_,$(1))
 gc_impl_cflags = $(call make_gc_var,GC_IMPL_CFLAGS_,$(1))
 gc_libs        = $(call make_gc_var,GC_LIBS_,$(1))
 define benchmark_template
-$(1).$(2).gc.o: src/$(call gc_impl,$(2))
+obj/$(1).$(2).gc.o: src/$(call gc_impl,$(2)) | .deps obj
        $$(COMPILE) $(call gc_cflags,$(2)) $(call gc_impl_cflags,$(2)) -include 
benchmarks/$(1)-embedder.h -c $$<
-$(1).$(2).o: benchmarks/$(1).c
+obj/$(1).$(2).o: benchmarks/$(1).c | .deps obj
        $$(COMPILE) $(call gc_cflags,$(2)) -include api/$(call gc_attrs,$(2)) 
-c $$<
-$(1).$(2): $(1).$(2).gc.o $(1).$(2).o gc-stack.o gc-options.o gc-platform.o 
$(1).gc-ephemeron.o
+bin/$(1).$(2): obj/$(1).$(2).gc.o obj/$(1).$(2).o obj/gc-stack.o 
obj/gc-options.o obj/gc-platform.o obj/$(1).gc-ephemeron.o | bin
        $$(LINK) $(call gc_libs,$(2)) $$^
 endef
 
@@ -112,8 +106,10 @@ $(foreach BENCHMARK,$(TESTS),\
 .PRECIOUS: $(ALL_TESTS) $(OBJS)
 
 clean:
-       rm -f $(ALL_TESTS) $(OBJS) $(DEPS)
+       rm -f $(ALL_TESTS)
+       rm -rf .deps obj bin
 
+# Clear some of the default rules.
 .SUFFIXES:
 .SECONDARY:
 %.c:;

Reply via email to