diff -r 06b8097543cd -r 446472de62e9 components/python/python34/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/python/python34/Makefile Mon May 19 07:37:20 2014 -0700 @@ -0,0 +1,146 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. +# + +include ../../../make-rules/shared-macros.mk + +COMPONENT_NAME= Python +COMPONENT_VERSION= 3.4.0 +COMPONENT_PROJECT_URL= http://python.org/ +COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION) +COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.xz +COMPONENT_ARCHIVE_HASH= \ + sha256:f13686c0a2d45e7146759e9d5d1cbd8097a0606483c0cf7730e1e13f58b14cbe +COMPONENT_ARCHIVE_URL= $(COMPONENT_PROJECT_URL)ftp/python/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE) +COMPONENT_BUGDB= utility/python + +include $(WS_TOP)/make-rules/prep.mk +include $(WS_TOP)/make-rules/configure.mk +include $(WS_TOP)/make-rules/ips.mk +include $(WS_TOP)/make-rules/lint-libraries.mk + +# Need to preserve timestamp for Grammar files. If the pickle files are older, +# Python will try to rebuild them. +PKGSEND_PUBLISH_OPTIONS += -T \*Grammar\*.txt +PKGSEND_PUBLISH_OPTIONS += -T \*Grammar\*.pickle + +# We patch auto* files, so regenerate headers and configure +COMPONENT_PREP_ACTION = \ + (cd $(@D) ; autoheader ; autoconf) + +# The DTrace patch needs this file to be mode 0755. +COMPONENT_PRE_BUILD_ACTION=($(CHMOD) +x \ + $(SOURCE_DIR)/Include/pydtrace_offsets.sh) + +# we don't want to leak $(CC_BITS) into BASECFLAGS as it causes problems with +# python-config +CC += $(CFLAGS) + +C99MODE= +CPPFLAGS += -IPython + +# to find the ncurses headers +CPPFLAGS += -I/usr/include/ncurses +# enable large files how they did in JDS +CPPFLAGS += -D_LARGEFILE64_SOURCE + +# libffi for _ctypes +CPPFLAGS += $(shell pkg-config --cflags-only-I libffi) + +# because python links with $(CC) ... $(LDFLAGS) ... +LDFLAGS = $(CC_BITS) $(CC_PIC) + +# build pic +CFLAGS += $(CC_PIC) + +# The python build is profile-guided for studio; to see the benefits of that, +# Python must be compiled with -xO5 and a different build target must be used. +# Use of xprofile requires that the same options be used during compilation and +# linking. The targets chosen are based on Solaris 11 minimum supported system +# requirements. +COMPONENT_BUILD_TARGETS = profile-opt +XPROFILE_DIR = $(BUILD_DIR_$(BITS))/.profile +PYFLAGS.i386 = -xtarget=opteron -xarch=sse2 -xcache=generic +PYFLAGS.sparc = +CFLAGS += -xO5 $(PYFLAGS.$(MACH)) +LDFLAGS += -xO5 $(PYFLAGS.$(MACH)) + +# add /usr/gnu/lib to the library search/run path +LDFLAGS.64 = -R/usr/gnu/lib/$(MACH64) -L/usr/gnu/lib/$(MACH64) +LDFLAGS += $(LDFLAGS.$(BITS)) + +# Python puts its header files in a special place. +LINT_FLAGS += -I$(SOURCE_DIR)/Include + +CONFIGURE_OPTIONS += --infodir=$(CONFIGURE_INFODIR) +CONFIGURE_OPTIONS += --enable-shared +CONFIGURE_OPTIONS += --with-dtrace +CONFIGURE_OPTIONS += --with-system-expat +CONFIGURE_OPTIONS += --with-system-ffi +CONFIGURE_OPTIONS += --without-gcc +# Building with pymalloc is the default, but that causes core dumps; +# see http://bugs.python.org/issue21412 for details. +CONFIGURE_OPTIONS += --without-pymalloc +CONFIGURE_OPTIONS += --without-ensurepip +CONFIGURE_OPTIONS += --enable-ipv6 +CONFIGURE_OPTIONS += CPPFLAGS="$(CPPFLAGS)" +CONFIGURE_OPTIONS += LDFLAGS="$(LDFLAGS)" +CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" +CONFIGURE_OPTIONS += DFLAGS="-$(BITS)" +CONFIGURE_OPTIONS += XPROFILE_DIR="$(XPROFILE_DIR)" + +COMPONENT_BUILD_ENV += DFLAGS="-$(BITS)" +COMPONENT_BUILD_ENV += XPROFILE_DIR="$(XPROFILE_DIR)" + +# Some tests have non-ASCII characters encoded for international domain names; +# the publish step will fail in 'pkgdepend generate' without this: +COMPONENT_PUBLISH_ENV += LC_ALL=en_US.UTF-8 + +# 64 bit shared objects need to go in a 64-bit directory +COMPONENT_INSTALL_ARGS.64 += DESTSHARED=$(CONFIGURE_PREFIX)/lib/python3.4/lib-dynload + +ASLR_MODE = $(ASLR_ENABLE) + +# common targets +build: $(BUILD_64) +install: $(INSTALL_64) + +# Using "-uall,-network" ensures all tests are run except the network tests. +# The network tests contain many expected failures when run behind a firewall. +# The "-v" ensures verbose mode. You can set TESTOPTS_PYTHON_TEST to a +# particular test if you want to run just one test. For example, +# $ TESTOPTS_PYTHON_TEST=test_sys gmake -k test +# Note that when a test succeeds, the builds/*/.tested file gets created. You +# may need to remove these files, or run "gmake clobber" or "gmake clean" +# between tests. +# +COMPONENT_TEST_ENV = EXTRATESTOPTS="-v -uall,-network $(TESTOPTS_PYTHON_TEST)" +# Prevent the tests from getting stuck waiting for input. +COMPONENT_TEST_TARGETS = test < /dev/null + +test: $(TEST_64) + +BUILD_PKG_DEPENDENCIES = $(BUILD_TOOLS) + +include $(WS_TOP)/make-rules/depend.mk