Makefile revision bea18ccde6bc12e061c21bb6b944379d8b123845
1# RISC OS Python
2LIBSROOT = $.AcornC_C++.Libraries
3
4# You may need to change some of the following
5OSLIB = $(LIBSROOT).OSLib
6CLIB = $(LIBSROOT).clib
7TCPIPLIB = $(LIBSROOT).TCPIPLibs
8DLKLIB = $(LIBSROOT).dlk
9ZLIB = $(LIBSROOT).zlib
10EXPAT = $(LIBSROOT).expat.lib
11
12OBJSCAN = objscan
13MAKEDLK = makedlk
14
15# change from time to time (don't forget to change !Boot also)
16TARGET=Python22
17BUILD=25
18
19
20#
21# You shouldn't need to change anything below this line
22#
23DLKFLAG= -DDLK
24DLKOBJS = $(DLKLIB).o.dlk_load @.o.linktab
25
26HEADERS = @,$(TCPIPLIB),@.^.Include,@.^.Modules,@.^.Objects,@.^.Python,$(CLIB),$(OSLIB),$(DLKLIB)
27
28CFLAGS = -c  $(DLKFLAG) -DRISCOS -DHAVE_CONFIG_H -wadP -throwback -APCS 3/32bit/fpe3
29
30CC = cc $(CFLAGS) -j$(HEADERS)
31CCEXPAT = cc $(CFLAGS) -j$(HEADERS),$(EXPAT) -DHAVE_EXPAT_H
32
33LINK = link
34LINKFLAGS = -aif #-NOUNUSED #-d
35LOADLIBS = $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.socklib $(CLIB).o.Stubs $(OSLIB).o.OSLib32 $(DLKOBJS)
36
37LIBFILE = libfile -c 
38
39
40.c.o  :
41       $(CC) -o $@ $*.c
42
43MAIN_PYTHON =\
44	@.^.Modules.o.python
45
46LIB_PYTHON =\
47	@.^.LibPython
48
49# code for main Python binary
50MODULES_STATIC =\
51	@.^.Modules.o.main\
52	@.Modules.o.config\
53	@.^.Modules.o.getbuildinfo\
54	@.Modules.o.getpath_riscos\
55	@.Modules.o.riscosmodule\
56	@.^.Modules.o.gcmodule
57
58
59# dynamic Modules
60MODULES_DYNAMIC =\
61	@.^.Lib.array/pyd\
62	@.^.Lib.audioop/pyd\
63	@.^.Lib.binascii/pyd\
64	@.^.Lib.cmath/pyd\
65	@.^.Lib.cPickle/pyd\
66	@.^.Lib.cStringIO/pyd\
67	@.^.Lib.errno/pyd\
68	@.^.Lib.imageop/pyd\
69	@.^.Lib.math/pyd\
70	@.^.Lib.md5/pyd\
71	@.^.Lib.new/pyd\
72	@.^.Lib.operator/pyd\
73	@.^.Lib.parser/pyd\
74	@.^.Lib.pcre/pyd\
75	@.^.Lib.regex/pyd\
76	@.^.Lib.rgbimg/pyd\
77	@.^.Lib.rotor/pyd\
78	@.^.Lib.sha/pyd\
79	@.^.Lib.signal/pyd\
80	@.^.Lib.struct/pyd\
81	@.^.Lib.time/pyd\
82	@.^.Lib._locale/pyd\
83	@.^.Lib.zlib/pyd\
84	@.^.Lib.select/pyd\
85	@.^.Lib._socket/pyd\
86	@.^.Lib._codecs/pyd\
87	@.^.Lib._weakref/pyd\
88	@.^.Lib._testcapi/pyd\
89	@.^.Lib.unicodedata/pyd\
90	@.^.Lib.xreadlines/pyd\
91	@.^.Lib.pyexpat/pyd\
92	@.^.Lib.plat-riscos.drawf/pyd\
93	@.^.Lib.plat-riscos.swi/pyd\
94	@.^.Lib._sre/pyd\
95	@.^.Lib.xxsubtype/pyd\
96	@.^.Lib._symtable/pyd
97
98
99OBJECTS_PYTHON =\
100	@.^.Python.o.traceback\
101	@.^.Python.o.sysmodule\
102	@.^.Python.o.structmember\
103	@.^.Python.o.strdup\
104	@.^.Python.o.sigcheck\
105	@.^.Python.o.pythonrun\
106	@.^.Python.o.pystate\
107	@.^.Python.o.pyfpe\
108	@.^.Python.o.mystrtoul\
109	@.^.Python.o.mysnprintf\
110	@.^.Python.o.modsupport\
111	@.^.Python.o.marshal\
112	@.^.Python.o.importdl\
113	@.^.Python.o.import\
114	@.^.Python.o.graminit\
115	@.^.Python.o.getversion\
116	@.^.Python.o.getplatform\
117	@.^.Python.o.getopt\
118	@.^.Python.o.getcopyright\
119	@.^.Python.o.getcompiler\
120	@.^.Python.o.getargs\
121	@.^.Python.o.frozenmain\
122	@.^.Python.o.frozen\
123	@.^.Python.o.errors\
124	@.^.Python.o.compile\
125	@.^.Python.o.ceval\
126	@.^.Python.o.bltinmodule\
127	@.^.Python.o.exceptions\
128	@.^.Python.o.hypot\
129	@.^.Python.o.codecs\
130	@.^.Python.o.symtable\
131	@.^.Python.o.future
132
133
134OBJECTS_RISCOS = \
135	@.Python.o.dynload_riscos\
136	@.Python.o.getcwd_riscos\
137	@.Python.o.getmtime_riscos\
138	@.o.unixstuff
139
140
141OBJECTS_OBJECTS =\
142	@.^.Objects.o.typeobject\
143	@.^.Objects.o.tupleobject\
144	@.^.Objects.o.stringobject\
145	@.^.Objects.o.sliceobject\
146	@.^.Objects.o.rangeobject\
147	@.^.Objects.o.object\
148	@.^.Objects.o.moduleobject\
149	@.^.Objects.o.methodobject\
150	@.^.Objects.o.longobject\
151	@.^.Objects.o.listobject\
152	@.^.Objects.o.intobject\
153	@.^.Objects.o.iterobject\
154	@.^.Objects.o.funcobject\
155	@.^.Objects.o.frameobject\
156	@.^.Objects.o.floatobject\
157	@.^.Objects.o.fileobject\
158	@.^.Objects.o.dictobject\
159	@.^.Objects.o.complexobject\
160	@.^.Objects.o.cobject\
161	@.^.Objects.o.classobject\
162	@.^.Objects.o.cellobject\
163	@.^.Objects.o.bufferobject\
164	@.^.Objects.o.abstract\
165	@.^.Objects.o.unicodectype\
166	@.^.Objects.o.unicodeobject\
167	@.^.Objects.o.descrobject\
168	@.^.Objects.o.weakrefobject\
169	@.^.Objects.o.structseq
170
171
172OBJECTS_PARSER =\
173	@.^.Parser.o.tokenizer\
174	@.^.Parser.o.printgrammar\
175	@.^.Parser.o.parsetok\
176	@.^.Parser.o.parser\
177	@.^.Parser.o.node\
178	@.^.Parser.o.myreadline\
179	@.^.Parser.o.metagrammar\
180	@.^.Parser.o.listnode\
181	@.^.Parser.o.intrcheck\
182	@.^.Parser.o.grammar1\
183	@.^.Parser.o.grammar\
184	@.^.Parser.o.firstsets\
185	@.^.Parser.o.bitset\
186	@.^.Parser.o.acceler
187
188SUPPORT_FILES = @.^.!Boot @.^.!Run @.^.!Sprites @.^.!Sprites22 @.^.AddToPath
189
190OBJECTS = $(OBJECTS_PYTHON) $(OBJECTS_PARSER) $(MODULES_STATIC) $(OBJECTS_OBJECTS) $(OBJECTS_RISCOS)
191
192
193all: @.^.$(TARGET) $(MODULES_DYNAMIC) $(SUPPORT_FILES)
194
195@.^.Modules.o.getbuildinfo: @.^.Modules.c.getbuildinfo
196       $(CC) -DBUILD=$(BUILD) -o @.^.Modules.o.getbuildinfo @.^.Modules.c.getbuildinfo
197
198
199$(LIB_PYTHON):	$(OBJECTS)
200	$(LIBFILE) $(LIB_PYTHON) $(OBJECTS)
201
202@.^.$(TARGET):  o.linktab $(MAIN_PYTHON) $(LIB_PYTHON)
203	$(LINK) -o @.^.$(TARGET) $(MAIN_PYTHON) @.^.LibPython $(LOADLIBS)
204
205
206#########################################################################
207# RISC OS support files
208#
209@.^.!Boot: support.!Boot
210	copy support.!Boot @.^.!Boot ~C~VF
211	settype @.^.!Boot feb
212@.^.!Run:  support.!Run
213	copy support.!Run @.^.!Run ~C~VF
214	settype @.^.!Run feb
215@.^.!Sprites: support.!Sprites
216	copy support.!Sprites @.^.!Sprites ~C~VF
217	settype @.^.!Sprites ff9
218@.^.!Sprites22: support.!Sprites22
219	copy support.!Sprites22 @.^.!Sprites22 ~C~VF
220	settype @.^.!Sprites22 ff9
221@.^.AddToPath: support.AddToPath
222	copy support.AddToPath @.^.AddToPath ~C~VF
223	settype @.^.AddToPath ffc
224
225
226#########################################################################
227# Dynamic Modules
228#
229@.^.Lib.array/pyd: @.^.Modules.o.arraymodule s.linktab
230	$(MAKEDLK) -d @.^.Lib.array/pyd -s s.linktab -o @.^.Modules.o.arraymodule -e initarray
231
232@.^.Lib.audioop/pyd: @.^.Modules.o.audioop # s.linktab
233	$(MAKEDLK) -d @.^.Lib.audioop/pyd -s s.linktab -o @.^.Modules.o.audioop -e initaudioop
234
235@.^.Lib.binascii/pyd: @.^.Modules.o.binascii s.linktab
236	$(MAKEDLK) -d @.^.Lib.binascii/pyd -s s.linktab -o @.^.Modules.o.binascii -e initbinascii
237
238@.^.Lib.cmath/pyd: @.^.Modules.o.cmathmodule s.linktab
239	$(MAKEDLK) -d @.^.Lib.cmath/pyd -s s.linktab -o @.^.Modules.o.cmathmodule -e initcmath
240
241@.^.Lib.cPickle/pyd: @.^.Modules.o.cPickle s.linktab
242	$(MAKEDLK) -d @.^.Lib.cPickle/pyd -s s.linktab -o @.^.Modules.o.cPickle -e initcPickle
243
244@.^.Lib.cStringIO/pyd: @.^.Modules.o.cStringIO s.linktab
245	$(MAKEDLK) -d @.^.Lib.cStringIO/pyd -s s.linktab -o @.^.Modules.o.cStringIO -e initcStringIO
246
247@.^.Lib.plat-riscos.drawf/pyd: Modules.o.drawfmodule #s.linktab
248	$(LINK) -aof -o Modules.o.drawflink Modules.o.drawfmodule $(OSLIB).o.OSLIB32
249	$(MAKEDLK) -d @.^.Lib.plat-riscos.drawf/pyd -s s.linktab -o Modules.o.drawflink -e initdrawf
250
251@.^.Lib.errno/pyd: @.^.Modules.o.errnomodule #s.linktab
252	$(MAKEDLK) -d @.^.Lib.errno/pyd -s s.linktab -o @.^.Modules.o.errnomodule -e initerrno
253
254@.^.Lib.imageop/pyd: @.^.Modules.o.imageop s.linktab
255	$(MAKEDLK) -d @.^.Lib.imageop/pyd -s s.linktab -o @.^.Modules.o.imageop -e initimageop
256
257@.^.Lib.math/pyd: @.^.Modules.o.mathmodule s.linktab
258	$(MAKEDLK) -d @.^.Lib.math/pyd -s s.linktab -o @.^.Modules.o.mathmodule -e initmath
259
260@.^.Lib.mmap/pyd: @.^.Modules.o.mmapmodule s.linktab
261	$(MAKEDLK) -d @.^.Lib.mmap/pyd -s s.linktab -o @.^.Modules.o.mmapmodule -e initmmap
262
263@.^.Lib.md5/pyd: @.^.Modules.o.md5c @.^.Modules.o.md5module s.linktab
264	$(LINK) -aof -o @.^.Modules.o.md5link @.^.Modules.o.md5c @.^.Modules.o.md5module
265	$(MAKEDLK) -d @.^.Lib.md5/pyd -s s.linktab -o @.^.Modules.o.md5link -e initmd5
266
267@.^.Lib.operator/pyd: @.^.Modules.o.operator s.linktab
268	$(MAKEDLK) -d @.^.Lib.operator/pyd -s s.linktab -o @.^.Modules.o.operator -e initoperator
269
270@.^.Lib.parser/pyd: @.^.Modules.o.parsermodule s.linktab
271	$(MAKEDLK) -d @.^.Lib.parser/pyd -s s.linktab -o @.^.Modules.o.parsermodule -e initparser
272
273@.^.Lib.pcre/pyd: @.^.Modules.o.pcremodule @.^.Modules.o.pypcre s.linktab
274	$(LINK) -aof -o @.^.Modules.o.pcrelink @.^.Modules.o.pcremodule @.^.Modules.o.pypcre
275	$(MAKEDLK) -d @.^.Lib.pcre/pyd -s s.linktab -o @.^.Modules.o.pcrelink -e initpcre
276
277@.^.Lib.regex/pyd: @.^.Modules.o.regexmodule @.^.Modules.o.regexpr s.linktab
278	$(LINK) -aof -o @.^.Modules.o.regexlink @.^.Modules.o.regexmodule @.^.Modules.o.regexpr
279	$(MAKEDLK) -d @.^.Lib.regex/pyd -s s.linktab -o @.^.Modules.o.regexlink -e initregex
280
281@.^.Lib.rgbimg/pyd: @.^.Modules.o.rgbimgmodule s.linktab
282	$(MAKEDLK) -d @.^.Lib.rgbimg/pyd -s s.linktab -o @.^.Modules.o.rgbimgmodule -e initrgbimg
283
284@.^.Lib.rotor/pyd: @.^.Modules.o.rotormodule s.linktab
285	$(MAKEDLK) -d @.^.Lib.rotor/pyd -s s.linktab -o @.^.Modules.o.rotormodule -e initrotor
286
287@.^.Lib.sha/pyd: @.^.Modules.o.shamodule s.linktab
288	$(MAKEDLK) -d @.^.Lib.sha/pyd -s s.linktab -o @.^.Modules.o.shamodule -e initsha
289
290@.^.Lib.signal/pyd: @.^.Modules.o.signalmodule s.linktab
291	$(MAKEDLK) -d @.^.Lib.signal/pyd -s s.linktab -o @.^.Modules.o.signalmodule -e initsignal
292
293@.^.Lib.strop/pyd: @.^.Modules.o.stropmodule s.linktab
294	$(MAKEDLK) -d @.^.Lib.strop/pyd -s s.linktab -o @.^.Modules.o.stropmodule -e initstrop
295
296@.^.Lib.struct/pyd: @.^.Modules.o.structmodule s.linktab
297	$(MAKEDLK) -d @.^.Lib.struct/pyd -s s.linktab -o @.^.Modules.o.structmodule -e initstruct
298
299@.^.Lib.plat-riscos.swi/pyd: Modules.o.swimodule s.linktab
300	$(LINK) -aof -o Modules.o.swilink Modules.o.swimodule $(OSLIB).o.OSLIB32
301	$(MAKEDLK) -d @.^.Lib.plat-riscos.swi/pyd -s s.linktab -o Modules.o.swilink -e initswi
302
303@.^.Lib._locale/pyd: @.^.Modules.o._localemodule s.linktab
304	$(MAKEDLK) -d @.^.Lib._locale/pyd -s s.linktab -o @.^.Modules.o._localemodule -e init_locale
305
306@.^.Lib._sre/pyd: @.^.Modules.o._sre s.linktab
307	$(MAKEDLK) -d @.^.Lib._sre/pyd -s s.linktab -o @.^.Modules.o._sre -e init_sre
308
309@.^.Lib._codecs/pyd: @.^.Modules.o._codecsmodule s.linktab
310	$(MAKEDLK) -d @.^.Lib._codecs/pyd -s s.linktab -o @.^.Modules.o._codecsmodule -e init_codecs
311
312@.^.Lib._weakref/pyd: @.^.Modules.o._weakref s.linktab
313	$(MAKEDLK) -d @.^.Lib._weakref/pyd -s s.linktab -o @.^.Modules.o._weakref -e init_weakref
314
315@.^.Lib._testcapi/pyd: @.^.Modules.o._testcapimodule s.linktab
316	$(MAKEDLK) -d @.^.Lib._testcapi/pyd -s s.linktab -o @.^.Modules.o._testcapimodule -e init_testcapi
317
318@.^.Lib.unicodedata/pyd: @.^.Modules.o.unicodedata s.linktab
319	$(MAKEDLK) -d @.^.Lib.unicodedata/pyd -s s.linktab -o @.^.Modules.o.unicodedata -e initunicodedata
320
321@.^.Lib.xreadlines/pyd: @.^.Modules.o.xreadlinesmodule s.linktab
322	$(MAKEDLK) -d @.^.Lib.xreadlines/pyd -s s.linktab -o @.^.Modules.o.xreadlinesmodule -e initxreadlines
323
324@.^.Lib.xxsubtype/pyd: @.^.Modules.o.xxsubtype s.linktab
325	$(MAKEDLK) -d @.^.Lib.xxsubtype/pyd -s s.linktab -o @.^.Modules.o.xxsubtype -e initxxsubtype
326
327@.^.Lib._symtable/pyd: @.^.Modules.o.symtablemodule s.linktab
328	$(MAKEDLK) -d @.^.Lib._symtable/pyd -s s.linktab -o @.^.Modules.o.symtablemodule -e init_symtable
329
330
331############################################################################
332# Dynamic Modules with other dependencies
333#
334@.^.Lib.select/pyd:  @.^.Modules.o.selectmodule s.linktab
335	$(LINK) -aof -o @.^.Modules.o.selectlink @.^.Modules.o.selectmodule $(TCPIPLIB).o.socklib
336	$(MAKEDLK) -d @.^.Lib.select/pyd -s s.linktab -o @.^.Modules.o.selectlink -e initselect
337
338@.^.Modules.o.selectmodule: @.^.Modules.c.selectmodule
339	$(CC) -I$(TCPIPLIB).include -o $@ @.^.Modules.c.selectmodule
340
341@.^.Lib._socket/pyd: @.^.Modules.o.socketmodule s.linktab 
342	$(LINK) -aof -o @.^.Modules.o._socketlink @.^.Modules.o.socketmodule $(TCPIPLIB).o.inetlib $(TCPIPLIB).o.unixlib $(TCPIPLIB).o.socklib
343	$(MAKEDLK) -d @.^.Lib._socket/pyd -s s.linktab -o @.^.Modules.o._socketlink -e init_socket
344
345@.^.Modules.o.socketmodule: @.^.Modules.c.socketmodule
346	$(CC) -I$(TCPIPLIB).include -o $@ @.^.Modules.c.socketmodule
347
348
349@.^.Lib.zlib/pyd: @.^.Modules.o.zlibmodule s.linktab
350	$(LINK) -aof -o @.^.Modules.o.zliblink @.^.Modules.o.zlibmodule $(ZLIB).zlib
351	$(MAKEDLK) -d @.^.Lib.zlib/pyd -s s.linktab -o @.^.Modules.o.zliblink -e initzlib
352
353@.^.Modules.o.zlibmodule: @.^.Modules.c.zlibmodule
354	$(CC) -I$(ZLIB) -o $@ @.^.Modules.c.zlibmodule
355
356
357@.^.Lib.time/pyd: @.^.Modules.o.timemodule s.linktab @.o.sleep
358	$(LINK) -aof -o @.^.Modules.o.timelink @.^.Modules.o.timemodule @.o.sleep $(OSLIB).o.OSLib32
359	$(MAKEDLK) -d @.^.Lib.time/pyd -s s.linktab -o @.^.Modules.o.timelink -e inittime
360
361#@.^.Lib.time/pyd: @.Modules.o.timemodule s.linktab
362#	$(LINK) -aof -o @.Modules.o.timelink @.Modules.o.timemodule $(OSLIB).o.OSLib32
363#	$(MAKEDLK) -d @.^.Lib.time/pyd -s s.linktab -o @.Modules.o.timelink -e inittime
364
365
366@.^.Lib.pyexpat/pyd: @.^.Modules.o.pyexpat s.linktab
367	$(LINK) -aof -o @.^.Modules.o.pyexpatlink @.^.Modules.o.pyexpat $(EXPAT).expat_lib
368	$(MAKEDLK) -d @.^.Lib.pyexpat/pyd -s s.linktab -o @.^.Modules.o.pyexpatlink -e initpyexpat
369
370@.^.Modules.o.pyexpat: @.^.Modules.c.pyexpat
371	$(CCEXPAT) -o $@ @.^.Modules.c.pyexpat
372
373
374##########################################################################
375# dynamic linking symbol table
376#
377o.linktab: s.linktab
378	ObjAsm -APCS 3/32bit s.linktab o.linktab
379
380s.linktab: $(OBJECTS)
381	$(OBJSCAN) -s s.linktab -o $(OBJECTS) $(clib).o.stubs
382
383##########################################################################
384# special targets
385#
386libclean:
387	-wipe @.^.Lib.*/pyc ~C~V
388	-wipe @.^.Lib.*/pyo ~C~V
389	-wipe @.^.Lib.plat-riscos.*/pyc ~C~V
390	-wipe @.^.Lib.plat-riscos.*/pyo ~C~V
391	-wipe @.^.Lib.test.*/pyc ~C~V
392	-wipe @.^.Lib.test.*/pyo ~C~V
393	-wipe @.^.Lib.encodings.*/pyc ~C~V
394	-wipe @.^.Lib.encodings.*/pyo ~C~V
395	-wipe @.^.Lib.curses.*/pyc ~C~V
396	-wipe @.^.Lib.curses.*/pyo ~C~V
397	-wipe @.^.Lib.xml.*/pyc ~C~V
398	-wipe @.^.Lib.xml.*/pyo ~C~V
399	-wipe @.^.Lib.xml.sax.*/pyc ~C~V
400	-wipe @.^.Lib.xml.sax.*/pyo ~C~V
401	-wipe @.^.Lib.xml.dom.*/pyc ~C~V
402	-wipe @.^.Lib.xml.dom.*/pyo ~C~V
403	-wipe @.^.Lib.xml.parsers.*/pyc ~C~V
404	-wipe @.^.Lib.xml.parsers.*/pyo ~C~V
405
406clean: libclean
407	-wipe @.^.Modules.o.* ~C~V
408	-wipe @.^.Objects.o.* ~C~V
409	-wipe @.^.Parser.o.* ~C~V
410	-wipe @.^.Python.o.* ~C~V
411	-wipe @.Modules.o.* ~C~V
412	-wipe @.Python.o.* ~C~V
413	-wipe @.o.* ~C ~V
414
415rebuild: clean clean-support
416	remove @.^.$(TARGET)
417	-wipe @.^.Lib.*/pyd ~C ~V
418	-wipe @.^.Lib.plat-riscos.*/pyd ~C~V
419	remove s.linktab
420	remove @.^.LibPython
421
422clean-support:
423	-wipe @.^.!* ~C~V
424	remove @.^.AddToPath
425
426cdirs:
427	cdir @.Modules.o
428	cdir @.Python.o
429	cdir @.s
430	cdir @.o
431	cdir @.^.Python.o
432	cdir @.^.Parser.o
433	cdir @.^.Objects.o
434	cdir @.^.Modules.o
435
436
437# Dynamic dependencies:
438