summaryrefslogtreecommitdiffstats
path: root/lang/python/micropython/Makefile
blob: 40c2419082726ad240b2ee3fe9d668681b8b5211 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
53
54
55
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#
# Copyright (C) 2008-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=micropython
PKG_VERSION:=1.27.0
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/micropython/micropython/releases/download/v$(PKG_VERSION)
PKG_HASH:=9874b20646c3bbe81d524f779a16875e5d088b7065e175ffd2aa2a02f50573c9

PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
PKG_CPE_ID:=cpe:/a:micropython:micropython

PKG_BUILD_DEPENDS:=python3/host
PKG_BUILD_FLAGS:=no-mips16 no-mold
PKG_BUILD_PARALLEL:=1

include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk

define Package/micropython/Default
  SUBMENU:=Python
  SECTION:=lang
  CATEGORY:=Languages
  TITLE:=MicroPython
  URL:=https://micropython.org
  DEPENDS:=+libffi
  PROVIDES:=micropython
endef

define Package/micropython-mbedtls
$(call Package/micropython/Default)
  TITLE+= (mbedtls)
  DEPENDS+= +PACKAGE_micropython-mbedtls:libmbedtls
  CONFLICTS:=micropython-nossl
  VARIANT:=mbedtls
  DEFAULT_VARIANT:=1
endef

define Package/micropython-nossl
$(call Package/micropython/Default)
  TITLE+= (nossl)
  VARIANT:=nossl
endef

define Package/micropython/Default/description
MicroPython is a lean and efficient implementation of the Python 3
programming language that includes a small subset of the Python standard
library and is optimised to run on microcontrollers and in constrained
environments.
endef

define Package/micropython-mbedtls/description
$(call Package/micropython/Default/description)

This version uses the Mbed TLS library.
endef

define Package/micropython-nossl/description
$(call Package/micropython/Default/description)

This version is built without TLS and mip.
endef

MAKE_FLAGS += BUILD_VERBOSE=1 STRIP=

ifneq ($(CONFIG_DEBUG),)
  MAKE_FLAGS += DEBUG=1
endif

ifeq ($(BUILD_VARIANT),nossl)
  MAKE_FLAGS += MICROPY_PY_SSL=0 FROZEN_MANIFEST=variants/standard/manifest-nossl.py
endif

# Work around "variable might be clobbered" warning leading to build error
# https://github.com/micropython/micropython/issues/12838
ifeq ($(ARCH),riscv64)
  MAKE_FLAGS += CFLAGS_EXTRA=-Wno-error=clobbered
endif

TARGET_CFLAGS += \
	-DMBEDTLS_CONFIG_FILE=\\\"mbedtls/build_info.h\\\"

# FIXME: remove this asap; this fixes some build issues with mbedtls from OpenWrt
TARGET_CFLAGS += \
	-Wno-error=implicit-function-declaration

MAKE_PATH = ports/unix

define Build/Configure
	+$(HOST_MAKE_VARS) \
	$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/mpy-cross \
		$(HOST_MAKE_FLAGS) BUILD_VERBOSE=1
endef

define Build/InstallDev
	$(INSTALL_DIR) $(2)/lib/micropython/mpy-cross
	$(CP) \
		$(PKG_BUILD_DIR)/mpy-cross/mpy_cross \
		$(2)/lib/micropython/mpy-cross/

	$(INSTALL_DIR) $(2)/lib/micropython/mpy-cross/build
	$(INSTALL_BIN) \
		$(PKG_BUILD_DIR)/mpy-cross/build/mpy-cross \
		$(2)/lib/micropython/mpy-cross/build/

	$(INSTALL_DIR) $(2)/lib/micropython/tools
	$(INSTALL_DATA) \
		$(PKG_BUILD_DIR)/tools/manifestfile.py \
		$(2)/lib/micropython/tools/
endef

define Package/micropython/Default/install
	$(INSTALL_DIR) $(1)/usr/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/ports/unix/build-standard/micropython $(1)/usr/bin/
endef

Package/micropython-mbedtls/install = $(Package/micropython/Default/install)
Package/micropython-nossl/install = $(Package/micropython/Default/install)

$(eval $(call BuildPackage,micropython-mbedtls))
$(eval $(call BuildPackage,micropython-nossl))