171bddef0a
this way the mapping between hashcodes and hash definitions isn't needed also it simplfies handling, testing and allows to return error with the hash code
74 lines
1.4 KiB
Makefile
74 lines
1.4 KiB
Makefile
CC = gcc
|
|
RM = rm -f
|
|
CFLAGS = -fPIC -g -O2 -std=c99 \
|
|
-Wall -Wextra -pedantic -Werror \
|
|
-Wdeclaration-after-statement \
|
|
-Wno-format-zero-length \
|
|
-Wold-style-definition \
|
|
-Woverflow \
|
|
-Wpointer-arith \
|
|
-Wunused \
|
|
-Wvla
|
|
|
|
LDFLAGS = -g
|
|
LDLIBS =
|
|
|
|
TARGET_LIB = mulithash.a
|
|
TARGET_BIN = multihash
|
|
|
|
MAIN = src/main.c
|
|
MAIN_O = $(MAIN:.c=.o)
|
|
|
|
SRCS = src/hashes.c src/errors.c
|
|
OBJS = $(SRCS:.c=.o)
|
|
|
|
src/%.o: src/%.c
|
|
$(CC) $(CFLAGS) -c -I include $< -o $@
|
|
|
|
all: $(TARGET_LIB) $(TARGET_BIN)
|
|
|
|
$(TARGET_LIB): $(OBJS)
|
|
ar rcs $@ $^
|
|
|
|
$(TARGET_BIN): $(MAIN_O) $(TARGET_LIB)
|
|
$(CC) $(LDFLAGS) $^ -o $@
|
|
|
|
# Tests
|
|
|
|
TEST_SRCS = $(wildcard tests/c/test_*.c)
|
|
TEST_OBJS = $(TEST_SRCS:.c=.o)
|
|
TEST_BINS = $(TEST_OBJS:.o=)
|
|
|
|
PHONY += test
|
|
test: $(TEST_BINS)
|
|
@for t in $^; do \
|
|
echo; \
|
|
echo '***' "$$t.c" '***'; \
|
|
"./$$t" || ERROR=1; \
|
|
done; \
|
|
echo; \
|
|
exit $$ERROR
|
|
|
|
tests/c/test_%.o: tests/c/test_%.c tests/c/minunit.h
|
|
$(CC) $(CFLAGS) -c -I include $< -o $@
|
|
|
|
tests/c/test_%: tests/c/test_%.o $(TARGET_LIB)
|
|
$(CC) $(LDFLAGS) $^ -o $@
|
|
|
|
# Utils
|
|
|
|
PHONY += clean dist-clean
|
|
|
|
clean:
|
|
$(RM) $(OBJS)
|
|
$(RM) $(TEST_BINS)
|
|
$(RM) $(TARGET_LIB)
|
|
$(RM) $(TARGET_BIN)
|
|
$(RM) $(MAIN_O)
|
|
|
|
dist-clean: clean
|
|
|
|
PHONY += build
|
|
build: all
|
|
|
|
.PHONY: $(PHONY)
|