Makefile 2.16 KB
Newer Older
1 2 3 4 5 6 7 8
# This file is part of the MicroPython port to LEON platforms
# Copyright (c) 2015-2016 George Robotics Limited
#
# Provided to the European Space Agency as part of the project "Porting of
# MicroPython to LEON platforms", contract number 4000114080/15/NL/FE/as.
#
# This Makefile builds an example of a minimal LEON port.

9
# the location of the MicroPython LEON support code
10 11 12 13 14 15 16 17 18 19 20
LEON_COMMON = leon-common
LEON_COMMON_FROM_HERE = ../$(LEON_COMMON)

include ../py/mkenv.mk

# qstr definitions (must come before including py.mk)
QSTR_DEFS = $(LEON_COMMON_FROM_HERE)/qstrdefsport.h

# include py core make definitions
include ../py/py.mk

21 22
# include LEON common makefile settings
include $(LEON_COMMON_FROM_HERE)/mkenv.mk
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

INC =
INC += -I. -I.. -I$(BUILD) -I$(LEON_COMMON_FROM_HERE)

CFLAGS += $(INC) -Wall -Werror -ansi -std=gnu99 $(COPT) -mcpu=v8

# Use this to optimise the static hash tables
CFLAGS += -no-integrated-cpp -B$(shell pwd)/../tools

# Debugging/Optimization
ifeq ($(DEBUG), 1)
CFLAGS += -O0 -ggdb
else
CFLAGS += -Os -DNDEBUG
endif

CFLAGS += $(CFLAGS_EXTRA)

LIBS = -lm

SRC_C = \
	main.c \
	lib/libc/string0.c \
	$(LEON_COMMON)/mputil.c \
	$(LEON_COMMON)/mpvmmanage.c \
	$(LEON_COMMON)/mphalport.c \
	$(LEON_COMMON)/modtime.c \
	$(LEON_COMMON)/modrtems.c \
	$(LEON_COMMON)/modrtemstask.c \
	$(LEON_COMMON)/modrtemsqueue.c \
53
	$(LEON_COMMON)/modrtemssem.c \
54
	$(LEON_COMMON)/modrtemstimer.c \
55
	$(LEON_COMMON)/modmem.c \
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83

SRC_S = \
	$(LEON_COMMON)/gchelper.s \

# these are the example Python scripts to compile
SRC_PY = pystone.py

OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o) $(SRC_S:.s=.o))

all: $(BUILD)/firmware.elf $(BUILD)/firmware.srec $(BUILD)/firmware.tab

$(BUILD)/firmware.elf: $(OBJ)
	$(ECHO) "LINK $@"
	$(Q)$(LD) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
	$(Q)$(SIZE) $@

$(BUILD)/firmware.srec: $(BUILD)/firmware.elf
	$(ECHO) "SREC $@"
	$(Q)$(OBJCOPY) -O srec $< $@

$(BUILD)/firmware.tab: $(BUILD)/firmware.elf
	$(ECHO) "TAB $@"
	$(Q)$(OBJDUMP) --syms $< > $@   

main.c: scripts.h

$(BUILD)/%.mpy: %.py
	$(ECHO) "PY $<"
84
	$(Q)../mpy-cross/mpy-cross -o $@ $<
85 86 87 88 89 90

scripts.h: $(addprefix $(BUILD)/, $(SRC_PY:.py=.mpy))
	$(ECHO) "MPY $@"
	$(Q)../tools/mpytool.py tohdr $^ > $@

include ../py/mkrules.mk