93b14fac23b25ade106bf2ea55ec1a2b0d362278
[feed/packages.git] / lang / python / python3 / files / python3-package.mk
1 #
2 # Copyright (C) 2007-2016 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 $(call include_mk, python3-version.mk)
9
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)
14
15 PYTHON3_PKG_DIR:=/usr/lib/python$(PYTHON3_VERSION)/site-packages
16
17 PYTHON3:=python$(PYTHON3_VERSION)
18
19 PYTHON3PATH:=$(PYTHON3_LIB_DIR):$(STAGING_DIR)/$(PYTHON3_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR)
20
21 # These configure args are needed in detection of path to Python header files
22 # using autotools.
23 CONFIGURE_ARGS += \
24 _python_sysroot="$(STAGING_DIR)" \
25 _python_prefix="/usr" \
26 _python_exec_prefix="/usr"
27
28 PKG_USE_MIPS16:=0
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
33 endif
34
35 define Py3Package
36
37 define Package/$(1)-src
38 $(call Package/$(1))
39 TITLE+= (sources)
40 DEPENDS:=$$$$(foreach dep,$$$$(filter +python3-%,$$$$(DEPENDS)),$$$$(dep)-src)
41 endef
42
43 define Package/$(1)-src/description
44 $(call Package/$(1)/description).
45 (Contains the Python3 sources for this package).
46 endef
47
48 # Add default PyPackage filespec none defined
49 ifndef Py3Package/$(1)/filespec
50 define Py3Package/$(1)/filespec
51 +|$(PYTHON3_PKG_DIR)
52 endef
53 endif
54
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/ ; \
60 fi
61 endef
62 endif
63
64 ifndef Package/$(1)/install
65 $(call shexport,Py3Package/$(1)/filespec)
66
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)" ; \
80 else \
81 echo "No 'python3-package-install.sh' script found" ; \
82 exit 1 ; \
83 fi
84 endef
85
86 define Package/$(1)-src/install
87 $$(call Package/$(1)/install,$$(1),sources)
88 endef
89 endif # Package/$(1)/install
90 endef
91
92 $(call include_mk, python3-host.mk)
93
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
98 $(call HostPython3, \
99 $(if $(1),$(1);) \
100 CC="$(TARGET_CC)" \
101 CCSHARED="$(TARGET_CC) $(FPIC)" \
102 CXX="$(TARGET_CXX)" \
103 LD="$(TARGET_CC)" \
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)" \
110 $(3) \
111 , \
112 $(2) \
113 )
114 endef
115
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)), \
123 ./setup.py $(2), \
124 $(3))
125 find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
126 endef
127
128 define Py3Build/Compile/Default
129 $(foreach pkg,$(HOST_PYTHON3_PACKAGE_BUILD_DEPENDS),
130 $(call host_python3_pip_install_host,$(pkg))
131 )
132 $(call Build/Compile/Py3Mod,, \
133 install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" \
134 --single-version-externally-managed \
135 )
136 endef
137
138 Py3Build/Compile=$(Py3Build/Compile/Default)
139
140 ifeq ($(BUILD_VARIANT),python3)
141 define Build/Compile
142 $(call Py3Build/Compile)
143 endef
144 endif # python3