]> git.sur5r.net Git - cc65/blob - libsrc/Makefile
Initial Apple GEOS build.
[cc65] / libsrc / Makefile
1 # -*- make -*-
2 #
3 # Makefile for CC65 Libraries
4 #
5
6 .SUFFIXES: .o .obj .s .c
7
8 # Defines for executables. AR is used within this makefile, the others are
9 # passed to the submakes and contain paths relative to the subdirectories
10 # handled by the make subprocesses.
11 AR = ../src/ar65/ar65
12 AS = ../../src/ca65/ca65
13 CC = ../../src/cc65/cc65
14 LD = ../../src/ld65/ld65
15
16 # List of shared directories
17 SHAREDDIRS =    cbm             \
18                 common          \
19                 geos-common     \
20                 conio           \
21                 dbg             \
22                 em              \
23                 joystick        \
24                 mouse           \
25                 runtime         \
26                 serial          \
27                 tgi             \
28                 zlib
29
30 # List of all targets
31 ALLTARGETS =    apple2          \
32                 apple2enh       \
33                 atari           \
34                 atmos           \
35                 c128            \
36                 c16             \
37                 c64             \
38                 cbm510          \
39                 cbm610          \
40                 geos-apple      \
41                 geos-cbm        \
42                 lynx            \
43                 nes             \
44                 pet             \
45                 plus4           \
46                 supervision     \
47                 vic20
48
49 #-----------------------------------------------------------------------------
50
51 .PHONY: all
52 all:
53         for tgt in $(ALLTARGETS); do                    \
54             $(MAKE) mostly-clean "$$tgt"lib || exit 1;  \
55         done
56
57 #-----------------------------------------------------------------------------
58 # Apple ][
59
60 .PHONY: apple2lib
61 apple2lib:
62         for i in runtime apple2 common conio dbg em joystick mouse serial tgi zlib; do \
63             $(MAKE) SYS=apple2 -C $$i || exit 1; \
64             $(AR) a apple2.lib $$i/*.o || exit 1; \
65         done
66         cp apple2/apple2-auxmem.emd a2.auxmem.emd
67         cp apple2/apple2-stdjoy.joy a2.stdjoy.joy
68         cp apple2/apple2-stdmou.mou a2.stdmou.mou
69         cp apple2/apple2-ssc.ser a2.ssc.ser
70         cp apple2/apple2-280-192-8.tgi a2.hi.tgi
71         cp apple2/apple2-40-48-16.tgi a2.lo.tgi
72         if [ -d apple2/extra ]; then \
73             for i in apple2/extra/*.o; do \
74                 cp $$i apple2-`basename $$i` || exit 1; \
75             done \
76         fi
77
78 #-----------------------------------------------------------------------------
79 # enhanced Apple //e
80
81 .PHONY: apple2enhlib
82 apple2enhlib:
83         for i in runtime apple2enh common conio dbg em joystick mouse serial tgi zlib; do \
84             $(MAKE) SYS=apple2enh -C $$i || exit 1; \
85             $(AR) a apple2enh.lib $$i/*.o || exit 1; \
86         done
87         cp apple2enh/apple2-auxmem.emd a2e.auxmem.emd
88         cp apple2enh/apple2-stdjoy.joy a2e.stdjoy.joy
89         cp apple2enh/apple2-stdmou.mou a2e.stdmou.mou
90         cp apple2enh/apple2-ssc.ser a2e.ssc.ser
91         cp apple2enh/apple2-280-192-8.tgi a2e.hi.tgi
92         cp apple2enh/apple2-40-48-16.tgi a2e.lo.tgi
93         if [ -d apple2enh/extra ]; then \
94             for i in apple2enh/extra/*.o; do \
95                 cp $$i apple2enh-`basename $$i` || exit 1; \
96             done \
97         fi
98
99 #-----------------------------------------------------------------------------
100 # Atari
101
102 .PHONY: atarilib
103 atarilib:
104         for i in runtime atari common conio dbg em joystick tgi zlib; do \
105             $(MAKE) SYS=atari -C $$i || exit 1; \
106             $(AR) a atari.lib $$i/*.o || exit 1; \
107         done
108         cp atari/atari-stdjoy.joy ataristd.joy
109         cp atari/atari-multijoy.joy atarimj8.joy
110         cp atari/atari-10.tgi atari10.tgi
111         cp atari/atari-10p2.tgi atr10p2.tgi
112         cp atari/atari-11.tgi atari11.tgi
113         cp atari/atari-14.tgi atari14.tgi
114         cp atari/atari-15.tgi atari15.tgi
115         cp atari/atari-15p2.tgi atr15p2.tgi
116         cp atari/atari-3.tgi atari3.tgi
117         cp atari/atari-4.tgi atari4.tgi
118         cp atari/atari-5.tgi atari5.tgi
119         cp atari/atari-6.tgi atari6.tgi
120         cp atari/atari-7.tgi atari7.tgi
121         cp atari/atari-8.tgi atari8.tgi
122         cp atari/atari-8p2.tgi atr8p2.tgi
123         cp atari/atari-9.tgi atari9.tgi
124         cp atari/atari-9p2.tgi atr9p2.tgi
125         if [ -d atari/extra ]; then \
126             for i in atari/extra/*.o; do \
127                 cp $$i atari-`basename $$i` || exit 1; \
128             done \
129         fi
130
131 #-----------------------------------------------------------------------------
132 # Oric Atmos
133
134 .PHONY: atmoslib
135 atmoslib:
136         for i in runtime atmos common conio em joystick tgi zlib; do \
137             $(MAKE) SYS=atmos -C $$i || exit 1; \
138             $(AR) a atmos.lib $$i/*.o || exit 1; \
139         done
140         cp atmos/*.joy .
141         cp atmos/*.tgi .
142         if [ -d atmos/extra ]; then \
143             for i in atmos/extra/*.o; do \
144                 cp $$i atmos-`basename $$i` || exit 1; \
145             done \
146         fi
147
148 #-----------------------------------------------------------------------------
149 # C16, C116
150
151 .PHONY: c16lib
152 c16lib:
153         for i in runtime c16 cbm common conio dbg em joystick mouse tgi zlib; do \
154             $(MAKE) SYS=c16 -C $$i || exit 1; \
155             $(AR) a c16.lib $$i/*.o || exit 1; \
156         done
157         cp c16/*.joy .
158         cp c16/*.emd .
159         if [ -d c16/extra ]; then \
160             for i in c16/extra/*.o; do \
161                 cp $$i c16-`basename $$i` || exit 1; \
162             done \
163         fi
164
165 #-----------------------------------------------------------------------------
166 # C64
167
168 .PHONY: c64lib
169 c64lib:
170         for i in runtime c64 cbm common conio dbg em joystick mouse serial tgi zlib; do \
171             $(MAKE) SYS=c64 -C $$i || exit 1; \
172             $(AR) a c64.lib $$i/*.o || exit 1; \
173         done
174         cp c64/*.emd .
175         cp c64/*.joy .
176         cp c64/c64-1351.mou .
177         cp c64/c64-joymouse.mou c64-joy.mou
178         cp c64/c64-potmouse.mou c64-pot.mou
179         cp c64/*.ser .
180         cp c64/c64-320-200-2.tgi c64-hi.tgi
181         if [ -d c64/extra ]; then \
182             for i in c64/extra/*.o; do \
183                 cp $$i c64-`basename $$i` || exit 1; \
184             done \
185         fi
186
187 #-----------------------------------------------------------------------------
188 # C128
189
190 .PHONY: c128lib
191 c128lib:
192         for i in runtime c128 cbm common conio dbg em joystick mouse serial tgi zlib; do \
193             $(MAKE) SYS=c128 -C $$i || exit 1; \
194             $(AR) a c128.lib $$i/*.o || exit 1; \
195         done
196         cp c128/*.emd .
197         cp c128/*.joy .
198         cp c128/c128-1351.mou .
199         cp c128/c128-joymouse.mou c128-joy.mou
200         cp c128/c128-potmouse.mou c128-pot.mou
201         cp c128/*.ser .
202         cp c128/c128-640-200-2.tgi c128-vdc.tgi
203         cp c128/c128-640-480-2.tgi c128-vdc2.tgi
204         if [ -d cbm/extra ]; then \
205             for i in cbm/extra/*.o; do \
206                 cp $$i cbm-`basename $$i` || exit 1; \
207             done \
208         fi
209         if [ -d c128/extra ]; then \
210             for i in c128/extra/*.o; do \
211                 cp $$i c128-`basename $$i` || exit 1; \
212             done \
213         fi
214
215 #-----------------------------------------------------------------------------
216 # Commodore P500 / CBM 5x0
217
218 .PHONY: cbm510lib
219 cbm510lib:
220         for i in runtime cbm510 cbm common conio dbg em joystick mouse serial tgi zlib; do \
221             $(MAKE) SYS=cbm510 -C $$i || exit 1; \
222             $(AR) a cbm510.lib $$i/*.o || exit 1; \
223         done
224         cp cbm510/*.emd .
225         cp cbm510/cbm510-stdjoy.joy cbm510-std.joy
226         cp cbm510/cbm510-stdser.ser cbm510-std.ser
227         if [ -d cbm510/extra ]; then \
228             for i in cbm510/extra/*.o; do \
229                 cp $$i cbm510-`basename $$i` || exit 1; \
230             done \
231         fi
232
233 #-----------------------------------------------------------------------------
234 # PET-II series
235
236 .PHONY: cbm610lib
237 cbm610lib:
238         for i in runtime cbm610 cbm common conio dbg em joystick serial tgi zlib; do \
239             $(MAKE) SYS=cbm610 -C $$i || exit 1; \
240             $(AR) a cbm610.lib $$i/*.o || exit 1; \
241         done
242         cp cbm610/*.emd .
243         cp cbm610/cbm610-stdser.ser cbm610-std.ser
244         if [ -d cbm610/extra ]; then \
245             for i in cbm610/extra/*.o; do \
246                 cp $$i cbm610-`basename $$i` || exit 1; \
247             done \
248         fi
249
250 #-----------------------------------------------------------------------------
251 # GEOS on the Apple
252
253 .PHONY: geos-applelib
254 geos-applelib:
255         for i in geos-apple geos-common; do \
256             $(MAKE) SYS=geos-apple -C $$i || exit 1; \
257             $(AR) a geos-apple.lib $$i/*.o || exit 1; \
258         done
259         for i in runtime common conio em joystick tgi zlib; do \
260             $(MAKE) SYS=geos-apple -C $$i || exit 1; \
261             for objfile in $$i/*.o; do \
262                 BASENAME=`basename $$objfile`; \
263                 if [ -f geos-common/$$BASENAME ]; then \
264                     $(AR) a geos-apple.lib geos-common/$$BASENAME; \
265                 else \
266                     $(AR) a geos-apple.lib $$objfile; \
267                 fi; \
268             done \
269         done
270         if [ -d geos-apple/extra ]; then \
271             for i in geos-apple/extra/*.o; do \
272                 cp $$i geos-apple-`basename $$i` || exit 1; \
273             done \
274         fi
275
276 #-----------------------------------------------------------------------------
277 # GEOS on the C64/128
278
279 .PHONY: geos-cbmlib
280 geos-cbmlib:
281         for i in geos-cbm geos-common; do \
282             $(MAKE) SYS=geos-cbm -C $$i || exit 1; \
283             $(AR) a geos-cbm.lib $$i/*.o || exit 1; \
284         done
285         for i in runtime common conio em joystick tgi zlib; do \
286             $(MAKE) SYS=geos-cbm -C $$i || exit 1; \
287             for objfile in $$i/*.o; do \
288                 BASENAME=`basename $$objfile`; \
289                 if [ -f geos-common/$$BASENAME ]; then \
290                     $(AR) a geos-cbm.lib geos-common/$$BASENAME; \
291                 else \
292                     $(AR) a geos-cbm.lib $$objfile; \
293                 fi; \
294             done \
295         done
296         cp geos-cbm/*.emd .
297         cp geos-cbm/*.joy .
298         cp geos-cbm/*.tgi .
299         if [ -d geos-cbm/extra ]; then \
300             for i in geos-cbm/extra/*.o; do \
301                 cp $$i geos-cbm-`basename $$i` || exit 1; \
302             done \
303         fi
304
305 #-----------------------------------------------------------------------------
306 # Lynx
307
308 .PHONY: lynxlib
309 lynxlib:
310         for i in runtime lynx common conio em joystick serial tgi zlib; do \
311             $(MAKE) SYS=lynx -C $$i || exit 1; \
312             $(AR) a lynx.lib $$i/*.o || exit 1; \
313         done
314         cp lynx/*.joy .
315         cp lynx/*.ser .
316         cp lynx/*.tgi .
317         if [ -d lynx/extra ]; then \
318             for i in lynx/extra/*.o; do \
319                 cp $$i lynx-`basename $$i` || exit 1; \
320             done \
321         fi
322
323 #-----------------------------------------------------------------------------
324 # NES
325
326 .PHONY: neslib
327 neslib:
328         for i in runtime nes common conio em joystick tgi zlib; do \
329             $(MAKE) SYS=nes -C $$i || exit 1; \
330             $(AR) a nes.lib $$i/*.o || exit 1; \
331         done
332         cp nes/*.joy .
333         cp nes/*.tgi .
334         if [ -d nes/extra ]; then \
335             for i in nes/extra/*.o; do \
336                 cp $$i nes-`basename $$i` || exit 1; \
337             done \
338         fi
339
340 #-----------------------------------------------------------------------------
341 # CBM PET machines
342
343 .PHONY: petlib
344 petlib:
345         for i in runtime pet cbm common conio dbg em joystick tgi zlib; do \
346             $(MAKE) SYS=pet -C $$i || exit 1; \
347             $(AR) a pet.lib $$i/*.o || exit 1; \
348         done
349         cp pet/*.joy .
350         if [ -d pet/extra ]; then \
351             for i in pet/extra/*.o; do \
352                 cp $$i pet-`basename $$i` || exit 1; \
353             done \
354         fi
355
356 #-----------------------------------------------------------------------------
357 # Commodore Plus/4
358
359 .PHONY: plus4lib
360 plus4lib:
361         for i in runtime plus4 cbm common conio dbg em joystick mouse serial tgi zlib; do \
362             $(MAKE) SYS=plus4 -C $$i || exit 1; \
363             $(AR) a plus4.lib $$i/*.o || exit 1; \
364         done
365         cp plus4/*.joy .
366         cp plus4/*.ser .
367         if [ -d plus4/extra ]; then \
368             for i in plus4/extra/*.o; do \
369                 cp $$i plus4-`basename $$i` || exit 1; \
370             done \
371         fi
372
373 #-----------------------------------------------------------------------------
374 # Supervision
375
376 .PHONY: supervisionlib
377 supervisionlib:
378         for i in runtime supervision common; do \
379             $(MAKE) SYS=supervision -C $$i || exit 1; \
380             $(AR) a supervision.lib $$i/*.o || exit 1; \
381         done
382         if [ -d supervision/extra ]; then \
383             for i in supervision/extra/*.o; do \
384                 cp $$i supervision-`basename $$i` || exit 1; \
385             done \
386         fi
387
388 #-----------------------------------------------------------------------------
389 # Vic20
390
391 .PHONY: vic20lib
392 vic20lib:
393         for i in runtime vic20 cbm common conio dbg em joystick mouse tgi zlib; do \
394             $(MAKE) SYS=vic20 -C $$i || exit 1; \
395             $(AR) a vic20.lib $$i/*.o || exit 1; \
396         done
397         cp vic20/*.joy .
398         if [ -d vic20/extra ]; then \
399             for i in vic20/extra/*.o; do \
400                 cp $$i vic20-`basename $$i` || exit 1; \
401             done \
402         fi
403
404 #-----------------------------------------------------------------------------
405 # Dummy targets
406
407 .PHONY: mostly-clean
408 mostly-clean:
409         @for i in $(SHAREDDIRS); do \
410            $(MAKE) --no-print-directory -C $$i clean || exit 1; \
411         done
412
413 .PHONY: clean
414 clean:  mostly-clean
415         @for i in $(ALLTARGETS); do \
416            $(MAKE) -C $$i $@ || exit 1; \
417         done
418
419 .PHONY: zap
420 zap:
421         @for i in $(SHAREDDIRS) $(ALLTARGETS); do \
422            $(MAKE) -C $$i $@ || exit 1; \
423         done
424         @$(RM) *.lib *.o *.emd *.joy *.mou *.ser *.tgi