Dave Hylands | c89c681 | 2014-01-24 01:05:30 -0800 | [diff] [blame] | 1 | include ../py/mkenv.mk |
Paul Sokolovsky | ed1239f | 2014-02-01 20:06:55 +0200 | [diff] [blame] | 2 | -include mpconfigport.mk |
Dave Hylands | c89c681 | 2014-01-24 01:05:30 -0800 | [diff] [blame] | 3 | |
Damien George | 136f675 | 2014-01-07 14:54:15 +0000 | [diff] [blame] | 4 | # define main target |
Damien George | 7d08935 | 2014-01-20 00:02:39 +0000 | [diff] [blame] | 5 | PROG = micropython |
Damien | c025ebb | 2013-10-12 14:30:21 +0100 | [diff] [blame] | 6 | |
Damien George | 55baff4 | 2014-01-21 21:40:13 +0000 | [diff] [blame] | 7 | # qstr definitions (must come before including py.mk) |
| 8 | QSTR_DEFS = qstrdefsport.h |
| 9 | |
Paul Sokolovsky | 7e56e55 | 2014-06-20 19:25:54 +0300 | [diff] [blame] | 10 | # OS name, for simple autoconfig |
| 11 | UNAME_S := $(shell uname -s) |
| 12 | |
Damien George | 136f675 | 2014-01-07 14:54:15 +0000 | [diff] [blame] | 13 | # include py core make definitions |
| 14 | include ../py/py.mk |
| 15 | |
Andrew Scheller | 70a7d7a | 2014-04-16 22:10:33 +0100 | [diff] [blame] | 16 | INC = -I. |
| 17 | INC += -I$(PY_SRC) |
Damien George | d553be5 | 2014-04-17 18:03:27 +0100 | [diff] [blame] | 18 | INC += -I$(BUILD) |
Andrew Scheller | 70a7d7a | 2014-04-16 22:10:33 +0100 | [diff] [blame] | 19 | |
Damien George | 136f675 | 2014-01-07 14:54:15 +0000 | [diff] [blame] | 20 | # compiler settings |
Paul Sokolovsky | cd590cb | 2014-06-22 19:20:27 +0300 | [diff] [blame] | 21 | CWARN = -Wall -Werror -Wno-error=cpp |
Paul Sokolovsky | 7cd46a1 | 2014-06-20 19:27:51 +0300 | [diff] [blame] | 22 | CFLAGS = $(INC) $(CWARN) -ansi -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT) $(CFLAGS_EXTRA) |
Gordon McGregor | 3890ec4 | 2014-02-14 16:37:37 -0600 | [diff] [blame] | 23 | |
Paul Sokolovsky | eecf3e9 | 2014-06-20 19:19:06 +0300 | [diff] [blame] | 24 | # Debugging/Optimization |
| 25 | ifdef DEBUG |
| 26 | CFLAGS += -g |
| 27 | COPT = -O0 |
| 28 | else |
| 29 | COPT = -Os #-DNDEBUG |
| 30 | endif |
| 31 | |
Paul Sokolovsky | 7cd46a1 | 2014-06-20 19:27:51 +0300 | [diff] [blame] | 32 | LDFLAGS = $(LDFLAGS_MOD) -lm -Wl,-Map=$@.map,--cref $(LDFLAGS_EXTRA) |
Paul Sokolovsky | ed1239f | 2014-02-01 20:06:55 +0200 | [diff] [blame] | 33 | |
Andrew Scheller | 571d5a3 | 2014-04-16 01:46:01 +0100 | [diff] [blame] | 34 | ifeq ($(MICROPY_FORCE_32BIT),1) |
| 35 | CFLAGS += -m32 |
| 36 | LDFLAGS += -m32 |
Damien George | ee3fd46 | 2014-05-24 23:03:12 +0100 | [diff] [blame] | 37 | ifeq ($(MICROPY_PY_FFI),1) |
Andrew Scheller | 571d5a3 | 2014-04-16 01:46:01 +0100 | [diff] [blame] | 38 | ifeq ($(UNAME_S),Linux) |
| 39 | CFLAGS_MOD += -I/usr/include/i686-linux-gnu |
| 40 | endif |
| 41 | endif |
| 42 | endif |
| 43 | |
Paul Sokolovsky | 793838a | 2014-02-27 18:10:40 +0200 | [diff] [blame] | 44 | ifeq ($(MICROPY_USE_READLINE),1) |
| 45 | CFLAGS_MOD += -DMICROPY_USE_READLINE=1 |
| 46 | LDFLAGS_MOD += -lreadline |
| 47 | # the following is needed for BSD |
| 48 | #LDFLAGS_MOD += -ltermcap |
| 49 | endif |
Damien George | ee3fd46 | 2014-05-24 23:03:12 +0100 | [diff] [blame] | 50 | ifeq ($(MICROPY_PY_TIME),1) |
| 51 | CFLAGS_MOD += -DMICROPY_PY_TIME=1 |
Paul Sokolovsky | c393684 | 2014-04-04 20:32:26 +0300 | [diff] [blame] | 52 | SRC_MOD += modtime.c |
Paul Sokolovsky | a9459bc | 2014-02-02 00:57:06 +0200 | [diff] [blame] | 53 | endif |
Damien George | ee3fd46 | 2014-05-24 23:03:12 +0100 | [diff] [blame] | 54 | ifeq ($(MICROPY_PY_FFI),1) |
Ilya Dmitrichenko | 8e998ed | 2014-04-20 09:30:46 +0100 | [diff] [blame] | 55 | LIBFFI_LDFLAGS_MOD := $(shell pkg-config --libs libffi) |
| 56 | LIBFFI_CFLAGS_MOD := $(shell pkg-config --cflags libffi) |
Damien George | ee3fd46 | 2014-05-24 23:03:12 +0100 | [diff] [blame] | 57 | CFLAGS_MOD += $(LIBFFI_CFLAGS_MOD) -DMICROPY_PY_FFI=1 |
Marcus von Appen | 8ffc024 | 2014-06-07 09:16:42 +0200 | [diff] [blame] | 58 | ifeq ($(UNAME_S),Linux) |
| 59 | LDFLAGS_MOD += -ldl |
| 60 | endif |
| 61 | LDFLAGS_MOD += $(LIBFFI_LDFLAGS_MOD) |
Paul Sokolovsky | c393684 | 2014-04-04 20:32:26 +0300 | [diff] [blame] | 62 | SRC_MOD += modffi.c |
Paul Sokolovsky | ed1239f | 2014-02-01 20:06:55 +0200 | [diff] [blame] | 63 | endif |
| 64 | |
Damien | c025ebb | 2013-10-12 14:30:21 +0100 | [diff] [blame] | 65 | |
Damien George | 136f675 | 2014-01-07 14:54:15 +0000 | [diff] [blame] | 66 | # source files |
Damien | c025ebb | 2013-10-12 14:30:21 +0100 | [diff] [blame] | 67 | SRC_C = \ |
| 68 | main.c \ |
Paul Sokolovsky | e7db817 | 2014-02-11 00:44:37 +0200 | [diff] [blame] | 69 | gccollect.c \ |
Dave Hylands | 117c46d | 2014-05-07 07:15:00 -0700 | [diff] [blame] | 70 | input.c \ |
Paul Sokolovsky | e0e79ae | 2014-01-08 02:52:20 +0200 | [diff] [blame] | 71 | file.c \ |
Paul Sokolovsky | c393684 | 2014-04-04 20:32:26 +0300 | [diff] [blame] | 72 | modsocket.c \ |
Paul Sokolovsky | 0c124c3 | 2014-05-14 22:08:45 +0300 | [diff] [blame] | 73 | modos.c \ |
Paul Sokolovsky | ed1239f | 2014-02-01 20:06:55 +0200 | [diff] [blame] | 74 | $(SRC_MOD) |
Damien | c025ebb | 2013-10-12 14:30:21 +0100 | [diff] [blame] | 75 | |
Antonin ENFRUN | 6caae0b | 2014-05-11 21:28:26 +0200 | [diff] [blame] | 76 | ifeq ($(UNAME_S),Darwin) |
Paul Sokolovsky | 7e56e55 | 2014-06-20 19:25:54 +0300 | [diff] [blame] | 77 | |
| 78 | LDFLAGS+ = -Wl,-order_file,$(BUILD)/order.def |
| 79 | |
Damien George | 63436ce | 2014-05-21 19:56:54 +0100 | [diff] [blame] | 80 | # Must be the last file in list of sources |
Antonin ENFRUN | 6caae0b | 2014-05-11 21:28:26 +0200 | [diff] [blame] | 81 | SRC_C += seg_helpers.c |
Damien George | 63436ce | 2014-05-21 19:56:54 +0100 | [diff] [blame] | 82 | |
| 83 | # making seg_helpers.c rely on order.def will force order.def to be created |
| 84 | seg_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 ENFRUN | 6caae0b | 2014-05-11 21:28:26 +0200 | [diff] [blame] | 89 | endif |
| 90 | |
Damien George | 55baff4 | 2014-01-21 21:40:13 +0000 | [diff] [blame] | 91 | OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o)) |
Damien | c025ebb | 2013-10-12 14:30:21 +0100 | [diff] [blame] | 92 | |
Dave Hylands | c89c681 | 2014-01-24 01:05:30 -0800 | [diff] [blame] | 93 | include ../py/mkrules.mk |
Damien | c025ebb | 2013-10-12 14:30:21 +0100 | [diff] [blame] | 94 | |
Andrew Scheller | d5ce916 | 2014-04-16 20:38:16 +0100 | [diff] [blame] | 95 | .PHONY: test |
| 96 | |
| 97 | test: $(PROG) ../tests/run-tests |
| 98 | $(eval DIRNAME=$(notdir $(CURDIR))) |
Andrew Scheller | e02b77b | 2014-04-17 01:26:25 +0100 | [diff] [blame] | 99 | cd ../tests && MICROPY_MICROPYTHON=../$(DIRNAME)/$(PROG) ./run-tests |