1# Makefile for targeting AmigaOS variants using GCC.
2# You must specify a target OS on the make command line:
3# make amigaos  : build for m68k-amigaos
4# make amigaos4 : build for ppc-amigaos4
5# make aros     : build for i386-aros
6# make morphos  : build for ppc-morphos
7
8ifeq ($(CROSS),)
9CC=gcc
10AS=as
11AR=ar
12RANLIB=ranlib
13else
14CC=$(CROSS)-gcc
15AS=$(CROSS)-as
16AR=$(CROSS)-ar
17RANLIB=$(CROSS)-ranlib
18endif
19
20# compiler flags
21CFLAGS   =-O2 -Wall
22CFLAGS  +=-ffast-math -fno-common
23#CFLAGS  +=-g
24CPPFLAGS =-DHAVE_LIMITS_H -DHAVE_SNPRINTF -DHAVE_UNISTD_H
25INCLUDE  =-I../amiga -I../include
26ARFLAGS  = cr
27LDFLAGS  =
28LDLIBS   =-L. -lmikmod
29CPPFLAGS_LIB =-DMIKMOD_BUILD
30
31ifeq ($(AROS),1)
32include gcc_aros.mk
33endif
34ifeq ($(MORPHOS),1)
35include gcc_morphos.mk
36endif
37ifeq ($(AOS3),1)
38include gcc_aos3.mk
39endif
40ifeq ($(AOS4),1)
41include gcc_aos4.mk
42endif
43
44# disable the high quality mixer (build only with the standart mixer)
45#CPPFLAGS_LIB+=-DNO_HQMIXER
46
47# support for AHI output:
48CPPFLAGS_LIB+=-DDRV_AHI
49# support for wav file output:
50CPPFLAGS_LIB+=-DDRV_WAV
51# support for aiff file output:
52CPPFLAGS_LIB+=-DDRV_AIFF
53# support for output raw data to a file:
54CPPFLAGS_LIB+=-DDRV_RAW
55
56COMPILE_LIB=$(CC) -c $(CFLAGS) $(INCLUDE) $(CPPFLAGS) $(CPPFLAGS_LIB)
57COMPILE_APP=$(CC) -c $(CFLAGS) $(INCLUDE) $(CPPFLAGS)
58
59.SUFFIXES:
60.SUFFIXES: .o .c
61
62LIB=libmikmod.a
63APP=splay splayFP splayMEM splayMEM2 soundeffects
64
65OBJ=objs/drv_ahi.o \
66    objs/drv_raw.o \
67    objs/drv_aiff.o \
68    objs/drv_wav.o \
69    objs/drv_nos.o \
70    objs/strcasecmp.o \
71    objs/load_669.o \
72    objs/load_amf.o \
73    objs/load_asy.o \
74    objs/load_dsm.o \
75    objs/load_far.o \
76    objs/load_gdm.o \
77    objs/load_gt2.o \
78    objs/load_it.o \
79    objs/load_imf.o \
80    objs/load_m15.o \
81    objs/load_med.o \
82    objs/load_mod.o \
83    objs/load_mtm.o \
84    objs/load_okt.o \
85    objs/load_s3m.o \
86    objs/load_stm.o \
87    objs/load_stx.o \
88    objs/load_ult.o \
89    objs/load_umx.o \
90    objs/load_uni.o \
91    objs/load_xm.o \
92    objs/mmalloc.o \
93    objs/mmerror.o \
94    objs/mmio.o \
95    objs/mdriver.o \
96    objs/mdreg.o \
97    objs/mmcmp.o \
98    objs/pp20.o \
99    objs/s404.o \
100    objs/xpk.o \
101    objs/mloader.o \
102    objs/mlreg.o \
103    objs/mlutil.o \
104    objs/mplayer.o \
105    objs/munitrk.o \
106    objs/mwav.o \
107    objs/npertab.o \
108    objs/sloader.o \
109    objs/virtch.o \
110    objs/virtch2.o \
111    objs/virtch_common.o
112#   objs/mdulaw.o
113
114all: $(LIB) $(APP)
115
116aros:
117	@echo Building for i386-aros
118	$(MAKE) AROS=1
119morphos:
120	@echo Building for ppc-morphos
121	$(MAKE) MORPHOS=1
122amigaos:
123	@echo Building for m68k-amigaos
124	$(MAKE) AOS3=1
125amigaos4:
126	@echo Building for ppc-amigaos4
127	$(MAKE) AOS4=1
128
129clean:
130	rm -f $(APP) $(LIB) *.lib objs/*.o
131
132$(LIB): $(OBJ)
133	$(AR) $(ARFLAGS) $@ $(OBJ)
134	$(RANLIB) $@
135
136splay: $(LIB) objs/amiga.o objs/splay.o
137	$(CC) objs/amiga.o objs/splay.o $(LDFLAGS) $(LDLIBS) -o splay
138splayFP: $(LIB) objs/amiga.o objs/splayFP.o
139	$(CC) objs/amiga.o objs/splayFP.o $(LDFLAGS) $(LDLIBS) -o splayFP
140splayMEM: $(LIB) objs/amiga.o objs/myloader.o objs/splayMEM.o
141	$(CC) objs/amiga.o objs/myloader.o objs/splayMEM.o $(LDFLAGS) $(LDLIBS) -o splayMEM
142splayMEM2: $(LIB) objs/amiga.o objs/splayMEM2.o
143	$(CC) objs/amiga.o objs/splayMEM2.o $(LDFLAGS) $(LDLIBS) -o splayMEM2
144soundeffects: $(LIB) objs/amiga.o objs/soundeffects.o
145	$(CC) objs/amiga.o objs/soundeffects.o $(LDFLAGS) $(LDLIBS) -o soundeffects
146
147HEADER_DEPS=../include/mikmod.h ../include/mikmod_internals.h ../include/mikmod_ctype.h
148objs/drv_ahi.o: ../drivers/drv_ahi.c $(HEADER_DEPS)
149	$(COMPILE_LIB) ../drivers/drv_ahi.c -o objs/drv_ahi.o
150objs/drv_nos.o: ../drivers/drv_nos.c $(HEADER_DEPS)
151	$(COMPILE_LIB) ../drivers/drv_nos.c -o objs/drv_nos.o
152objs/drv_raw.o: ../drivers/drv_raw.c $(HEADER_DEPS)
153	$(COMPILE_LIB) ../drivers/drv_raw.c -o objs/drv_raw.o
154objs/drv_aiff.o: ../drivers/drv_aiff.c $(HEADER_DEPS)
155	$(COMPILE_LIB) ../drivers/drv_aiff.c -o objs/drv_aiff.o
156objs/drv_wav.o: ../drivers/drv_wav.c $(HEADER_DEPS)
157	$(COMPILE_LIB) ../drivers/drv_wav.c -o objs/drv_wav.o
158objs/load_669.o: ../loaders/load_669.c $(HEADER_DEPS)
159	$(COMPILE_LIB) ../loaders/load_669.c -o objs/load_669.o
160objs/load_amf.o: ../loaders/load_amf.c $(HEADER_DEPS)
161	$(COMPILE_LIB) ../loaders/load_amf.c -o objs/load_amf.o
162objs/load_asy.o: ../loaders/load_asy.c $(HEADER_DEPS)
163	$(COMPILE_LIB) ../loaders/load_asy.c -o objs/load_asy.o
164objs/load_dsm.o: ../loaders/load_dsm.c $(HEADER_DEPS)
165	$(COMPILE_LIB) ../loaders/load_dsm.c -o objs/load_dsm.o
166objs/load_far.o: ../loaders/load_far.c $(HEADER_DEPS)
167	$(COMPILE_LIB) ../loaders/load_far.c -o objs/load_far.o
168objs/load_gdm.o: ../loaders/load_gdm.c $(HEADER_DEPS)
169	$(COMPILE_LIB) ../loaders/load_gdm.c -o objs/load_gdm.o
170objs/load_gt2.o: ../loaders/load_gt2.c $(HEADER_DEPS)
171	$(COMPILE_LIB) ../loaders/load_gt2.c -o objs/load_gt2.o
172objs/load_it.o: ../loaders/load_it.c $(HEADER_DEPS)
173	$(COMPILE_LIB) ../loaders/load_it.c -o objs/load_it.o
174objs/load_imf.o: ../loaders/load_imf.c $(HEADER_DEPS)
175	$(COMPILE_LIB) ../loaders/load_imf.c -o objs/load_imf.o
176objs/load_m15.o: ../loaders/load_m15.c $(HEADER_DEPS)
177	$(COMPILE_LIB) ../loaders/load_m15.c -o objs/load_m15.o
178objs/load_med.o: ../loaders/load_med.c $(HEADER_DEPS)
179	$(COMPILE_LIB) ../loaders/load_med.c -o objs/load_med.o
180objs/load_mod.o: ../loaders/load_mod.c $(HEADER_DEPS)
181	$(COMPILE_LIB) ../loaders/load_mod.c -o objs/load_mod.o
182objs/load_mtm.o: ../loaders/load_mtm.c $(HEADER_DEPS)
183	$(COMPILE_LIB) ../loaders/load_mtm.c -o objs/load_mtm.o
184objs/load_okt.o: ../loaders/load_okt.c $(HEADER_DEPS)
185	$(COMPILE_LIB) ../loaders/load_okt.c -o objs/load_okt.o
186objs/load_s3m.o: ../loaders/load_s3m.c $(HEADER_DEPS)
187	$(COMPILE_LIB) ../loaders/load_s3m.c -o objs/load_s3m.o
188objs/load_stm.o: ../loaders/load_stm.c $(HEADER_DEPS)
189	$(COMPILE_LIB) ../loaders/load_stm.c -o objs/load_stm.o
190objs/load_stx.o: ../loaders/load_stx.c $(HEADER_DEPS)
191	$(COMPILE_LIB) ../loaders/load_stx.c -o objs/load_stx.o
192objs/load_ult.o: ../loaders/load_ult.c $(HEADER_DEPS)
193	$(COMPILE_LIB) ../loaders/load_ult.c -o objs/load_ult.o
194objs/load_umx.o: ../loaders/load_umx.c $(HEADER_DEPS)
195	$(COMPILE_LIB) ../loaders/load_umx.c -o objs/load_umx.o
196objs/load_uni.o: ../loaders/load_uni.c $(HEADER_DEPS)
197	$(COMPILE_LIB) ../loaders/load_uni.c -o objs/load_uni.o
198objs/load_xm.o: ../loaders/load_xm.c $(HEADER_DEPS)
199	$(COMPILE_LIB) ../loaders/load_xm.c -o objs/load_xm.o
200objs/mmalloc.o: ../mmio/mmalloc.c $(HEADER_DEPS)
201	$(COMPILE_LIB) ../mmio/mmalloc.c -o objs/mmalloc.o
202objs/mmerror.o: ../mmio/mmerror.c $(HEADER_DEPS)
203	$(COMPILE_LIB) ../mmio/mmerror.c -o objs/mmerror.o
204objs/mmio.o: ../mmio/mmio.c $(HEADER_DEPS)
205	$(COMPILE_LIB) ../mmio/mmio.c -o objs/mmio.o
206objs/mmcmp.o: ../depackers/mmcmp.c $(HEADER_DEPS)
207	$(COMPILE_LIB) ../depackers/mmcmp.c -o objs/mmcmp.o
208objs/pp20.o: ../depackers/pp20.c $(HEADER_DEPS)
209	$(COMPILE_LIB) ../depackers/pp20.c -o objs/pp20.o
210objs/s404.o: ../depackers/s404.c $(HEADER_DEPS)
211	$(COMPILE_LIB) ../depackers/s404.c -o objs/s404.o
212objs/xpk.o: ../depackers/xpk.c $(HEADER_DEPS)
213	$(COMPILE_LIB) ../depackers/xpk.c -o objs/xpk.o
214objs/mdriver.o: ../playercode/mdriver.c $(HEADER_DEPS)
215	$(COMPILE_LIB) ../playercode/mdriver.c -o objs/mdriver.o
216objs/mdreg.o: ../playercode/mdreg.c $(HEADER_DEPS)
217	$(COMPILE_LIB) ../playercode/mdreg.c -o objs/mdreg.o
218objs/mdulaw.o: ../playercode/mdulaw.c $(HEADER_DEPS)
219	$(COMPILE_LIB) ../playercode/mdulaw.c -o objs/mdulaw.o
220objs/mloader.o: ../playercode/mloader.c $(HEADER_DEPS)
221	$(COMPILE_LIB) ../playercode/mloader.c -o objs/mloader.o
222objs/mlreg.o: ../playercode/mlreg.c $(HEADER_DEPS)
223	$(COMPILE_LIB) ../playercode/mlreg.c -o objs/mlreg.o
224objs/mlutil.o: ../playercode/mlutil.c $(HEADER_DEPS)
225	$(COMPILE_LIB) ../playercode/mlutil.c -o objs/mlutil.o
226objs/mplayer.o: ../playercode/mplayer.c $(HEADER_DEPS)
227	$(COMPILE_LIB) ../playercode/mplayer.c -o objs/mplayer.o
228objs/munitrk.o: ../playercode/munitrk.c $(HEADER_DEPS)
229	$(COMPILE_LIB) ../playercode/munitrk.c -o objs/munitrk.o
230objs/mwav.o: ../playercode/mwav.c $(HEADER_DEPS)
231	$(COMPILE_LIB) ../playercode/mwav.c -o objs/mwav.o
232objs/npertab.o: ../playercode/npertab.c $(HEADER_DEPS)
233	$(COMPILE_LIB) ../playercode/npertab.c -o objs/npertab.o
234objs/sloader.o: ../playercode/sloader.c $(HEADER_DEPS)
235	$(COMPILE_LIB) ../playercode/sloader.c -o objs/sloader.o
236objs/virtch.o: ../playercode/virtch.c ../playercode/virtch_common.c $(HEADER_DEPS)
237	$(COMPILE_LIB) ../playercode/virtch.c -o objs/virtch.o
238objs/virtch2.o: ../playercode/virtch2.c ../playercode/virtch_common.c $(HEADER_DEPS)
239	$(COMPILE_LIB) ../playercode/virtch2.c -o objs/virtch2.o
240objs/virtch_common.o: ../playercode/virtch_common.c $(HEADER_DEPS)
241	$(COMPILE_LIB) ../playercode/virtch_common.c -o objs/virtch_common.o
242objs/strcasecmp.o: ../posix/strcasecmp.c $(HEADER_DEPS)
243	$(COMPILE_LIB) ../posix/strcasecmp.c -o objs/strcasecmp.o
244
245objs/amiga.o:  ../examples/amiga.c
246	$(COMPILE_APP) ../examples/amiga.c -o objs/amiga.o
247objs/splay.o: ../examples/simpleplay/splay.c $(HEADER_DEPS)
248	$(COMPILE_APP) ../examples/simpleplay/splay.c -o objs/splay.o
249objs/splayFP.o: ../examples/simpleplayFP/splayFP.c $(HEADER_DEPS)
250	$(COMPILE_APP) ../examples/simpleplayFP/splayFP.c -o objs/splayFP.o
251objs/myloader.o: ../examples/simpleplayMEM/myloader.c ../examples/simpleplayMEM/myloader.h $(HEADER_DEPS)
252	$(COMPILE_APP) -I../examples/simpleplayMEM ../examples/simpleplayMEM/myloader.c -o objs/myloader.o
253objs/splayMEM.o: ../examples/simpleplayMEM/splayMEM.c ../examples/simpleplayMEM/myloader.h $(HEADER_DEPS)
254	$(COMPILE_APP) -I../examples/simpleplayMEM ../examples/simpleplayMEM/splayMEM.c -o objs/splayMEM.o
255objs/splayMEM2.o: ../examples/simpleplayMEM2/splayMEM2.c $(HEADER_DEPS)
256	$(COMPILE_APP) ../examples/simpleplayMEM2/splayMEM2.c -o objs/splayMEM2.o
257objs/soundeffects.o: ../examples/soundeffects/soundeffects.c $(HEADER_DEPS)
258	$(COMPILE_APP) ../examples/soundeffects/soundeffects.c -o objs/soundeffects.o
259
260