# You can override the CFLAGS and C compiler externally, # e.g. make PLATFORM=cortex-m3 CFLAGS += -g -Wall -Werror -I include ifeq ($(PLATFORM),cortex-m3) CC = arm-none-eabi-gcc AR = arm-none-eabi-ar CFLAGS += -mcpu=cortex-m3 -mthumb CFLAGS += -fno-common -Os CFLAGS += -ffunction-sections -fdata-sections endif # With this, the makefile should work on Windows also. ifdef windir RM = del endif # Just include all the source files in the build. CSRC = $(wildcard src/*.c) OBJS = $(CSRC:.c=.o) # And the files for the test suite TESTS_CSRC = $(wildcard tests/*_tests.c) TESTS_OBJS = $(TESTS_CSRC:.c=) # Some of the files uses "templates", i.e. common pieces # of code included from multiple files. CFLAGS += -Isrc/templates all: libc.a clean: $(RM) $(OBJS) $(TESTS_OBJS) libc.a libc.a: $(OBJS) $(RM) $@ $(AR) ru $@ $^ run_tests: $(TESTS_OBJS) $(foreach f,$^,$f) tests/%: tests/%.c tests/tests_glue.c libc.a $(CC) $(CFLAGS) -o $@ $^ %.o: %.c $(CC) $(CFLAGS) -c -o $@ $<