# The part of the Makefiles of tools/kernels and tools/aggkern (standalone harnesses, no backend linked) that they share. # The includer sets, before including it: OUT (default), N (default), LIB (the src/ sources linked), HDR (extra header dependencies) # and, after it, the bench target and what else it builds. test and bench run under flock /tmp/sift-perf.lock. CC ?= gcc SRC = ../../src include $(SRC)/areas.mk KT = ../kernels # Same code generation flags as the extension (Makefile PG_CFLAGS) CFLAGS = -std=gnu11 -O2 -g $(SIFT_BASE_ISA) -ffp-contract=off -Wall -Wextra \ -Wno-unused-parameter -Wno-sign-compare $(SIFT_INC) -I$(shell pg_config --includedir-server) $(SIFT_PGCPP) LDLIBS = -lm -lpthread FLOCK = $(if $(shell command -v flock),flock /tmp/sift-perf.lock) ifdef SANITIZE CFLAGS += -fsanitize=address,undefined -fno-omit-frame-pointer -fno-sanitize-recover=undefined OUT := $(OUT)-san endif OBJ = $(patsubst $(SRC)/%.c,$(OUT)/%.o,$(LIB)) $(OUT)/shim.o all: $(OUT)/test $(OUT)/bench $(OUT)/%.o: $(SRC)/%.c $(HDR) @mkdir -p $(@D) $(CC) $(CFLAGS) -c -o $@ $< $(OUT)/%.o: %.c $(HDR) @mkdir -p $(@D) $(CC) $(CFLAGS) -c -o $@ $< $(OUT)/shim.o: $(KT)/shim.c $(HDR) @mkdir -p $(@D) $(CC) $(CFLAGS) -c -o $@ $< $(OUT)/test: $(OUT)/test.o $(OBJ) $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS) test: $(OUT)/test $(FLOCK) $(OUT)/test $(N) bench: $(OUT)/bench $(FLOCK) $(OUT)/bench clean: rm -rf $(OUT) $(OUT)-san .PHONY: all test bench clean