You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mpack/test/avr/Makefile

52 lines
1.4 KiB
Makefile

# This builds MPack and its test suite with avr-gcc for AVR (e.g. Arduino.)
# It doesn't actually work yet; in fact it doesn't link because the resulting
# code is way too big. But it does actually compile all the source files at
# least. Eventually it would be nice to trim the unit test suite down into
# something that could run on an Arduino. It would also be nice to set up some
# wrapper scripts to make it run under simavr so we can run it on CI builds.
# Requires avr-gcc and avr-libc (even though it builds with MPACK_STDLIB
# disabled) since avr-libc has stdint.h and friends.
ifeq (Makefile, $(firstword $(MAKEFILE_LIST)))
$(error The current directory should be the root of the repository. Try "cd ../.." and then "make -f test/avr/Makefile")
endif
CC=avr-gcc
BUILD := .build/avr
PROG := mpack-avr
CPPFLAGS := -Isrc -Itest/unit/src -DMPACK_HAS_CONFIG=1
CFLAGS := \
-Os -DNDEBUG \
-Wall -Wextra -Wpedantic -Werror \
-MMD -MP
SRCS := \
$(shell find src/ -type f -name '*.c') \
$(wildcard test/test*.c)
OBJS := $(patsubst %, $(BUILD)/%.o, $(SRCS))
GLOBAL_DEPENDENCIES := test/avr/Makefile
.PHONY: all
all: $(PROG)
.PHONY: clean
clean:
rm -rf $(BUILD)
-include $(patsubst %, $(BUILD)/%.d, $(SRCS))
.PHONY: $(PROG)
$(PROG): $(BUILD)/$(PROG)
$(OBJS): $(BUILD)/%.o: % $(GLOBAL_DEPENDENCIES)
@mkdir -p $(dir $@)
$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
$(BUILD)/$(PROG): $(OBJS)
@mkdir -p $(dir $@)
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(LDFLAGS)