diff options
author | Clyne Sullivan <tullivan99@gmail.com> | 2015-10-06 14:41:38 -0400 |
---|---|---|
committer | Clyne Sullivan <tullivan99@gmail.com> | 2015-10-06 14:41:38 -0400 |
commit | 51699171c289c5ff553ed0c9c75c5a108e164fff (patch) | |
tree | db9379fd4b8966bc12bc2713912638c691b3db1b /Makefile | |
parent | e5199012ee77fd8ada1bffdb1a44057ef98a25a8 (diff) |
uploaded code
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5d6b7fc --- /dev/null +++ b/Makefile @@ -0,0 +1,69 @@ +# Universal C Makefile for MCU targets
+
+# Path to project root (for top-level, so the project is in ./; first-level, ../; etc.)
+ROOT=.
+# Binary output directory
+BINDIR=$(ROOT)/bin
+# Subdirectories to include in the build
+SUBDIRS=src
+
+# Nothing below here needs to be modified by typical users
+
+# Include common aspects of this project
+-include $(ROOT)/common.mk
+
+ASMSRC:=$(wildcard *.$(ASMEXT))
+ASMOBJ:=$(patsubst %.o,$(BINDIR)/%.o,$(ASMSRC:.$(ASMEXT)=.o))
+HEADERS:=$(wildcard *.$(HEXT))
+CSRC=$(wildcard *.$(CEXT))
+COBJ:=$(patsubst %.o,$(BINDIR)/%.o,$(CSRC:.$(CEXT)=.o))
+CPPSRC:=$(wildcard *.$(CPPEXT))
+CPPOBJ:=$(patsubst %.o,$(BINDIR)/%.o,$(CPPSRC:.$(CPPEXT)=.o))
+OUT:=$(BINDIR)/$(OUTNAME)
+
+.PHONY: all clean upload _force_look
+
+# By default, compile program
+all: $(BINDIR) $(OUT)
+
+# Remove all intermediate object files (remove the binary directory)
+clean:
+ -rm -f $(OUT)
+ -rm -rf $(BINDIR)
+
+# Uploads program to device
+upload: all
+ $(UPLOAD)
+
+# Phony force-look target
+_force_look:
+ @true
+
+# Looks in subdirectories for things to make
+$(SUBDIRS): %: _force_look
+ @$(MAKE) --no-print-directory -C $@
+
+# Ensure binary directory exists
+$(BINDIR):
+ -@mkdir -p $(BINDIR)
+
+# Compile program
+$(OUT): $(SUBDIRS) $(ASMOBJ) $(COBJ) $(CPPOBJ)
+ @echo LN $(BINDIR)/*.o $(LIBRARIES) to $@
+ @$(CC) $(LDFLAGS) $(BINDIR)/*.o $(LIBRARIES) -o $@
+ @$(MCUPREFIX)size $(SIZEFLAGS) $(OUT)
+ $(MCUPREPARE)
+
+# Assembly source file management
+$(ASMOBJ): $(BINDIR)/%.o: %.$(ASMEXT) $(HEADERS)
+ @echo AS $<
+ @$(AS) $(AFLAGS) -o $@ $<
+
+# Object management
+$(COBJ): $(BINDIR)/%.o: %.$(CEXT) $(HEADERS)
+ @echo CC $(INCLUDE) $<
+ @$(CC) $(INCLUDE) $(CFLAGS) -o $@ $<
+
+$(CPPOBJ): $(BINDIR)/%.o: %.$(CPPEXT) $(HEADERS)
+ @echo CPC $(INCLUDE) $<
+ @$(CPPCC) $(INCLUDE) $(CPPFLAGS) -o $@ $<
|