1##--------------------------------------------------------------------- 2# GNUmakefile for python 3# Call Makefile to do the work, but for the install case, unpack the 4# tarball to create the project source directory 5##--------------------------------------------------------------------- 6PROJECT = python 7NAME = Python 8VERSION = 2.3.5 9export PYTHON_CURRENT_VERSION = $(VERSION) 10NAMEVERS = $(NAME)-$(VERSION) 11TARBALL = $(NAMEVERS).tar.bz2 12FIX = $(OBJROOT)/fix 13 14export MY_CC = cc 15export MY_CXX = c++ 16 17VERS = 2.3 18FRAMEWORKS = /System/Library/Frameworks 19PYFRAMEWORK = $(FRAMEWORKS)/Python.framework 20VERSIONSVERS = $(PYFRAMEWORK)/Versions/$(VERS) 21INCLUDEPYTHONVERS = $(VERSIONSVERS)/include/$(PROJECT)$(VERS) 22LIBPYTHONVERS = $(VERSIONSVERS)/lib/$(PROJECT)$(VERS) 23 24MAJORVERS = $(shell echo $(VERS) | sed 's/\..*//') 25DYLIB = lib$(PROJECT)$(MAJORVERS).dylib 26USRINCLUDE = /usr/include 27USRLIB = /usr/lib 28EXTRAS = $(VERSIONSVERS)/Extras 29LIBRARYPYTHON = /Library/Python/$(VERS) 30SITEPACKAGES = $(LIBRARYPYTHON)/site-packages 31 32PYTHONENV = DYLD_FRAMEWORK_PATH=$(DSTROOT)$(FRAMEWORKS) DYLD_NEW_LOCAL_SHARED_REGIONS=1 PYTHONPATH="$(DSTROOT)$(LIBPYTHONVERS):$(EXTRASPYTHON)" 33 34# This file, along with the "strip" perl script, works around a verification 35# error caused by a UFS bug (stripping a multi-link file breaks the link, and 36# sometimes causes the wrong file to be stripped/unstripped). By using the 37# "strip" perl script, it not only causes the correct file to be stripped, but 38# also preserves the link. 39 40export PATH:=$(SRCROOT)/bin:$(PATH) 41 42no_target: python 43 44python: $(OBJROOT)/$(PROJECT) 45 DYLD_NEW_LOCAL_SHARED_REGIONS=1 $(MAKE) -C $(OBJROOT) -f Makefile \ 46 SRCROOT=$(OBJROOT) OBJROOT="$(OBJROOT)/$(PROJECT)" \ 47 VERS=$(VERS) 48 49##--------------------------------------------------------------------- 50# We patch configure to remove the "-arch_only ppc" option, since we 51# build fat. We also set DYLD_NEW_LOCAL_SHARED_REGIONS or else python.exe 52# will crash. And patch unixccompiler for wxWidgets (submit back to python). 53##--------------------------------------------------------------------- 54$(OBJROOT)/$(PROJECT): 55 rsync -a $(SRCROOT)/ $(OBJROOT) 56 @set -x && \ 57 cd $(OBJROOT) && \ 58 bzcat $(TARBALL) | gnutar xf - && \ 59 rm -rf $(PROJECT) && \ 60 mv $(NAMEVERS) $(PROJECT) && \ 61 ed - $(PROJECT)/configure < $(FIX)/configure.ed && \ 62 ed - $(PROJECT)/Makefile.pre.in < $(FIX)/Makefile.pre.in.ed && \ 63 ed - $(PROJECT)/Lib/distutils/unixccompiler.py < $(FIX)/unixccompiler.py.ed && \ 64 ed - $(PROJECT)/Lib/locale.py < $(FIX)/locale.py.ed && \ 65 ed - $(PROJECT)/Lib/plat-mac/Carbon/AppleEvents.py < $(FIX)/AppleEvents.py.ed && \ 66 ed - $(PROJECT)/Lib/plat-mac/terminalcommand.py < $(FIX)/terminalcommand.py.ed && \ 67 ed - $(PROJECT)/Modules/getpath.c < $(FIX)/getpath.c.ed && \ 68 ed - $(PROJECT)/Modules/_localemodule.c < $(FIX)/_localemodule.c.ed && \ 69 ed - $(PROJECT)/pyconfig.h.in < $(FIX)/pyconfig.h.in.ed && \ 70 ed - $(PROJECT)/Python/mactoolboxglue.c < $(FIX)/mactoolboxglue.c.ed 71 cd '$(OBJROOT)/$(PROJECT)' && patch -p1 -i $(FIX)/CVE-2007-4965-int-overflow.patch 72 @set -x && \ 73 cd $(OBJROOT) && \ 74 ed - $(PROJECT)/configure < $(FIX)/configure42.ed 75 76install: installpython 77 install $(FIX)/audiotest.au $(DSTROOT)$(LIBPYTHONVERS)/email/test/data/audiotest.au 78 install $(FIX)/audiotest.au $(DSTROOT)$(LIBPYTHONVERS)/test/audiotest.au 79 80installpython: $(OBJROOT)/$(PROJECT) 81 DYLD_NEW_LOCAL_SHARED_REGIONS=1 $(MAKE) -C $(OBJROOT) -f Makefile \ 82 install SRCROOT=$(OBJROOT) OBJROOT="$(OBJROOT)/$(PROJECT)" \ 83 VERS=$(VERS) 84 #ln -sf $(DYLIB) $(DSTROOT)$(USRLIB)/lib$(PROJECT)$(VERS).dylib 85 #ln -sf $(DYLIB) $(DSTROOT)$(USRLIB)/lib$(PROJECT).dylib 86 install -d $(DSTROOT)$(SITEPACKAGES) 87 echo $(EXTRAS)/lib/python > $(DSTROOT)$(SITEPACKAGES)/Extras.pth 88 89.DEFAULT: 90 @$(MAKE) -f Makefile $@ 91