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