CC ?= gcc BUILD_DIR ?= $(shell pwd)/build TARGET_DIR ?= $(shell pwd)/target CFLAGS = -Wall -Wextra -O2 LDFLAGS = -shared ifdef ALOG_HIJACK_PRINTF CFLAGS += -DALOG_HIJACK_PRINTF endif ifdef ALOG_DEBUG CFLAGS += -g endif ALOG_SRC = alog.c ALOG_OBJ = $(BUILD_DIR)/alog.o ALOG_LIB = $(TARGET_DIR)/alog.so include tests/tests.mk .PHONY: so so: $(if $(shell stat $(ALOG_LIB)), clean) $(ALOG_LIB) $(ALOG_LIB): $(TARGET_DIR) $(ALOG_OBJ) $(CC) $(LDFLAGS) -o $(ALOG_LIB) $(ALOG_OBJ) $(ALOG_OBJ): $(BUILD_DIR) $(CC) $(CFLAGS) -fPIC -c alog.c -o $(ALOG_OBJ) $(BUILD_DIR): mkdir $(BUILD_DIR) $(TARGET_DIR): mkdir $(TARGET_DIR) .PHONY: clean clean: rm $(ALOG_LIB) $(ALOG_OBJ)