1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 14:21:10 +02:00

Bin in bin, obj in obj; prettify makefile

This commit is contained in:
Andy Wingo 2023-08-09 21:42:57 +02:00
parent 8f93e23a5f
commit 19f66fab08

View file

@ -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:;