diff --git a/Makefile b/Makefile index 4b47be5..54dad8d 100644 --- a/Makefile +++ b/Makefile @@ -88,6 +88,7 @@ LDLIBS ?= -lm HOSTCFLAGS ?= -O2 STATIC_LIB := $(OUTDIR)/libfec.a +TEST_EXEEXT := $(if $(filter windows,$(BUILD)),.exe) SOURCES := \ cpu_mode_generic.c fec.c sim.c \ @@ -105,19 +106,40 @@ SOURCES := \ GENERATED_SOURCES := $(GENDIR)/ccsds_tab.c $(GENDIR)/ccsds_tal.c OBJECTS := $(addprefix $(OBJDIR)/,$(SOURCES:.c=.o)) \ $(OBJDIR)/ccsds_tab.o $(OBJDIR)/ccsds_tal.o -DEPS := $(OBJECTS:.o=.d) +TESTS := vtest27 vtest29 vtest615 rstest dtest sumsq_test peaktest +TEST_PROGRAMS := $(addprefix $(OUTDIR)/,$(addsuffix $(TEST_EXEEXT),$(TESTS))) +TEST_OBJECTS := $(addprefix $(OBJDIR)/,$(addsuffix .o,$(TESTS))) +DEPS := $(OBJECTS:.o=.d) $(TEST_OBJECTS:.o=.d) GEN_CCSDS := $(TOOLDIR)/gen_ccsds$(if $(filter windows,$(HOST_OS)),.exe) GEN_TAL := $(TOOLDIR)/gen_ccsds_tal$(if $(filter windows,$(HOST_OS)),.exe) HOST_GEN_OBJECTS := $(TOOLDIR)/gen_ccsds.o $(TOOLDIR)/init_rs_char.o .DEFAULT_GOAL := all -.PHONY: all build linux macos windows static shared check-tools clean +.SECONDARY: $(TEST_OBJECTS) +.PHONY: all build linux macos windows static shared test check-tools clean all: build build: check-tools static shared static: $(STATIC_LIB) shared: $(SHARED_LIB) +ifeq ($(BUILD),$(HOST_OS)) +test: $(TEST_PROGRAMS) + $(OUTDIR)/vtest27$(TEST_EXEEXT) -e 3.0 -n 1000 -v + $(OUTDIR)/vtest27$(TEST_EXEEXT) + $(OUTDIR)/vtest29$(TEST_EXEEXT) -e 2.5 -n 1000 -v + $(OUTDIR)/vtest29$(TEST_EXEEXT) + $(OUTDIR)/vtest615$(TEST_EXEEXT) -e 1.0 -n 100 -v + $(OUTDIR)/vtest615$(TEST_EXEEXT) + $(OUTDIR)/rstest$(TEST_EXEEXT) + $(OUTDIR)/dtest$(TEST_EXEEXT) + $(OUTDIR)/sumsq_test$(TEST_EXEEXT) + $(OUTDIR)/peaktest$(TEST_EXEEXT) +else +test: + @echo "Error: tests can only run for the host platform ($(HOST_OS)); requested BUILD=$(BUILD)." + @exit 1 +endif # Explicit platform aliases are recursive so their toolchains and paths are # resolved with the requested BUILD value from the start. @@ -148,6 +170,9 @@ $(STATIC_LIB): $(OBJECTS) | $(OUTDIR) $(SHARED_LIB): $(OBJECTS) | $(OUTDIR) $(CC) $(SHARED_FLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) +$(OUTDIR)/%$(TEST_EXEEXT): $(OBJDIR)/%.o $(STATIC_LIB) | $(OUTDIR) + $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) + $(OBJDIR)/%.o: %.c | $(OBJDIR) $(CC) $(CPPFLAGS) $(CFLAGS) $(PIC_CFLAGS) -MMD -MP -I. -c -o $@ $< diff --git a/README b/README index edcec20..f20cec2 100644 --- a/README +++ b/README @@ -111,6 +111,10 @@ The resulting files are in lib/linux/, lib/macos/ or lib/windows/. Use `make static` or `make shared` to build only one library type, and `make clean` to remove all generated files. +To build and run the native test programs: + + make test + Revision history: Version 1.0 released 29 May 2001