################################################################################ # # python3 # ################################################################################ PYTHON3_VERSION_MAJOR = 3.3 PYTHON3_VERSION = $(PYTHON3_VERSION_MAJOR).0 PYTHON3_SOURCE = Python-$(PYTHON3_VERSION).tar.bz2 PYTHON3_SITE = http://python.org/ftp/python/$(PYTHON3_VERSION) # Python needs itself and a "pgen" program to build itself, both being # provided in the Python sources. So in order to cross-compile Python, # we need to build a host Python first. This host Python is also # installed in $(HOST_DIR), as it is needed when cross-compiling # third-party Python modules. HOST_PYTHON3_CONF_OPT += \ --without-cxx-main \ --disable-sqlite3 \ --disable-tk \ --with-expat=system \ --disable-curses \ --disable-codecs-cjk \ --disable-nis \ --disable-unicodedata \ --disable-test-modules \ --disable-idle3 HOST_PYTHON3_MAKE_ENV = \ PYTHON_MODULES_INCLUDE=$(HOST_DIR)/usr/include \ PYTHON_MODULES_LIB="$(HOST_DIR)/lib $(HOST_DIR)/usr/lib" HOST_PYTHON3_AUTORECONF = YES define HOST_PYTHON3_CONFIGURE_CMDS (cd $(@D) && rm -rf config.cache; \ $(HOST_CONFIGURE_OPTS) \ CFLAGS="$(HOST_CFLAGS)" \ LDFLAGS="$(HOST_LDFLAGS)" \ $(HOST_PYTHON3_CONF_ENV) \ ./configure \ --prefix="$(HOST_DIR)/usr" \ --sysconfdir="$(HOST_DIR)/etc" \ $(HOST_PYTHON3_CONF_OPT) \ ) endef PYTHON3_DEPENDENCIES = host-python3 libffi HOST_PYTHON3_DEPENDENCIES = host-expat host-zlib PYTHON3_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_PYTHON3_READLINE),y) PYTHON3_DEPENDENCIES += readline endif ifeq ($(BR2_PACKAGE_PYTHON3_CURSES),y) PYTHON3_DEPENDENCIES += ncurses else PYTHON3_CONF_OPT += --disable-curses endif ifeq ($(BR2_PACKAGE_PYTHON3_PYEXPAT),y) PYTHON3_DEPENDENCIES += expat PYTHON3_CONF_OPT += --with-expat=system else PYTHON3_CONF_OPT += --with-expat=none endif ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y) PYTHON3_CONF_OPT += --enable-old-stdlib-cache endif ifeq ($(BR2_PACKAGE_PYTHON3_SQLITE),y) PYTHON3_DEPENDENCIES += sqlite else PYTHON3_CONF_OPT += --disable-sqlite3 endif ifeq ($(BR2_PACKAGE_PYTHON3_SSL),y) PYTHON3_DEPENDENCIES += openssl endif ifneq ($(BR2_PACKAGE_PYTHON3_CODECSCJK),y) PYTHON3_CONF_OPT += --disable-codecs-cjk endif ifneq ($(BR2_PACKAGE_PYTHON3_UNICODEDATA),y) PYTHON3_CONF_OPT += --disable-unicodedata endif ifeq ($(BR2_PACKAGE_PYTHON3_BZIP2),y) PYTHON3_DEPENDENCIES += bzip2 endif ifeq ($(BR2_PACKAGE_PYTHON3_ZLIB),y) PYTHON3_DEPENDENCIES += zlib endif PYTHON3_CONF_ENV += \ _PROJECT_BASE=$(PYTHON3_DIR) \ _PYTHON_HOST_PLATFORM=$(BR2_HOSTARCH) \ PYTHON_FOR_BUILD=$(HOST_PYTHON3_DIR)/python \ PGEN_FOR_BUILD=$(HOST_PYTHON3_DIR)/Parser/pgen \ ac_cv_have_long_long_format=yes \ ac_cv_file__dev_ptmx=yes \ ac_cv_file__dev_ptc=yes \ PYTHON3_CONF_OPT += \ --without-cxx-main \ --with-system-ffi \ --disable-pydoc \ --disable-test-modules \ --disable-lib2to3 \ --disable-tk \ --disable-nis \ --disable-idle3 PYTHON3_MAKE_ENV = \ _PROJECT_BASE=$(PYTHON3_DIR) \ _PYTHON_HOST_PLATFORM=$(BR2_HOSTARCH) \ PYTHON_MODULES_INCLUDE=$(STAGING_DIR)/usr/include \ PYTHON_MODULES_LIB="$(STAGING_DIR)/lib $(STAGING_DIR)/usr/lib" # python distutils adds -L$LIBDIR when linking binary extensions, causing # trouble for cross compilation define PYTHON3_FIXUP_LIBDIR $(SED) 's|^LIBDIR=.*|LIBDIR= $(STAGING_DIR)/usr/lib|' \ $(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-3.3m/Makefile endef PYTHON3_POST_INSTALL_STAGING_HOOKS += PYTHON3_FIXUP_LIBDIR # # Remove useless files. In the config/ directory, only the Makefile # and the pyconfig.h files are needed at runtime. # define PYTHON3_REMOVE_USELESS_FILES rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)m-config rm -f $(TARGET_DIR)/usr/bin/python3-config rm -f $(TARGET_DIR)/usr/bin/smtpd.py.3 for i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-3.3m/ \ -type f -not -name pyconfig.h -a -not -name Makefile` ; do \ rm -f $$i ; \ done endef PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_REMOVE_USELESS_FILES PYTHON3_AUTORECONF = YES define PYTHON3_INSTALL_SYMLINK ln -fs python3 $(TARGET_DIR)/usr/bin/python endef ifneq ($(BR2_PACKAGE_PYTHON),y) PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_INSTALL_SYMLINK endif ifeq ($(BR2_PACKAGE_PYTHON3_PY_ONLY),y) define PYTHON3_REMOVE_MODULES_FILES for i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) \ -name __pycache__` ; do \ rm -rf $$i ; \ done endef endif ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y) define PYTHON3_REMOVE_MODULES_FILES for i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) \ -name *.py` ; do \ rm -f $$i ; \ done endef endif PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_REMOVE_MODULES_FILES $(eval $(autotools-package)) $(eval $(host-autotools-package))