python3-package.mk (3885B)
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 $(call shexport,Py3Package/$(1)/filespec) 65 66 define Package/$(1)/install 67 $(call Py3Package/$(1)/install,$$(1)) 68 find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f 69 if [ -e files/python3-package-install.sh ] ; then \ 70 $(SHELL) files/python3-package-install.sh \ 71 "$(PKG_INSTALL_DIR)" "$$(1)" \ 72 "$(HOST_PYTHON3_BIN)" "$$(2)" \ 73 "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \ 74 elif [ -e $(STAGING_DIR)/mk/python3-package-install.sh ] ; then \ 75 $(SHELL) $(STAGING_DIR)/mk/python3-package-install.sh \ 76 "$(PKG_INSTALL_DIR)" "$$(1)" \ 77 "$(HOST_PYTHON3_BIN)" "$$(2)" \ 78 "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \ 79 else \ 80 echo "No 'python3-package-install.sh' script found" ; \ 81 exit 1 ; \ 82 fi 83 endef 84 85 define Package/$(1)-src/install 86 $$(call Package/$(1)/install,$$(1),sources) 87 endef 88 endef 89 90 $(call include_mk, python3-host.mk) 91 92 # $(1) => commands to execute before running pythons script 93 # $(2) => python script and its arguments 94 # $(3) => additional variables 95 define Build/Compile/HostPy3RunTarget 96 $(call HostPython3, \ 97 $(if $(1),$(1);) \ 98 CC="$(TARGET_CC)" \ 99 CCSHARED="$(TARGET_CC) $(FPIC)" \ 100 CXX="$(TARGET_CXX)" \ 101 LD="$(TARGET_CC)" \ 102 LDSHARED="$(TARGET_CC) -shared" \ 103 CFLAGS="$(TARGET_CFLAGS)" \ 104 CPPFLAGS="$(TARGET_CPPFLAGS) -I$(PYTHON3_INC_DIR)" \ 105 LDFLAGS="$(TARGET_LDFLAGS) -lpython$(PYTHON3_VERSION)" \ 106 _PYTHON_HOST_PLATFORM=linux2 \ 107 __PYVENV_LAUNCHER__="/usr/bin/$(PYTHON3)" \ 108 $(3) \ 109 , \ 110 $(2) \ 111 ) 112 endef 113 114 # $(1) => build subdir 115 # $(2) => additional arguments to setup.py 116 # $(3) => additional variables 117 define Build/Compile/Py3Mod 118 $(INSTALL_DIR) $(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR) 119 $(call Build/Compile/HostPy3RunTarget, \ 120 cd $(PKG_BUILD_DIR)/$(strip $(1)), \ 121 ./setup.py $(2), \ 122 $(3)) 123 find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f 124 endef 125 126 define Py3Build/Compile/Default 127 $(call Build/Compile/Py3Mod,, \ 128 install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" \ 129 --single-version-externally-managed \ 130 ) 131 endef 132 133 ifeq ($(BUILD_VARIANT),python3) 134 define Build/Compile 135 $(call Py3Build/Compile/Default) 136 endef 137 endif # python3