| ############################################################# |
| # |
| # python |
| # |
| ############################################################# |
| PYTHON_VERSION=2.4.5 |
| PYTHON_VERSION_MAJOR=2.4 |
| PYTHON_SOURCE:=Python-$(PYTHON_VERSION).tar.bz2 |
| PYTHON_SITE:=http://python.org/ftp/python/$(PYTHON_VERSION) |
| PYTHON_DIR:=$(BUILD_DIR)/Python-$(PYTHON_VERSION) |
| PYTHON_CAT:=$(BZCAT) |
| PYTHON_BINARY:=python |
| PYTHON_TARGET_BINARY:=usr/bin/python$(PYTHON_VERSION_MAJOR) |
| PYTHON_DEPS:= |
| PYTHON_SITE_PACKAGE_DIR=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages |
| |
| BR2_PYTHON_DISABLED_MODULES=dbm zipfile |
| |
| ifeq ($(BR2_PACKAGE_PYTHON_READLINE),y) |
| PYTHON_DEPS += readline |
| else |
| BR2_PYTHON_DISABLED_MODULES += readline |
| endif |
| |
| ifeq ($(BR2_PACKAGE_PYTHON_CURSES),y) |
| PYTHON_DEPS += ncurses |
| else |
| BR2_PYTHON_DISABLED_MODULES += _curses _curses_panel |
| endif |
| |
| ifeq ($(BR2_PACKAGE_PYTHON_PYEXPAT),y) |
| PYTHON_DEPS += expat |
| else |
| BR2_PYTHON_DISABLED_MODULES += pyexpat |
| endif |
| |
| ifeq ($(BR2_PACKAGE_PYTHON_GDBM),y) |
| PYTHON_DEPS += gdbm |
| else |
| BR2_PYTHON_DISABLED_MODULES += gdbm |
| endif |
| |
| ifeq ($(BR2_PACKAGE_PYTHON_BSDDB),y) |
| PYTHON_DEPS += berkeleydb |
| else |
| BR2_PYTHON_DISABLED_MODULES += bsddb |
| endif |
| |
| ifeq ($(BR2_PACKAGE_PYTHON_TKINTER),y) |
| PYTHON_DEPS += tcl |
| else |
| BR2_PYTHON_DISABLED_MODULES += _tkinter |
| endif |
| |
| ifeq ($(BR2_PACKAGE_PYTHON_SSL),y) |
| PYTHON_DEPS += openssl |
| endif |
| |
| ifneq ($(BR2_PACKAGE_PYTHON_NIS),y) |
| BR2_PYTHON_DISABLED_MODULES += nis |
| endif |
| |
| ifneq ($(BR2_PACKAGE_PYTHON_CODECSCJK),y) |
| BR2_PYTHON_DISABLED_MODULES += _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk |
| endif |
| |
| ifneq ($(BR2_PACKAGE_PYTHON_UNICODEDATA),y) |
| BR2_PYTHON_DISABLED_MODULES += unicodedata |
| endif |
| |
| $(DL_DIR)/$(PYTHON_SOURCE): |
| $(call DOWNLOAD,$(PYTHON_SITE),$(PYTHON_SOURCE)) |
| |
| python-source: $(DL_DIR)/$(PYTHON_SOURCE) |
| |
| $(PYTHON_DIR)/.unpacked: $(DL_DIR)/$(PYTHON_SOURCE) |
| $(PYTHON_CAT) $(DL_DIR)/$(PYTHON_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - |
| touch $@ |
| |
| $(PYTHON_DIR)/.patched: $(PYTHON_DIR)/.unpacked |
| toolchain/patch-kernel.sh $(PYTHON_DIR) package/python/ python-$(PYTHON_VERSION_MAJOR)-\*.patch |
| touch $@ |
| |
| $(PYTHON_DIR)/.hostpython: $(PYTHON_DIR)/.patched |
| (cd $(PYTHON_DIR); rm -rf config.cache; \ |
| CC="$(HOSTCC)" OPT="-O2" \ |
| ./configure $(QUIET) \ |
| --with-cxx=no \ |
| $(DISABLE_NLS) && \ |
| $(MAKE) python Parser/pgen && \ |
| mv python hostpython && \ |
| mv Parser/pgen Parser/hostpgen && \ |
| $(MAKE) distclean \ |
| ) && \ |
| touch $@ |
| |
| $(PYTHON_DIR)/.configured: $(PYTHON_DIR)/.hostpython |
| (cd $(PYTHON_DIR); rm -rf config.cache; \ |
| $(TARGET_CONFIGURE_OPTS) \ |
| $(TARGET_CONFIGURE_ARGS) \ |
| OPT="$(TARGET_CFLAGS)" \ |
| ./configure $(QUIET) \ |
| --target=$(GNU_TARGET_NAME) \ |
| --host=$(GNU_TARGET_NAME) \ |
| --build=$(GNU_HOST_NAME) \ |
| --prefix=/usr \ |
| --sysconfdir=/etc \ |
| --with-cxx=no \ |
| --enable-shared \ |
| $(DISABLE_IPV6) \ |
| $(DISABLE_NLS) \ |
| ) |
| touch $@ |
| |
| $(PYTHON_DIR)/$(PYTHON_BINARY): $(PYTHON_DIR)/.configured |
| ifneq ($(BR2_PACKAGE_PYTHON_SSL),y) |
| export PYTHON_DISABLE_SSL=1 |
| endif |
| $(MAKE) CC="$(TARGET_CC)" -C $(PYTHON_DIR) DESTDIR=$(TARGET_DIR) \ |
| PYTHON_MODULES_INCLUDE=$(STAGING_DIR)/usr/include \ |
| PYTHON_MODULES_LIB="$(STAGING_DIR)/lib $(STAGING_DIR)/usr/lib" \ |
| PYTHON_DISABLE_MODULES="$(BR2_PYTHON_DISABLED_MODULES)" \ |
| HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen |
| |
| $(TARGET_DIR)/$(PYTHON_TARGET_BINARY): $(PYTHON_DIR)/$(PYTHON_BINARY) |
| ifneq ($(BR2_PACKAGE_PYTHON_SSL),y) |
| export PYTHON_DISABLE_SSL=1 |
| endif |
| rm -rf $(PYTHON_DIR)/Lib/test |
| LD_LIBRARY_PATH=$(STAGING_DIR)/lib |
| $(MAKE) CC="$(TARGET_CC)" -C $(PYTHON_DIR) install \ |
| DESTDIR=$(TARGET_DIR) CROSS_COMPILE=yes \ |
| PYTHON_MODULES_INCLUDE=$(STAGING_DIR)/usr/include \ |
| PYTHON_MODULES_LIB="$(STAGING_DIR)/lib $(STAGING_DIR)/usr/lib" \ |
| PYTHON_DISABLE_MODULES="$(BR2_PYTHON_DISABLED_MODULES)" \ |
| HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen && \ |
| rm $(TARGET_DIR)/usr/bin/python && \ |
| ln -s python$(PYTHON_VERSION_MAJOR) $(TARGET_DIR)/usr/bin/python && \ |
| rm $(TARGET_DIR)/usr/bin/idle && \ |
| rm $(TARGET_DIR)/usr/bin/pydoc && \ |
| find $(TARGET_DIR)/usr/lib/ -name '*.pyo' -exec rm {} \; && \ |
| rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ |
| $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc \ |
| $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/test |
| cp -dpr $(TARGET_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) $(STAGING_DIR)/usr/include/ |
| mkdir -p $(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) |
| cp -dpr $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/config $(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/ |
| |
| ifeq ($(BR2_PACKAGE_PYTHON_PY_ONLY),y) |
| find $(TARGET_DIR)/usr/lib/ -name '*.pyc' -exec rm {} \; |
| endif |
| ifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY),y) |
| find $(TARGET_DIR)/usr/lib/ -name '*.py' -exec rm {} \; |
| endif |
| ifneq ($(BR2_PACKAGE_PYTHON_DEV),y) |
| rm -rf $(TARGET_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) |
| rm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/config |
| endif |
| ifneq ($(BR2_PACKAGE_PYTHON_BSDDB),y) |
| rm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/bsddb |
| endif |
| ifneq ($(BR2_PACKAGE_PYTHON_CURSES),y) |
| rm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/curses |
| endif |
| ifneq ($(BR2_PACKAGE_PYTHON_TKINTER),y) |
| rm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/lib-tk |
| endif |
| touch -c $@ |
| |
| python: $(PYTHON_DEPS) $(TARGET_DIR)/$(PYTHON_TARGET_BINARY) |
| |
| python-clean: |
| -$(MAKE) -C $(PYTHON_DIR) distclean |
| rm -f $(PYTHON_DIR)/.configured $(TARGET_DIR)/$(PYTHON_TARGET_BINARY) |
| -rm -rf $(TARGET_DIR)/usr/lib/python* $(TARGET_DIR)/usr/include/python* |
| -rm -f $(STAGING_DIR)/usr/lib/libpython$(PYTHON_VERSION_MAJOR).so |
| |
| python-dirclean: |
| rm -rf $(PYTHON_DIR) |
| |
| #### LIBPYTHON |
| |
| |
| LIBPYTHON_BINARY:=libpython$(PYTHON_VERSION_MAJOR).so |
| |
| libpython: python $(TARGET_DIR)/usr/lib/$(LIBPYTHON_BINARY) |
| |
| |
| $(STAGING_DIR)/usr/lib/$(LIBPYTHON_BINARY): $(TARGET_DIR)/$(PYTHON_TARGET_BINARY) |
| cp -dpr $(PYTHON_DIR)/$(LIBPYTHON_BINARY).* $(STAGING_DIR)/usr/lib |
| (\ |
| cd $(STAGING_DIR)/usr/lib ; \ |
| rm -f $(LIBPYTHON_BINARY) ; \ |
| ln -s `basename \`ls libpython*.so.*\`` $(LIBPYTHON_BINARY) \ |
| ) |
| |
| $(TARGET_DIR)/usr/lib/$(LIBPYTHON_BINARY): $(STAGING_DIR)/usr/lib/$(LIBPYTHON_BINARY) |
| cp -dpr $(STAGING_DIR)/usr/lib/$(LIBPYTHON_BINARY).* $(TARGET_DIR)/usr/lib |
| (\ |
| cd $(TARGET_DIR)/usr/lib ; \ |
| rm -f $(LIBPYTHON_BINARY) ; \ |
| ln -s `basename \`ls libpython*.so.*\`` $(LIBPYTHON_BINARY) \ |
| ) |
| |
| ############################################################# |
| # |
| # Toplevel Makefile options |
| # |
| ############################################################# |
| ifeq ($(BR2_PACKAGE_PYTHON),y) |
| TARGETS+=python |
| endif |