summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2013-01-27 18:27:20 +0100
committerFlorian Pritz <bluewind@xinu.at>2013-01-27 18:27:20 +0100
commit81b5fdfdef01cfd2f4d3272a7e1a5675a4b50759 (patch)
treeb6a3d78c7ae1a7560af4c33cadb8b149da6a00f5 /Makefile
downloadlaunchpad_tools-81b5fdfdef01cfd2f4d3272a7e1a5675a4b50759.tar.gz
launchpad_tools-81b5fdfdef01cfd2f4d3272a7e1a5675a4b50759.tar.xz
Add Makefile
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile62
1 files changed, 62 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3ea5ba9
--- /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 ./libs/msp430
+# symlink/copy Energia/hardware/msp430/variants/launchpad ./libs/launchpad
+# symlink/copy any other libraries you use into ./libs/
+#
+# 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 -Ilibs/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_LIBS=$(wildcard libs/*/*.c libs/*/*.cpp)
+OBJS_LIBS_TMP=$(SOURCES_LIBS:.c=.o)
+OBJS_LIBS=$(OBJS_LIBS_TMP:.cpp=.o)
+BUILD_OBJS_LIBS=$(addprefix build/,$(OBJS_LIBS))
+
+CFLAGS += $(addprefix -I,$(sort $(dir $(SOURCES_LIBS))))
+
+all: dirs build/main.elf
+
+dirs:
+ mkdir -p $(sort $(dir $(BUILD_OBJS) $(BUILD_OBJS_LIBS)))
+
+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/libs/core.a: $(BUILD_OBJS_LIBS)
+ @echo " [AR] $@: $^"
+ @msp430-ar rcs $@ $^
+
+# link everything together
+build/main.elf: $(BUILD_OBJS) build/libs/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