
TARGETS = libGL.so driver.so sample

CC = gcc
CFLAGS = -O2 -g -fomit-frame-pointer
LIBS = -L. -lGL -lm -ldl


LIBGL_CFILES = \
	libgl_init.c

LIBGL_SFILES = \
	libgl_dispatch.S

LIBGL_OBJECTS = $(LIBGL_CFILES:.c=.o) $(LIBGL_SFILES:.S=.o)

DRIVER_CFILES = \
	driver_init.c

DRIVER_SFILES = \
	driver_api.S

DRIVER_OBJECTS = $(DRIVER_CFILES:.c=.o) $(DRIVER_SFILES:.S=.o)


##### RULES #####

.c.o:
	$(CC) -c -I. $(CFLAGS) -o $@ $<

.S.o:
	$(CC) -c -I. $(CFLAGS) -o $@ $<

.c:
	$(CC) $(CFLAGS) -o $@ $< $(LIBS)

%.dump:	%.o
	objdump -d $< > $@


##### TARGETS #####

default: $(TARGETS)

libGL.so: $(LIBGL_OBJECTS)
	$(CC) -shared -o $@ $(LIBGL_OBJECTS)

driver.so: $(DRIVER_OBJECTS)
	$(CC) -shared -o $@ $(DRIVER_OBJECTS)

run:
	LD_LIBRARY_PATH=. ./sample

clean:
	rm -f $(TARGETS)
	rm -f *.o *.dump *~
