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