blob: 08193e74ddf372df3e62836a4d8ec4f52c1988cc [file] [log] [blame]
Jack Jansen0b06be72002-06-21 14:48:38 +00001# This file can be invoked from the "python.app" target in the
2# main Makefile. The next two variables are overridden on the
3# commandline in that case.
4
5# assume user was invoking from Mac/OSX directory and building in source tree
6PYTHONBUILDDIR = ../..
7PYTHONSRCDIR = ../..
8
Jack Jansen638e5e32001-09-06 16:33:57 +00009INSTALLDIR=/Library/Frameworks/Python.framework/Versions/Current
Jack Jansencce7e342002-07-31 14:46:04 +000010PYTHONAPPSDIR=/Applications/Python
11APPINSTALLDIR=$(PYTHONAPPSDIR)/Python.app
Jack Jansen75ed1672001-09-05 22:09:50 +000012
Jack Jansen0cd0e652002-03-29 14:18:18 +000013# Variables for installing the "normal" unix binaries
14UNIXBINDIR=/usr/local/bin
15INSTALLED_PYTHON=$(INSTALLDIR)/bin/python
16INSTALLED_PYTHONW=$(APPINSTALLDIR)/Contents/MacOS/python
17
Jack Jansen638e5e32001-09-06 16:33:57 +000018# Items more-or-less copied from the main Makefile
Jack Jansenc361f942002-07-08 13:34:23 +000019VERSION=2.3
Jack Jansen638e5e32001-09-06 16:33:57 +000020DIRMODE=755
21INSTALL=/usr/bin/install -c
Jack Jansen0cd0e652002-03-29 14:18:18 +000022INSTALL_SYMLINK=/usr/bin/install -l as
Jack Jansen638e5e32001-09-06 16:33:57 +000023INSTALL_PROGRAM=${INSTALL}
24INSTALL_SCRIPT= ${INSTALL_PROGRAM}
25INSTALL_DATA= ${INSTALL} -m 644
Jack Jansen0cd0e652002-03-29 14:18:18 +000026STRIPFLAG=-s
Jack Jansen2cce33f2002-03-29 21:17:14 +000027OPT=-g -O3 -Wall -Wstrict-prototypes -Wno-long-double -no-cpp-precomp \
28 -fno-common -dynamic
Jack Jansen0b06be72002-06-21 14:48:38 +000029INCLUDES=-I$(PYTHONBUILDDIR) -I$(PYTHONSRCDIR)/Include \
30 -I$(PYTHONSRCDIR)/Mac/Include
Jack Jansen75ed1672001-09-05 22:09:50 +000031DEFINES=-DHAVE_CONFIG_H
32
33CFLAGS=$(OPT) $(DEFINES) $(INCLUDES)
Jack Jansencce7e342002-07-31 14:46:04 +000034LDFLAGS=-F$(PYTHONBUILDDIR) -framework System -framework Python -framework Carbon \
Jack Jansen75ed1672001-09-05 22:09:50 +000035 -framework Foundation
36CC=cc
37LD=cc
Jack Jansenfea15532002-01-27 20:05:20 +000038REZ=/Developer/Tools/Rez
39DEREZ=/Developer/Tools/DeRez
Jack Jansen75ed1672001-09-05 22:09:50 +000040
41OBJECTS=$(PYTHONBUILDDIR)/Mac/Python/macmain.o \
42 $(PYTHONBUILDDIR)/Mac/Python/macgetargv.o
43
Jack Jansenc432cba2001-09-09 00:36:52 +000044PYTHON=$(PYTHONBUILDDIR)/python.exe
Jack Jansen0b06be72002-06-21 14:48:38 +000045APPTEMPLATE=$(PYTHONSRCDIR)/Mac/OSXResources/app
Jack Jansen638e5e32001-09-06 16:33:57 +000046APPSUBDIRS=MacOS Resources Resources/English.lproj
Jack Jansen0b06be72002-06-21 14:48:38 +000047RESOURCEDIR=$(PYTHONSRCDIR)/Mac/Resources
Jack Jansenc432cba2001-09-09 00:36:52 +000048RESOURCEFILE=python.rsrc
Jack Jansen0b06be72002-06-21 14:48:38 +000049RFCONVERTER=$(PYTHONSRCDIR)/Mac/Lib/applesingle.py
Jack Jansencce7e342002-07-31 14:46:04 +000050
51install_all: install_PythonLauncher install_Python install_IDE
52
53install_PythonLauncher:
54 cd $(PYTHONSRCDIR)/Mac/OSX/PythonLauncher/PythonLauncher.pbproj ; \
55 pbxbuild -target PythonLauncher -buildstyle Deployment DSTROOT=/ install
56
57install_Python: pythonforbundle
58 @for i in $(PYTHONAPPSDIR) $(APPINSTALLDIR) $(APPINSTALLDIR)/Contents; do \
Jack Jansen638e5e32001-09-06 16:33:57 +000059 if test ! -d $$i; then \
60 echo "Creating directory $$i"; \
61 $(INSTALL) -d -m $(DIRMODE) $$i; \
62 fi;\
63 done
64 @for i in $(APPSUBDIRS); do \
65 if test ! -d $(APPINSTALLDIR)/Contents/$$i; then \
66 echo "Creating directory $(APPINSTALLDIR)/Contents/$$i"; \
67 $(INSTALL) -d -m $(DIRMODE) $(APPINSTALLDIR)/Contents/$$i; \
68 else true; \
69 fi; \
70 done
71 @for d in . $(APPSUBDIRS); \
72 do \
73 a=$(APPTEMPLATE)/$$d; \
74 if test ! -d $$a; then continue; else true; fi; \
75 b=$(APPINSTALLDIR)/Contents/$$d; \
76 for i in $$a/*; \
77 do \
Jack Jansen638e5e32001-09-06 16:33:57 +000078 case $$i in \
79 *CVS) ;; \
80 *.py[co]) ;; \
81 *.orig) ;; \
82 *~) ;; \
83 *) \
84 if test -d $$i; then continue; fi; \
85 if test -x $$i; then \
86 echo $(INSTALL_SCRIPT) $$i $$b; \
87 $(INSTALL_SCRIPT) $$i $$b; \
88 else \
89 echo $(INSTALL_DATA) $$i $$b; \
90 $(INSTALL_DATA) $$i $$b; \
91 fi;; \
92 esac; \
93 done; \
94 done
Jack Jansen0cd0e652002-03-29 14:18:18 +000095 $(INSTALL_PROGRAM) $(STRIPFLAG) pythonforbundle $(APPINSTALLDIR)/Contents/MacOS/python
Jack Jansenc432cba2001-09-09 00:36:52 +000096 # Create a temporary version of the resources here
Jack Jansenfdc8d752002-01-15 23:20:40 +000097 $(PYTHON) $(RFCONVERTER) -r $(RESOURCEDIR)/dialogs.rsrc dialogs.rsrc
98 $(PYTHON) $(RFCONVERTER) -r $(RESOURCEDIR)/errors.rsrc errors.rsrc
Jack Jansenfea15532002-01-27 20:05:20 +000099 $(DEREZ) -useDF -skip ckid dialogs.rsrc > dialogs.r
100 $(DEREZ) -useDF -skip ckid errors.rsrc > errors.r
101 $(REZ) -useDF -o $(RESOURCEFILE) dialogs.r errors.r
Jack Jansenc432cba2001-09-09 00:36:52 +0000102 $(INSTALL_DATA) $(RESOURCEFILE) $(APPINSTALLDIR)/Contents/Resources/$(RESOURCEFILE)
Jack Jansencce7e342002-07-31 14:46:04 +0000103
104install_IDE: $(INSTALLED_PYTHONW)
105 $(INSTALLED_PYTHONW) $(PYTHONSRCDIR)/Mac/scripts/BuildApplet.py \
106 --output $(PYTHONAPPSDIR)/PythonIDE.app --noargv \
107 $(PYTHONSRCDIR)/Mac/Tools/IDE/PythonIDE.py
Jack Jansen638e5e32001-09-06 16:33:57 +0000108
109LIBDEST=$(INSTALLDIR)/Mac/Lib
Jack Jansen0b06be72002-06-21 14:48:38 +0000110LIBSRC=$(PYTHONSRCDIR)/Mac/Lib
Jack Jansendc745682002-05-23 22:18:13 +0000111LIBSUBDIRS= \
112 Carbon \
113 lib-scriptpackages \
114 lib-scriptpackages/_builtinSuites \
115 lib-scriptpackages/CodeWarrior \
116 lib-scriptpackages/Explorer \
117 lib-scriptpackages/Finder \
118 lib-scriptpackages/Netscape \
119 lib-scriptpackages/StdSuites \
120 lib-scriptpackages/Terminal \
121 mkcwproject \
122 mkcwproject/template \
123 mkcwproject/template-carbon \
124 mkcwproject/template-ppc
Jack Jansenc71efe02002-01-21 22:51:55 +0000125TOOLSDEST=$(INSTALLDIR)/Mac/Tools
Jack Jansen0b06be72002-06-21 14:48:38 +0000126TOOLSSRC=$(PYTHONSRCDIR)/Mac/Tools
Jack Jansenc71efe02002-01-21 22:51:55 +0000127TOOLSSUBDIRS=IDE
Jack Jansen638e5e32001-09-06 16:33:57 +0000128installmacsubtree:
Jack Jansenc71efe02002-01-21 22:51:55 +0000129 @for i in $(LIBDEST) $(TOOLSDEST); \
Jack Jansen638e5e32001-09-06 16:33:57 +0000130 do \
131 if test ! -d $$i; then \
132 echo "Creating directory $$i"; \
133 $(INSTALL) -d -m $(DIRMODE) $$i; \
134 else true; \
135 fi; \
136 done
137 @for d in $(LIBSUBDIRS); \
138 do \
139 a=$(LIBSRC)/$$d; \
140 if test ! -d $$a; then continue; else true; fi; \
141 b=$(LIBDEST)/$$d; \
142 if test ! -d $$b; then \
143 echo "Creating directory $$b"; \
144 $(INSTALL) -d -m $(DIRMODE) $$b; \
145 else true; \
146 fi; \
147 done
148 @for i in $(LIBSRC)/*.py $(LIBSRC)/*.rsrc; \
149 do \
150 if test -x $$i; then \
151 $(INSTALL_SCRIPT) $$i $(LIBDEST); \
152 echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
153 else \
154 $(INSTALL_DATA) $$i $(LIBDEST); \
155 echo $(INSTALL_DATA) $$i $(LIBDEST); \
156 fi; \
157 done
158 @for d in $(LIBSUBDIRS); \
159 do \
160 a=$(LIBSRC)/$$d; \
161 if test ! -d $$a; then continue; else true; fi; \
162 b=$(LIBDEST)/$$d; \
163 for i in $$a/*; \
164 do \
165 case $$i in \
166 *CVS) ;; \
167 *.py[co]) ;; \
168 *.orig) ;; \
169 *~) ;; \
170 *) \
171 if test -d $$i; then continue; fi; \
172 if test -x $$i; then \
173 echo $(INSTALL_SCRIPT) $$i $$b; \
174 $(INSTALL_SCRIPT) $$i $$b; \
175 else \
176 echo $(INSTALL_DATA) $$i $$b; \
177 $(INSTALL_DATA) $$i $$b; \
178 fi;; \
179 esac; \
180 done; \
181 done
Jack Jansenc71efe02002-01-21 22:51:55 +0000182 @for d in $(TOOLSSUBDIRS); \
183 do \
184 a=$(TOOLSSRC)/$$d; \
185 if test ! -d $$a; then continue; else true; fi; \
186 b=$(TOOLSDEST)/$$d; \
187 if test ! -d $$b; then \
188 echo "Creating directory $$b"; \
189 $(INSTALL) -d -m $(DIRMODE) $$b; \
190 else true; \
191 fi; \
192 done
193 @for d in $(TOOLSSUBDIRS); \
194 do \
195 a=$(TOOLSSRC)/$$d; \
196 if test ! -d $$a; then continue; else true; fi; \
197 b=$(TOOLSDEST)/$$d; \
198 for i in $$a/*; \
199 do \
200 case $$i in \
201 *CVS) ;; \
202 *.py[co]) ;; \
203 *.orig) ;; \
204 *~) ;; \
205 *) \
206 if test -d $$i; then continue; fi; \
207 if test -x $$i; then \
208 echo $(INSTALL_SCRIPT) $$i $$b; \
209 $(INSTALL_SCRIPT) $$i $$b; \
210 else \
211 echo $(INSTALL_DATA) $$i $$b; \
212 $(INSTALL_DATA) $$i $$b; \
213 fi;; \
214 esac; \
215 done; \
216 done
217
Jack Jansenc361f942002-07-08 13:34:23 +0000218 $(INSTALL_DATA) $(PYTHONSRCDIR)/Mac/OSX/Mac.pth $(INSTALLDIR)/lib/python$(VERSION)/site-packages/
Jack Jansen109f0942002-01-18 16:12:27 +0000219
Jack Jansen0cd0e652002-03-29 14:18:18 +0000220# Put symlinks "python" and "pythonw" in the standard place
Jack Jansencce7e342002-07-31 14:46:04 +0000221$(INSTALLED_PYTHONW): install_Python
222# $(INSTALLED_PYTHON) has to be done by the main Makefile, we cannot do that here.
223
224installunixprograms: $(INSTALLED_PYTHON) $(INSTALLED_PYTHONW) pythonw.sh
Jack Jansen0cd0e652002-03-29 14:18:18 +0000225 $(INSTALL) -d $(UNIXBINDIR)
226 $(INSTALL_SYMLINK) $(INSTALLED_PYTHON) $(UNIXBINDIR)/python
227 $(INSTALL) pythonw.sh $(UNIXBINDIR)/pythonw
228
Jack Jansenc361f942002-07-08 13:34:23 +0000229# This is for development purposes: create a Mac.pth that refers to the source
230# directories
231dontinstallmacsubtree:
232 l=`cd $(PYTHONSRCDIR)/Mac/Lib; pwd`; \
233 echo $$l > $(INSTALLDIR)/lib/python$(VERSION)/site-packages/Mac.pth ; \
234 echo $$l/lib-scriptpackages >> $(INSTALLDIR)/lib/python$(VERSION)/site-packages/Mac.pth
Jack Jansen0b06be72002-06-21 14:48:38 +0000235
Jack Jansencce7e342002-07-31 14:46:04 +0000236pythonforbundle: $(OBJECTS)
237 $(LD) $(LDFLAGS) $(OBJECTS) -o pythonforbundle
Jack Jansen0b06be72002-06-21 14:48:38 +0000238
239# Rules to build each file in OBJECTS - is there a better way?
240$(PYTHONBUILDDIR)/Mac/Python/macmain.o: $(PYTHONSRCDIR)/Mac/Python/macmain.c
241 $(CC) $(CFLAGS) -c $(PYTHONSRCDIR)/Mac/Python/macmain.c -o $@
242
243$(PYTHONBUILDDIR)/Mac/Python/macgetargv.o: $(PYTHONSRCDIR)/Mac/Python/macgetargv.c
244 $(CC) $(CFLAGS) -c $(PYTHONSRCDIR)/Mac/Python/macgetargv.c -o $@
245