1 diff --git Python-2.6.4/Makefile.pre.in Python-2.6.4/Makefile.pre.in |
|
2 --- Python-2.6.4/Makefile.pre.in.orig Sun Feb 13 21:00:17 2011 |
|
3 +++ Python-2.6.4/Makefile.pre.in Sun Feb 13 21:02:35 2011 |
|
4 @@ -663,6 +663,8 @@ |
|
5 |
|
6 $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS) |
|
7 |
|
8 +install-pycc: $(srcdir)/pycc |
|
9 + $(INSTALL_SCRIPT) $< $(DESTDIR)$(BINLIBDEST) |
|
10 |
|
11 ###################################################################### |
|
12 |
|
13 @@ -728,7 +728,7 @@ |
|
14 $(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS) |
|
15 |
|
16 # Install everything |
|
17 -install: @FRAMEWORKINSTALLFIRST@ altinstall bininstall maninstall @FRAMEWORKINSTALLLAST@ |
|
18 +install: @FRAMEWORKINSTALLFIRST@ altinstall bininstall maninstall @FRAMEWORKINSTALLLAST@ install-pycc |
|
19 |
|
20 # Install almost everything without disturbing previous versions |
|
21 altinstall: @FRAMEWORKALTINSTALLFIRST@ altbininstall libinstall inclinstall libainstall \ |
|
22 |
|
23 diff --git Python-2.6.4/pycc Python-2.6.4/pycc |
|
24 new file mode 100644 |
|
25 --- /dev/null |
|
26 +++ Python-2.6.4/pycc |
|
27 @@ -0,0 +1,168 @@ |
|
28 +#!/bin/ksh |
|
29 +# |
|
30 +# Script for running the C/C++ compiler when building python modules |
|
31 +# |
|
32 +# CDDL HEADER START |
|
33 +# |
|
34 +# The contents of this file are subject to the terms of the |
|
35 +# Common Development and Distribution License, Version 1.0 only |
|
36 +# (the "License"). You may not use this file except in compliance |
|
37 +# with the License. |
|
38 +# |
|
39 +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
|
40 +# or http://www.opensolaris.org/os/licensing. |
|
41 +# See the License for the specific language governing permissions |
|
42 +# and limitations under the License. |
|
43 +# |
|
44 +# When distributing Covered Code, include this CDDL HEADER in each |
|
45 +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
|
46 +# If applicable, add the following below this CDDL HEADER, with the |
|
47 +# fields enclosed by brackets "[]" replaced with your own identifying |
|
48 +# information: Portions Copyright [yyyy] [name of copyright owner] |
|
49 +# |
|
50 +# CDDL HEADER END |
|
51 +# |
|
52 +# |
|
53 +# Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved. |
|
54 +# Use is subject to license terms. |
|
55 +# |
|
56 + |
|
57 +MYNAME=`basename $0` |
|
58 + |
|
59 +# name of the compiler executable |
|
60 +CCEXE='cc' |
|
61 +# name of the GNU compiler executable |
|
62 +GCCEXE='gcc' |
|
63 +# name of the programming language |
|
64 +CLANG='C' |
|
65 +# name of the env variable for setting the compiler path |
|
66 +CVAR='CC' |
|
67 + |
|
68 +if [ "x$PYCC_CC" != x ]; then |
|
69 + CC="$PYCC_CC" |
|
70 +fi |
|
71 + |
|
72 +if [ "x$MYNAME" = xpyCC ]; then |
|
73 + CCEXE='CC' |
|
74 + GCCEXE='g++' |
|
75 + CLANG='C++' |
|
76 + CC="$CXX" |
|
77 + CVAR='CXX' |
|
78 + if [ "x$PYCC_CXX" != x ]; then |
|
79 + CC="$PYCC_CXX" |
|
80 + fi |
|
81 +fi |
|
82 + |
|
83 +SAVED_IFS="$IFS" |
|
84 +IFS=: |
|
85 + |
|
86 +# check if the CC env variable is set |
|
87 +if [ "x$CC" != x ]; then |
|
88 + # verify that it doesn't point to this script |
|
89 + if /usr/bin/cmp -s "$CC" $0; then |
|
90 + echo "WARNING: "$CVAR" is set to this script; ignoring this value to avoid an infinite loop" |
|
91 + CC= |
|
92 + fi |
|
93 +fi |
|
94 + |
|
95 +# check again if the CC env variable is set |
|
96 +if [ "x$CC" != x ]; then |
|
97 + case "$CC" in |
|
98 + /* ) |
|
99 + # $CC is an absolute path name |
|
100 + # check if $CC exists |
|
101 + if [ ! -e "$CC" ]; then |
|
102 + echo "WARNING: pycc: $CC not found" 1>&2 |
|
103 + CC= |
|
104 + else |
|
105 + # check if $CC is an executable |
|
106 + if [ ! -x "$CC" -o ! -f "$CC" ]; then |
|
107 + echo "WARNING: pycc: $CC is not an executable" 1>&2 |
|
108 + CC= |
|
109 + fi |
|
110 + fi |
|
111 + ;; |
|
112 + * ) |
|
113 + # try to find $CC in the PATH |
|
114 + NEW_CC= |
|
115 + for dir in $PATH; do |
|
116 + if [ -x "$dir/$CC" ]; then |
|
117 + NEW_CC="$dir/$CC" |
|
118 + break |
|
119 + fi |
|
120 + done |
|
121 + if [ "x$NEW_CC" = x ]; then |
|
122 + echo "WARNING: pycc: $CC not found" 1>&2 |
|
123 + CC= |
|
124 + else |
|
125 + CC="$NEW_CC" |
|
126 + fi |
|
127 + ;; |
|
128 + esac |
|
129 +fi |
|
130 + |
|
131 +if [ "x$CC" = x ]; then |
|
132 + # Look for the Sun Studio compiler in the PATH |
|
133 + for dir in $PATH; do |
|
134 + if [ -x "$dir/$CCEXE" ]; then |
|
135 + CC="$dir/$CCEXE" |
|
136 + break |
|
137 + fi |
|
138 + done |
|
139 +fi |
|
140 + |
|
141 +if [ "x$CC" = x ]; then |
|
142 + # Look for gcc in the PATH |
|
143 + for dir in $PATH; do |
|
144 + if [ -x "$dir/$GCCEXE" ]; then |
|
145 + CC="$dir/$GCCEXE" |
|
146 + break |
|
147 + fi |
|
148 + done |
|
149 +fi |
|
150 + |
|
151 +if [ "x$CC" = x ]; then |
|
152 + # Check for Sun Studio in /opt/SUNWspro (default install location) |
|
153 + if [ -x /opt/SUNWspro/bin/$CCEXE ]; then |
|
154 + CC=/opt/SUNWspro/bin/$CCEXE |
|
155 + fi |
|
156 +fi |
|
157 + |
|
158 +if [ "x$CC" = x ]; then |
|
159 + # Check for the GNU compiler in /usr/sfw/bin |
|
160 + if [ -x /usr/sfw/bin/$GCCEXE ]; then |
|
161 + CC=/usr/sfw/bin/$GCCEXE |
|
162 + fi |
|
163 +fi |
|
164 + |
|
165 +if [ "x$CC" = x ]; then |
|
166 + # Cannot continue without a C compiler |
|
167 + echo "ERROR: no $CLANG compiler not found; update your PATH or set the $CVAR env variable" 1>&2 |
|
168 + exit 1 |
|
169 +fi |
|
170 + |
|
171 +IFS="$SAVED_IFS" |
|
172 + |
|
173 +# We need to make some modifications to adapt correctly to compiler options |
|
174 +# that differ between GCC and Studio. |
|
175 + |
|
176 +extra_flags= |
|
177 + |
|
178 +is_gcc=no |
|
179 + |
|
180 +$CC --version >/dev/null 2>&1 && is_gcc=yes |
|
181 + |
|
182 +if [ "$is_gcc" = yes ]; then |
|
183 + for flag in "${@}"; do |
|
184 + # need -shared to link shared objects properly |
|
185 + if [ "$flag" = "-G" ]; then |
|
186 + extra_flags="$extra_flags -shared" |
|
187 + fi |
|
188 + done |
|
189 + # force PIC compilation |
|
190 + extra_flags="$extra_flags -fPIC -DPIC" |
|
191 +else |
|
192 + extra_flags="$extra_flags -KPIC" |
|
193 +fi |
|
194 + |
|
195 +exec "$CC" $extra_flags "${@}" |
|