CHECK=-c
CLIB= ../../lib/
DCLIB= ../../dlib/
CINC= ../../include/
SDLFLAGS = $(shell sdl-config --cflags)
LIBS=$(CLIB)libgraftool-SDL.a
SHLIBS=$(CLIB)libgraftool-SDL.so
SRC= SDL/graftool-SDL.c
OBJECTS= graftool-SDL.o.o 
DEBUG=
OPTIM=
LDFLAGS= 
TESTFLAG=-g
CFLAGS=-rwstrings $(DEBUG) $(OPTIM) $(shell ./machdepLDOPTS shobj)
CC= gccopt
AxesCC= $(CC) $(CFLAGS) #gcc -O -finline-functions -fkeep-inline-functions -pipe -c -g -Q

HEADERFILES = SDL/graftool-SDL.h

SDL/graftool: SDL/tags $(MAKEFILE) $(SHLIBS) $(CINC)local/graftool-SDL.h SDL/.make_success
	touch SDL/graftool

SDL/.make_success:
	echo > SDL/.make_success

# Construct a shared library. Link in the dependencies. On some platforms (Linux), they then won't
# have to be included anymore. On others (Darwin...), they do, but at least one gets an indication of
# the missing library when one forgets to specify one (error about defining via indirectly linked library).
$(SHLIBS): $(LIBS) tmp
	-(cd tmp ; rm -rf * ;\
		ar x $(LIBS) ;\
		gccopt $(shell ./machdepLDOPTS shlib $(SHLIBS)) -o $(SHLIBS) $(OBJECTS) SDL_Application.o.o SDL_GetMouseScreen.o.o SDL_ThreadFunction.o.o \
			$(shell ./machdeplibs) $(shell sdl-config --libs) -lSDL_ttf -L$(CLIB) -lvars_sa ;\
		echo "It is normal to get warnings about undefined symbols on e.g. Darwin." ;\
		rm -f * )
	touch -r $(LIBS) tmp

tmp:
	-rm -rf tmp
	-mkdirhier tmp/.env

SDL/tags: SDL/$(OBJECTS:.o.o=.c) $(HEADERFILES)
	-(cd SDL ; /usr/bin/ctags -wdtu  *.[cmh] $(HEADERFILES) graftool-SDL.h )

$(CINC)local/graftool-SDL.h: $(HEADERFILES) 
	cp -p SDL/graftool-SDL.h $(CINC)local

$(LIBS): SDL/$(OBJECTS) SDL/SDL_ThreadFunction.o.o SDL/SDL_GetMouseScreen.o.o SDL/SDL_Application.o.o
	-rm -f tmp/.env/*
	ar rv $(LIBS) $?
	-ranlib $(LIBS)
	zero $?

SDL/graftool-SDL.o.o: SDL/graftool-SDL.c SDL/graftool-SDL.h  Graf_Macros.h $(CINC)local/Macros.h $(CINC)local/cpu.h
	rm -f $@
	$(CC) $(SDLFLAGS) $(CFLAGS) -o $@ $(CHECK) $(@:.o.o=.c)

SDL/SDL_Application.o.o: $(shell SDL/GMS-object Application) SDL/graftool-SDL.h
	SDL/GMS-compile $(CC) $(SDLFLAGS) $(CFLAGS) -o $@ $(CHECK) $<

SDL/SDL_GetMouseScreen.o.o: $(shell SDL/GMS-object GetMouseScreen) SDL/graftool-SDL.h
	SDL/GMS-compile $(CC) $(SDLFLAGS) $(CFLAGS) -o $@ $(CHECK) $<

SDL/SDL_ThreadFunction.o.o: $(shell SDL/GMS-object ThreadFunction) SDL/graftool-SDL.h
	SDL/GMS-compile $(CC) $(SDLFLAGS) $(CFLAGS) -o $@ $(CHECK) $<
