blob: aadf3400f9ead0b589a39b2f7e6ff28ac82c8443 [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
18DIRMODE=755
19INSTALL=/usr/bin/install -c
Jack Jansen0cd0e652002-03-29 14:18:18 +000020INSTALL_SYMLINK=/usr/bin/install -l as
Jack Jansen638e5e32001-09-06 16:33:57 +000021INSTALL_PROGRAM=${INSTALL}
22INSTALL_SCRIPT= ${INSTALL_PROGRAM}
23INSTALL_DATA= ${INSTALL} -m 644
Jack Jansen0cd0e652002-03-29 14:18:18 +000024STRIPFLAG=-s
Jack Jansen2cce33f2002-03-29 21:17:14 +000025OPT=-g -O3 -Wall -Wstrict-prototypes -Wno-long-double -no-cpp-precomp \
26 -fno-common -dynamic
Jack Jansen0b06be72002-06-21 14:48:38 +000027INCLUDES=-I$(PYTHONBUILDDIR) -I$(PYTHONSRCDIR)/Include \
28 -I$(PYTHONSRCDIR)/Mac/Include
Jack Jansen75ed1672001-09-05 22:09:50 +000029DEFINES=-DHAVE_CONFIG_H
30
31CFLAGS=$(OPT) $(DEFINES) $(INCLUDES)
32LDFLAGS=-framework System -framework Python -framework Carbon \
33 -framework Foundation
34CC=cc
35LD=cc
Jack Jansenfea15532002-01-27 20:05:20 +000036REZ=/Developer/Tools/Rez
37DEREZ=/Developer/Tools/DeRez
Jack Jansen75ed1672001-09-05 22:09:50 +000038
39OBJECTS=$(PYTHONBUILDDIR)/Mac/Python/macmain.o \
40 $(PYTHONBUILDDIR)/Mac/Python/macgetargv.o
41
42pythonforbundle: $(OBJECTS)
Jack Jansen638e5e32001-09-06 16:33:57 +000043 $(LD) $(LDFLAGS) $(OBJECTS) -o pythonforbundle
44
Jack Jansenc432cba2001-09-09 00:36:52 +000045PYTHON=$(PYTHONBUILDDIR)/python.exe
Jack Jansen0b06be72002-06-21 14:48:38 +000046APPTEMPLATE=$(PYTHONSRCDIR)/Mac/OSXResources/app
Jack Jansen638e5e32001-09-06 16:33:57 +000047APPSUBDIRS=MacOS Resources Resources/English.lproj
Jack Jansen0b06be72002-06-21 14:48:38 +000048RESOURCEDIR=$(PYTHONSRCDIR)/Mac/Resources
Jack Jansenc432cba2001-09-09 00:36:52 +000049RESOURCEFILE=python.rsrc
Jack Jansen0b06be72002-06-21 14:48:38 +000050RFCONVERTER=$(PYTHONSRCDIR)/Mac/Lib/applesingle.py
Jack Jansen638e5e32001-09-06 16:33:57 +000051install: pythonforbundle
52 @for i in $(APPINSTALLDIR) $(APPINSTALLDIR)/Contents; do \
53 if test ! -d $$i; then \
54 echo "Creating directory $$i"; \
55 $(INSTALL) -d -m $(DIRMODE) $$i; \
56 fi;\
57 done
58 @for i in $(APPSUBDIRS); do \
59 if test ! -d $(APPINSTALLDIR)/Contents/$$i; then \
60 echo "Creating directory $(APPINSTALLDIR)/Contents/$$i"; \
61 $(INSTALL) -d -m $(DIRMODE) $(APPINSTALLDIR)/Contents/$$i; \
62 else true; \
63 fi; \
64 done
65 @for d in . $(APPSUBDIRS); \
66 do \
67 a=$(APPTEMPLATE)/$$d; \
68 if test ! -d $$a; then continue; else true; fi; \
69 b=$(APPINSTALLDIR)/Contents/$$d; \
70 for i in $$a/*; \
71 do \
Jack Jansen638e5e32001-09-06 16:33:57 +000072 case $$i in \
73 *CVS) ;; \
74 *.py[co]) ;; \
75 *.orig) ;; \
76 *~) ;; \
77 *) \
78 if test -d $$i; then continue; fi; \
79 if test -x $$i; then \
80 echo $(INSTALL_SCRIPT) $$i $$b; \
81 $(INSTALL_SCRIPT) $$i $$b; \
82 else \
83 echo $(INSTALL_DATA) $$i $$b; \
84 $(INSTALL_DATA) $$i $$b; \
85 fi;; \
86 esac; \
87 done; \
88 done
Jack Jansen0cd0e652002-03-29 14:18:18 +000089 $(INSTALL_PROGRAM) $(STRIPFLAG) pythonforbundle $(APPINSTALLDIR)/Contents/MacOS/python
Jack Jansenc432cba2001-09-09 00:36:52 +000090 # Create a temporary version of the resources here
Jack Jansenfdc8d752002-01-15 23:20:40 +000091 $(PYTHON) $(RFCONVERTER) -r $(RESOURCEDIR)/dialogs.rsrc dialogs.rsrc
92 $(PYTHON) $(RFCONVERTER) -r $(RESOURCEDIR)/errors.rsrc errors.rsrc
Jack Jansenfea15532002-01-27 20:05:20 +000093 $(DEREZ) -useDF -skip ckid dialogs.rsrc > dialogs.r
94 $(DEREZ) -useDF -skip ckid errors.rsrc > errors.r
95 $(REZ) -useDF -o $(RESOURCEFILE) dialogs.r errors.r
Jack Jansenc432cba2001-09-09 00:36:52 +000096 $(INSTALL_DATA) $(RESOURCEFILE) $(APPINSTALLDIR)/Contents/Resources/$(RESOURCEFILE)
Jack Jansen638e5e32001-09-06 16:33:57 +000097
98LIBDEST=$(INSTALLDIR)/Mac/Lib
Jack Jansen0b06be72002-06-21 14:48:38 +000099LIBSRC=$(PYTHONSRCDIR)/Mac/Lib
Jack Jansendc745682002-05-23 22:18:13 +0000100LIBSUBDIRS= \
101 Carbon \
102 lib-scriptpackages \
103 lib-scriptpackages/_builtinSuites \
104 lib-scriptpackages/CodeWarrior \
105 lib-scriptpackages/Explorer \
106 lib-scriptpackages/Finder \
107 lib-scriptpackages/Netscape \
108 lib-scriptpackages/StdSuites \
109 lib-scriptpackages/Terminal \
110 mkcwproject \
111 mkcwproject/template \
112 mkcwproject/template-carbon \
113 mkcwproject/template-ppc
Jack Jansenc71efe02002-01-21 22:51:55 +0000114TOOLSDEST=$(INSTALLDIR)/Mac/Tools
Jack Jansen0b06be72002-06-21 14:48:38 +0000115TOOLSSRC=$(PYTHONSRCDIR)/Mac/Tools
Jack Jansenc71efe02002-01-21 22:51:55 +0000116TOOLSSUBDIRS=IDE
Jack Jansen638e5e32001-09-06 16:33:57 +0000117installmacsubtree:
Jack Jansenc71efe02002-01-21 22:51:55 +0000118 @for i in $(LIBDEST) $(TOOLSDEST); \
Jack Jansen638e5e32001-09-06 16:33:57 +0000119 do \
120 if test ! -d $$i; then \
121 echo "Creating directory $$i"; \
122 $(INSTALL) -d -m $(DIRMODE) $$i; \
123 else true; \
124 fi; \
125 done
126 @for d in $(LIBSUBDIRS); \
127 do \
128 a=$(LIBSRC)/$$d; \
129 if test ! -d $$a; then continue; else true; fi; \
130 b=$(LIBDEST)/$$d; \
131 if test ! -d $$b; then \
132 echo "Creating directory $$b"; \
133 $(INSTALL) -d -m $(DIRMODE) $$b; \
134 else true; \
135 fi; \
136 done
137 @for i in $(LIBSRC)/*.py $(LIBSRC)/*.rsrc; \
138 do \
139 if test -x $$i; then \
140 $(INSTALL_SCRIPT) $$i $(LIBDEST); \
141 echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
142 else \
143 $(INSTALL_DATA) $$i $(LIBDEST); \
144 echo $(INSTALL_DATA) $$i $(LIBDEST); \
145 fi; \
146 done
147 @for d in $(LIBSUBDIRS); \
148 do \
149 a=$(LIBSRC)/$$d; \
150 if test ! -d $$a; then continue; else true; fi; \
151 b=$(LIBDEST)/$$d; \
152 for i in $$a/*; \
153 do \
154 case $$i in \
155 *CVS) ;; \
156 *.py[co]) ;; \
157 *.orig) ;; \
158 *~) ;; \
159 *) \
160 if test -d $$i; then continue; fi; \
161 if test -x $$i; then \
162 echo $(INSTALL_SCRIPT) $$i $$b; \
163 $(INSTALL_SCRIPT) $$i $$b; \
164 else \
165 echo $(INSTALL_DATA) $$i $$b; \
166 $(INSTALL_DATA) $$i $$b; \
167 fi;; \
168 esac; \
169 done; \
170 done
Jack Jansenc71efe02002-01-21 22:51:55 +0000171 @for d in $(TOOLSSUBDIRS); \
172 do \
173 a=$(TOOLSSRC)/$$d; \
174 if test ! -d $$a; then continue; else true; fi; \
175 b=$(TOOLSDEST)/$$d; \
176 if test ! -d $$b; then \
177 echo "Creating directory $$b"; \
178 $(INSTALL) -d -m $(DIRMODE) $$b; \
179 else true; \
180 fi; \
181 done
182 @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 for i in $$a/*; \
188 do \
189 case $$i in \
190 *CVS) ;; \
191 *.py[co]) ;; \
192 *.orig) ;; \
193 *~) ;; \
194 *) \
195 if test -d $$i; then continue; fi; \
196 if test -x $$i; then \
197 echo $(INSTALL_SCRIPT) $$i $$b; \
198 $(INSTALL_SCRIPT) $$i $$b; \
199 else \
200 echo $(INSTALL_DATA) $$i $$b; \
201 $(INSTALL_DATA) $$i $$b; \
202 fi;; \
203 esac; \
204 done; \
205 done
206
Jack Jansen0b06be72002-06-21 14:48:38 +0000207 $(INSTALL_DATA) $(PYTHONSRCDIR)/Mac/OSX/Mac.pth $(INSTALLDIR)/lib/python2.3/site-packages/
Jack Jansen109f0942002-01-18 16:12:27 +0000208
Jack Jansen0cd0e652002-03-29 14:18:18 +0000209# Put symlinks "python" and "pythonw" in the standard place
210installunixprograms: $(INSTALLED_PYTHON) pythonw.sh
211 $(INSTALL) -d $(UNIXBINDIR)
212 $(INSTALL_SYMLINK) $(INSTALLED_PYTHON) $(UNIXBINDIR)/python
213 $(INSTALL) pythonw.sh $(UNIXBINDIR)/pythonw
214
215# This is for development purposes: put a symlink to the Mac source subtree in the
216# framework
217symlinkmacsubtree:
218 ln -sf `cd $(PYTHONBUILDDIR)/Mac; pwd` $(INSTALLDIR)/Mac
219
220 @echo '** Copy the contents of sample_sitecustomize.py (or similar code) into'
221 @echo '**' $(INSTALLDIR)/lib/python2.3/sitecustomize.py
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