blob: a13b783ede57459eebc8781c81c2343640497133 [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
10APPINSTALLDIR=/Applications/Python.app
Jack Jansen75ed1672001-09-05 22:09:50 +000011
Jack Jansen0cd0e652002-03-29 14:18:18 +000012# Variables for installing the "normal" unix binaries
13UNIXBINDIR=/usr/local/bin
14INSTALLED_PYTHON=$(INSTALLDIR)/bin/python
15INSTALLED_PYTHONW=$(APPINSTALLDIR)/Contents/MacOS/python
16
Jack Jansen638e5e32001-09-06 16:33:57 +000017# Items more-or-less copied from the main Makefile
Jack Jansenc361f942002-07-08 13:34:23 +000018VERSION=2.3
Jack Jansen638e5e32001-09-06 16:33:57 +000019DIRMODE=755
20INSTALL=/usr/bin/install -c
Jack Jansen0cd0e652002-03-29 14:18:18 +000021INSTALL_SYMLINK=/usr/bin/install -l as
Jack Jansen638e5e32001-09-06 16:33:57 +000022INSTALL_PROGRAM=${INSTALL}
23INSTALL_SCRIPT= ${INSTALL_PROGRAM}
24INSTALL_DATA= ${INSTALL} -m 644
Jack Jansen0cd0e652002-03-29 14:18:18 +000025STRIPFLAG=-s
Jack Jansen2cce33f2002-03-29 21:17:14 +000026OPT=-g -O3 -Wall -Wstrict-prototypes -Wno-long-double -no-cpp-precomp \
27 -fno-common -dynamic
Jack Jansen0b06be72002-06-21 14:48:38 +000028INCLUDES=-I$(PYTHONBUILDDIR) -I$(PYTHONSRCDIR)/Include \
29 -I$(PYTHONSRCDIR)/Mac/Include
Jack Jansen75ed1672001-09-05 22:09:50 +000030DEFINES=-DHAVE_CONFIG_H
31
32CFLAGS=$(OPT) $(DEFINES) $(INCLUDES)
33LDFLAGS=-framework System -framework Python -framework Carbon \
34 -framework Foundation
35CC=cc
36LD=cc
Jack Jansenfea15532002-01-27 20:05:20 +000037REZ=/Developer/Tools/Rez
38DEREZ=/Developer/Tools/DeRez
Jack Jansen75ed1672001-09-05 22:09:50 +000039
40OBJECTS=$(PYTHONBUILDDIR)/Mac/Python/macmain.o \
41 $(PYTHONBUILDDIR)/Mac/Python/macgetargv.o
42
43pythonforbundle: $(OBJECTS)
Jack Jansen638e5e32001-09-06 16:33:57 +000044 $(LD) $(LDFLAGS) $(OBJECTS) -o pythonforbundle
45
Jack Jansenc432cba2001-09-09 00:36:52 +000046PYTHON=$(PYTHONBUILDDIR)/python.exe
Jack Jansen0b06be72002-06-21 14:48:38 +000047APPTEMPLATE=$(PYTHONSRCDIR)/Mac/OSXResources/app
Jack Jansen638e5e32001-09-06 16:33:57 +000048APPSUBDIRS=MacOS Resources Resources/English.lproj
Jack Jansen0b06be72002-06-21 14:48:38 +000049RESOURCEDIR=$(PYTHONSRCDIR)/Mac/Resources
Jack Jansenc432cba2001-09-09 00:36:52 +000050RESOURCEFILE=python.rsrc
Jack Jansen0b06be72002-06-21 14:48:38 +000051RFCONVERTER=$(PYTHONSRCDIR)/Mac/Lib/applesingle.py
Jack Jansen638e5e32001-09-06 16:33:57 +000052install: pythonforbundle
53 @for i in $(APPINSTALLDIR) $(APPINSTALLDIR)/Contents; do \
54 if test ! -d $$i; then \
55 echo "Creating directory $$i"; \
56 $(INSTALL) -d -m $(DIRMODE) $$i; \
57 fi;\
58 done
59 @for i in $(APPSUBDIRS); do \
60 if test ! -d $(APPINSTALLDIR)/Contents/$$i; then \
61 echo "Creating directory $(APPINSTALLDIR)/Contents/$$i"; \
62 $(INSTALL) -d -m $(DIRMODE) $(APPINSTALLDIR)/Contents/$$i; \
63 else true; \
64 fi; \
65 done
66 @for d in . $(APPSUBDIRS); \
67 do \
68 a=$(APPTEMPLATE)/$$d; \
69 if test ! -d $$a; then continue; else true; fi; \
70 b=$(APPINSTALLDIR)/Contents/$$d; \
71 for i in $$a/*; \
72 do \
Jack Jansen638e5e32001-09-06 16:33:57 +000073 case $$i in \
74 *CVS) ;; \
75 *.py[co]) ;; \
76 *.orig) ;; \
77 *~) ;; \
78 *) \
79 if test -d $$i; then continue; fi; \
80 if test -x $$i; then \
81 echo $(INSTALL_SCRIPT) $$i $$b; \
82 $(INSTALL_SCRIPT) $$i $$b; \
83 else \
84 echo $(INSTALL_DATA) $$i $$b; \
85 $(INSTALL_DATA) $$i $$b; \
86 fi;; \
87 esac; \
88 done; \
89 done
Jack Jansen0cd0e652002-03-29 14:18:18 +000090 $(INSTALL_PROGRAM) $(STRIPFLAG) pythonforbundle $(APPINSTALLDIR)/Contents/MacOS/python
Jack Jansenc432cba2001-09-09 00:36:52 +000091 # Create a temporary version of the resources here
Jack Jansenfdc8d752002-01-15 23:20:40 +000092 $(PYTHON) $(RFCONVERTER) -r $(RESOURCEDIR)/dialogs.rsrc dialogs.rsrc
93 $(PYTHON) $(RFCONVERTER) -r $(RESOURCEDIR)/errors.rsrc errors.rsrc
Jack Jansenfea15532002-01-27 20:05:20 +000094 $(DEREZ) -useDF -skip ckid dialogs.rsrc > dialogs.r
95 $(DEREZ) -useDF -skip ckid errors.rsrc > errors.r
96 $(REZ) -useDF -o $(RESOURCEFILE) dialogs.r errors.r
Jack Jansenc432cba2001-09-09 00:36:52 +000097 $(INSTALL_DATA) $(RESOURCEFILE) $(APPINSTALLDIR)/Contents/Resources/$(RESOURCEFILE)
Jack Jansen638e5e32001-09-06 16:33:57 +000098
99LIBDEST=$(INSTALLDIR)/Mac/Lib
Jack Jansen0b06be72002-06-21 14:48:38 +0000100LIBSRC=$(PYTHONSRCDIR)/Mac/Lib
Jack Jansendc745682002-05-23 22:18:13 +0000101LIBSUBDIRS= \
102 Carbon \
103 lib-scriptpackages \
104 lib-scriptpackages/_builtinSuites \
105 lib-scriptpackages/CodeWarrior \
106 lib-scriptpackages/Explorer \
107 lib-scriptpackages/Finder \
108 lib-scriptpackages/Netscape \
109 lib-scriptpackages/StdSuites \
110 lib-scriptpackages/Terminal \
111 mkcwproject \
112 mkcwproject/template \
113 mkcwproject/template-carbon \
114 mkcwproject/template-ppc
Jack Jansenc71efe02002-01-21 22:51:55 +0000115TOOLSDEST=$(INSTALLDIR)/Mac/Tools
Jack Jansen0b06be72002-06-21 14:48:38 +0000116TOOLSSRC=$(PYTHONSRCDIR)/Mac/Tools
Jack Jansenc71efe02002-01-21 22:51:55 +0000117TOOLSSUBDIRS=IDE
Jack Jansen638e5e32001-09-06 16:33:57 +0000118installmacsubtree:
Jack Jansenc71efe02002-01-21 22:51:55 +0000119 @for i in $(LIBDEST) $(TOOLSDEST); \
Jack Jansen638e5e32001-09-06 16:33:57 +0000120 do \
121 if test ! -d $$i; then \
122 echo "Creating directory $$i"; \
123 $(INSTALL) -d -m $(DIRMODE) $$i; \
124 else true; \
125 fi; \
126 done
127 @for d in $(LIBSUBDIRS); \
128 do \
129 a=$(LIBSRC)/$$d; \
130 if test ! -d $$a; then continue; else true; fi; \
131 b=$(LIBDEST)/$$d; \
132 if test ! -d $$b; then \
133 echo "Creating directory $$b"; \
134 $(INSTALL) -d -m $(DIRMODE) $$b; \
135 else true; \
136 fi; \
137 done
138 @for i in $(LIBSRC)/*.py $(LIBSRC)/*.rsrc; \
139 do \
140 if test -x $$i; then \
141 $(INSTALL_SCRIPT) $$i $(LIBDEST); \
142 echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
143 else \
144 $(INSTALL_DATA) $$i $(LIBDEST); \
145 echo $(INSTALL_DATA) $$i $(LIBDEST); \
146 fi; \
147 done
148 @for d in $(LIBSUBDIRS); \
149 do \
150 a=$(LIBSRC)/$$d; \
151 if test ! -d $$a; then continue; else true; fi; \
152 b=$(LIBDEST)/$$d; \
153 for i in $$a/*; \
154 do \
155 case $$i in \
156 *CVS) ;; \
157 *.py[co]) ;; \
158 *.orig) ;; \
159 *~) ;; \
160 *) \
161 if test -d $$i; then continue; fi; \
162 if test -x $$i; then \
163 echo $(INSTALL_SCRIPT) $$i $$b; \
164 $(INSTALL_SCRIPT) $$i $$b; \
165 else \
166 echo $(INSTALL_DATA) $$i $$b; \
167 $(INSTALL_DATA) $$i $$b; \
168 fi;; \
169 esac; \
170 done; \
171 done
Jack Jansenc71efe02002-01-21 22:51:55 +0000172 @for d in $(TOOLSSUBDIRS); \
173 do \
174 a=$(TOOLSSRC)/$$d; \
175 if test ! -d $$a; then continue; else true; fi; \
176 b=$(TOOLSDEST)/$$d; \
177 if test ! -d $$b; then \
178 echo "Creating directory $$b"; \
179 $(INSTALL) -d -m $(DIRMODE) $$b; \
180 else true; \
181 fi; \
182 done
183 @for d in $(TOOLSSUBDIRS); \
184 do \
185 a=$(TOOLSSRC)/$$d; \
186 if test ! -d $$a; then continue; else true; fi; \
187 b=$(TOOLSDEST)/$$d; \
188 for i in $$a/*; \
189 do \
190 case $$i in \
191 *CVS) ;; \
192 *.py[co]) ;; \
193 *.orig) ;; \
194 *~) ;; \
195 *) \
196 if test -d $$i; then continue; fi; \
197 if test -x $$i; then \
198 echo $(INSTALL_SCRIPT) $$i $$b; \
199 $(INSTALL_SCRIPT) $$i $$b; \
200 else \
201 echo $(INSTALL_DATA) $$i $$b; \
202 $(INSTALL_DATA) $$i $$b; \
203 fi;; \
204 esac; \
205 done; \
206 done
207
Jack Jansenc361f942002-07-08 13:34:23 +0000208 $(INSTALL_DATA) $(PYTHONSRCDIR)/Mac/OSX/Mac.pth $(INSTALLDIR)/lib/python$(VERSION)/site-packages/
Jack Jansen109f0942002-01-18 16:12:27 +0000209
Jack Jansen0cd0e652002-03-29 14:18:18 +0000210# Put symlinks "python" and "pythonw" in the standard place
211installunixprograms: $(INSTALLED_PYTHON) pythonw.sh
212 $(INSTALL) -d $(UNIXBINDIR)
213 $(INSTALL_SYMLINK) $(INSTALLED_PYTHON) $(UNIXBINDIR)/python
214 $(INSTALL) pythonw.sh $(UNIXBINDIR)/pythonw
215
Jack Jansenc361f942002-07-08 13:34:23 +0000216# This is for development purposes: create a Mac.pth that refers to the source
217# directories
218dontinstallmacsubtree:
219 l=`cd $(PYTHONSRCDIR)/Mac/Lib; pwd`; \
220 echo $$l > $(INSTALLDIR)/lib/python$(VERSION)/site-packages/Mac.pth ; \
221 echo $$l/lib-scriptpackages >> $(INSTALLDIR)/lib/python$(VERSION)/site-packages/Mac.pth
Jack Jansen0b06be72002-06-21 14:48:38 +0000222
223
224# Rules to build each file in OBJECTS - is there a better way?
225$(PYTHONBUILDDIR)/Mac/Python/macmain.o: $(PYTHONSRCDIR)/Mac/Python/macmain.c
226 $(CC) $(CFLAGS) -c $(PYTHONSRCDIR)/Mac/Python/macmain.c -o $@
227
228$(PYTHONBUILDDIR)/Mac/Python/macgetargv.o: $(PYTHONSRCDIR)/Mac/Python/macgetargv.c
229 $(CC) $(CFLAGS) -c $(PYTHONSRCDIR)/Mac/Python/macgetargv.c -o $@
230