48 lines
932 B
Makefile
48 lines
932 B
Makefile
TARGET := klib.a
|
|
TESTS := tlv_test dictionary_test
|
|
HEADERS := $(wildcard *.h)
|
|
SOURCES := $(wildcard *.cc)
|
|
OBJS := Arena.o Dictionary.o TLV.o
|
|
|
|
CXX := clang++
|
|
CXXFLAGS := -g -std=c++14 -Werror -Wall -DDESKTOP_BUILD
|
|
|
|
.PHONY: all
|
|
all: $(TARGET) $(TESTS) tags run-tests
|
|
|
|
tags: $(HEADERS) $(SOURCES)
|
|
ctags $(HEADERS) $(SOURCES)
|
|
|
|
$(TARGET): $(OBJS)
|
|
$(AR) rcs $@ $(OBJS)
|
|
|
|
tlv_test: tlvTest.o $(TARGET)
|
|
$(CXX) -o $@ $(CXXFLAGS) tlvTest.o $(TARGET)
|
|
|
|
dictionary_test: dictionaryTest.o $(TARGET)
|
|
$(CXX) -o $@ $(CXXFLAGS) dictionaryTest.o $(TARGET)
|
|
|
|
.PHONY: print-%
|
|
print-%: ; @echo '$(subst ','\'',$*=$($*))'
|
|
|
|
klib.a: $(OBJS)
|
|
|
|
%.o: %.cc
|
|
$(CXX) -o $@ -c $(CXXFLAGS) $<
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
# build outputs
|
|
rm -f $(TARGET) $(TESTS) *.o
|
|
|
|
# test miscellaneous
|
|
rm -f core core.* tags arena_test.bin
|
|
|
|
.PHONY: run-tests
|
|
run-tests: $(TESTS)
|
|
for testbin in $(TESTS); \
|
|
do \
|
|
echo "./$${testbin}" ; \
|
|
./$${testbin}; \
|
|
done
|