# Makefile for X-applications  
#	wolf 6/94

include grafix.mk

DEMOS = hello win-demo edit-demo file-browser cursors calc \
	pal-demo lat-demo lat2demo one-dim two-dim

TOSHAR = window.c window.h lat_win.c lat_man.c reg_man.c lattice.h \
	palette.c palette.h files.c files.h smolark.c smolark.h solver.c \
	icon.h eventnames.h README.txt HOWTO.txt COPYING Makefile grafix.mk \
	calc.icon $(DEMOS:%=%.c) 

demos: $(DEMOS)
# make demos = ~ 100 sec P90

win-demo: win-demo.o window.o
win-demo.o: win-demo.c window.h
edit-demo.o: edit-demo.c window.h
one-dim.o: one-dim.c window.h
two-dim.o: two-dim.c window.h lattice.h
pal-demo.o: pal-demo.c window.h
calc.o: calc.c window.h
cursors.o: cursors.c

window.o: window.h window.c
	$(CC) $(CFLAGS) window.c  

# wie kann man das rm %.o verhindern ?????
# wahrscheinlich nur durch explizite dependency "xxx.o: xxx.c"

#clear suffixes list :
.SUFFIXES:

%: 	%.o window.o  
#	@echo "pattern matching rule %: %.o"
	$(CC) window.o $< -o $@ $(LFLAGS) 

%.o:	%.c 
#	@echo "pattern matching rule %.o: %.c"
	$(CC) $(CFLAGS) $< -o $@

# die Klassen zu lattice.h verteilen sich auf lat_win, lat_man, reg_man
LATTICE = lat_win.o lat_man.o reg_man.o
lat_win.o: lat_win.c lattice.h window.h
lat_man.o: lat_man.c lattice.h window.h
reg_man.o: reg_man.c lattice.h window.h

palette.o: palette.c palette.h window.h

libwin.a: window.o palette.o $(LATTICE) 
	$(AR) libwin.a $?
	ranlib libwin.a

pal-demo: pal-demo.o libwin.a
	$(CC)  $@.o -o $@ libwin.a  $(LFLAGS) 

lat-demo: lat-demo.o libwin.a
	$(CC)  $@.o -o $@ libwin.a  $(LFLAGS) 

lat2demo: lat2demo.o libwin.a
	$(CC) window.o $@.o -o $@ libwin.a  $(LFLAGS) 

one-dim: one-dim.o solver.o window.o  
	$(CC) window.o solver.o $@.o -o $@  $(LFLAGS) 

two-dim: two-dim.o smolark.o libwin.a
	$(CC) smolark.o $@.o -o $@ libwin.a  $(LFLAGS) 

file-browser: file-browser.o window.o files.o
	$(CC) window.o files.o $@.o -o $@  $(LFLAGS) 

lat-demo.o: lat-demo.c lattice.h window.h
lat2demo.o: lat2demo.c lattice.h window.h

clean:
	\rm -f *.o *.a *# $(DEMOS)
# 
####### make shell archives for comp.sources.misc -> subdir upload #####
shar:
	shar -o Grafix.shar -l 100 -n Grafix  -a -s wolf@first.gmd.de \
	$(TOSHAR)
	cat intro.txt Grafix.shar.01 > tmp; mv -f tmp Grafix.shar.01
	mv *.shar* post/; 

shartest:
	cd post; unshar *shar*; gmake demos;

###### generate tar-file for uploading to #####
# "make tgz" - generates grafix.tgz file

tgz: 
	tar -czh -f grafix.tgz $(TOSHAR)

list-tgz:
	tar -tzf grafix.tgz

test-tgz:
	cp grafix.tgz tgz/
	cd tgz; tar -xvzf grafix.tgz; gmake all

# runs all the demos :
demorun:
	@for demo in $(DEMOS); do (echo "running $$demo"; $$demo;); done

