diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0c8f506 --- /dev/null +++ b/Makefile @@ -0,0 +1,62 @@ +# 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 |