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