blob: afe268ae45f83d5e4f0aa60488c5476d70b390f1 [file] [log] [blame]
Dave Hylandsc89c6812014-01-24 01:05:30 -08001include ../py/mkenv.mk
Paul Sokolovskyed1239f2014-02-01 20:06:55 +02002-include mpconfigport.mk
Dave Hylandsc89c6812014-01-24 01:05:30 -08003
Damien George136f6752014-01-07 14:54:15 +00004# define main target
Damien George7d089352014-01-20 00:02:39 +00005PROG = micropython
Damienc025ebb2013-10-12 14:30:21 +01006
Damien George55baff42014-01-21 21:40:13 +00007# qstr definitions (must come before including py.mk)
8QSTR_DEFS = qstrdefsport.h
9
Paul Sokolovsky7e56e552014-06-20 19:25:54 +030010# OS name, for simple autoconfig
11UNAME_S := $(shell uname -s)
12
Damien George136f6752014-01-07 14:54:15 +000013# include py core make definitions
14include ../py/py.mk
15
Andrew Scheller70a7d7a2014-04-16 22:10:33 +010016INC = -I.
17INC += -I$(PY_SRC)
Damien Georged553be52014-04-17 18:03:27 +010018INC += -I$(BUILD)
Andrew Scheller70a7d7a2014-04-16 22:10:33 +010019
Damien George136f6752014-01-07 14:54:15 +000020# compiler settings
Paul Sokolovskycd590cb2014-06-22 19:20:27 +030021CWARN = -Wall -Werror -Wno-error=cpp
Paul Sokolovsky7cd46a12014-06-20 19:27:51 +030022CFLAGS = $(INC) $(CWARN) -ansi -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT) $(CFLAGS_EXTRA)
Gordon McGregor3890ec42014-02-14 16:37:37 -060023
Paul Sokolovskyeecf3e92014-06-20 19:19:06 +030024# Debugging/Optimization
25ifdef DEBUG
26CFLAGS += -g
27COPT = -O0
28else
29COPT = -Os #-DNDEBUG
30endif
31
Paul Sokolovsky7cd46a12014-06-20 19:27:51 +030032LDFLAGS = $(LDFLAGS_MOD) -lm -Wl,-Map=$@.map,--cref $(LDFLAGS_EXTRA)
Paul Sokolovskyed1239f2014-02-01 20:06:55 +020033
Andrew Scheller571d5a32014-04-16 01:46:01 +010034ifeq ($(MICROPY_FORCE_32BIT),1)
35CFLAGS += -m32
36LDFLAGS += -m32
Damien Georgeee3fd462014-05-24 23:03:12 +010037ifeq ($(MICROPY_PY_FFI),1)
Andrew Scheller571d5a32014-04-16 01:46:01 +010038ifeq ($(UNAME_S),Linux)
39CFLAGS_MOD += -I/usr/include/i686-linux-gnu
40endif
41endif
42endif
43
Paul Sokolovsky793838a2014-02-27 18:10:40 +020044ifeq ($(MICROPY_USE_READLINE),1)
45CFLAGS_MOD += -DMICROPY_USE_READLINE=1
46LDFLAGS_MOD += -lreadline
47# the following is needed for BSD
48#LDFLAGS_MOD += -ltermcap
49endif
Damien Georgeee3fd462014-05-24 23:03:12 +010050ifeq ($(MICROPY_PY_TIME),1)
51CFLAGS_MOD += -DMICROPY_PY_TIME=1
Paul Sokolovskyc3936842014-04-04 20:32:26 +030052SRC_MOD += modtime.c
Paul Sokolovskya9459bc2014-02-02 00:57:06 +020053endif
Damien Georgeee3fd462014-05-24 23:03:12 +010054ifeq ($(MICROPY_PY_FFI),1)
Ilya Dmitrichenko8e998ed2014-04-20 09:30:46 +010055LIBFFI_LDFLAGS_MOD := $(shell pkg-config --libs libffi)
56LIBFFI_CFLAGS_MOD := $(shell pkg-config --cflags libffi)
Damien Georgeee3fd462014-05-24 23:03:12 +010057CFLAGS_MOD += $(LIBFFI_CFLAGS_MOD) -DMICROPY_PY_FFI=1
Marcus von Appen8ffc0242014-06-07 09:16:42 +020058ifeq ($(UNAME_S),Linux)
59LDFLAGS_MOD += -ldl
60endif
61LDFLAGS_MOD += $(LIBFFI_LDFLAGS_MOD)
Paul Sokolovskyc3936842014-04-04 20:32:26 +030062SRC_MOD += modffi.c
Paul Sokolovskyed1239f2014-02-01 20:06:55 +020063endif
64
Damienc025ebb2013-10-12 14:30:21 +010065
Damien George136f6752014-01-07 14:54:15 +000066# source files
Damienc025ebb2013-10-12 14:30:21 +010067SRC_C = \
68 main.c \
Paul Sokolovskye7db8172014-02-11 00:44:37 +020069 gccollect.c \
Dave Hylands117c46d2014-05-07 07:15:00 -070070 input.c \
Paul Sokolovskye0e79ae2014-01-08 02:52:20 +020071 file.c \
Paul Sokolovskyc3936842014-04-04 20:32:26 +030072 modsocket.c \
Paul Sokolovsky0c124c32014-05-14 22:08:45 +030073 modos.c \
Paul Sokolovskyed1239f2014-02-01 20:06:55 +020074 $(SRC_MOD)
Damienc025ebb2013-10-12 14:30:21 +010075
Antonin ENFRUN6caae0b2014-05-11 21:28:26 +020076ifeq ($(UNAME_S),Darwin)
Paul Sokolovsky7e56e552014-06-20 19:25:54 +030077
78LDFLAGS+ = -Wl,-order_file,$(BUILD)/order.def
79
Damien George63436ce2014-05-21 19:56:54 +010080# Must be the last file in list of sources
Antonin ENFRUN6caae0b2014-05-11 21:28:26 +020081SRC_C += seg_helpers.c
Damien George63436ce2014-05-21 19:56:54 +010082
83# making seg_helpers.c rely on order.def will force order.def to be created
84seg_helpers.c: $(BUILD)/order.def
85
86# create order.def in build directory
87$(BUILD)/order.def:
88 $(Q)echo "seg_helpers.o: ___bss_start" > $@
Antonin ENFRUN6caae0b2014-05-11 21:28:26 +020089endif
90
Damien George55baff42014-01-21 21:40:13 +000091OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
Damienc025ebb2013-10-12 14:30:21 +010092
Dave Hylandsc89c6812014-01-24 01:05:30 -080093include ../py/mkrules.mk
Damienc025ebb2013-10-12 14:30:21 +010094
Andrew Schellerd5ce9162014-04-16 20:38:16 +010095.PHONY: test
96
97test: $(PROG) ../tests/run-tests
98 $(eval DIRNAME=$(notdir $(CURDIR)))
Andrew Schellere02b77b2014-04-17 01:26:25 +010099 cd ../tests && MICROPY_MICROPYTHON=../$(DIRNAME)/$(PROG) ./run-tests