# XDrawChem configuration stuff
# INSTDIR: The directory where the binary will go.  Should be in your path.
#          The default is /usr/local/bin
# INSTRING: The directory where you will store ring templates.
# Default should be /usr/local/lib/xdrawchem
# SERVER: database server.  OK to set to "herger.ibb.gatech.edu";
#         as of version 0.98, there are no other servers  :)

INSTDIR = /usr/local/bin
INSTRING = /usr/local/lib/xdrawchem
xdc_server = herger.ibb.gatech.edu

## Platform-specific flags -- uncomment appropriate section
## For Linux, SGI IRIX 6.5 using gcc/g++
CXX	=	g++
INCPATH =	-I/usr/include -I$(QTDIR)/include
LIBS	=	-lqt -lXext -lX11 -lm
MOC	=	$(QTDIR)/bin/moc

## for Sun
#CXX	=	CC
#INCPATH =	-I/usr/include -I$(QTDIR)/include
#LIBS	=	-lqt -lXext -lX11 -lm
#MOC	=	$(QTDIR)/bin/moc

## For FreeBSD and NetBSD
#CXX	=	g++
#INCPATH =       -I/usr/include -I/usr/X11R6/include/qt2
#LIBS    =       -lqt2 -lXext -lX11 -lm
#MOC     =       $(QTDIR)/bin/moc2

## end of platform-specific flags

## other compiler flags
CXXFLAGS = -g -DUNIX -DRINGHOME=\"${INSTRING}\" -DXDC_SERVER=\"${xdc_server}\"
CC	=	gcc
#CFLAGS	=	-DRINGHOME=$(RINGDIR) -DXDC_SERVER=$(SERVER)
LFLAGS	=	-L$(QTDIR)/lib -L/usr/lib -L/usr/X11R6/lib


####### Target

DESTDIR = ./
TARGET	= xdrawchem

####### Files

HEADERS =	application.h render2d.h chemdata.h drawable.h molecule.h \
	bond.h text.h arrow.h bracket.h manual.h cml.h ringdialog.h \
	fixeddialog.h symbol.h curvearrow.h graphdialog.h graphwidget.h \
	xml_reader.h cdxml_reader.h namer.h netdialog.h pagesetupdialog.h \
	netaccess.h netchoosedialog.h bondedit.h xdc_toolbutton.h \
	previewwidget.h http.h
SOURCES =	main.cpp application.cpp render2d.cpp render2d_event.cpp \
	chemdata.cpp render2d_draw.cpp drawable.cpp molecule.cpp bond.cpp \
	render2d_text.cpp text.cpp arrow.cpp bracket.cpp manual.cpp \
	render2d_select.cpp chemdata_rw.cpp chemdata_xml.cpp chemdata_mdl.cpp \
	chemdata_cml.cpp chemdata_xdc.cpp chemdata_edit.cpp ringdialog.cpp \
	chemdata_cdxml.cpp render2d_print.cpp fixeddialog.cpp symbol.cpp \
	chemdata_tools.cpp curvearrow.cpp molecule_tools.cpp graphdialog.cpp \
	graphwidget.cpp xml_reader.cpp cdxml_reader.cpp cdx2cdxml.cpp \
	namer.cpp molecule_smiles.cpp netdialog.cpp pagesetupdialog.cpp \
	netaccess.cpp netchoosedialog.cpp bondedit.cpp xdc_toolbutton.cpp \
	previewwidget.cpp chemdata_cdx.cpp
OBJECTS =	main.o application.o render2d.o render2d_event.o \
	chemdata.o render2d_draw.o drawable.o molecule.o bond.o \
	render2d_text.o text.o arrow.o bracket.o manual.o chemdata_rw.o \
	render2d_select.o chemdata_xml.o chemdata_mdl.o chemdata_cml.o \
	chemdata_xdc.o chemdata_edit.o ringdialog.o chemdata_cdxml.o \
	render2d_print.o fixeddialog.o symbol.o chemdata_tools.o \
	curvearrow.o molecule_tools.o graphdialog.o graphwidget.o \
	xml_reader.o cdxml_reader.o cdx2cdxml.o namer.o molecule_smiles.o \
	netdialog.o pagesetupdialog.o netaccess.o netchoosedialog.o \
	bondedit.o xdc_toolbutton.o previewwidget.o application_ring.o \
	smilesdialog.o chemdata_cdx.o
SRCMOC	=	moc_application.cpp moc_render2d.cpp moc_chemdata.cpp \
	moc_drawable.cpp moc_molecule.cpp moc_bond.cpp moc_text.cpp \
	moc_arrow.cpp moc_bracket.cpp moc_manual.cpp moc_ringdialog.cpp \
	moc_fixeddialog.cpp moc_symbol.cpp moc_curvearrow.cpp \
	moc_graphdialog.cpp moc_graphwidget.cpp moc_netdialog.cpp \
	moc_pagesetupdialog.cpp moc_netaccess.cpp moc_netchoosedialog.cpp \
	moc_bondedit.cpp moc_xdc_toolbutton.cpp moc_previewwidget.cpp \
	moc_smilesdialog.cpp moc_http.cpp
