1include ../CONFIGVARS
2
3#
4# The NFOSMesa code does nothing but call out to the
5# emulator, so there is no need to create extra m68k/20/30/40 versions.
6# We create a coldfire binary, though.
7# (of course a v4e binary makes only sense when Aranym is emulating a FireBEE ;)
8#
9CFLAGS  = -O2 -fomit-frame-pointer -Wall -I. -DTGL_ENABLE_CHECKS
10ASFLAGS =
11LDFLAGS = -lldg -lgem
12
13NOSTARTUP=yes
14
15OBJECTS = nfosmesa.o lib-osmesa.o lib-oldmesa.o lib-misc.o lib-ldg.o lib-gl.o natfeat.o natfeat_asm.o
16
17ifeq ($(NOSTARTUP),yes)
18OBJECTS += crtinit.o libc.o
19LDFLAGS += -lgcc
20CRT0 = crt0.o
21STARTUP = -nostartfiles -nostdlib
22endif
23
24
25M68K_OBJECTS = $(OBJECTS:.o=_68k.o)
26MV4E_OBJECTS = $(OBJECTS:.o=_v4e.o)
27
28M68K_FLAGS = -m68000
29M020_FLAGS = -m68020-60
30M030_FLAGS = -m68030 -m68881
31M060_FLAGS = -m68060
32MV4E_FLAGS = -mcpu=5475
33
34all:	dirs m68k/osmesa.ldg v4e/osmesa.ldg \
35	m68k/tiny_gl.ldg v4e/tiny_gl.ldg \
36	m68k/tiny_gl.slb m68k/osmesa.slb
37
38
39crt0.o: crt0.S
40	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
41
42
43
44m68k/osmesa.ldg:	$(CRT0) $(M68K_OBJECTS)
45	$(AM_V_LD)${CC} $(M68K_FLAGS) -o $@ $(STARTUP)  $^ ${LDFLAGS}
46	$(AM_V_at)${STRIP} $@
47
48nfosmesa_68k.o: nfosmesa.c
49	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
50
51lib-osmesa_68k.o: lib-osmesa.c
52	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
53
54lib-oldmesa_68k.o: lib-oldmesa.c
55	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
56
57lib-misc_68k.o: lib-misc.c
58	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
59
60lib-ldg_68k.o: lib-ldg.c
61	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
62
63lib-gl_68k.o: lib-gl.c
64	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
65
66natfeat_68k.o: ../natfeat/natfeat.c
67	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
68
69natfeat_asm_68k.o: ../natfeat/natfeat_asm.S
70	$(AM_V_CC)$(CC) $(ASFLAGS) $(M68K_FLAGS) -c -o $@ $<
71
72
73v4e/osmesa.ldg:	$(CRT0) $(MV4E_OBJECTS)
74	$(AM_V_LD)${CC} $(MV4E_FLAGS) -o $@ $(STARTUP) $^ ${LDFLAGS}
75	$(AM_V_at)${STRIP} $@
76
77nfosmesa_v4e.o: nfosmesa.c
78	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
79
80lib-osmesa_v4e.o: lib-osmesa.c
81	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
82
83lib-oldmesa_v4e.o: lib-oldmesa.c
84	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
85
86lib-misc_v4e.o: lib-misc.c
87	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
88
89lib-ldg_v4e.o: lib-ldg.c
90	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
91
92lib-gl_v4e.o: lib-gl.c
93	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
94
95natfeat_v4e.o: ../natfeat/natfeat.c
96	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
97
98natfeat_asm_v4e.o: ../natfeat/natfeat_asm.S
99	$(AM_V_CC)$(CC) $(ASFLAGS) $(MV4E_FLAGS) -c -o $@ $<
100
101
102TINY_OBJECTS = nftiny_gl.o lib-osmesa.o lib-oldmesa.o lib-misc.o lib-ldg.o lib-tinygl.o natfeat.o natfeat_asm.o
103
104ifeq ($(NOSTARTUP),yes)
105TINY_OBJECTS += crtinit.o libc.o
106endif
107
108TINY_M68K_OBJECTS = $(TINY_OBJECTS:.o=_68k.o)
109TINY_MV4E_OBJECTS = $(TINY_OBJECTS:.o=_v4e.o)
110
111m68k/tiny_gl.ldg:	$(CRT0) $(TINY_M68K_OBJECTS)
112	$(AM_V_LD)${CC} $(M68K_FLAGS) -o $@ $(STARTUP) $^ ${LDFLAGS}
113	$(AM_V_at)${STRIP} $@
114
115nftiny_gl_68k.o: nftiny_gl.c
116	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
117
118lib-tinygl_68k.o: lib-tinygl.c lib-gl.c
119	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
120
121crtinit_68k.o: crtinit.c
122	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
123
124libc_68k.o: libc.c
125	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) -c -o $@ $<
126
127
128
129v4e/tiny_gl.ldg:	$(CRT0) $(TINY_MV4E_OBJECTS)
130	$(AM_V_LD)${CC} $(MV4E_FLAGS) -o $@ $(STARTUP) $^ ${LDFLAGS}
131	$(AM_V_at)${STRIP} $@
132
133nftiny_gl_v4e.o: nftiny_gl.c
134	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
135
136lib-tinygl_v4e.o: lib-tinygl.c lib-gl.c
137	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
138
139crtinit_v4e.o: crtinit.c
140	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
141
142libc_v4e.o: libc.c
143	$(AM_V_CC)$(CC) $(CFLAGS) $(MV4E_FLAGS) -c -o $@ $<
144
145
146STRIPEX = ../tools/stripex
147
148# -ffreestanding is needed to prevent GNU-C from optimizing fprintf to fputs
149# -fno-unit-at-a-time is needed to prevent static functions
150# to be moved before the SLB header
151SLB_CFLAGS = -fno-unit-at-a-time -ffreestanding
152
153TINYGL_SLB_OBJS=tiny_gl_slb.o lib-osmesa_68k.o lib-oldmesa_68k.o lib-misc_68k.o libc_68k.o natfeat_68k.o natfeat_asm_68k.o
154OSMESA_SLB_OBJS=osmesa_slb.o lib-osmesa_68k.o lib-oldmesa_68k.o lib-misc_68k.o libc_68k.o natfeat_68k.o natfeat_asm_68k.o
155
156# -mprg-flags,15 is fastload, load to ttram, mallocs from ttram, and bit3 required for SLBs
157m68k/tiny_gl.slb: $(TINYGL_SLB_OBJS) $(STRIPEX)
158	$(AM_V_LD)$(CC) $(M68K_FLAGS) -nostartfiles -nostdlib -Wl,--mprg-flags,15 -Wl,-b,a.out-mintprg -s -o $@ $(TINYGL_SLB_OBJS) -lgcc
159	$(AM_V_at)$(STRIPEX) $@
160
161m68k/osmesa.slb: $(OSMESA_SLB_OBJS) $(STRIPEX)
162	$(AM_V_LD)$(CC) $(M68K_FLAGS) -nostartfiles -nostdlib -Wl,--mprg-flags,15 -Wl,-b,a.out-mintprg -s -o $@ $(OSMESA_SLB_OBJS) -lgcc
163	$(AM_V_at)$(STRIPEX) $@
164
165tiny_gl_slb.o: tiny_gl_slb.c
166	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) $(SLB_CFLAGS) -c -o $@ $<
167osmesa_slb.o: osmesa_slb.c
168	$(AM_V_CC)$(CC) $(CFLAGS) $(M68K_FLAGS) $(SLB_CFLAGS) -c -o $@ $<
169
170$(STRIPEX): ../tools/stripex.c
171	$(AM_V_CC)$(NATIVECC) $(NATIVECFLAGS) -o $@ $<
172
173
174dirs:
175	$(AM_V_at)$(MKDIR_P) m68k v4e
176
177clean:
178	rm -f *.o m68k/*.ldg m68k/*.slb v4e/*.ldg v4e/*.slb $(STRIPEX)
179	-rmdir m68k v4e
180
181TESTDIR=/windows/c/atari/src/ldg-code/test
182cptest: tinygl_load.c
183	cp nfosmesa_load.c $(TESTDIR)/nfosmesa.c
184	cp tinygl_load.c $(TESTDIR)/nftinygl.c
185	cp tinygl_loadslb.c $(TESTDIR)/tinyslb.c
186	cp ldg/nfosmesa.h $(TESTDIR)/ldg
187	cp ldg/tiny_gl.h $(TESTDIR)/ldg
188	cp slb/tiny_gl.h $(TESTDIR)/slb
189	cd $(TESTDIR) && cr2nl -d -R .
190