Files
chrony/test/unit/Makefile.in
Miroslav Lichvar 6375307798 test: get list of objects from main Makefile
Instead of linking unit tests with *.o in the root directory, which may
include conflicting objects from a different configuration (e.g. hash),
add a print target to the main Makefile and use it in the unit test
Makefile to link only with objects that are relevant in the current
configuration.
2018-09-13 11:23:16 +02:00

46 lines
933 B
Makefile

TEST_WRAPPER =
CHRONY_SRCDIR = ../..
CC = @CC@
CFLAGS = @CFLAGS@
CPPFLAGS = -I$(CHRONY_SRCDIR) @CPPFLAGS@
LDFLAGS = @LDFLAGS@ @LIBS@ @EXTRA_LIBS@
SHARED_OBJS = test.o
TEST_OBJS := $(sort $(patsubst %.c,%.o,$(wildcard *.c)))
TESTS := $(patsubst %.o,%.test,$(filter-out $(SHARED_OBJS),$(TEST_OBJS)))
CHRONYD_OBJS := $(patsubst %.o,$(CHRONY_SRCDIR)/%.o,$(filter-out main.o,\
$(shell $(MAKE) -s -C $(CHRONY_SRCDIR) print-chronyd-objects)))
all: $(TESTS)
%.test: %.o $(SHARED_OBJS)
$(CC) $(CFLAGS) -o $@ $^ $(CHRONYD_OBJS:%/$*.o=) $(LDFLAGS)
%.o: %.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c $<
check: $(TESTS)
@ret=0; \
for t in $^; do \
$(TEST_WRAPPER) ./$$t || ret=1; \
done; \
exit $$ret
clean:
rm -f *.o *.gcda *.gcno core.* $(TESTS)
rm -rf .deps
distclean: clean
rm -f Makefile
.deps:
@mkdir .deps
.deps/%.d: %.c | .deps
@$(CC) -MM $(CPPFLAGS) -MT '$(<:%.c=%.o) $@' $< -o $@
-include $(TEST_OBJS:%.o=.deps/%.d)