mirror of https://github.com/ludocode/mpack
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.
52 lines
1.4 KiB
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)
|