# You can get arduino compatibility code from Energia # https://github.com/energia/Energia # # symlink/copy Energia/hardware/msp430/cores/msp430 to ./lib/msp430 # symlink/copy Energia/hardware/msp430/variants/launchpad ./lib/launchpad # symlink/copy any other libraries you use into ./lib/ # # put your own code into ./src/ # these can be configure to suite your environment CC=msp430-gcc CXX=msp430-g++ MCU=msp430g2553 MSPDEBUG_DRIVER=rf2500 CFLAGS=-c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=$(MCU) -DF_CPU=16000000L -MMD -DARDUINO=101 -DENERGIA=9 -Ilib/launchpad CXXFLAGS=$(CFLAGS) # create a list of objects from src/ SOURCES=$(wildcard src/*.c src/*.cpp) OBJS_TMP=$(SOURCES:.c=.o) OBJS=$(OBJS_TMP:.cpp=.o) BUILD_OBJS=$(addprefix build/,$(OBJS)) # create a list of library objects SOURCES_lib=$(wildcard lib/*/*.c lib/*/*.cpp) OBJS_lib_TMP=$(SOURCES_lib:.c=.o) OBJS_lib=$(OBJS_lib_TMP:.cpp=.o) BUILD_OBJS_lib=$(addprefix build/,$(OBJS_lib)) CFLAGS += $(addprefix -I,$(sort $(dir $(SOURCES_lib)))) all: dirs build/main.elf dirs: mkdir -p $(sort $(dir $(BUILD_OBJS) $(BUILD_OBJS_lib))) build/%.o: %.cpp @echo " [CXX] $@: $<" @$(CXX) $(CXXFLAGS) $^ -o $@ build/%.o: %.c @echo " [CC] $@: $<" @$(CC) $(CFLAGS) $^ -o $@ # copy together all lib code into core.a build/lib/core.a: $(BUILD_OBJS_lib) @echo " [AR] $@: $^" @msp430-ar rcs $@ $^ # link everything together build/main.elf: $(BUILD_OBJS) build/lib/core.a @echo " [CC] $@: $^" @$(CC) -Os -Wl,-gc-sections,-u,main -mmcu=$(MCU) -o $@ $^ -lm # upload the result to the board upload: all mspdebug $(MSPDEBUG_DRIVER) --force-reset "prog build/main.elf" "verify build/main.elf" clean: rm -fr build .PHONY: dirs all upload clean