# Flags for yconfigure:
# yuse c_compiler         required
# yuse thorough_arch_checks
# yuse f77_compiler       required
# yuse f77_cpp            required
# yuse f77_c_link         required
# yuse usleep
# yuse bsdsock
# yuse clock_gettime
# yuse gettimeofday
# yuse ftime
# yuse x11_lib            required
# yuse x11_double
# yuse x11_multi
# yuse Xco                required
# yuse y4vm               required
# yuse type_sizes         required

TARGET=ymol
TARGET2=trimoljoin
TARGET3=libymol.a

OBJS=main.o userinterface.o xinterface.o fortraninterface.o render.o periodic_table.o rotpanel.o tables.o import.o world.o transformationmatrix.o tempdirname.o fstring.o ppm.o draw_primitives.o misc.o drawevents.o mouserotate.o ymolbg.o atomlabel.o labeldraw.o pcolor.o modify.o bondrules.o bondrulehandler.o triangleworld.o importinterface.o atomprop.o bondprop.o selectanimate.o povraywrite.o render_params.o errorhandler.o aboutymol.o vmconsole.o ymolvm.o worldmemory.o ymolrc.o showframeno.o ymolsignal.o atomparams.o filenamegood.o measure.o pcx.o register_update.o postscript.o povraybg.o frametext.o lights.o dxexport.o cell_search.o sockimport.o polygonrules.o $(EXTRA_OBJS)

OBJS2=trimoljoin.o

OBJS3=sockwrite.o fortransocket.o

SRCS=src/*.F src/*.h src/*.c src/*.commonblock src/README src/LICENSE src/*.tbl src/*.make src/Makefilebody src/Makefile src/*.y4 Makefile INSTALL README LICENSE yconfigure make-install.sh misc/oswrap.sh src/bitmaps src/cimages src/.ymol src/*.mol src/*.ymol demos/*.ymol demos/*.y4 demos/*.ppm dxnets/* src/*.py src/ymolsock.h src/testsock.c src/testsock.F src/testsockbond.F scripts/* misc/t2mol
BACKUP=$(SRCS) src/CHANGES doc/*.tex doc/*.eps

BINDISTFILES=src/$(TARGET) src/README src/LICENSE src/*.mol src/*.ymol src/.ymol INSTALL README LICENSE Makefile make-install.sh misc/oswrap.sh src/*.py src/libymol.a src/ymolsock.h src/testsock.c src/testsock.F src/testsockbond.F scripts/*

.SUFFIXES:
.SUFFIXES: .c .o .F .h .s .S .c


all : $(TARGET) $(TARGET2) $(TARGET3)

clean :
	rm -f $(TARGET) *.o *.f$(CASEINSENSITIVE)

$(TARGET) : $(OBJS)
	$(CC) $(DEBUGOPT) $(CCOPTS) $(LIBDIRS) -o $@ $(OBJS) $(LIBS) $(GLLIBS) $(XLIBS) $(FLIBS)
	rm -f main.o
	rm -f aboutymol.o


$(TARGET2) : $(OBJS2)
	$(CC) $(DEBUGOPT) $(CCOPTS) $(LIBDIRS) -o $@ $(OBJS2) $(LIBS)

$(TARGET3) : $(OBJS3)
	ar rs $@ $(OBJS3)

src-dist :
	cd .. ; $(TAR) $(TAROPTS) $(TARGET)-$(PROGRAMVERSION)-src.tar $(SRCS)
	cd .. ; $(COMPRESS) $(COMPRESSOPTS) $(TARGET)-$(PROGRAMVERSION)-src.tar

backup : updateversion
	rm -f programversion.h
	./updateversion <version.tbl >version.tmp
	mv version.tmp version.tbl
	cd .. ; $(TAR) $(TAROPTS) $(TARGET)-$(PROGRAMVERSION)-bak.tar $(BACKUP)
	cd .. ; $(COMPRESS) $(COMPRESSOPTS) $(TARGET)-$(PROGRAMVERSION)-bak.tar

bin-dist : all
	strip $(TARGET)
	cd .. ; $(TAR) $(TAROPTS) $(TARGET)-$(PROGRAMVERSION)-bin-$(OSFULLNAME).tar $(BINDISTFILES)
	cd .. ; $(COMPRESS) $(COMPRESSOPTS) $(TARGET)-$(PROGRAMVERSION)-bin-$(OSFULLNAME).tar

flint : all
	ftnchek -columns -f77=long-line -portability *.f |tee flint.lst |less

lines : all
	wc *.F *.c *.h *.commonblock

updateversion : updateversion.c
	$(CC) $(CCOPTS) -o updateversion updateversion.c


.F.o :
	$(FCPP) $(FCPPOPTS) -DOSFULLNAME=$(OSFULLNAME) -D$(OSNAME) $< >$*.f$(CASEINSENSITIVE)
	$(F77) $(F77WARNINGS) $(DEBUGOPT) $(F77OPTS) -c $*.f$(CASEINSENSITIVE)

.c.o :
	$(CC) $(WARNINGS) -DOSFULLNAME=$(OSFULLNAME) -D$(OSNAME) $(DEBUGOPT) $(CCOPTS) $(INCLUDEDIRS) -c $<

.S.o :
	$(CC) $(CCOPTS) -c $<

