2 # Copyright (C) 2007-2016 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 $(call include_mk
, python3-version.mk
)
10 PYTHON3_DIR
:=$(STAGING_DIR
)/usr
11 PYTHON3_BIN_DIR
:=$(PYTHON3_DIR
)/bin
12 PYTHON3_INC_DIR
:=$(PYTHON3_DIR
)/include/python
$(PYTHON3_VERSION
)
13 PYTHON3_LIB_DIR
:=$(PYTHON3_DIR
)/lib
/python
$(PYTHON3_VERSION
)
15 PYTHON3_PKG_DIR
:=/usr
/lib
/python
$(PYTHON3_VERSION
)/site-packages
17 PYTHON3
:=python
$(PYTHON3_VERSION
)
19 PYTHON3PATH
:=$(PYTHON3_LIB_DIR
):$(STAGING_DIR
)/$(PYTHON3_PKG_DIR
):$(PKG_INSTALL_DIR
)/$(PYTHON3_PKG_DIR
)
21 # These configure args are needed in detection of path to Python header files
24 _python_sysroot
="$(STAGING_DIR)" \
25 _python_prefix
="/usr" \
26 _python_exec_prefix
="/usr"
29 # This is required in addition to PKG_USE_MIPS16:=0 because otherwise MIPS16
30 # flags are inherited from the Python base package (via sysconfig module)
31 ifdef CONFIG_USE_MIPS16
32 TARGET_CFLAGS
+= -mno-mips16
-mno-interlink-mips16
37 define Package
/$(1)-src
40 DEPENDS
:=$$$$(foreach dep
,$$$$(filter +python3-
%,$$$$(DEPENDS
)),$$$$(dep
)-src
)
43 define Package
/$(1)-src
/description
44 $(call Package
/$(1)/description
).
45 (Contains the Python3 sources for this package
).
48 # Add default PyPackage filespec none defined
49 ifndef Py3Package
/$(1)/filespec
50 define Py3Package
/$(1)/filespec
55 ifndef Py3Package
/$(1)/install
56 define Py3Package
/$(1)/install
57 if
[ -d
$(PKG_INSTALL_DIR
)/usr
/bin
]; then \
58 $(INSTALL_DIR
) $$(1)/usr
/bin
; \
59 $(CP
) $(PKG_INSTALL_DIR
)/usr
/bin
/* $$(1)/usr
/bin
/ ; \
64 ifndef Package
/$(1)/install
65 $(call shexport
,Py3Package
/$(1)/filespec
)
67 define Package
/$(1)/install
68 $(call Py3Package
/$(1)/install,$$(1))
69 find
$(PKG_INSTALL_DIR
) -name
"*\.exe" | xargs
rm -f
70 if
[ -e files
/python3-package-install.sh
] ; then \
71 $(SHELL
) files
/python3-package-install.sh \
72 "$(PKG_INSTALL_DIR)" "$$(1)" \
73 "$(HOST_PYTHON3_BIN)" "$$(2)" \
74 "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \
75 elif
[ -e
$(STAGING_DIR
)/mk
/python3-package-install.sh
] ; then \
76 $(SHELL
) $(STAGING_DIR
)/mk
/python3-package-install.sh \
77 "$(PKG_INSTALL_DIR)" "$$(1)" \
78 "$(HOST_PYTHON3_BIN)" "$$(2)" \
79 "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \
81 echo
"No 'python3-package-install.sh' script found" ; \
86 define Package
/$(1)-src
/install
87 $$(call Package
/$(1)/install,$$(1),sources
)
89 endif # Package/$(1)/install
92 $(call include_mk
, python3-host.mk
)
94 # $(1) => commands to execute before running pythons script
95 # $(2) => python script and its arguments
96 # $(3) => additional variables
97 define Build
/Compile
/HostPy3RunTarget
101 CCSHARED
="$(TARGET_CC) $(FPIC)" \
102 CXX
="$(TARGET_CXX)" \
104 LDSHARED
="$(TARGET_CC) -shared" \
105 CFLAGS
="$(TARGET_CFLAGS)" \
106 CPPFLAGS
="$(TARGET_CPPFLAGS) -I$(PYTHON3_INC_DIR)" \
107 LDFLAGS
="$(TARGET_LDFLAGS) -lpython$(PYTHON3_VERSION)" \
108 _PYTHON_HOST_PLATFORM
=linux2 \
109 __PYVENV_LAUNCHER__
="/usr/bin/$(PYTHON3)" \
116 # $(1) => build subdir
117 # $(2) => additional arguments to setup.py
118 # $(3) => additional variables
119 define Build
/Compile
/Py3Mod
120 $(INSTALL_DIR
) $(PKG_INSTALL_DIR
)/$(PYTHON3_PKG_DIR
)
121 $(call Build
/Compile
/HostPy3RunTarget
, \
122 cd
$(PKG_BUILD_DIR
)/$(strip $(1)), \
125 find
$(PKG_INSTALL_DIR
) -name
"*\.exe" | xargs
rm -f
128 define Py3Build
/Compile
/Default
129 $(foreach pkg
,$(HOST_PYTHON3_PACKAGE_BUILD_DEPENDS
),
130 $(call host_python3_pip_install_host
,$(pkg
))
132 $(call Build
/Compile
/Py3Mod
,, \
133 install --prefix="/usr" --root
="$(PKG_INSTALL_DIR)" \
134 --single-version-externally-managed \
138 Py3Build
/Compile
=$(Py3Build
/Compile
/Default
)
140 ifeq ($(BUILD_VARIANT
),python3
)
142 $(call Py3Build
/Compile
)