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