You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.1 KiB

  1. #
  2. # Copyright (C) 2017 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. # Note: include this file after `include $(TOPDIR)/rules.mk in your package Makefile
  8. # if `python3-package.mk` is included, this will already be included
  9. # For PYTHON3_VERSION
  10. python3_mk_path:=$(dir $(lastword $(MAKEFILE_LIST)))
  11. include $(python3_mk_path)python3-version.mk
  12. HOST_PYTHON3_DIR:=$(STAGING_DIR_HOSTPKG)
  13. HOST_PYTHON3_INC_DIR:=$(HOST_PYTHON3_DIR)/include/python$(PYTHON3_VERSION)
  14. HOST_PYTHON3_LIB_DIR:=$(HOST_PYTHON3_DIR)/lib/python$(PYTHON3_VERSION)
  15. HOST_PYTHON3_PKG_DIR:=$(HOST_PYTHON3_DIR)/lib/python$(PYTHON3_VERSION)/site-packages
  16. HOST_PYTHON3_BIN:=$(HOST_PYTHON3_DIR)/bin/python$(PYTHON3_VERSION)
  17. HOST_PYTHON3PATH:=$(HOST_PYTHON3_LIB_DIR):$(HOST_PYTHON3_PKG_DIR)
  18. HOST_PYTHON3_VARS = \
  19. ARCH="$(HOST_ARCH)" \
  20. CC="$(HOSTCC)" \
  21. CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
  22. CXX="$(HOSTCXX)" \
  23. LD="$(HOSTCC)" \
  24. LDSHARED="$(HOSTCC) -shared" \
  25. CFLAGS="$(HOST_CFLAGS)" \
  26. CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON3_INC_DIR)" \
  27. LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON3_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR_HOSTPKG)/lib" \
  28. _PYTHON_HOST_PLATFORM=linux2 \
  29. PYTHONPATH="$(HOST_PYTHON3PATH)" \
  30. PYTHONDONTWRITEBYTECODE=0 \
  31. PYTHONOPTIMIZE=""
  32. # $(1) => directory of python script
  33. # $(2) => python script and its arguments
  34. # $(3) => additional variables
  35. define HostPython3/Run
  36. cd "$(if $(strip $(1)),$(strip $(1)),.)" && \
  37. $(HOST_PYTHON3_VARS) \
  38. $(3) \
  39. $(HOST_PYTHON3_BIN) $(2)
  40. endef
  41. # Note: I shamelessly copied this from Yousong's logic (from python-packages);
  42. HOST_PYTHON3_PIP:=$(STAGING_DIR_HOSTPKG)/bin/pip$(PYTHON3_VERSION)
  43. # $(1) => packages to install
  44. define HostPython3/PipInstall
  45. $(HOST_PYTHON3_VARS) \
  46. $(HOST_PYTHON3_PIP) \
  47. --disable-pip-version-check \
  48. --cache-dir "$(DL_DIR)/pip-cache" \
  49. install \
  50. $(1)
  51. endef
  52. # $(1) => build subdir
  53. # $(2) => additional arguments to setup.py
  54. # $(3) => additional variables
  55. define HostPython3/ModSetup
  56. $(call HostPython3/Run, \
  57. $(HOST_BUILD_DIR)/$(strip $(1)), \
  58. setup.py $(2), \
  59. $(3))
  60. endef