blob: f4bedaee18cfbb388d4dc6abcc7b3a378417ea16 [file] [log] [blame]
Jack Jansencb4321e2002-08-09 00:18:21 +00001# This file can be invoked from the various frameworkinstall... targets in the
2# main Makefile. The next couple of variables are overridden on the
Jack Jansen0b06be72002-06-21 14:48:38 +00003# commandline in that case.
4
Jack Jansenc77f6df2004-12-27 15:51:03 +00005VERSION=2.5
Jack Jansenbe3e1f72002-08-01 21:14:06 +00006builddir = ../..
7srcdir = ../..
Jack Jansen9592fe92003-05-25 22:01:32 +00008prefix=/Library/Frameworks/Python.framework/Versions/$(VERSION)
Jack Jansene3d9f402002-09-02 12:16:00 +00009LIBDEST=$(prefix)/lib/python$(VERSION)
Jack Jansen04087b52003-02-25 12:41:10 +000010BUILDPYTHON=$(builddir)/python.exe
Jack Jansen9592fe92003-05-25 22:01:32 +000011DESTDIR=
Jack Jansen29eb8c32004-06-02 20:06:38 +000012# Test whether to use xcodebuild (preferred) or pbxbuild:
13ifeq ($(shell ls /usr/bin/xcodebuild),/usr/bin/xcodebuild)
Jack Jansen6045b9c2003-11-19 13:56:40 +000014PBXBUILD=xcodebuild
Jack Jansen29eb8c32004-06-02 20:06:38 +000015else
16PBXBUILD=pbxbuild
17endif
Jack Jansencb4321e2002-08-09 00:18:21 +000018
19# These are normally glimpsed from the previous set
Jack Jansen9592fe92003-05-25 22:01:32 +000020bindir=/usr/local/bin
Jack Jansencfe28362002-12-25 22:31:28 +000021PYTHONAPPSPATH=/Applications/MacPython-$(VERSION)
Jack Jansen9592fe92003-05-25 22:01:32 +000022PYTHONAPPSDIR=$(PYTHONAPPSPATH)
Jack Jansenbe3e1f72002-08-01 21:14:06 +000023APPINSTALLDIR=$(prefix)/Resources/Python.app
Jack Jansen75ed1672001-09-05 22:09:50 +000024
Jack Jansen0cd0e652002-03-29 14:18:18 +000025# Variables for installing the "normal" unix binaries
Jack Jansenbe3e1f72002-08-01 21:14:06 +000026INSTALLED_PYTHON=$(prefix)/bin/python
Jack Jansendffeaf42003-07-23 10:49:17 +000027INSTALLED_PYTHONW=$(APPINSTALLDIR)/Contents/MacOS/Python
Jack Jansen0cd0e652002-03-29 14:18:18 +000028
Jack Jansen638e5e32001-09-06 16:33:57 +000029# Items more-or-less copied from the main Makefile
30DIRMODE=755
Jack Jansena226b572003-05-09 15:08:39 +000031FILEMODE=644
Jack Jansen638e5e32001-09-06 16:33:57 +000032INSTALL=/usr/bin/install -c
Jack Jansend3295ba2003-06-16 09:47:25 +000033INSTALL_SYMLINK=ln -fsn
Jack Jansen638e5e32001-09-06 16:33:57 +000034INSTALL_PROGRAM=${INSTALL}
35INSTALL_SCRIPT= ${INSTALL_PROGRAM}
Jack Jansena226b572003-05-09 15:08:39 +000036INSTALL_DATA= ${INSTALL} -m ${FILEMODE}
Jack Jansen4684a092002-08-28 21:27:02 +000037LN=ln
Jack Jansen0cd0e652002-03-29 14:18:18 +000038STRIPFLAG=-s
Jack Jansen7d996a22002-11-11 00:05:00 +000039##OPT=-g -O3 -Wall -Wstrict-prototypes -Wno-long-double -no-cpp-precomp \
40## -fno-common -dynamic
41##INCLUDES=-I$(builddir) -I$(srcdir)/Include -I$(srcdir)/Mac/Include
42##DEFINES=
43##
44##CFLAGS=$(OPT) $(DEFINES) $(INCLUDES)
45##LDFLAGS=-F$(builddir) -framework System -framework Python -framework Carbon \
46## -framework Foundation
47##CC=cc
48##LD=cc
Jack Jansen81204152002-08-15 21:31:18 +000049CPMAC=/Developer/Tools/CpMac
Jack Jansen75ed1672001-09-05 22:09:50 +000050
Jack Jansenbe3e1f72002-08-01 21:14:06 +000051APPTEMPLATE=$(srcdir)/Mac/OSXResources/app
Jack Jansen82f1d2c2003-03-11 23:07:08 +000052APPSUBDIRS=MacOS Resources Resources/English.lproj \
53 Resources/English.lproj/Documentation \
54 Resources/English.lproj/Documentation/doc \
Jack Jansene2ff8be2003-07-02 09:20:09 +000055 Resources/English.lproj/Documentation/ide
Jack Jansen82f1d2c2003-03-11 23:07:08 +000056DOCDIR=$(srcdir)/Mac/OSXResources/app/Resources/English.lproj/Documentation
57DOCINDEX=$(DOCDIR)/"Documentation idx"
Jack Jansen45c8e922002-08-09 14:15:46 +000058CACHERSRC=$(srcdir)/Mac/scripts/cachersrc.py
Jack Jansen7d996a22002-11-11 00:05:00 +000059compileall=$(srcdir)/Lib/compileall.py
Jack Jansend7800362003-02-12 15:42:49 +000060bundlebuilder=$(srcdir)/Lib/plat-mac/bundlebuilder.py
Jack Jansencce7e342002-07-31 14:46:04 +000061
Jack Jansen4ccf3e12003-02-18 23:33:39 +000062installapps: install_PythonLauncher install_Python install_BuildApplet install_IDE \
Jack Jansen6116f072004-12-26 23:02:05 +000063 install_IDLE install_PackageManager checkapplepython
Jack Jansencce7e342002-07-31 14:46:04 +000064
65install_PythonLauncher:
Jack Jansenbe3e1f72002-08-01 21:14:06 +000066 cd $(srcdir)/Mac/OSX/PythonLauncher/PythonLauncher.pbproj ; \
Jack Jansen6045b9c2003-11-19 13:56:40 +000067 $(PBXBUILD) -target PythonLauncher -buildstyle Deployment install \
Jack Jansen94d09f82003-06-20 14:33:38 +000068 DSTROOT=$(DESTDIR)/ INSTALL_PATH=$(PYTHONAPPSPATH)
Fred Drake8851c622003-07-07 17:38:26 +000069
Jack Jansen04087b52003-02-25 12:41:10 +000070install_Python:
Jack Jansen82f1d2c2003-03-11 23:07:08 +000071 @if test ! -f $(DOCINDEX); then \
72 echo WARNING: you should run Apple Help Indexing Tool on $(DOCDIR); \
73 fi
Jack Jansencce7e342002-07-31 14:46:04 +000074 @for i in $(PYTHONAPPSDIR) $(APPINSTALLDIR) $(APPINSTALLDIR)/Contents; do \
Jack Jansen9592fe92003-05-25 22:01:32 +000075 if test ! -d $(DESTDIR)$$i; then \
76 echo "Creating directory $(DESTDIR)$$i"; \
77 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
Jack Jansen638e5e32001-09-06 16:33:57 +000078 fi;\
79 done
80 @for i in $(APPSUBDIRS); do \
Jack Jansen9592fe92003-05-25 22:01:32 +000081 if test ! -d $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i; then \
82 echo "Creating directory $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; \
83 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i; \
Jack Jansen638e5e32001-09-06 16:33:57 +000084 else true; \
85 fi; \
86 done
87 @for d in . $(APPSUBDIRS); \
88 do \
89 a=$(APPTEMPLATE)/$$d; \
90 if test ! -d $$a; then continue; else true; fi; \
Jack Jansen9592fe92003-05-25 22:01:32 +000091 b=$(DESTDIR)$(APPINSTALLDIR)/Contents/$$d; \
Jack Jansen638e5e32001-09-06 16:33:57 +000092 for i in $$a/*; \
93 do \
Jack Jansen638e5e32001-09-06 16:33:57 +000094 case $$i in \
95 *CVS) ;; \
96 *.py[co]) ;; \
97 *.orig) ;; \
98 *~) ;; \
Jack Jansen82f1d2c2003-03-11 23:07:08 +000099 *idx) \
100 echo $(CPMAC) "$$i" $$b; \
101 $(CPMAC) "$$i" $$b; \
102 ;; \
Jack Jansen638e5e32001-09-06 16:33:57 +0000103 *) \
104 if test -d $$i; then continue; fi; \
105 if test -x $$i; then \
106 echo $(INSTALL_SCRIPT) $$i $$b; \
107 $(INSTALL_SCRIPT) $$i $$b; \
108 else \
109 echo $(INSTALL_DATA) $$i $$b; \
110 $(INSTALL_DATA) $$i $$b; \
111 fi;; \
112 esac; \
113 done; \
114 done
Fred Drake8851c622003-07-07 17:38:26 +0000115 $(INSTALL_PROGRAM) $(STRIPFLAG) $(BUILDPYTHON) $(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/Python
116
Jack Jansen9592fe92003-05-25 22:01:32 +0000117install_IDE:
118 @if ! $(BUILDPYTHON) -c "import waste"; then \
Jack Jansenf80798b2002-08-02 21:04:46 +0000119 echo PythonIDE needs the \"waste\" extension module; \
120 echo See Mac/OSX/README for details; \
Jack Jansen7d996a22002-11-11 00:05:00 +0000121 else \
Jack Jansen9592fe92003-05-25 22:01:32 +0000122 echo $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
Jack Jansenc77f6df2004-12-27 15:51:03 +0000123 --destroot $(DESTDIR) \
Jack Jansen9592fe92003-05-25 22:01:32 +0000124 --python $(INSTALLED_PYTHONW) \
125 --output $(DESTDIR)$(PYTHONAPPSDIR)/PythonIDE.app --noargv \
Jack Jansen4ccf3e12003-02-18 23:33:39 +0000126 $(srcdir)/Mac/Tools/IDE/PythonIDE.py ; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000127 $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
Jack Jansenc77f6df2004-12-27 15:51:03 +0000128 --destroot $(DESTDIR) \
Jack Jansen9592fe92003-05-25 22:01:32 +0000129 --python $(INSTALLED_PYTHONW) \
130 --output $(DESTDIR)$(PYTHONAPPSDIR)/PythonIDE.app --noargv \
Jack Jansen4ccf3e12003-02-18 23:33:39 +0000131 $(srcdir)/Mac/Tools/IDE/PythonIDE.py; \
Jack Jansend7800362003-02-12 15:42:49 +0000132 fi
133
Jack Jansen9592fe92003-05-25 22:01:32 +0000134install_PackageManager:
135 @if ! $(BUILDPYTHON) -c "import waste"; then \
Jack Jansend7800362003-02-12 15:42:49 +0000136 echo PackageManager needs the \"waste\" extension module; \
137 echo See Mac/OSX/README for details; \
138 else \
Jack Jansen9592fe92003-05-25 22:01:32 +0000139 echo $(BUILDPYTHON) $(bundlebuilder) \
140 --builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \
Jack Jansenc77f6df2004-12-27 15:51:03 +0000141 --destroot $(DESTDIR) \
Jack Jansen9592fe92003-05-25 22:01:32 +0000142 --python $(INSTALLED_PYTHONW) \
Jack Jansend7800362003-02-12 15:42:49 +0000143 --resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \
144 --mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \
145 --iconfile $(srcdir)/Mac/Tools/IDE/PackageManager.icns \
146 --creator Pimp build; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000147 $(BUILDPYTHON) $(bundlebuilder) \
148 --builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \
Jack Jansenc77f6df2004-12-27 15:51:03 +0000149 --destroot $(DESTDIR) \
Jack Jansen9592fe92003-05-25 22:01:32 +0000150 --python $(INSTALLED_PYTHONW) \
Jack Jansend7800362003-02-12 15:42:49 +0000151 --resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \
152 --mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \
153 --iconfile $(srcdir)/Mac/Tools/IDE/PackageManager.icns \
154 --creator Pimp build; \
Jack Jansenf80798b2002-08-02 21:04:46 +0000155 fi
Jack Jansen76a6ab62002-09-12 22:19:23 +0000156
Jack Jansen9592fe92003-05-25 22:01:32 +0000157install_IDLE:
158 @if ! $(BUILDPYTHON) -c "import _tkinter"; then \
Jack Jansen76a6ab62002-09-12 22:19:23 +0000159 echo IDLE needs the \"Tkinter\" extension module; \
160 echo See Mac/OSX/README for details; \
161 else \
Jack Jansen9592fe92003-05-25 22:01:32 +0000162 echo $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
163 --python $(INSTALLED_PYTHONW) \
Jack Jansenc77f6df2004-12-27 15:51:03 +0000164 --destroot $(DESTDIR) \
Jack Jansen9592fe92003-05-25 22:01:32 +0000165 --output $(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app \
Jack Jansend3295ba2003-06-16 09:47:25 +0000166 --extra $(srcdir)/Lib/idlelib \
Jack Jansena775dd12003-11-27 22:54:28 +0000167 $(srcdir)/Tools/scripts/idle ; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000168 $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
169 --python $(INSTALLED_PYTHONW) \
Jack Jansenc77f6df2004-12-27 15:51:03 +0000170 --destroot $(DESTDIR) \
Jack Jansen9592fe92003-05-25 22:01:32 +0000171 --output $(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app \
Jack Jansend3295ba2003-06-16 09:47:25 +0000172 --extra $(srcdir)/Lib/idlelib:Contents/Resources/idlelib \
Jack Jansena775dd12003-11-27 22:54:28 +0000173 $(srcdir)/Tools/scripts/idle ; \
Jack Jansen76a6ab62002-09-12 22:19:23 +0000174 fi
175
Fred Drake8851c622003-07-07 17:38:26 +0000176
Jack Jansen9592fe92003-05-25 22:01:32 +0000177install_BuildApplet:
178 $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
Jack Jansenc77f6df2004-12-27 15:51:03 +0000179 --destroot $(DESTDIR) \
Jack Jansen9592fe92003-05-25 22:01:32 +0000180 --python $(INSTALLED_PYTHONW) \
181 --output $(DESTDIR)$(PYTHONAPPSDIR)/BuildApplet.app \
Jack Jansen940e9702002-08-02 15:32:12 +0000182 $(srcdir)/Mac/scripts/BuildApplet.py
Fred Drake8851c622003-07-07 17:38:26 +0000183
Jack Jansen83f898c2002-12-30 22:23:40 +0000184MACLIBDEST=$(LIBDEST)/plat-mac
Jack Jansen45c8e922002-08-09 14:15:46 +0000185MACTOOLSDEST=$(prefix)/Mac/Tools
186MACTOOLSSRC=$(srcdir)/Mac/Tools
187MACTOOLSSUBDIRS=IDE
Jack Jansen94fab762002-09-02 12:29:11 +0000188installmacsubtree:
Jack Jansen83f898c2002-12-30 22:23:40 +0000189 @for i in $(MACTOOLSDEST); \
Jack Jansen638e5e32001-09-06 16:33:57 +0000190 do \
Jack Jansen9592fe92003-05-25 22:01:32 +0000191 if test ! -d $(DESTDIR)$$i; then \
192 echo "Creating directory $(DESTDIR)$$i"; \
193 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
Jack Jansen638e5e32001-09-06 16:33:57 +0000194 else true; \
195 fi; \
196 done
Jack Jansen45c8e922002-08-09 14:15:46 +0000197 @for d in $(MACTOOLSSUBDIRS); \
Jack Jansenc71efe02002-01-21 22:51:55 +0000198 do \
Jack Jansen45c8e922002-08-09 14:15:46 +0000199 a=$(MACTOOLSSRC)/$$d; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000200 if test ! -d $$a; then continue; else true; fi; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000201 b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000202 if test ! -d $$b; then \
203 echo "Creating directory $$b"; \
204 $(INSTALL) -d -m $(DIRMODE) $$b; \
205 else true; \
206 fi; \
207 done
Jack Jansen45c8e922002-08-09 14:15:46 +0000208 @for d in $(MACTOOLSSUBDIRS); \
Jack Jansenc71efe02002-01-21 22:51:55 +0000209 do \
Jack Jansen45c8e922002-08-09 14:15:46 +0000210 a=$(MACTOOLSSRC)/$$d; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000211 if test ! -d $$a; then continue; else true; fi; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000212 b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000213 for i in $$a/*; \
214 do \
215 case $$i in \
216 *CVS) ;; \
217 *.py[co]) ;; \
218 *.orig) ;; \
219 *~) ;; \
Jack Jansen81204152002-08-15 21:31:18 +0000220 *.rsrc) \
221 echo $(CPMAC) $$i $$b ; \
222 $(CPMAC) $$i $$b ; \
223 ;; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000224 *) \
225 if test -d $$i; then continue; fi; \
226 if test -x $$i; then \
227 echo $(INSTALL_SCRIPT) $$i $$b; \
228 $(INSTALL_SCRIPT) $$i $$b; \
229 else \
230 echo $(INSTALL_DATA) $$i $$b; \
231 $(INSTALL_DATA) $$i $$b; \
232 fi;; \
233 esac; \
234 done; \
235 done
Fred Drake8851c622003-07-07 17:38:26 +0000236
Jack Jansen45c8e922002-08-09 14:15:46 +0000237
Jack Jansen9592fe92003-05-25 22:01:32 +0000238 $(BUILDPYTHON) $(CACHERSRC) -v $(DESTDIR)$(MACLIBDEST) $(DESTDIR)$(MACTOOLSDEST)
Jack Jansend2544e32003-06-21 22:07:16 +0000239 $(BUILDPYTHON) -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST)
240 $(BUILDPYTHON) -O -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST)
Jack Jansen45c8e922002-08-09 14:15:46 +0000241
Jack Jansen7d996a22002-11-11 00:05:00 +0000242#
243# We use the full name here in stead of $(INSTALLED_PYTHONW), because
244# the latter may be overridden by Makefile.jaguar when building for a pre-installed
245# /usr/bin/python
Jack Jansendffeaf42003-07-23 10:49:17 +0000246$(APPINSTALLDIR)/Contents/MacOS/Python: install_Python
Jack Jansencce7e342002-07-31 14:46:04 +0000247
Jack Jansencb4321e2002-08-09 00:18:21 +0000248# $(INSTALLED_PYTHON) has to be done by the main Makefile, we cannot do that here.
249# At least this rule will give an error if it doesn't exist.
250
Jack Jansen9592fe92003-05-25 22:01:32 +0000251installunixtools:
252 $(INSTALL) -d $(DESTDIR)$(bindir)
253 $(INSTALL_SYMLINK) $(INSTALLED_PYTHON) $(DESTDIR)$(bindir)/python$(VERSION)
254 $(INSTALL_SYMLINK) python$(VERSION) $(DESTDIR)$(bindir)/python
Jack Jansen94fab762002-09-02 12:29:11 +0000255 echo "#!/bin/sh" > pythonw.sh
256 echo "exec \"$(INSTALLED_PYTHONW)\" \"\$$@\"" >> pythonw.sh
Jack Jansen9592fe92003-05-25 22:01:32 +0000257 $(INSTALL) pythonw.sh $(DESTDIR)$(bindir)/pythonw$(VERSION)
258 $(INSTALL_SYMLINK) pythonw$(VERSION) $(DESTDIR)$(bindir)/pythonw
Fred Drake8851c622003-07-07 17:38:26 +0000259
Jack Jansena1b77582003-06-19 22:35:20 +0000260installextras:
261 $(INSTALL) -d $(DESTDIR)$(PYTHONAPPSDIR)/Extras
262 $(INSTALL) $(srcdir)/Mac/OSX/Extras.ReadMe.txt $(DESTDIR)$(PYTHONAPPSDIR)/Extras/ReadMe
263 $(BUILDPYTHON) $(srcdir)/Mac/OSX/Extras.install.py $(srcdir)/Demo \
264 $(DESTDIR)$(PYTHONAPPSDIR)/Extras/Demo
265 $(BUILDPYTHON) $(srcdir)/Mac/OSX/Extras.install.py $(srcdir)/Tools \
Jack Jansen276b2902003-07-04 12:05:25 +0000266 $(DESTDIR)$(PYTHONAPPSDIR)/Extras/Tools
Jack Jansen6116f072004-12-26 23:02:05 +0000267
268checkapplepython:
269 @if ! $(BUILDPYTHON) $(srcdir)/Mac/OSX/fixapplepython23.py -n; then \
270 echo "* WARNING: Apple-installed Python 2.3 will have trouble building extensions from now on."; \
271 echo "* WARNING: Run $(srcdir)/Mac/OSX/fixapplepython23.py with \"sudo\" to fix this."; \
272 fi
273