OBJMOC	=	moc_application.o moc_render2d.o moc_chemdata.o \
	moc_drawable.o moc_molecule.o moc_bond.o moc_text.o moc_arrow.o \
	moc_bracket.o moc_manual.o moc_ringdialog.o moc_fixeddialog.o \
	moc_symbol.o moc_curvearrow.o moc_graphdialog.o moc_graphwidget.o \
	moc_netdialog.o moc_pagesetupdialog.o moc_netaccess.o \
	moc_netchoosedialog.o moc_bondedit.o moc_xdc_toolbutton.o \
	moc_previewwidget.o moc_smilesdialog.o moc_http.o

####### Implicit rules

.SUFFIXES: .cpp .cxx .cc .C .c

.cpp.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.C.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

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

####### Build rules

all: $(DESTDIR)$(TARGET)

$(DESTDIR)$(TARGET): $(OBJECTS) $(OBJMOC) 
	$(CXX) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)

moc: $(SRCMOC)

install: all
	install -m 755 xdrawchem $(INSTDIR)
	install -d $(INSTRING)
	install -m 644 ring/* $(INSTRING)

tmake:
	tmake application.pro

clean:
	-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC)
	-rm -f *~ core $(TARGET)

####### Compile

main.o: main.cpp application.h

application.o: application.cpp \
		application.h

application_ring.o: application_ring.cpp application.h

namer.o: namer.cpp namer.h

manual.o: manual.cpp manual.h application.h

chemdata.o: chemdata.cpp chemdata.h cml.h

chemdata_edit.o: chemdata_edit.cpp chemdata.h cml.h

chemdata_rw.o: chemdata_rw.cpp chemdata.h cml.h

chemdata_xml.o: chemdata_xml.cpp chemdata.h cml.h

chemdata_cml.o: chemdata_cml.cpp chemdata.h cml.h

chemdata_mdl.o: chemdata_mdl.cpp chemdata.h cml.h

chemdata_xdc.o: chemdata_xdc.cpp chemdata.h cml.h

chemdata_cdx.o: chemdata_cdx.cpp chemdata.h

chemdata_cdxml.o: chemdata_cdxml.cpp chemdata.h cml.h

chemdata_tools.o: chemdata_tools.cpp chemdata.h cml.h

cdx2cdxml.o: cdx2cdxml.cpp chemdata.h

xml_reader.o: xml_reader.cpp xml_reader.h

cdxml_reader.o: cdxml_reader.cpp cdxml_reader.h

drawable.o: drawable.cpp drawable.h

molecule.o: molecule.cpp molecule.h moldata.h

molecule_tools.o: molecule_tools.cpp molecule.h moldata.h boshcp.h \
	molecule_sssr.h

molecule_smiles.o: molecule_smiles.cpp molecule.h dpoint.h bond.h sdg.h \
	ring.h setofrings.h sorf.h

bond.o: bond.cpp bond.h

text.o: text.cpp text.h

arrow.o: arrow.cpp arrow.h

curvearrow.o: curvearrow.cpp curvearrow.h

bracket.o: bracket.cpp bracket.h

symbol.o: symbol.cpp symbol.h

xdc_toolbutton.o: xdc_toolbutton.cpp xdc_toolbutton.h

ringdialog.o: ringdialog.cpp ringdialog.h

fixeddialog.o: fixeddialog.cpp fixeddialog.h

graphdialog.o: graphdialog.cpp graphdialog.h

netdialog.o: netdialog.cpp netdialog.h http.h

netaccess.o: netaccess.cpp netaccess.h http.h

netchoosedialog.o: netchoosedialog.cpp netchoosedialog.h

render2d.o: render2d.cpp render2d.h

render2d_event.o: render2d_event.cpp render2d.h

render2d_draw.o: render2d_draw.cpp render2d.h

render2d_text.o: render2d_text.cpp render2d.h

render2d_select.o: render2d_select.cpp render2d.h

render2d_print.o: render2d_print.cpp render2d.h

bondedit.o: bondedit.cpp bondedit.h previewwidget.h

previewwidget.o: previewwidget.cpp previewwidget.h

graphwidget.o: graphwidget.cpp graphwidget.h

smilesdialog.o: smilesdialog.cpp smilesdialog.h

moc_application.o: moc_application.cpp \
		application.h 

moc_application.cpp: application.h
	$(MOC) application.h -o moc_application.cpp

moc_render2d.o: moc_render2d.cpp \
		render2d.h 

moc_render2d.cpp: render2d.h
	$(MOC) render2d.h -o moc_render2d.cpp

moc_chemdata.o: moc_chemdata.cpp \
		chemdata.h 

moc_chemdata.cpp: chemdata.h
	$(MOC) chemdata.h -o moc_chemdata.cpp

moc_drawable.o: moc_drawable.cpp \
		drawable.h 

moc_drawable.cpp: drawable.h
	$(MOC) drawable.h -o moc_drawable.cpp

moc_molecule.o: moc_molecule.cpp \
		molecule.h 

moc_molecule.cpp: molecule.h
	$(MOC) molecule.h -o moc_molecule.cpp

moc_bond.o: moc_bond.cpp \
		bond.h 

moc_bond.cpp: bond.h
	$(MOC) bond.h -o moc_bond.cpp

moc_bondedit.o: moc_bondedit.cpp \
		bondedit.h 

moc_bondedit.cpp: bondedit.h
	$(MOC) bondedit.h -o moc_bondedit.cpp

moc_previewwidget.o: moc_previewwidget.cpp \
		previewwidget.h 

moc_previewwidget.cpp: previewwidget.h
	$(MOC) previewwidget.h -o moc_previewwidget.cpp

moc_text.o: moc_text.cpp \
		text.h 

moc_text.cpp: text.h
	$(MOC) text.h -o moc_text.cpp

moc_arrow.o: moc_arrow.cpp \
		arrow.h 

moc_arrow.cpp: arrow.h
	$(MOC) arrow.h -o moc_arrow.cpp

moc_curvearrow.o: moc_curvearrow.cpp \
		curvearrow.h 

moc_curvearrow.cpp: curvearrow.h
	$(MOC) curvearrow.h -o moc_curvearrow.cpp

moc_bracket.o: moc_bracket.cpp \
		bracket.h 

moc_bracket.cpp: bracket.h
	$(MOC) bracket.h -o moc_bracket.cpp

moc_manual.o: moc_manual.cpp \
		manual.h 

moc_manual.cpp: manual.h
	$(MOC) manual.h -o moc_manual.cpp

moc_ringdialog.o: moc_ringdialog.cpp \
		ringdialog.h 

moc_ringdialog.cpp: ringdialog.h
	$(MOC) ringdialog.h -o moc_ringdialog.cpp

moc_netdialog.o: moc_netdialog.cpp \
		netdialog.h

moc_netdialog.cpp: netdialog.h
	$(MOC) netdialog.h -o moc_netdialog.cpp

moc_netchoosedialog.o: moc_netchoosedialog.cpp \
		netchoosedialog.h 

moc_netchoosedialog.cpp: netchoosedialog.h
	$(MOC) netchoosedialog.h -o moc_netchoosedialog.cpp

moc_netaccess.o: moc_netaccess.cpp \
		netaccess.h 

moc_netaccess.cpp: netaccess.h
	$(MOC) netaccess.h -o moc_netaccess.cpp

moc_pagesetupdialog.o: moc_pagesetupdialog.cpp \
		pagesetupdialog.h 

moc_pagesetupdialog.cpp: pagesetupdialog.h
	$(MOC) pagesetupdialog.h -o moc_pagesetupdialog.cpp

moc_fixeddialog.o: moc_fixeddialog.cpp \
		fixeddialog.h 

moc_fixeddialog.cpp: fixeddialog.h
	$(MOC) fixeddialog.h -o moc_fixeddialog.cpp

moc_graphdialog.o: moc_graphdialog.cpp \
		graphdialog.h 

moc_graphdialog.cpp: graphdialog.h
	$(MOC) graphdialog.h -o moc_graphdialog.cpp

moc_graphwidget.o: moc_graphwidget.cpp \
		graphwidget.h 

moc_graphwidget.cpp: graphwidget.h
	$(MOC) graphwidget.h -o moc_graphwidget.cpp

moc_symbol.o: moc_symbol.cpp \
		symbol.h 

moc_symbol.cpp: symbol.h
	$(MOC) symbol.h -o moc_symbol.cpp

moc_xdc_toolbutton.o: moc_xdc_toolbutton.cpp \
		xdc_toolbutton.h 

moc_xdc_toolbutton.cpp: xdc_toolbutton.h
	$(MOC) xdc_toolbutton.h -o moc_xdc_toolbutton.cpp

moc_smilesdialog.o: moc_smilesdialog.cpp \
		smilesdialog.h 

moc_smilesdialog.cpp: smilesdialog.h
	$(MOC) smilesdialog.h -o moc_smilesdialog.cpp

moc_http.o: moc_http.cpp \
		http.h 

moc_http.cpp: http.h
	$(MOC) http.h -o moc_http.cpp
