mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	Merged revisions 63955 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r63955 | ronald.oussoren | 2008-06-05 14:58:24 +0200 (Thu, 05 Jun 2008) | 20 lines
  MacOS X: Enable 4-way universal builds
  This patch adds a new configure argument on OSX:
          --with-universal-archs=[32-bit|64-bit|all]
  When used with the --enable-universalsdk option this controls which
  CPU architectures are includes in the framework. The default is 32-bit,
  meaning i386 and ppc. The most useful alternative is 'all', which includes
  all 4 CPU architectures supported by MacOS X (i386, ppc, x86_64 and ppc64).
  This includes limited support for the Carbon bindings in 64-bit mode as well,
  limited because (a) I haven't done extensive testing and (b) a large portion
  of the Carbon API's aren't available in 64-bit mode anyway.
  I've also duplicated a feature of Apple's build of python: setting the
  environment variable 'ARCHFLAGS' controls the '-arch' flags used for building
  extensions using distutils.
........
			
			
This commit is contained in:
		
							parent
							
								
									26adf520f3
								
							
						
					
					
						commit
						fcaf910a1f
					
				
					 14 changed files with 321 additions and 51 deletions
				
			
		| 
						 | 
					@ -6,6 +6,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "patchlevel.h"
 | 
					#include "patchlevel.h"
 | 
				
			||||||
#include "pyconfig.h"
 | 
					#include "pyconfig.h"
 | 
				
			||||||
 | 
					#include "pymacconfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <limits.h>
 | 
					#include <limits.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										59
									
								
								Include/pymacconfig.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								Include/pymacconfig.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					#ifndef PYMACCONFIG_H
 | 
				
			||||||
 | 
					#define PYMACCONFIG_H
 | 
				
			||||||
 | 
					     /*
 | 
				
			||||||
 | 
					      * This file moves some of the autoconf magic to compile-time
 | 
				
			||||||
 | 
					      * when building on MacOSX. This is needed for building 4-way
 | 
				
			||||||
 | 
					      * universal binaries and for 64-bit universal binaries because
 | 
				
			||||||
 | 
					      * the values redefined below aren't configure-time constant but 
 | 
				
			||||||
 | 
					      * only compile-time constant in these scenarios.
 | 
				
			||||||
 | 
					      */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__APPLE__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# undef SIZEOF_LONG
 | 
				
			||||||
 | 
					# undef SIZEOF_PTHREAD_T
 | 
				
			||||||
 | 
					# undef SIZEOF_SIZE_T
 | 
				
			||||||
 | 
					# undef SIZEOF_TIME_T
 | 
				
			||||||
 | 
					# undef SIZEOF_VOID_P
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#    undef VA_LIST_IS_ARRAY
 | 
				
			||||||
 | 
					#    if defined(__LP64__) && defined(__x86_64__)
 | 
				
			||||||
 | 
					#        define VA_LIST_IS_ARRAY 1
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#    undef HAVE_LARGEFILE_SUPPORT
 | 
				
			||||||
 | 
					#    ifndef __LP64__
 | 
				
			||||||
 | 
					#         define HAVE_LARGEFILE_SUPPORT 1
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#    undef SIZEOF_LONG
 | 
				
			||||||
 | 
					#    ifdef __LP64__
 | 
				
			||||||
 | 
					#        define SIZEOF_LONG 		8
 | 
				
			||||||
 | 
					#        define SIZEOF_PTHREAD_T 	8
 | 
				
			||||||
 | 
					#        define SIZEOF_SIZE_T 		8
 | 
				
			||||||
 | 
					#        define SIZEOF_TIME_T 		8
 | 
				
			||||||
 | 
					#        define SIZEOF_VOID_P 		8
 | 
				
			||||||
 | 
					#    else
 | 
				
			||||||
 | 
					#        define SIZEOF_LONG 		4
 | 
				
			||||||
 | 
					#        define SIZEOF_PTHREAD_T 	4
 | 
				
			||||||
 | 
					#        define SIZEOF_SIZE_T 		4
 | 
				
			||||||
 | 
					#        define SIZEOF_TIME_T 		4
 | 
				
			||||||
 | 
					#        define SIZEOF_VOID_P 		4
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#    if defined(__LP64__)
 | 
				
			||||||
 | 
						 /* MacOSX 10.4 (the first release to suppport 64-bit code
 | 
				
			||||||
 | 
						  * at all) only supports 64-bit in the UNIX layer. 
 | 
				
			||||||
 | 
						  * Therefore surpress the toolbox-glue in 64-bit mode.
 | 
				
			||||||
 | 
						  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* In 64-bit mode setpgrp always has no argments, in 32-bit
 | 
				
			||||||
 | 
						 * mode that depends on the compilation environment
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
					#	undef SETPGRP_HAVE_ARG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* defined(_APPLE__) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* PYMACCONFIG_H */
 | 
				
			||||||
