summaryrefslogtreecommitdiff
path: root/Venus_Skeleton/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Venus_Skeleton/Makefile')
-rw-r--r--Venus_Skeleton/Makefile31
1 files changed, 28 insertions, 3 deletions
diff --git a/Venus_Skeleton/Makefile b/Venus_Skeleton/Makefile
index 26b4ee2..d85d9a8 100644
--- a/Venus_Skeleton/Makefile
+++ b/Venus_Skeleton/Makefile
@@ -2,9 +2,34 @@
CC = avr-gcc
WFLAGS = -Wall -Wextra -Wno-attributes
WFLAGS += -fdiagnostics-color=auto
-CFLAGS =
+EXTRA_CFLAGS = $(shell cat .syntastic_c_config) -O2 $(CFLAGS)
-SOURCES = Venus_Skeleton.ino
+MY_SOURCES = Venus_Skeleton.ino
+MY_OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.ino,%.o,$(MY_SOURCES)))
+LIBS_SOURCES = $(wildcard libs/*/*.cpp)
+LIBS_OBJECTS = $(patsubst %.cpp,%.o,$(LIBS_SOURCES))
+SOURCES = $(MY_SOURCES) $(LIBS_SOURCES)
+OBJECTS = $(MY_OBJECTS) $(LIBS_OBJECTS)
+PROGRAM ?= main
+_V_0 = @
+_V = $(_V_$(V))
+
+.PHONY: main clean check
check:
- $(CC) $(WFLAGS) $$(cat .syntastic_c_config) $(CFLAGS) -x c++ $(SOURCES) -o /dev/null -O2
+ rm -f $(MY_OBJECTS)
+ $(MAKE) $(MY_OBJECTS)
+# Note: does not compile due to link errors.
+$(PROGRAM): $(OBJECTS)
+ $(_V)$(CC) $(WFLAGS) $(EXTRA_CFLAGS) $(OBJECTS) -o $@
+
+clean:
+ $(_V)rm -f $(PROGRAM) $(OBJECTS)
+
+# Not my code...
+libs/%.o: libs/%.cpp
+ $(_V)$(CC) -w $(EXTRA_CFLAGS) -c -o $@ $<
+%.o: %.cpp
+ $(_V)$(CC) $(WFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
+%.o: %.ino
+ $(_V)$(CC) $(WFLAGS) $(EXTRA_CFLAGS) -c -x c++ -o $@ $<