summaryrefslogtreecommitdiffstats
path: root/package/python3/python3.mk
diff options
context:
space:
mode:
Diffstat (limited to 'package/python3/python3.mk')
-rw-r--r--package/python3/python3.mk152
1 files changed, 152 insertions, 0 deletions
diff --git a/package/python3/python3.mk b/package/python3/python3.mk
new file mode 100644
index 000000000..bcd83eaf6
--- /dev/null
+++ b/package/python3/python3.mk
@@ -0,0 +1,152 @@
+#############################################################
+#
+# 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-dbm \
+ --disable-gdbm \
+ --disable-bsddb \
+ --disable-test-modules \
+ --disable-bz2 \
+ --disable-ssl
+
+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
+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_SQLITE),y)
+PYTHON3_DEPENDENCIES += sqlite
+endif
+
+ifeq ($(BR2_PACKAGE_PYTHON3_SSL),y)
+PYTHON_DEPENDENCIES += openssl
+endif
+
+ifeq ($(BR2_PACKAGE_PYTHON3_BZIP2),y)
+PYTHON_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-gdbm \
+ --disable-tk \
+ --disable-nis \
+ --disable-dbm
+
+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
+
+#
+# Development files removal
+#
+define PYTHON3_REMOVE_DEVFILES
+ rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config
+ rm -f $(TARGET_DIR)/usr/bin/python3-config
+endef
+
+ifneq ($(BR2_HAVE_DEVFILES),y)
+PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_REMOVE_DEVFILES
+endif
+
+#
+# Remove useless files. In the config/ directory, only the Makefile
+# and the pyconfig.h files are needed at runtime.
+#
+define PYTHON3_REMOVE_USELESS_FILES
+ 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
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))