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