blob: e8d15297d0e9fe2640a23107f425cfac4cedcf16 [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 Jansen47e8f162003-11-19 13:33:19 +00005VERSION=2.4
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 \
63 install_IDLE install_PackageManager
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 \
123 --python $(INSTALLED_PYTHONW) \
124 --output $(DESTDIR)$(PYTHONAPPSDIR)/PythonIDE.app --noargv \
Jack Jansen4ccf3e12003-02-18 23:33:39 +0000125 $(srcdir)/Mac/Tools/IDE/PythonIDE.py ; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000126 $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
127 --python $(INSTALLED_PYTHONW) \
128 --output $(DESTDIR)$(PYTHONAPPSDIR)/PythonIDE.app --noargv \
Jack Jansen4ccf3e12003-02-18 23:33:39 +0000129 $(srcdir)/Mac/Tools/IDE/PythonIDE.py; \
Jack Jansend7800362003-02-12 15:42:49 +0000130 fi
131
Jack Jansen9592fe92003-05-25 22:01:32 +0000132install_PackageManager:
133 @if ! $(BUILDPYTHON) -c "import waste"; then \
Jack Jansend7800362003-02-12 15:42:49 +0000134 echo PackageManager needs the \"waste\" extension module; \
135 echo See Mac/OSX/README for details; \
136 else \
Jack Jansen9592fe92003-05-25 22:01:32 +0000137 echo $(BUILDPYTHON) $(bundlebuilder) \
138 --builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \
139 --python $(INSTALLED_PYTHONW) \
Jack Jansend7800362003-02-12 15:42:49 +0000140 --resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \
141 --mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \
142 --iconfile $(srcdir)/Mac/Tools/IDE/PackageManager.icns \
143 --creator Pimp build; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000144 $(BUILDPYTHON) $(bundlebuilder) \
145 --builddir $(DESTDIR)$(PYTHONAPPSDIR)/ \
146 --python $(INSTALLED_PYTHONW) \
Jack Jansend7800362003-02-12 15:42:49 +0000147 --resource $(srcdir)/Mac/Tools/IDE/PythonIDE.rsrc \
148 --mainprogram $(srcdir)/Mac/Tools/IDE/PackageManager.py \
149 --iconfile $(srcdir)/Mac/Tools/IDE/PackageManager.icns \
150 --creator Pimp build; \
Jack Jansenf80798b2002-08-02 21:04:46 +0000151 fi
Jack Jansen76a6ab62002-09-12 22:19:23 +0000152
Jack Jansen9592fe92003-05-25 22:01:32 +0000153install_IDLE:
154 @if ! $(BUILDPYTHON) -c "import _tkinter"; then \
Jack Jansen76a6ab62002-09-12 22:19:23 +0000155 echo IDLE needs the \"Tkinter\" extension module; \
156 echo See Mac/OSX/README for details; \
157 else \
Jack Jansen9592fe92003-05-25 22:01:32 +0000158 echo $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
159 --python $(INSTALLED_PYTHONW) \
160 --output $(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app \
Jack Jansend3295ba2003-06-16 09:47:25 +0000161 --extra $(srcdir)/Lib/idlelib \
Jack Jansena775dd12003-11-27 22:54:28 +0000162 $(srcdir)/Tools/scripts/idle ; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000163 $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
164 --python $(INSTALLED_PYTHONW) \
165 --output $(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app \
Jack Jansend3295ba2003-06-16 09:47:25 +0000166 --extra $(srcdir)/Lib/idlelib:Contents/Resources/idlelib \
Jack Jansena775dd12003-11-27 22:54:28 +0000167 $(srcdir)/Tools/scripts/idle ; \
Jack Jansen76a6ab62002-09-12 22:19:23 +0000168 fi
169
Fred Drake8851c622003-07-07 17:38:26 +0000170
Jack Jansen9592fe92003-05-25 22:01:32 +0000171install_BuildApplet:
172 $(BUILDPYTHON) $(srcdir)/Mac/scripts/BuildApplet.py \
173 --python $(INSTALLED_PYTHONW) \
174 --output $(DESTDIR)$(PYTHONAPPSDIR)/BuildApplet.app \
Jack Jansen940e9702002-08-02 15:32:12 +0000175 $(srcdir)/Mac/scripts/BuildApplet.py
Fred Drake8851c622003-07-07 17:38:26 +0000176
Jack Jansen83f898c2002-12-30 22:23:40 +0000177MACLIBDEST=$(LIBDEST)/plat-mac
Jack Jansen45c8e922002-08-09 14:15:46 +0000178MACTOOLSDEST=$(prefix)/Mac/Tools
179MACTOOLSSRC=$(srcdir)/Mac/Tools
180MACTOOLSSUBDIRS=IDE
Jack Jansen94fab762002-09-02 12:29:11 +0000181installmacsubtree:
Jack Jansen83f898c2002-12-30 22:23:40 +0000182 @for i in $(MACTOOLSDEST); \
Jack Jansen638e5e32001-09-06 16:33:57 +0000183 do \
Jack Jansen9592fe92003-05-25 22:01:32 +0000184 if test ! -d $(DESTDIR)$$i; then \
185 echo "Creating directory $(DESTDIR)$$i"; \
186 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
Jack Jansen638e5e32001-09-06 16:33:57 +0000187 else true; \
188 fi; \
189 done
Jack Jansen45c8e922002-08-09 14:15:46 +0000190 @for d in $(MACTOOLSSUBDIRS); \
Jack Jansenc71efe02002-01-21 22:51:55 +0000191 do \
Jack Jansen45c8e922002-08-09 14:15:46 +0000192 a=$(MACTOOLSSRC)/$$d; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000193 if test ! -d $$a; then continue; else true; fi; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000194 b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000195 if test ! -d $$b; then \
196 echo "Creating directory $$b"; \
197 $(INSTALL) -d -m $(DIRMODE) $$b; \
198 else true; \
199 fi; \
200 done
Jack Jansen45c8e922002-08-09 14:15:46 +0000201 @for d in $(MACTOOLSSUBDIRS); \
Jack Jansenc71efe02002-01-21 22:51:55 +0000202 do \
Jack Jansen45c8e922002-08-09 14:15:46 +0000203 a=$(MACTOOLSSRC)/$$d; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000204 if test ! -d $$a; then continue; else true; fi; \
Jack Jansen9592fe92003-05-25 22:01:32 +0000205 b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000206 for i in $$a/*; \
207 do \
208 case $$i in \
209 *CVS) ;; \
210 *.py[co]) ;; \
211 *.orig) ;; \
212 *~) ;; \
Jack Jansen81204152002-08-15 21:31:18 +0000213 *.rsrc) \
214 echo $(CPMAC) $$i $$b ; \
215 $(CPMAC) $$i $$b ; \
216 ;; \
Jack Jansenc71efe02002-01-21 22:51:55 +0000217 *) \
218 if test -d $$i; then continue; fi; \
219 if test -x $$i; then \
220 echo $(INSTALL_SCRIPT) $$i $$b; \
221 $(INSTALL_SCRIPT) $$i $$b; \
222 else \
223 echo $(INSTALL_DATA) $$i $$b; \
224 $(INSTALL_DATA) $$i $$b; \
225 fi;; \
226 esac; \
227 done; \
228 done
Fred Drake8851c622003-07-07 17:38:26 +0000229
Jack Jansen45c8e922002-08-09 14:15:46 +0000230
Jack Jansen9592fe92003-05-25 22:01:32 +0000231 $(BUILDPYTHON) $(CACHERSRC) -v $(DESTDIR)$(MACLIBDEST) $(DESTDIR)$(MACTOOLSDEST)
Jack Jansend2544e32003-06-21 22:07:16 +0000232 $(BUILDPYTHON) -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST)
233 $(BUILDPYTHON) -O -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST)
Jack Jansen45c8e922002-08-09 14:15:46 +0000234
Jack Jansen7d996a22002-11-11 00:05:00 +0000235#
236# We use the full name here in stead of $(INSTALLED_PYTHONW), because
237# the latter may be overridden by Makefile.jaguar when building for a pre-installed
238# /usr/bin/python
Jack Jansendffeaf42003-07-23 10:49:17 +0000239$(APPINSTALLDIR)/Contents/MacOS/Python: install_Python
Jack Jansencce7e342002-07-31 14:46:04 +0000240
Jack Jansencb4321e2002-08-09 00:18:21 +0000241# $(INSTALLED_PYTHON) has to be done by the main Makefile, we cannot do that here.
242# At least this rule will give an error if it doesn't exist.
243
Jack Jansen9592fe92003-05-25 22:01:32 +0000244installunixtools:
245 $(INSTALL) -d $(DESTDIR)$(bindir)
246 $(INSTALL_SYMLINK) $(INSTALLED_PYTHON) $(DESTDIR)$(bindir)/python$(VERSION)
247 $(INSTALL_SYMLINK) python$(VERSION) $(DESTDIR)$(bindir)/python
Jack Jansen94fab762002-09-02 12:29:11 +0000248 echo "#!/bin/sh" > pythonw.sh
249 echo "exec \"$(INSTALLED_PYTHONW)\" \"\$$@\"" >> pythonw.sh
Jack Jansen9592fe92003-05-25 22:01:32 +0000250 $(INSTALL) pythonw.sh $(DESTDIR)$(bindir)/pythonw$(VERSION)
251 $(INSTALL_SYMLINK) pythonw$(VERSION) $(DESTDIR)$(bindir)/pythonw
Fred Drake8851c622003-07-07 17:38:26 +0000252
Jack Jansena1b77582003-06-19 22:35:20 +0000253installextras:
254 $(INSTALL) -d $(DESTDIR)$(PYTHONAPPSDIR)/Extras
255 $(INSTALL) $(srcdir)/Mac/OSX/Extras.ReadMe.txt $(DESTDIR)$(PYTHONAPPSDIR)/Extras/ReadMe
256 $(BUILDPYTHON) $(srcdir)/Mac/OSX/Extras.install.py $(srcdir)/Demo \
257 $(DESTDIR)$(PYTHONAPPSDIR)/Extras/Demo
258 $(BUILDPYTHON) $(srcdir)/Mac/OSX/Extras.install.py $(srcdir)/Tools \
Jack Jansen276b2902003-07-04 12:05:25 +0000259 $(DESTDIR)$(PYTHONAPPSDIR)/Extras/Tools