c-multihash/Makefile
Jakub Sztandera 171bddef0a change how hashes are defined from enum to define
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
2016-07-31 15:43:43 +01:00

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)