aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lang/python/files/2.6/21_all_distutils_c++.patch')
-rw-r--r--dev-lang/python/files/2.6/21_all_distutils_c++.patch426
1 files changed, 426 insertions, 0 deletions
diff --git a/dev-lang/python/files/2.6/21_all_distutils_c++.patch b/dev-lang/python/files/2.6/21_all_distutils_c++.patch
new file mode 100644
index 0000000..7e1e89a
--- /dev/null
+++ b/dev-lang/python/files/2.6/21_all_distutils_c++.patch
@@ -0,0 +1,426 @@
+http://bugs.python.org/issue1222585
+
+--- configure.in
++++ configure.in
+@@ -1723,6 +1723,7 @@
+ # Set info about shared libraries.
+ AC_SUBST(SO)
+ AC_SUBST(LDSHARED)
++AC_SUBST(LDCXXSHARED)
+ AC_SUBST(BLDSHARED)
+ AC_SUBST(CCSHARED)
+ AC_SUBST(LINKFORSHARED)
+@@ -1775,36 +1776,47 @@
+ IRIX/5*) LDSHARED="ld -shared";;
+ IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
+ SunOS/5*)
+- if test "$GCC" = "yes"
+- then LDSHARED='$(CC) -shared'
+- else LDSHARED='$(CC) -G';
++ if test "$GCC" = "yes" ; then
++ LDSHARED='$(CC) -shared'
++ LDCXXSHARED='$(CXX) -shared'
++ else
++ LDSHARED='$(CC) -G'
++ LDCXXSHARED='$(CXX) -G'
+ fi ;;
+ hp*|HP*)
+- if test "$GCC" = "yes"
+- then LDSHARED='$(CC) -shared'
+- else LDSHARED='ld -b';
++ if test "$GCC" = "yes" ; then
++ LDSHARED='$(CC) -shared'
++ LDCXXSHARED='$(CXX) -shared'
++ else
++ LDSHARED='ld -b'
+ fi ;;
+ OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
+ Darwin/1.3*)
+ LDSHARED='$(CC) $(LDFLAGS) -bundle'
++ LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
+ if test "$enable_framework" ; then
+ # Link against the framework. All externals should be defined.
+ BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
+ LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
++ LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
+ else
+ # No framework. Ignore undefined symbols, assuming they come from Python
+ LDSHARED="$LDSHARED -undefined suppress"
++ LDCXXSHARED="$LDCXXSHARED -undefined suppress"
+ fi ;;
+ Darwin/1.4*|Darwin/5.*|Darwin/6.*)
+ LDSHARED='$(CC) $(LDFLAGS) -bundle'
++ LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
+ if test "$enable_framework" ; then
+ # Link against the framework. All externals should be defined.
+ BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
+ LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
++ LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
+ else
+ # No framework, use the Python app as bundle-loader
+ BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
+ LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
++ LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
+ fi ;;
+ Darwin/*)
+ # Use -undefined dynamic_lookup whenever possible (10.3 and later).
+@@ -1816,26 +1828,35 @@
+ LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
+ fi
+ LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
++ LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle -undefined dynamic_lookup'
+ BLDSHARED="$LDSHARED"
+ else
+ LDSHARED='$(CC) $(LDFLAGS) -bundle'
++ LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
+ if test "$enable_framework" ; then
+ # Link against the framework. All externals should be defined.
+ BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
+ LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
++ LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
+ else
+ # No framework, use the Python app as bundle-loader
+ BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
+ LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
++ LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
+ fi
+ fi
+ ;;
+- Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
+- BSD/OS*/4*) LDSHARED="gcc -shared";;
++ Linux*|GNU*|QNX*)
++ LDSHARED='$(CC) -shared'
++ LDCXXSHARED='$(CXX) -shared';;
++ BSD/OS*/4*)
++ LDSHARED="gcc -shared"
++ LDCXXSHARED="g++ -shared";;
+ FreeBSD*)
+ if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
+ then
+ LDSHARED='$(CC) -shared ${LDFLAGS}'
++ LDCXXSHARED='$(CXX) -shared ${LDFLAGS}'
+ else
+ LDSHARED="ld -Bshareable ${LDFLAGS}"
+ fi;;
+@@ -1843,6 +1864,7 @@
+ if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
+ then
+ LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
++ LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
+ else
+ case `uname -r` in
+ [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
+@@ -1850,23 +1872,36 @@
+ ;;
+ *)
+ LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
++ LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
+ ;;
+ esac
+ fi;;
+- NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
++ NetBSD*|DragonFly*)
++ LDSHARED="cc -shared ${LDFLAGS}"
++ LDCXXSHARED="c++ -shared ${LDFLAGS}";;
+ OpenUNIX*|UnixWare*)
+- if test "$GCC" = "yes"
+- then LDSHARED='$(CC) -shared'
+- else LDSHARED='$(CC) -G'
++ if test "$GCC" = "yes" ; then
++ LDSHARED='$(CC) -shared'
++ LDCXXSHARED='$(CXX) -shared'
++ else
++ LDSHARED='$(CC) -G'
++ LDCXXSHARED='$(CXX) -G'
+ fi;;
+- SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
++ SCO_SV*)
++ LDSHARED='$(CC) -Wl,-G,-Bexport'
++ LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
+ Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
+- CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
+- atheos*) LDSHARED="gcc -shared";;
++ CYGWIN*)
++ LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
++ LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
++ atheos*)
++ LDSHARED="gcc -shared"
++ LDCXXSHARED="g++ -shared";;
+ *) LDSHARED="ld";;
+ esac
+ fi
+ AC_MSG_RESULT($LDSHARED)
++LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
+ BLDSHARED=${BLDSHARED-$LDSHARED}
+ # CCSHARED are the C *flags* used to create objects to go into a shared
+ # library (module) -- this is only needed for a few systems
+--- Lib/distutils/cygwinccompiler.py
++++ Lib/distutils/cygwinccompiler.py
+@@ -132,9 +132,13 @@
+ self.set_executables(compiler='gcc -mcygwin -O -Wall',
+ compiler_so='gcc -mcygwin -mdll -O -Wall',
+ compiler_cxx='g++ -mcygwin -O -Wall',
++ compiler_so_cxx='g++ -mcygwin -mdll -O -Wall',
+ linker_exe='gcc -mcygwin',
+ linker_so=('%s -mcygwin %s' %
+- (self.linker_dll, shared_option)))
++ (self.linker_dll, shared_option)),
++ linker_exe_cxx='g++ -mcygwin',
++ linker_so_cxx=('%s -mcygwin %s' %
++ (self.linker_dll, shared_option)))
+
+ # cygwin and mingw32 need different sets of libraries
+ if self.gcc_version == "2.91.57":
+@@ -160,8 +164,12 @@
+ raise CompileError, msg
+ else: # for other files use the C-compiler
+ try:
+- self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
+- extra_postargs)
++ if self.detect_language(src) == 'c++':
++ self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] +
++ extra_postargs)
++ else:
++ self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
++ extra_postargs)
+ except DistutilsExecError, msg:
+ raise CompileError, msg
+
+@@ -322,10 +330,15 @@
+ self.set_executables(compiler='gcc -mno-cygwin -O -Wall',
+ compiler_so='gcc -mno-cygwin -mdll -O -Wall',
+ compiler_cxx='g++ -mno-cygwin -O -Wall',
++ compiler_so_cxx='g++ -mno-cygwin -mdll -O -Wall',
+ linker_exe='gcc -mno-cygwin',
+ linker_so='%s -mno-cygwin %s %s'
+ % (self.linker_dll, shared_option,
+- entry_point))
++ entry_point),
++ linker_exe_cxx='g++ -mno-cygwin',
++ linker_so_cxx='%s -mno-cygwin %s %s'
++ % (self.linker_dll, shared_option,
++ entry_point))
+ # Maybe we should also append -mthreads, but then the finished
+ # dlls need another dll (mingwm10.dll see Mingw32 docs)
+ # (-mthreads: Support thread-safe exception handling on `Mingw32')
+--- Lib/distutils/emxccompiler.py
++++ Lib/distutils/emxccompiler.py
+@@ -65,8 +65,12 @@
+ # XXX optimization, warnings etc. should be customizable.
+ self.set_executables(compiler='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall',
+ compiler_so='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall',
++ compiler_cxx='g++ -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall',
++ compiler_so_cxx='g++ -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall',
+ linker_exe='gcc -Zomf -Zmt -Zcrtdll',
+- linker_so='gcc -Zomf -Zmt -Zcrtdll -Zdll')
++ linker_so='gcc -Zomf -Zmt -Zcrtdll -Zdll',
++ linker_exe_cxx='g++ -Zomf -Zmt -Zcrtdll',
++ linker_so_cxx='g++ -Zomf -Zmt -Zcrtdll -Zdll')
+
+ # want the gcc library statically linked (so that we don't have
+ # to distribute a version dependent on the compiler we have)
+@@ -83,8 +87,12 @@
+ raise CompileError, msg
+ else: # for other files use the C-compiler
+ try:
+- self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
+- extra_postargs)
++ if self.detect_language(src) == 'c++':
++ self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] +
++ extra_postargs)
++ else:
++ self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
++ extra_postargs)
+ except DistutilsExecError, msg:
+ raise CompileError, msg
+
+--- Lib/distutils/sysconfig.py
++++ Lib/distutils/sysconfig.py
+@@ -167,9 +167,12 @@
+ varies across Unices and is stored in Python's Makefile.
+ """
+ if compiler.compiler_type == "unix":
+- (cc, cxx, opt, cflags, ccshared, ldshared, so_ext) = \
+- get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
+- 'CCSHARED', 'LDSHARED', 'SO')
++ (cc, cxx, ccshared, ldshared, ldcxxshared, so_ext) = \
++ get_config_vars('CC', 'CXX', 'CCSHARED', 'LDSHARED',
++ 'LDCXXSHARED', 'SO')
++
++ cflags = ''
++ cxxflags = ''
+
+ if 'CC' in os.environ:
+ cc = os.environ['CC']
+@@ -177,28 +180,40 @@
+ cxx = os.environ['CXX']
+ if 'LDSHARED' in os.environ:
+ ldshared = os.environ['LDSHARED']
++ if 'LDCXXSHARED' in os.environ:
++ ldcxxshared = os.environ['LDCXXSHARED']
+ if 'CPP' in os.environ:
+ cpp = os.environ['CPP']
+ else:
+ cpp = cc + " -E" # not always
+ if 'LDFLAGS' in os.environ:
+ ldshared = ldshared + ' ' + os.environ['LDFLAGS']
++ ldcxxshared = ldcxxshared + ' ' + os.environ['LDFLAGS']
+ if 'CFLAGS' in os.environ:
+- cflags = opt + ' ' + os.environ['CFLAGS']
++ cflags = os.environ['CFLAGS']
+ ldshared = ldshared + ' ' + os.environ['CFLAGS']
++ if 'CXXFLAGS' in os.environ:
++ cxxflags = os.environ['CXXFLAGS']
++ ldcxxshared = ldcxxshared + ' ' + os.environ['CXXFLAGS']
+ if 'CPPFLAGS' in os.environ:
+ cpp = cpp + ' ' + os.environ['CPPFLAGS']
+ cflags = cflags + ' ' + os.environ['CPPFLAGS']
++ cxxflags = cxxflags + ' ' + os.environ['CPPFLAGS']
+ ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
++ ldcxxshared = ldcxxshared + ' ' + os.environ['CPPFLAGS']
+
+ cc_cmd = cc + ' ' + cflags
++ cxx_cmd = cxx + ' ' + cxxflags
+ compiler.set_executables(
+ preprocessor=cpp,
+ compiler=cc_cmd,
+ compiler_so=cc_cmd + ' ' + ccshared,
+- compiler_cxx=cxx,
++ compiler_cxx=cxx_cmd,
++ compiler_so_cxx=cxx_cmd + ' ' + ccshared,
+ linker_so=ldshared,
+- linker_exe=cc)
++ linker_exe=cc,
++ linker_so_cxx=ldcxxshared,
++ linker_exe_cxx=cxx)
+
+ compiler.shared_lib_extension = so_ext
+
+@@ -546,7 +561,7 @@
+ for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED',
+ # a number of derived variables. These need to be
+ # patched up as well.
+- 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
++ 'CFLAGS', 'CXXFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
+ flags = _config_vars[key]
+ flags = re.sub('-arch\s+\w+\s', ' ', flags)
+ flags = re.sub('-isysroot [^ \t]*', ' ', flags)
+@@ -565,7 +580,7 @@
+ for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED',
+ # a number of derived variables. These need to be
+ # patched up as well.
+- 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
++ 'CFLAGS', 'CXXFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
+
+ flags = _config_vars[key]
+ flags = re.sub('-arch\s+\w+\s', ' ', flags)
+@@ -589,7 +604,7 @@
+ for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED',
+ # a number of derived variables. These need to be
+ # patched up as well.
+- 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
++ 'CFLAGS', 'CXXFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
+
+ flags = _config_vars[key]
+ flags = re.sub('-isysroot\s+\S+(\s|$)', ' ', flags)
+--- Lib/distutils/unixccompiler.py
++++ Lib/distutils/unixccompiler.py
+@@ -114,14 +114,17 @@
+ # are pretty generic; they will probably have to be set by an outsider
+ # (eg. using information discovered by the sysconfig about building
+ # Python extensions).
+- executables = {'preprocessor' : None,
+- 'compiler' : ["cc"],
+- 'compiler_so' : ["cc"],
+- 'compiler_cxx' : ["cc"],
+- 'linker_so' : ["cc", "-shared"],
+- 'linker_exe' : ["cc"],
+- 'archiver' : ["ar", "-cr"],
+- 'ranlib' : None,
++ executables = {'preprocessor' : None,
++ 'compiler' : ["cc"],
++ 'compiler_so' : ["cc"],
++ 'compiler_cxx' : ["c++"],
++ 'compiler_so_cxx' : ["c++"],
++ 'linker_so' : ["cc", "-shared"],
++ 'linker_exe' : ["cc"],
++ 'linker_so_cxx' : ["c++", "-shared"],
++ 'linker_exe_cxx' : ["c++"],
++ 'archiver' : ["ar", "-cr"],
++ 'ranlib' : None,
+ }
+
+ if sys.platform[:6] == "darwin":
+@@ -171,11 +174,18 @@
+
+ def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
+ compiler_so = self.compiler_so
++ compiler_so_cxx = self.compiler_so_cxx
+ if sys.platform == 'darwin':
+ compiler_so = _darwin_compiler_fixup(compiler_so, cc_args + extra_postargs)
++ compiler_so_cxx = _darwin_compiler_fixup(compiler_so_cxx, cc_args +
++ extra_postargs)
+ try:
+- self.spawn(compiler_so + cc_args + [src, '-o', obj] +
+- extra_postargs)
++ if self.detect_language(src) == 'c++':
++ self.spawn(compiler_so_cxx + cc_args + [src, '-o', obj] +
++ extra_postargs)
++ else:
++ self.spawn(compiler_so + cc_args + [src, '-o', obj] +
++ extra_postargs)
+ except DistutilsExecError, msg:
+ raise CompileError, msg
+
+@@ -232,23 +242,16 @@
+ ld_args.extend(extra_postargs)
+ self.mkpath(os.path.dirname(output_filename))
+ try:
+- if target_desc == CCompiler.EXECUTABLE:
+- linker = self.linker_exe[:]
++ if target_lang == "c++":
++ if target_desc == CCompiler.EXECUTABLE:
++ linker = self.linker_exe_cxx[:]
++ else:
++ linker = self.linker_so_cxx[:]
+ else:
+- linker = self.linker_so[:]
+- if target_lang == "c++" and self.compiler_cxx:
+- # skip over environment variable settings if /usr/bin/env
+- # is used to set up the linker's environment.
+- # This is needed on OSX. Note: this assumes that the
+- # normal and C++ compiler have the same environment
+- # settings.
+- i = 0
+- if os.path.basename(linker[0]) == "env":
+- i = 1
+- while '=' in linker[i]:
+- i = i + 1
+-
+- linker[i] = self.compiler_cxx[i]
++ if target_desc == CCompiler.EXECUTABLE:
++ linker = self.linker_exe[:]
++ else:
++ linker = self.linker_so[:]
+
+ if sys.platform == 'darwin':
+ linker = _darwin_compiler_fixup(linker, ld_args)
+--- Makefile.pre.in
++++ Makefile.pre.in
+@@ -104,6 +104,7 @@
+ SO= @SO@
+ LDSHARED= @LDSHARED@
+ BLDSHARED= @BLDSHARED@
++LDCXXSHARED= @LDCXXSHARED@
+ DESTSHARED= $(BINLIBDEST)/lib-dynload
+
+ # Executable suffix (.exe on Windows and Mac OS X)
+@@ -397,7 +398,7 @@
+ # Build the shared modules
+ sharedmods: $(BUILDPYTHON)
+ @case $$MAKEFLAGS in \
+- *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
++ *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' CFLAGS='$(CFLAGS)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
+ esac
+
+ # Build the platform-specific modules