summaryrefslogtreecommitdiff
path: root/include.mk
diff options
context:
space:
mode:
Diffstat (limited to 'include.mk')
-rw-r--r--include.mk63
1 files changed, 59 insertions, 4 deletions
diff --git a/include.mk b/include.mk
index 28eeaaa..20d20f4 100644
--- a/include.mk
+++ b/include.mk
@@ -34,8 +34,11 @@ CXX_DEP := $(CXX_SRC:%.cpp=%.d)
OBJ_LIB := $(LIBS:%=lib-%.o)
SRC_LIB := $(LIBS:%=$(LIB_DIR)/%.c)
DEP_LIB := $(LIBS:%=lib-%.d)
+CXX_OBJ_LIB := $(CXX_LIBS:%=lib-%.o)
+CXX_SRC_LIB := $(CXX_LIBS:%=$(LIB_DIR)/%.cpp)
+CXX_DEP_LIB := $(CXX_LIBS:%=lib-%.d)
-.PHONY: prepare clean clean-external distclean clean-lufa program erase flash reset run
+.PHONY: prepare clean clean-external distclean clean-lufa clean-fastled program erase flash reset run
ELFFILE := $(NAME).elf
HEXFILE := $(NAME).hex
@@ -53,21 +56,62 @@ CFLAGS += -DBOARD=BOARD_$(LUFA_BOARD)
CFLAGS += $(LUFA_OPTS)
endif
+ifdef FASTLED_PATH
+CXXFLAGS += -I$(FASTLED_PATH)
+CXXFLAGS += -DARDUINO
+CXXFLAGS += -DNEED_CXX_BITS
+CXXFLAGS += $(FASTLED_OPTS)
+endif
+
prepare: $(EXTERNAL_LIBS:%=build-%)
clean-external: $(EXTERNAL_LIBS:%=clean-%)
export
+
build-lufa: liblufa.a
liblufa.a: Makefile
- @echo "building external LUFA lib ($(LUFA_PATH))"
+ @echo ""
+ @echo "****************************************************"
+ @echo "* building external LUFA lib ($(LUFA_PATH))"
+ @echo ""
make -f $(SPREADAVR_PATH)/lufa.mk liblufa.a
make -f $(SPREADAVR_PATH)/lufa.mk clean
+ @echo ""
+ @echo "****************************************************"
clean-lufa:
+ @echo ""
+ @echo "****************************************************"
@echo "cleaning external LUFA lib ($(LUFA_PATH))"
+ @echo ""
make -f $(SPREADAVR_PATH)/lufa.mk clean
rm -f liblufa.a
+ @echo ""
+ @echo "****************************************************"
+
+
+build-fastled: libfastled.a
+
+libfastled.a: Makefile
+ @echo ""
+ @echo "****************************************************"
+ @echo "building external FastLED lib ($(FASTLED_PATH))"
+ @echo ""
+ make -f $(SPREADAVR_PATH)/fastled.mk libfastled.a
+ make -f $(SPREADAVR_PATH)/fastled.mk clean
+ @echo ""
+ @echo "****************************************************"
+
+clean-fastled:
+ @echo ""
+ @echo "****************************************************"
+ @echo "cleaning external FastLED lib ($(FASTLED_PATH))"
+ @echo ""
+ make -f $(SPREADAVR_PATH)/fastled.mk clean
+ rm -f libfastled.a
+ @echo ""
+ @echo "****************************************************"
## project-specific objects
@@ -89,10 +133,18 @@ lib-%.d: $(LIB_DIR)/%.c Makefile
sed 's,\($*\)\.o[ :]*,lib-\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$; echo '(re)building $@'
+lib-%.d: $(LIB_DIR)/%.cpp Makefile
+ @set -e; rm -f $@; \
+ $(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \
+ sed 's,\($*\)\.o[ :]*,lib-\1.o $@ : ,g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$; echo '(re)building $@'
+
+
ifneq ($(MAKECMDGOALS),distclean)
-include $(DEP)
-include $(CXX_DEP)
-include $(DEP_LIB)
+-include $(CXX_DEP_LIB)
endif
%.o: %.c Makefile
@@ -104,8 +156,11 @@ endif
lib-%.o: $(LIB_DIR)/%.c Makefile
$(CC) $(CFLAGS) -c $< -o $@
-$(ELFFILE): $(OBJ) $(CXX_OBJ) $(OBJ_LIB) $(EXTERNAL_LIBS:%=lib%.a)
- $(CC) $(LDFLAGS) $(OBJ) $(CXX_OBJ) $(OBJ_LIB) $(EXTERNAL_LIBS:%=-l%) -o $@
+lib-%.o: $(LIB_DIR)/%.cpp Makefile
+ $(CXX) $(CXXFLAGS) -c $< -o $@
+
+$(ELFFILE): $(OBJ_LIB) $(CXX_OBJ_LIB) $(EXTERNAL_LIBS:%=lib%.a) $(OBJ) $(CXX_OBJ)
+ $(CC) $(LDFLAGS) $(OBJ) $(CXX_OBJ) $(OBJ_LIB) $(CXX_OBJ_LIB) $(EXTERNAL_LIBS:%=-l%) -o $@
$(SIZE) $@
@echo ""