| 
						 | 
					@ -516,6 +516,26 @@ def get_config_vars(*args):
 | 
				
			||||||
                    flags = re.sub('-isysroot [^ \t]*', ' ', flags)
 | 
					                    flags = re.sub('-isysroot [^ \t]*', ' ', flags)
 | 
				
			||||||
                    _config_vars[key] = flags
 | 
					                    _config_vars[key] = flags
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                # Allow the user to override the architecture flags using
 | 
				
			||||||
 | 
					                # an environment variable.
 | 
				
			||||||
 | 
					                # NOTE: This name was introduced by Apple in OSX 10.5 and
 | 
				
			||||||
 | 
					                # is used by several scripting languages distributed with
 | 
				
			||||||
 | 
					                # that OS release.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if 'ARCHFLAGS' in os.environ:
 | 
				
			||||||
 | 
					                    arch = os.environ['ARCHFLAGS']
 | 
				
			||||||
 | 
					                    for key in ('LDFLAGS', 'BASECFLAGS',
 | 
				
			||||||
 | 
					                        # a number of derived variables. These need to be
 | 
				
			||||||
 | 
					                        # patched up as well.
 | 
				
			||||||
 | 
					                        'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        flags = _config_vars[key]
 | 
				
			||||||
 | 
					                        flags = re.sub('-arch\s+\w+\s', ' ', flags)
 | 
				
			||||||
 | 
					                        flags = flags + ' ' + arch
 | 
				
			||||||
 | 
					                        _config_vars[key] = flags
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if args:
 | 
					    if args:
 | 
				
			||||||
        vals = []
 | 
					        vals = []
 | 
				
			||||||
        for name in args:
 | 
					        for name in args:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,7 +63,7 @@ def _darwin_compiler_fixup(compiler_so, cc_args):
 | 
				
			||||||
        stripArch = '-arch' in cc_args
 | 
					        stripArch = '-arch' in cc_args
 | 
				
			||||||
        stripSysroot = '-isysroot' in cc_args
 | 
					        stripSysroot = '-isysroot' in cc_args
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if stripArch:
 | 
					    if stripArch or 'ARCHFLAGS' in os.environ:
 | 
				
			||||||
        while True:
 | 
					        while True:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                index = compiler_so.index('-arch')
 | 
					                index = compiler_so.index('-arch')
 | 
				
			||||||
| 
						 | 
					@ -72,6 +72,12 @@ def _darwin_compiler_fixup(compiler_so, cc_args):
 | 
				
			||||||
            except ValueError:
 | 
					            except ValueError:
 | 
				
			||||||
                break
 | 
					                break
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if 'ARCHFLAGS' in os.environ and not stripArch:
 | 
				
			||||||
 | 
					        # User specified different -arch flags in the environ,
 | 
				
			||||||
 | 
					        # see also distutils.sysconfig
 | 
				
			||||||
 | 
					        compiler_so = compiler_so + ' ' + os.environ['ARCHFLAGS']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if stripSysroot:
 | 
					    if stripSysroot:
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            index = compiler_so.index('-isysroot')
 | 
					            index = compiler_so.index('-isysroot')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -124,12 +124,19 @@ def get_platform ():
 | 
				
			||||||
            osname = "macosx"
 | 
					            osname = "macosx"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (release + '.') < '10.4.' and \
 | 
					            if (release + '.') >= '10.4.' and \
 | 
				
			||||||
                    get_config_vars().get('UNIVERSALSDK', '').strip():
 | 
					                    '-arch' in get_config_vars().get('CFLAGS', '').strip():
 | 
				
			||||||
                # The universal build will build fat binaries, but not on
 | 
					                # The universal build will build fat binaries, but not on
 | 
				
			||||||
                # systems before 10.4
 | 
					                # systems before 10.4
 | 
				
			||||||
 | 
					                #
 | 
				
			||||||
 | 
					                # Try to detect 4-way universal builds, those have machine-type
 | 
				
			||||||
 | 
					                # 'universal' instead of 'fat'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                machine = 'fat'
 | 
					                machine = 'fat'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if '-arch x86_64' in get_config_vars().get('CFLAGS'):
 | 
				
			||||||
 | 
					                    machine = 'universal'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            elif machine in ('PowerPC', 'Power_Macintosh'):
 | 
					            elif machine in ('PowerPC', 'Power_Macintosh'):
 | 
				
			||||||
                # Pick a sane name for the PPC architecture.
 | 
					                # Pick a sane name for the PPC architecture.
 | 
				
			||||||
                machine = 'ppc'
 | 
					                machine = 'ppc'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										43
									
								
								Lib/test/test_macos.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								Lib/test/test_macos.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					import unittest
 | 
				
			||||||
 | 
					import MacOS
 | 
				
			||||||
 | 
					import Carbon.File
 | 
				
			||||||
 | 
					from test import test_support
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TESTFN2 = test_support.TESTFN + '2'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestMacOS(unittest.TestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def testOpenRF(self):
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            fp = open(test_support.TESTFN, 'w')
 | 
				
			||||||
 | 
					            fp.write('hello world\n')
 | 
				
			||||||
 | 
					            fp.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            rfp = MacOS.openrf(test_support.TESTFN, '*wb')
 | 
				
			||||||
 | 
					            rfp.write('goodbye world\n')
 | 
				
			||||||
 | 
					            rfp.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            fp = open(test_support.TESTFN, 'r')
 | 
				
			||||||
 | 
					            data = fp.read()
 | 
				
			||||||
 | 
					            fp.close()
 | 
				
			||||||
 | 
					            self.assertEquals(data, 'hello world\n')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            rfp = MacOS.openrf(test_support.TESTFN, '*rb')
 | 
				
			||||||
 | 
					            data = rfp.read(100)
 | 
				
			||||||
 | 
					            data2 = rfp.read(100)
 | 
				
			||||||
 | 
					            rfp.close()
 | 
				
			||||||
 | 
					            self.assertEquals(data, 'goodbye world\n')
 | 
				
			||||||
 | 
					            self.assertEquals(data2, '')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        finally:
 | 
				
			||||||
 | 
					            os.unlink(test_support.TESTFN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_main():
 | 
				
			||||||
 | 
					    test_support.run_unittest(TestMacOS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    test_main()
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,10 @@ os.chdir(os.path.expanduser('~/Documents'))
 | 
				
			||||||
# Make sure sys.executable points to the python interpreter inside the
 | 
					# Make sure sys.executable points to the python interpreter inside the
 | 
				
			||||||
# framework, instead of at the helper executable inside the application
 | 
					# framework, instead of at the helper executable inside the application
 | 
				
			||||||
# bundle (the latter works, but doesn't allow access to the window server)
 | 
					# bundle (the latter works, but doesn't allow access to the window server)
 | 
				
			||||||
sys.executable = os.path.join(sys.prefix, 'bin', 'python')
 | 
					if sys.executable.endswith('-32'):
 | 
				
			||||||
 | 
					    sys.executable = os.path.join(sys.prefix, 'bin', 'python-32')
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    sys.executable = os.path.join(sys.prefix, 'bin', 'python')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Look for the -psn argument that the launcher adds and remove it, it will
 | 
					# Look for the -psn argument that the launcher adds and remove it, it will
 | 
				
			||||||
# only confuse the IDLE startup code.
 | 
					# only confuse the IDLE startup code.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,12 +48,42 @@ compileall=$(srcdir)/../Lib/compileall.py
 | 
				
			||||||
installapps: install_PythonLauncher install_IDLE checkapplepython install_pythonw \
 | 
					installapps: install_PythonLauncher install_IDLE checkapplepython install_pythonw \
 | 
				
			||||||
	install_versionedtools
 | 
						install_versionedtools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					installapps4way: install_Python4way install_BuildApplet install_PythonLauncher install_IDLE install_pythonw4way install_versionedtools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install_pythonw: pythonw
 | 
					install_pythonw: pythonw
 | 
				
			||||||
	$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)"
 | 
						$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)"
 | 
				
			||||||
	$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/python$(VERSION)"
 | 
						$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/python$(VERSION)"
 | 
				
			||||||
	ln -sf python$(VERSION) "$(DESTDIR)$(prefix)/bin/python"
 | 
						ln -sf python$(VERSION) "$(DESTDIR)$(prefix)/bin/python"
 | 
				
			||||||
	ln -sf pythonw$(VERSION) "$(DESTDIR)$(prefix)/bin/pythonw"
 | 
						ln -sf pythonw$(VERSION) "$(DESTDIR)$(prefix)/bin/pythonw"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Install 3 variants of python/pythonw: 
 | 
				
			||||||
 | 
					# 	- 32-bit (i386 and ppc)
 | 
				
			||||||
 | 
					# 	- 64-bit (x86_64 and ppc64)
 | 
				
			||||||
 | 
					# 	- all    (all four architectures)
 | 
				
			||||||
 | 
					# 	- Make 'python' and 'pythonw' aliases for the 32-bit variant
 | 
				
			||||||
 | 
					install_pythonw4way: pythonw-32 pythonw-64 pythonw
 | 
				
			||||||
 | 
						$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw-64 "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)-64"
 | 
				
			||||||
 | 
						$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw-64 "$(DESTDIR)$(prefix)/bin/python$(VERSION)-64"
 | 
				
			||||||
 | 
						ln -sf python$(VERSION)-64 "$(DESTDIR)$(prefix)/bin/python-64"
 | 
				
			||||||
 | 
						ln -sf pythonw$(VERSION)-64 "$(DESTDIR)$(prefix)/bin/pythonw-64"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw-32 "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)-32"
 | 
				
			||||||
 | 
						$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw-32 "$(DESTDIR)$(prefix)/bin/python$(VERSION)-32"
 | 
				
			||||||
 | 
						ln -sf python$(VERSION)-32 "$(DESTDIR)$(prefix)/bin/python-32"
 | 
				
			||||||
 | 
						ln -sf pythonw$(VERSION)-32 "$(DESTDIR)$(prefix)/bin/pythonw-32"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)-all"
 | 
				
			||||||
 | 
						$(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/python$(VERSION)-all"
 | 
				
			||||||
 | 
						ln -sf python$(VERSION)-all "$(DESTDIR)$(prefix)/bin/python-all"
 | 
				
			||||||
 | 
						ln -sf pythonw$(VERSION)-all "$(DESTDIR)$(prefix)/bin/pythonw-all"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ln -sf pythonw$(VERSION)-32	"$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)"
 | 
				
			||||||
 | 
						ln -sf python$(VERSION)-32	"$(DESTDIR)$(prefix)/bin/python$(VERSION)"
 | 
				
			||||||
 | 
						ln -sf pythonw$(VERSION)-32	"$(DESTDIR)$(prefix)/bin/pythonw"
 | 
				
			||||||
 | 
						ln -sf python$(VERSION)-32	"$(DESTDIR)$(prefix)/bin/python"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Install unix tools in /usr/local/bin. These are just aliases for the 
 | 
					# Install unix tools in /usr/local/bin. These are just aliases for the 
 | 
				
			||||||
# actual installation inside the framework.
 | 
					# actual installation inside the framework.
 | 
				
			||||||
| 
						 | 
					@ -64,11 +94,16 @@ installunixtools:
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
	for fn in python pythonw idle pydoc python-config smtpd.py   \
 | 
						for fn in python pythonw idle pydoc python-config smtpd.py   \
 | 
				
			||||||
		  python$(VERSION) pythonw$(VERSION) idle$(VERSION) \
 | 
							  python$(VERSION) pythonw$(VERSION) idle$(VERSION) \
 | 
				
			||||||
		  pydoc$(VERSION) python-config$(VERSION) smtpd$(VERSION).py ;\
 | 
							  pydoc$(VERSION) python$(VERSION)-config smtpd$(VERSION).py ;\
 | 
				
			||||||
	do \
 | 
						do \
 | 
				
			||||||
		ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\
 | 
							ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TODO: install symlinks for -32, -64 and -all as well
 | 
				
			||||||
 | 
					installunixtools4way: installunixtools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Like installunixtools, but only install links to the versioned binaries.
 | 
					# Like installunixtools, but only install links to the versioned binaries.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -77,18 +112,20 @@ altinstallunixtools:
 | 
				
			||||||
		$(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ;\
 | 
							$(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ;\
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
	for fn in python$(VERSION) pythonw$(VERSION) idle$(VERSION) \
 | 
						for fn in python$(VERSION) pythonw$(VERSION) idle$(VERSION) \
 | 
				
			||||||
		  pydoc$(VERSION) python-config$(VERSION) smtpd$(VERSION).py ;\
 | 
							  pydoc$(VERSION) python$(VERSION)-config) smtpd$(VERSION).py ;\
 | 
				
			||||||
	do \
 | 
						do \
 | 
				
			||||||
		ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\
 | 
							ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TODO: -32, -64 and -all variants
 | 
				
			||||||
 | 
					altinstallunixtools4way: altinstallunixtools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# By default most tools are installed without a version in their basename, to
 | 
					# By default most tools are installed without a version in their basename, to
 | 
				
			||||||
# make it easier to install (and use) several python versions side-by-side move
 | 
					# make it easier to install (and use) several python versions side-by-side move
 | 
				
			||||||
# the tools to a version-specific name and add the non-versioned name as an
 | 
					# the tools to a version-specific name and add the non-versioned name as an
 | 
				
			||||||
# alias.
 | 
					# alias.
 | 
				
			||||||
install_versionedtools:
 | 
					install_versionedtools:
 | 
				
			||||||
	for fn in idle pydoc python-config ;\
 | 
						for fn in idle pydoc ;\
 | 
				
			||||||
	do \
 | 
						do \
 | 
				
			||||||
		if [ -h "$(DESTDIR)$(prefix)/bin/$${fn}" ]; then \
 | 
							if [ -h "$(DESTDIR)$(prefix)/bin/$${fn}" ]; then \
 | 
				
			||||||
			continue ;\
 | 
								continue ;\
 | 
				
			||||||
| 
						 | 
					@ -96,6 +133,10 @@ install_versionedtools:
 | 
				
			||||||
		mv "$(DESTDIR)$(prefix)/bin/$${fn}" "$(DESTDIR)$(prefix)/bin/$${fn}$(VERSION)"  ;\
 | 
							mv "$(DESTDIR)$(prefix)/bin/$${fn}" "$(DESTDIR)$(prefix)/bin/$${fn}$(VERSION)"  ;\
 | 
				
			||||||
		ln -sf "$${fn}$(VERSION)" "$(DESTDIR)$(prefix)/bin/$${fn}" ;\
 | 
							ln -sf "$${fn}$(VERSION)" "$(DESTDIR)$(prefix)/bin/$${fn}" ;\
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
 | 
						if [ ! -h "$(DESTDIR)$(prefix)/bin/python-config" ]; then \
 | 
				
			||||||
 | 
							mv "$(DESTDIR)$(prefix)/bin/python-config" "$(DESTDIR)$(prefix)/bin/python$(VERSION)-config" ;\
 | 
				
			||||||
 | 
							ln -sf "python$(VERSION)-config" "$(DESTDIR)$(prefix)/bin/python-config" ; \
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
	if [ ! -h "$(DESTDIR)$(prefix)/bin/smtpd.py" ]; then \
 | 
						if [ ! -h "$(DESTDIR)$(prefix)/bin/smtpd.py" ]; then \
 | 
				
			||||||
		mv "$(DESTDIR)$(prefix)/bin/smtpd.py" "$(DESTDIR)$(prefix)/bin/smtpd$(VERSION).py"  ;\
 | 
							mv "$(DESTDIR)$(prefix)/bin/smtpd.py" "$(DESTDIR)$(prefix)/bin/smtpd$(VERSION).py"  ;\
 | 
				
			||||||
		ln -sf "smtpd$(VERSION).py" "$(DESTDIR)$(prefix)/bin/smtpd.py" ;\
 | 
							ln -sf "smtpd$(VERSION).py" "$(DESTDIR)$(prefix)/bin/smtpd.py" ;\
 | 
				
			||||||
| 
						 | 
					@ -106,6 +147,13 @@ pythonw: $(srcdir)/Tools/pythonw.c Makefile
 | 
				
			||||||
	$(CC) $(LDFLAGS) -o $@ $(srcdir)/Tools/pythonw.c \
 | 
						$(CC) $(LDFLAGS) -o $@ $(srcdir)/Tools/pythonw.c \
 | 
				
			||||||
		-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"'
 | 
							-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pythonw-32: $(srcdir)/Tools/pythonw.c Makefile
 | 
				
			||||||
 | 
						$(CC) $(LDFLAGS) -o $@ -arch i386 -arch ppc $(srcdir)/Tools/pythonw.c \
 | 
				
			||||||
 | 
							-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-32"'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pythonw-64: $(srcdir)/Tools/pythonw.c Makefile
 | 
				
			||||||
 | 
						$(CC) $(LDFLAGS) -o $@ -arch x86_64 -arch ppc64 $(srcdir)/Tools/pythonw.c \
 | 
				
			||||||
 | 
							-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-64"'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install_PythonLauncher:
 | 
					install_PythonLauncher:
 | 
				
			||||||
	cd PythonLauncher && make install DESTDIR=$(DESTDIR)
 | 
						cd PythonLauncher && make install DESTDIR=$(DESTDIR)
 | 
				
			||||||
| 
						 | 
					@ -158,6 +206,12 @@ install_Python:
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
	$(INSTALL_PROGRAM) $(STRIPFLAG) $(BUILDPYTHON) "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"
 | 
						$(INSTALL_PROGRAM) $(STRIPFLAG) $(BUILDPYTHON) "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install_Python4way: install_Python
 | 
				
			||||||
 | 
						lipo  -extract i386 -extract ppc7400 -output "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-32" "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"
 | 
				
			||||||
 | 
						lipo  -extract x86_64 -extract ppc64 -output "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-64" "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install_IDLE:
 | 
					install_IDLE:
 | 
				
			||||||
	test -d "$(DESTDIR)$(PYTHONAPPSDIR)" || mkdir -p "$(DESTDIR)$(PYTHONAPPSDIR)"
 | 
						test -d "$(DESTDIR)$(PYTHONAPPSDIR)" || mkdir -p "$(DESTDIR)$(PYTHONAPPSDIR)"
 | 
				
			||||||
	-test -d "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" && rm -r "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app"
 | 
						-test -d "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" && rm -r "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -428,7 +428,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
 | 
				
			||||||
		$(RESSRCDIR)/Info.plist
 | 
							$(RESSRCDIR)/Info.plist
 | 
				
			||||||
	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
 | 
						$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
 | 
				
			||||||
	if test "${UNIVERSALSDK}"; then \
 | 
						if test "${UNIVERSALSDK}"; then \
 | 
				
			||||||
		$(CC) -o $(LDLIBRARY) -arch i386 -arch ppc -dynamiclib \
 | 
							$(CC) -o $(LDLIBRARY) @UNIVERSAL_ARCH_FLAGS@ -dynamiclib \
 | 
				
			||||||
			-isysroot "${UNIVERSALSDK}" \
 | 
								-isysroot "${UNIVERSALSDK}" \
 | 
				
			||||||
			-all_load $(LIBRARY) -Wl,-single_module \
 | 
								-all_load $(LIBRARY) -Wl,-single_module \
 | 
				
			||||||
			-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \
 | 
								-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \
 | 
				
			||||||
| 
						 | 
					@ -1031,13 +1031,22 @@ frameworkinstallmaclib:
 | 
				
			||||||
frameworkinstallapps:
 | 
					frameworkinstallapps:
 | 
				
			||||||
	cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
 | 
						cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					frameworkinstallapps4way:
 | 
				
			||||||
 | 
						cd Mac && $(MAKE) installapps4way DESTDIR="$(DESTDIR)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This install the unix python and pythonw tools in /usr/local/bin
 | 
					# This install the unix python and pythonw tools in /usr/local/bin
 | 
				
			||||||
frameworkinstallunixtools:
 | 
					frameworkinstallunixtools:
 | 
				
			||||||
	cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
 | 
						cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					frameworkinstallunixtools4way:
 | 
				
			||||||
 | 
						cd Mac && $(MAKE) installunixtools4way DESTDIR="$(DESTDIR)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
frameworkaltinstallunixtools:
 | 
					frameworkaltinstallunixtools:
 | 
				
			||||||
	cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
 | 
						cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					frameworkaltinstallunixtools4way:
 | 
				
			||||||
 | 
						cd Mac && $(MAKE) altinstallunixtools4way DESTDIR="$(DESTDIR)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This installs the Demos and Tools into the applications directory.
 | 
					# This installs the Demos and Tools into the applications directory.
 | 
				
			||||||
# It is not part of a normal frameworkinstall
 | 
					# It is not part of a normal frameworkinstall
 | 
				
			||||||
frameworkinstallextras:
 | 
					frameworkinstallextras:
 | 
				
			||||||
| 
						 | 
					@ -1182,7 +1191,7 @@ funny:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Perform some verification checks on any modified files.
 | 
					# Perform some verification checks on any modified files.
 | 
				
			||||||
check:
 | 
					check:
 | 
				
			||||||
	./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
 | 
						$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Dependencies
 | 
					# Dependencies
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1778,6 +1778,7 @@ ffi_type ffi_type_double = { sizeof(double), DOUBLE_ALIGN, FFI_TYPE_DOUBLE };
 | 
				
			||||||
#ifdef ffi_type_longdouble
 | 
					#ifdef ffi_type_longdouble
 | 
				
			||||||
#undef ffi_type_longdouble
 | 
					#undef ffi_type_longdouble
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					  /* This is already defined on OSX */
 | 
				
			||||||
ffi_type ffi_type_longdouble = { sizeof(long double), LONGDOUBLE_ALIGN,
 | 
					ffi_type ffi_type_longdouble = { sizeof(long double), LONGDOUBLE_ALIGN,
 | 
				
			||||||
				 FFI_TYPE_LONGDOUBLE };
 | 
									 FFI_TYPE_LONGDOUBLE };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -179,7 +179,6 @@ epilogue:
 | 
				
			||||||
        movl %ebp,%esp
 | 
					        movl %ebp,%esp
 | 
				
			||||||
        popl %ebp
 | 
					        popl %ebp
 | 
				
			||||||
        ret
 | 
					        ret
 | 
				
			||||||
.LFE1:
 | 
					 | 
				
			||||||
.ffi_call_SYSV_end:
 | 
					.ffi_call_SYSV_end:
 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
        .size    ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV
 | 
					        .size    ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV
 | 
				
			||||||
| 
						 | 
					@ -220,7 +219,7 @@ epilogue:
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
	.long	.LFB1	/* FDE initial location */
 | 
						.long	.LFB1	/* FDE initial location */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	.long	.LFE1-.LFB1	/* FDE address range */
 | 
						.long	.ffi_call_SYSV_end-.LFB1	/* FDE address range */
 | 
				
			||||||
#ifdef __PIC__
 | 
					#ifdef __PIC__
 | 
				
			||||||
	.byte	0x0	/* .uleb128 0x0; Augmentation size */
 | 
						.byte	0x0	/* .uleb128 0x0; Augmentation size */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										85
									
								
								configure.in
									
										
									
									
									
								
							
							
						
						
									
										85
									
								
								configure.in
									
										
									
									
									
								
							| 
						 | 
					@ -57,6 +57,12 @@ AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features]
 | 
				
			||||||
# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
 | 
					# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
 | 
				
			||||||
AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
 | 
					AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
 | 
				
			||||||
 | 
					# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
 | 
				
			||||||
 | 
					# them.
 | 
				
			||||||
 | 
					AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define_xopen_source=yes
 | 
					define_xopen_source=yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Arguments passed to configure.
 | 
					# Arguments passed to configure.
 | 
				
			||||||
| 
						 | 
					@ -86,6 +92,20 @@ AC_ARG_ENABLE(universalsdk,
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
AC_SUBST(UNIVERSALSDK)
 | 
					AC_SUBST(UNIVERSALSDK)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UNIVERSAL_ARCHS="32-bit"
 | 
				
			||||||
 | 
					AC_MSG_CHECKING(for --with-universal-archs)
 | 
				
			||||||
 | 
					AC_ARG_WITH(universal-archs,
 | 
				
			||||||
 | 
					    AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
						AC_MSG_RESULT($withval)
 | 
				
			||||||
 | 
						UNIVERSAL_ARCHS="$withval"
 | 
				
			||||||
 | 
					],
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
					 	AC_MSG_RESULT(32-bit)
 | 
				
			||||||
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_ARG_WITH(framework-name,
 | 
					AC_ARG_WITH(framework-name,
 | 
				
			||||||
              AC_HELP_STRING(--with-framework-name=FRAMEWORK, 
 | 
					              AC_HELP_STRING(--with-framework-name=FRAMEWORK, 
 | 
				
			||||||
                             specify an alternate name of the framework built with --enable-framework),
 | 
					                             specify an alternate name of the framework built with --enable-framework),
 | 
				
			||||||
| 
						 | 
					@ -127,9 +147,14 @@ AC_ARG_ENABLE(framework,
 | 
				
			||||||
		PYTHONFRAMEWORKPREFIX=$enableval
 | 
							PYTHONFRAMEWORKPREFIX=$enableval
 | 
				
			||||||
		PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
 | 
							PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
 | 
				
			||||||
		FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
 | 
							FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
 | 
				
			||||||
		FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
 | 
							FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
 | 
				
			||||||
		FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
 | 
							if test "$UNIVERSAL_ARCHS" = "all"
 | 
				
			||||||
 | 
							then
 | 
				
			||||||
 | 
								FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
			FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
 | 
								FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if test "x${prefix}" = "xNONE" ; then
 | 
							if test "x${prefix}" = "xNONE" ; then
 | 
				
			||||||
			FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
 | 
								FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
| 
						 | 
					@ -159,6 +184,12 @@ AC_ARG_ENABLE(framework,
 | 
				
			||||||
		FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
 | 
							FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
	enable_framework=
 | 
						enable_framework=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if test "$UNIVERSAL_ARCHS" = "all" 
 | 
				
			||||||
 | 
						then
 | 
				
			||||||
 | 
							FRAMEWORKINSTALLLAST=update4wayuniversal
 | 
				
			||||||
 | 
							FRAMEWORKALTINSTALLLAST=update4wayuniversal
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
AC_SUBST(PYTHONFRAMEWORK)
 | 
					AC_SUBST(PYTHONFRAMEWORK)
 | 
				
			||||||
AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
 | 
					AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
 | 
				
			||||||
| 
						 | 
					@ -782,6 +813,11 @@ then
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_SUBST(BASECFLAGS)
 | 
					AC_SUBST(BASECFLAGS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The -arch flags for universal builds on OSX
 | 
				
			||||||
 | 
					UNIVERSAL_ARCH_FLAGS=
 | 
				
			||||||
 | 
					AC_SUBST(UNIVERSAL_ARCH_FLAGS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# tweak BASECFLAGS based on compiler and platform
 | 
					# tweak BASECFLAGS based on compiler and platform
 | 
				
			||||||
case $GCC in
 | 
					case $GCC in
 | 
				
			||||||
yes)
 | 
					yes)
 | 
				
			||||||
| 
						 | 
					@ -820,7 +856,23 @@ yes)
 | 
				
			||||||
	    # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
 | 
						    # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
 | 
				
			||||||
	    # used to be here, but non-Apple gcc doesn't accept them.
 | 
						    # used to be here, but non-Apple gcc doesn't accept them.
 | 
				
			||||||
	    if test "${enable_universalsdk}"; then
 | 
						    if test "${enable_universalsdk}"; then
 | 
				
			||||||
		BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
 | 
							UNIVERSAL_ARCH_FLAGS=""
 | 
				
			||||||
 | 
						        if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
 | 
				
			||||||
 | 
							   UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						         elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
 | 
				
			||||||
 | 
							   UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						         elif test "$UNIVERSAL_ARCHS" = "all" ; then
 | 
				
			||||||
 | 
							   UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							 else
 | 
				
			||||||
 | 
						           AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							 fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
 | 
				
			||||||
	    fi
 | 
						    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    ;;
 | 
						    ;;
 | 
				
			||||||
| 
						 | 
					@ -1495,6 +1547,12 @@ then
 | 
				
			||||||
		if test ${cur_target} '>' 10.2; then
 | 
							if test ${cur_target} '>' 10.2; then
 | 
				
			||||||
			cur_target=10.3
 | 
								cur_target=10.3
 | 
				
			||||||
		fi
 | 
							fi
 | 
				
			||||||
 | 
							if test "${UNIVERSAL_ARCHS}" = "all"; then
 | 
				
			||||||
 | 
								# Ensure that the default platform for a 4-way
 | 
				
			||||||
 | 
								# universal build is OSX 10.5, that's the first
 | 
				
			||||||
 | 
								# OS release where 4-way builds make sense.
 | 
				
			||||||
 | 
								cur_target='10.5'
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
		CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
 | 
							CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		# Make sure that MACOSX_DEPLOYMENT_TARGET is set in the 
 | 
							# Make sure that MACOSX_DEPLOYMENT_TARGET is set in the 
 | 
				
			||||||
| 
						 | 
					@ -1505,10 +1563,10 @@ then
 | 
				
			||||||
		export MACOSX_DEPLOYMENT_TARGET
 | 
							export MACOSX_DEPLOYMENT_TARGET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		EXPORT_MACOSX_DEPLOYMENT_TARGET=''
 | 
							EXPORT_MACOSX_DEPLOYMENT_TARGET=''
 | 
				
			||||||
		if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
 | 
							if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
 | 
				
			||||||
		then
 | 
							then
 | 
				
			||||||
			if test "${enable_universalsdk}"; then
 | 
								if test "${enable_universalsdk}"; then
 | 
				
			||||||
				LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
 | 
									LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
 | 
				
			||||||
			fi
 | 
								fi
 | 
				
			||||||
			LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
 | 
								LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
 | 
				
			||||||
			BLDSHARED="$LDSHARED"
 | 
								BLDSHARED="$LDSHARED"
 | 
				
			||||||
| 
						 | 
					@ -3098,23 +3156,6 @@ AC_MSG_RESULT($PY_UNICODE_TYPE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# check for endianness
 | 
					# check for endianness
 | 
				
			||||||
AC_C_BIGENDIAN
 | 
					AC_C_BIGENDIAN
 | 
				
			||||||
AH_VERBATIM([WORDS_BIGENDIAN],
 | 
					 | 
				
			||||||
[
 | 
					 | 
				
			||||||
 /* Define to 1 if your processor stores words with the most significant byte
 | 
					 | 
				
			||||||
    first (like Motorola and SPARC, unlike Intel and VAX). 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    The block below does compile-time checking for endianness on platforms
 | 
					 | 
				
			||||||
    that use GCC and therefore allows compiling fat binaries on OSX by using 
 | 
					 | 
				
			||||||
    '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
 | 
					 | 
				
			||||||
    such that the configure-result is used on systems that don't use GCC.
 | 
					 | 
				
			||||||
  */
 | 
					 | 
				
			||||||
#ifdef __BIG_ENDIAN__
 | 
					 | 
				
			||||||
#define WORDS_BIGENDIAN 1
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#ifndef __LITTLE_ENDIAN__
 | 
					 | 
				
			||||||
#undef WORDS_BIGENDIAN
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Check whether right shifting a negative integer extends the sign bit
 | 
					# Check whether right shifting a negative integer extends the sign bit
 | 
				
			||||||
# or fills with zeros (like the Cray J90, according to Tim Peters).
 | 
					# or fills with zeros (like the Cray J90, according to Tim Peters).
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -489,6 +489,9 @@
 | 
				
			||||||
/* Define if you have readline 4.2 */
 | 
					/* Define if you have readline 4.2 */
 | 
				
			||||||
#undef HAVE_RL_COMPLETION_MATCHES
 | 
					#undef HAVE_RL_COMPLETION_MATCHES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Define when using libedit's readline emulation */
 | 
				
			||||||
 | 
					#undef HAVE_RL_DISPM_VFUNC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Define if you have readline 4.0 */
 | 
					/* Define if you have readline 4.0 */
 | 
				
			||||||
#undef HAVE_RL_PRE_INPUT_HOOK
 | 
					#undef HAVE_RL_PRE_INPUT_HOOK
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -976,22 +979,9 @@
 | 
				
			||||||
/* Define to profile with the Pentium timestamp counter */
 | 
					/* Define to profile with the Pentium timestamp counter */
 | 
				
			||||||
#undef WITH_TSC
 | 
					#undef WITH_TSC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Define to 1 if your processor stores words with the most significant byte
 | 
				
			||||||
 /* Define to 1 if your processor stores words with the most significant byte
 | 
					   first (like Motorola and SPARC, unlike Intel and VAX). */
 | 
				
			||||||
    first (like Motorola and SPARC, unlike Intel and VAX). 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    The block below does compile-time checking for endianness on platforms
 | 
					 | 
				
			||||||
    that use GCC and therefore allows compiling fat binaries on OSX by using 
 | 
					 | 
				
			||||||
    '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
 | 
					 | 
				
			||||||
    such that the configure-result is used on systems that don't use GCC.
 | 
					 | 
				
			||||||
  */
 | 
					 | 
				
			||||||
#ifdef __BIG_ENDIAN__
 | 
					 | 
				
			||||||
#define WORDS_BIGENDIAN 1
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#ifndef __LITTLE_ENDIAN__
 | 
					 | 
				
			||||||
#undef WORDS_BIGENDIAN
 | 
					#undef WORDS_BIGENDIAN
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Define to 1 if on AIX 3.
 | 
					/* Define to 1 if on AIX 3.
 | 
				
			||||||
   System headers sometimes define this.
 | 
					   System headers sometimes define this.
 | 
				
			||||||
| 
						 | 
					@ -1006,6 +996,9 @@
 | 
				
			||||||
/* Define on Irix to enable u_int */
 | 
					/* Define on Irix to enable u_int */
 | 
				
			||||||
#undef _BSD_TYPES
 | 
					#undef _BSD_TYPES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Define on Darwin to activate all library features */
 | 
				
			||||||
 | 
					#undef _DARWIN_C_SOURCE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This must be set to 64 on some systems to enable large file support. */
 | 
					/* This must be set to 64 on some systems to enable large file support. */
 | 
				
			||||||
#undef _FILE_OFFSET_BITS
 | 
					#undef _FILE_OFFSET_BITS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										38
									
								
								setup.py
									
										
									
									
									
								
							
							
						
						
									
										38
									
								
								setup.py
									
										
									
									
									
								
							| 
						 | 
					@ -241,6 +241,19 @@ class PyBuildExt(build_ext):
 | 
				
			||||||
                'WARNING: skipping import check for Carbon-based "%s"' %
 | 
					                'WARNING: skipping import check for Carbon-based "%s"' %
 | 
				
			||||||
                ext.name)
 | 
					                ext.name)
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.get_platform() == 'darwin' and (
 | 
				
			||||||
 | 
					                sys.maxint > 2**32 and '-arch' in ext.extra_link_args):
 | 
				
			||||||
 | 
					            # Don't bother doing an import check when an extension was
 | 
				
			||||||
 | 
					            # build with an explicit '-arch' flag on OSX. That's currently
 | 
				
			||||||
 | 
					            # only used to build 32-bit only extensions in a 4-way
 | 
				
			||||||
 | 
					            # universal build and loading 32-bit code into a 64-bit
 | 
				
			||||||
 | 
					            # process will fail.
 | 
				
			||||||
 | 
					            self.announce(
 | 
				
			||||||
 | 
					                'WARNING: skipping import check for "%s"' %
 | 
				
			||||||
 | 
					                ext.name)
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Workaround for Cygwin: Cygwin currently has fork issues when many
 | 
					        # Workaround for Cygwin: Cygwin currently has fork issues when many
 | 
				
			||||||
        # modules have been imported
 | 
					        # modules have been imported
 | 
				
			||||||
        if self.get_platform() == 'cygwin':
 | 
					        if self.get_platform() == 'cygwin':
 | 
				
			||||||
| 
						 | 
					@ -507,10 +520,12 @@ class PyBuildExt(build_ext):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # readline
 | 
					        # readline
 | 
				
			||||||
        do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
 | 
					        do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
 | 
				
			||||||
        if platform == 'darwin':
 | 
					        if platform == 'darwin': # and os.uname()[2] < '9.':
 | 
				
			||||||
            # MacOSX 10.4 has a broken readline. Don't try to build
 | 
					            # MacOSX 10.4 has a broken readline. Don't try to build
 | 
				
			||||||
            # the readline module unless the user has installed a fixed
 | 
					            # the readline module unless the user has installed a fixed
 | 
				
			||||||
            # readline package
 | 
					            # readline package
 | 
				
			||||||
 | 
					            # FIXME: The readline emulation on 10.5 is better, but the
 | 
				
			||||||
 | 
					            # readline module doesn't compile out of the box.
 | 
				
			||||||
            if find_file('readline/rlconf.h', inc_dirs, []) is None:
 | 
					            if find_file('readline/rlconf.h', inc_dirs, []) is None:
 | 
				
			||||||
                do_readline = False
 | 
					                do_readline = False
 | 
				
			||||||
        if do_readline:
 | 
					        if do_readline:
 | 
				
			||||||
| 
						 | 
					@ -1242,11 +1257,29 @@ class PyBuildExt(build_ext):
 | 
				
			||||||
        include_dirs.append('/usr/X11R6/include')
 | 
					        include_dirs.append('/usr/X11R6/include')
 | 
				
			||||||
        frameworks = ['-framework', 'Tcl', '-framework', 'Tk']
 | 
					        frameworks = ['-framework', 'Tcl', '-framework', 'Tk']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # All existing framework builds of Tcl/Tk don't support 64-bit
 | 
				
			||||||
 | 
					        # architectures.
 | 
				
			||||||
 | 
					        cflags = sysconfig.get_config_vars('CFLAGS')[0]
 | 
				
			||||||
 | 
					        archs = re.findall('-arch\s+(\w+)', cflags)
 | 
				
			||||||
 | 
					        if 'x86_64' in archs or 'ppc64' in archs:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                archs.remove('x86_64')
 | 
				
			||||||
 | 
					            except ValueError:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                archs.remove('ppc64')
 | 
				
			||||||
 | 
					            except ValueError:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for a in archs:
 | 
				
			||||||
 | 
					                frameworks.append('-arch')
 | 
				
			||||||
 | 
					                frameworks.append(a)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
 | 
					        ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
 | 
				
			||||||
                        define_macros=[('WITH_APPINIT', 1)],
 | 
					                        define_macros=[('WITH_APPINIT', 1)],
 | 
				
			||||||
                        include_dirs = include_dirs,
 | 
					                        include_dirs = include_dirs,
 | 
				
			||||||
                        libraries = [],
 | 
					                        libraries = [],
 | 
				
			||||||
                        extra_compile_args = frameworks,
 | 
					                        extra_compile_args = frameworks[2:],
 | 
				
			||||||
                        extra_link_args = frameworks,
 | 
					                        extra_link_args = frameworks,
 | 
				
			||||||
                        )
 | 
					                        )
 | 
				
			||||||
        self.extensions.append(ext)
 | 
					        self.extensions.append(ext)
 | 
				
			||||||
| 
						 | 
					@ -1377,6 +1410,7 @@ class PyBuildExt(build_ext):
 | 
				
			||||||
                                                  '_ctypes', 'libffi_osx'))
 | 
					                                                  '_ctypes', 'libffi_osx'))
 | 
				
			||||||
        sources = [os.path.join(ffi_srcdir, p)
 | 
					        sources = [os.path.join(ffi_srcdir, p)
 | 
				
			||||||
                   for p in ['ffi.c',
 | 
					                   for p in ['ffi.c',
 | 
				
			||||||
 | 
					                             'x86/darwin64.S',
 | 
				
			||||||
                             'x86/x86-darwin.S',
 | 
					                             'x86/x86-darwin.S',
 | 
				
			||||||
                             'x86/x86-ffi_darwin.c',
 | 
					                             'x86/x86-ffi_darwin.c',
 | 
				
			||||||
                             'x86/x86-ffi64.c',
 | 
					                             'x86/x86-ffi64.c',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue