]> git.sur5r.net Git - cc65/blob - libsrc/Makefile
700b01497b8ddb61f3f62e88a40d21fe5ec3038b
[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-130xe.emd atr130xe.emd
109         cp atari/atari-stdjoy.joy ataristd.joy
110         cp atari/atari-multijoy.joy atarimj8.joy
111         cp atari/atari-10.tgi atari10.tgi
112         cp atari/atari-10p2.tgi atr10p2.tgi
113         cp atari/atari-11.tgi atari11.tgi
114         cp atari/atari-14.tgi atari14.tgi
115         cp atari/atari-15.tgi atari15.tgi
116         cp atari/atari-15p2.tgi atr15p2.tgi
117         cp atari/atari-3.tgi atari3.tgi
118         cp atari/atari-4.tgi atari4.tgi
119         cp atari/atari-5.tgi atari5.tgi
120         cp atari/atari-6.tgi atari6.tgi
121         cp atari/atari-7.tgi atari7.tgi
122         cp atari/atari-8.tgi atari8.tgi
123         cp atari/atari-8p2.tgi atr8p2.tgi
124         cp atari/atari-9.tgi atari9.tgi
125         cp atari/atari-9p2.tgi atr9p2.tgi
126         if [ -d atari/extra ]; then \
127             for i in atari/extra/*.o; do \
128                 cp $$i atari-`basename $$i` || exit 1; \
129             done \
130         fi
131
132 #-----------------------------------------------------------------------------
133 # Oric Atmos
134
135 .PHONY: atmoslib
136 atmoslib:
137         for i in runtime atmos common conio dbg em joystick tgi zlib; do \
138             $(MAKE) SYS=atmos -C $$i || exit 1; \
139             $(AR) a atmos.lib $$i/*.o || exit 1; \
140         done
141         cp atmos/*.joy .
142         cp atmos/*.ser .
143         cp atmos/*.tgi .
144         if [ -d atmos/extra ]; then \
145             for i in atmos/extra/*.o; do \
146                 cp $$i atmos-`basename $$i` || exit 1; \
147             done \
148         fi
149
150 #-----------------------------------------------------------------------------
151 # C16, C116
152
153 .PHONY: c16lib
154 c16lib:
155         for i in runtime c16 cbm common conio dbg em joystick mouse tgi zlib; do \
156             $(MAKE) SYS=c16 -C $$i || exit 1; \
157             $(AR) a c16.lib $$i/*.o || exit 1; \
158         done
159         cp c16/*.joy .
160         cp c16/*.emd .
161         if [ -d c16/extra ]; then \
162             for i in c16/extra/*.o; do \
163                 cp $$i c16-`basename $$i` || exit 1; \
164             done \
165         fi
166
167 #-----------------------------------------------------------------------------
168 # C64
169
170 .PHONY: c64lib
171 c64lib:
172         for i in runtime c64 cbm common conio dbg em joystick mouse serial tgi zlib; do \
173             $(MAKE) SYS=c64 -C $$i || exit 1; \
174             $(AR) a c64.lib $$i/*.o || exit 1; \
175         done
176         cp c64/*.emd .
177         cp c64/*.joy .
178         cp c64/c64-1351.mou .
179         cp c64/c64-joymouse.mou c64-joy.mou
180         cp c64/c64-potmouse.mou c64-pot.mou
181         cp c64/*.ser .
182         cp c64/c64-320-200-2.tgi c64-hi.tgi
183         if [ -d c64/extra ]; then \
184             for i in c64/extra/*.o; do \
185                 cp $$i c64-`basename $$i` || exit 1; \
186             done \
187         fi
188
189 #-----------------------------------------------------------------------------
190 # C128
191
192 .PHONY: c128lib
193 c128lib:
194         for i in runtime c128 cbm common conio dbg em joystick mouse serial tgi zlib; do \
195             $(MAKE) SYS=c128 -C $$i || exit 1; \
196             $(AR) a c128.lib $$i/*.o || exit 1; \
197         done
198         cp c128/*.emd .
199         cp c128/*.joy .
200         cp c128/c128-1351.mou .
201         cp c128/c128-joymouse.mou c128-joy.mou
202         cp c128/c128-potmouse.mou c128-pot.mou
203         cp c128/*.ser .
204         cp c128/c128-640-200-2.tgi c128-vdc.tgi
205         cp c128/c128-640-480-2.tgi c128-vdc2.tgi
206         if [ -d cbm/extra ]; then \
207             for i in cbm/extra/*.o; do \
208                 cp $$i cbm-`basename $$i` || exit 1; \
209             done \
210         fi
211         if [ -d c128/extra ]; then \
212             for i in c128/extra/*.o; do \
213                 cp $$i c128-`basename $$i` || exit 1; \
214             done \
215         fi
216
217 #-----------------------------------------------------------------------------
218 # Commodore P500 / CBM 5x0
219
220 .PHONY: cbm510lib
221 cbm510lib:
222         for i in runtime cbm510 cbm common conio dbg em joystick mouse serial tgi zlib; do \
223             $(MAKE) SYS=cbm510 -C $$i || exit 1; \
224             $(AR) a cbm510.lib $$i/*.o || exit 1; \
225         done
226         cp cbm510/*.emd .
227         cp cbm510/cbm510-stdjoy.joy cbm510-std.joy
228         cp cbm510/cbm510-stdser.ser cbm510-std.ser
229         if [ -d cbm510/extra ]; then \
230             for i in cbm510/extra/*.o; do \
231                 cp $$i cbm510-`basename $$i` || exit 1; \
232             done \
233         fi
234
235 #-----------------------------------------------------------------------------
236 # PET-II series
237
238 .PHONY: cbm610lib
239 cbm610lib:
240         for i in runtime cbm610 cbm common conio dbg em joystick serial tgi zlib; do \
241             $(MAKE) SYS=cbm610 -C $$i || exit 1; \
242             $(AR) a cbm610.lib $$i/*.o || exit 1; \
243         done
244         cp cbm610/*.emd .
245         cp cbm610/cbm610-stdser.ser cbm610-std.ser
246         if [ -d cbm610/extra ]; then \
247             for i in cbm610/extra/*.o; do \
248                 cp $$i cbm610-`basename $$i` || exit 1; \
249             done \
250         fi
251
252 #-----------------------------------------------------------------------------
253 # GEOS on the Apple
254
255 .PHONY: geos-applelib
256 geos-applelib:
257         for i in geos-apple geos-common; do \
258             $(MAKE) SYS=geos-apple -C $$i || exit 1; \
259             $(AR) a geos-apple.lib $$i/*.o || exit 1; \
260         done
261         for i in runtime common conio em joystick tgi zlib; do \
262             $(MAKE) SYS=geos-apple -C $$i || exit 1; \
263             for objfile in $$i/*.o; do \
264                 BASENAME=`basename $$objfile`; \
265                 if [ -f geos-common/$$BASENAME ]; then \
266                     $(AR) a geos-apple.lib geos-common/$$BASENAME; \
267                 else \
268                     $(AR) a geos-apple.lib $$objfile; \
269                 fi; \
270             done \
271         done
272         if [ -d geos-apple/extra ]; then \
273             for i in geos-apple/extra/*.o; do \
274                 cp $$i geos-apple-`basename $$i` || exit 1; \
275             done \
276         fi
277
278 #-----------------------------------------------------------------------------
279 # GEOS on the C64/128
280
281 .PHONY: geos-cbmlib
282 geos-cbmlib:
283         for i in geos-cbm geos-common; do \
284             $(MAKE) SYS=geos-cbm -C $$i || exit 1; \
285             $(AR) a geos-cbm.lib $$i/*.o || exit 1; \
286         done
287         for i in runtime common conio em joystick tgi zlib; do \
288             $(MAKE) SYS=geos-cbm -C $$i || exit 1; \
289             for objfile in $$i/*.o; do \
290                 BASENAME=`basename $$objfile`; \
291                 if [ -f geos-common/$$BASENAME ]; then \
292                     $(AR) a geos-cbm.lib geos-common/$$BASENAME; \
293                 else \
294                     $(AR) a geos-cbm.lib $$objfile; \
295                 fi; \
296             done \
297         done
298         cp geos-cbm/*.emd .
299         cp geos-cbm/*.joy .
300         cp geos-cbm/*.tgi .
301         if [ -d geos-cbm/extra ]; then \
302             for i in geos-cbm/extra/*.o; do \
303                 cp $$i geos-cbm-`basename $$i` || exit 1; \
304             done \
305         fi
306
307 #-----------------------------------------------------------------------------
308 # Lynx
309
310 .PHONY: lynxlib
311 lynxlib:
312         for i in runtime lynx common conio em joystick serial tgi zlib; do \
313             $(MAKE) SYS=lynx -C $$i || exit 1; \
314             $(AR) a lynx.lib $$i/*.o || exit 1; \
315         done
316         cp lynx/*.joy .
317         cp lynx/*.ser .
318         cp lynx/*.tgi .
319         if [ -d lynx/extra ]; then \
320             for i in lynx/extra/*.o; do \
321                 cp $$i lynx-`basename $$i` || exit 1; \
322             done \
323         fi
324
325 #-----------------------------------------------------------------------------
326 # NES
327
328 .PHONY: neslib
329 neslib:
330         for i in runtime nes common conio em joystick tgi zlib; do \
331             $(MAKE) SYS=nes -C $$i || exit 1; \
332             $(AR) a nes.lib $$i/*.o || exit 1; \
333         done
334         cp nes/*.joy .
335         cp nes/*.tgi .
336         if [ -d nes/extra ]; then \
337             for i in nes/extra/*.o; do \
338                 cp $$i nes-`basename $$i` || exit 1; \
339             done \
340         fi
341
342 #-----------------------------------------------------------------------------
343 # CBM PET machines
344
345 .PHONY: petlib
346 petlib:
347         for i in runtime pet cbm common conio dbg em joystick tgi zlib; do \
348             $(MAKE) SYS=pet -C $$i || exit 1; \
349             $(AR) a pet.lib $$i/*.o || exit 1; \
350         done
351         cp pet/*.joy .
352         if [ -d pet/extra ]; then \
353             for i in pet/extra/*.o; do \
354                 cp $$i pet-`basename $$i` || exit 1; \
355             done \
356         fi
357
358 #-----------------------------------------------------------------------------
359 # Commodore Plus/4
360
361 .PHONY: plus4lib
362 plus4lib:
363         for i in runtime plus4 cbm common conio dbg em joystick mouse serial tgi zlib; do \
364             $(MAKE) SYS=plus4 -C $$i || exit 1; \
365             $(AR) a plus4.lib $$i/*.o || exit 1; \
366         done
367         cp plus4/*.joy .
368         cp plus4/*.ser .
369         if [ -d plus4/extra ]; then \
370             for i in plus4/extra/*.o; do \
371                 cp $$i plus4-`basename $$i` || exit 1; \
372             done \
373         fi
374
375 #-----------------------------------------------------------------------------
376 # Supervision
377
378 .PHONY: supervisionlib
379 supervisionlib:
380         for i in runtime supervision common; do \
381             $(MAKE) SYS=supervision -C $$i || exit 1; \
382             $(AR) a supervision.lib $$i/*.o || exit 1; \
383         done
384         if [ -d supervision/extra ]; then \
385             for i in supervision/extra/*.o; do \
386                 cp $$i supervision-`basename $$i` || exit 1; \
387             done \
388         fi
389
390 #-----------------------------------------------------------------------------
391 # Vic20
392
393 .PHONY: vic20lib
394 vic20lib:
395         for i in runtime vic20 cbm common conio dbg em joystick mouse tgi zlib; do \
396             $(MAKE) SYS=vic20 -C $$i || exit 1; \
397             $(AR) a vic20.lib $$i/*.o || exit 1; \
398         done
399         cp vic20/*.joy .
400         if [ -d vic20/extra ]; then \
401             for i in vic20/extra/*.o; do \
402                 cp $$i vic20-`basename $$i` || exit 1; \
403             done \
404         fi
405
406 #-----------------------------------------------------------------------------
407 # Dummy targets
408
409 .PHONY: mostly-clean
410 mostly-clean:
411         @for i in $(SHAREDDIRS); do \
412            $(MAKE) --no-print-directory -C $$i clean || exit 1; \
413         done
414
415 .PHONY: clean
416 clean:  mostly-clean
417         @for i in $(ALLTARGETS); do \
418            $(MAKE) -C $$i $@ || exit 1; \
419         done
420
421 .PHONY: zap
422 zap:
423         @for i in $(SHAREDDIRS) $(ALLTARGETS); do \
424            $(MAKE) -C $$i $@ || exit 1; \
425         done
426         @$(RM) *.lib *.o *.emd *.joy *.mou *.ser *.tgi