Makefile 2.21 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

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
30
#CFLAGS += -no-integrated-cpp -B$(shell pwd)/../tools
31 32 33 34 35 36 37 38 39 40

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

CFLAGS += $(CFLAGS_EXTRA)

41
LIBS += -lm
42 43 44 45

SRC_C = \
	main.c \
	lib/libc/string0.c \
46
	$(LEON_COMMON)/sparcisr.c \
47
	$(LEON_COMMON)/leonprintf.c \
48 49 50 51 52 53
	$(LEON_COMMON)/mputil.c \
	$(LEON_COMMON)/mphalport.c \
	$(LEON_COMMON)/modtime.c \
	$(LEON_COMMON)/modrtems.c \
	$(LEON_COMMON)/modrtemstask.c \
	$(LEON_COMMON)/modrtemsqueue.c \
54
	$(LEON_COMMON)/modrtemssem.c \
55
	$(LEON_COMMON)/modmem.c \
56 57

SRC_S = \
58
	$(LEON_COMMON)/sparcjmp.s \
59 60 61 62 63
	$(LEON_COMMON)/gchelper.s \

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

64
OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o) $(SRC_S:.s=.o) $(SRC_RTEMS:.c=.o))
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

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 $<"
85
	$(Q)../mpy-cross/mpy-cross -o $@ $<
86 87 88 89 90 91

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

include ../py/mkrules.mk