# Makefile for The NHM, Nomenclature Heuristic Model
# 	$Id: Makefile,v 1.16 1999/12/05 19:02:13 nozomi Exp $
# 	$Log: Makefile,v $
# 	Revision 1.16  1999/12/05 19:02:13  nozomi
# 	remove SAMPLEFILE
# 	
# 	Revision 1.15  1999/10/16 08:15:38  nozomi
# 	arcive filename incorporates date automatically
# 	
# 	Revision 1.14  1999/09/23 06:33:33  nozomi
# 	add class Resolver
# 	
# 	Revision 1.13  1999/08/10 07:53:56  nozomi
# 	linkage fix
# 	
# 	Revision 1.12  1999/08/10 07:43:45  nozomi
# 	dependency and sequence modified
# 	
# 	Revision 1.11  1999/08/10 05:05:49  nozomi
# 	include manual and sample data
# 	
# 	Revision 1.10  1999/08/07 08:55:25  nozomi
# 	fix dist
# 	
# 	Revision 1.9  1999/08/06 08:16:01  nozomi
# 	make dist add to create nhm.tar.gz
# 	
# 	Revision 1.8  1999/03/23 14:47:15  nozomi
# 	duplicated CC line removed
# 	
# 	Revision 1.7  1999/03/20 16:05:02  nozomi
# 	options were changed
# 	
# 	Revision 1.6  1999/03/19 06:44:19  nozomi
# 	thread default
# 	re-organization of _SRCS, etc (socket)
# 	
# 	Revision 1.5  1999/03/17 18:29:56  nozomi
# 	add socketstream
# 	
# 	Revision 1.4  1999/03/14 12:42:57  nozomi
# 	Dependecy fix
# 	
# 	Revision 1.3  1999/03/14 10:32:45  nozomi
# 	fix bug in NamedField.cxx dependency
# 	
# 	Revision 1.2  1999/03/14 07:53:39  nozomi
# 	d_Ref.h, d_Ref.cxx were added to dependency
# 	
# 	Revision 1.1  1999/03/14 07:27:28  nozomi
# 	Dependency add
#
# 	Revision 1.0  1999/03/14 02:16:44  nozomi
# 	Initial version, though aka MkII
# 	
#

#        CC = gcc
        CC = /usr/bin/gcc
	TEMPLATEFLAGS=-Wno-non-template-friend
#to use POSIX thread
    CFLAGS = -O9 -I. -Wall -DPTHREAD $(TEMPLATEFLAGS)
   LDFLAGS = -lstdc++ -lpthread
#to use fork
#    CFLAGS = -O9 -I. -Wall
#   LDFLAGS = -lstdc++
       ARC = ar rc
        CP = cp
        RM = rm
    RANLIB = ranlib
       TAR = tar
      GZIP = gzip -9

TEST_MANS       = nhm.1
MANS            = $(TEST_MANS)

NODMG_SRCS	= d_Object.cxx d_Ref_Any.cxx
PERSISTENT_SRCS = Annotation.cxx Author.cxx Citation.cxx NameRecord.cxx Publication.cxx
RESOLVER_SRCS   = Resolver.cxx
COMPONENT_SRCS  = Affiliation.cxx Date.cxx Period.cxx
NHM_SRCS	= Nomencurator.cxx NRnode.cxx
IO_SRCS         = NamedField.cxx
SUPPORT_SRCS    = strdup.cxx strmcmp.cxx
SOCKET_SRCS     = socketstream.cxx
TEST_SRCS       = testNomencurator.cxx

SRCS		= $(TEST_SRCS) $(SOCKET_SRCS)  $(SUPPORT_SRCS) $(NODMG_SRCS) $(NHM_SRCS) $(PERSISTENT_SRCS)  $(RESOLVER_SRCS) $(COMPONENT_SRCS) $(IO_SRCS)

NODMG_OBJS =	$(NODMG_SRCS:.cxx=.o) 
NHM_OBJS =	$(NHM_SRCS:.cxx=.o)
TEST_OBJS =	$(TEST_SRCS:.cxx=.o)
SUPPORT_OBJS =	$(SUPPORT_SRCS:.cxx=.o)
SOCKET_OBJS     = $(SOCKET_SRCS:.cxx=.o)
PERSISTENT_OBJS = $(PERSISTENT_SRCS:.cxx=.o)
RESOLVER_OBJS   = $(RESOLVER_SRCS:.cxx=.o)
COMPONENT_OBJS  = $(COMPONENT_SRCS:.cxx=.o)
IO_OBJS         = $(IO_SRCS:.cxx=.o)

LIBOBJS         =  $(SUPPORT_OBJS) $(NODMG_OBJS) $(NHM_OBJS) $(PERSISTENT_OBJS) $(COMPONENT_OBJS) $(IO_OBJS) $(RESOLVER_OBJS)

OBJS		= $(TEST_OBJS) $(LIBOBJS)

#SAMPLES         = dat/Lembidae dat/Cryptomonadea dat/Lembidae.UTF-8
SAMPLES         =

LIBS            = libnhm.a libnhm.so 
NHMBIN	        = nhm
BINARIES        = $(LIBS) $(NHMBIN)

#all:: nhm libnhm.a libnhm.so 
all:: $(BINARIES)

%.o: %.cxx
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

#nhm: $(OBJS) $(SOCKET_OBJS)
#	$(CC) $(CFLAGS) -o nhm $(OBJS) $(SOCKET_OBJS) $(LDFLAGS)
$(NHMBIN): libnhm.a $(SOCKET_OBJS) $(TEST_OBJS)
	$(CC) $(CFLAGS) -o $(NHMBIN) $(TEST_OBJS) libnhm.a $(SOCKET_OBJS) $(LDFLAGS)
#	strip $(NHMBIN)

#testNHM: testNomencurator.o

libnhm.a: $(LIBOBJS)
	$(ARC) libnhm.a  $(LIBOBJS) 
	-$(RANLIB) libnhm.a

libnhm.so: $(LIBOBJS)
	$(CC) -shared -o libnhm.so $(LIBOBJS)

clean:
	rm -f *.o libnhm.so libnhm.a nhm

dist:   $(BINARIES) $(SAMPLES) $(MANS)
	date -u +%Y%m%d%H%I%M > $$.tmp
	$(TAR) cf - Makefile $(HDRS)  d_Ref.cxx $(SRCS) $(MANS) $(SAMPLES) | $(GZIP) > nhm`cat $$.tmp`.tar.gz
	zip nhm`cat $$.tmp`.zip Makefile $(HDRS)  d_Ref.cxx $(SRCS) $(MANS) $(SAMPLES)
	rm $$.tmp

NODMG_HDRS	= d_Object.h d_Ref.h d_common.h d_Ref_Any.h nodmg.h d_Database.h
RESOLVER_HDRS   = Resolver.h
PERSISTENT_HDRS = Annotation.h Author.h Citation.h NameRecord.h Publication.h
COMPONENT_HDRS  = Affiliation.h Date.h Period.h
NHM_HDRS	= Nomencurator.h NRnode.h Resolver.h
IO_HDRS         = NamedField.h
SUPPORT_HDRS    = strdup.h strmcmp.h
SOKCET_HDRS     = socketstream.h
TEST_HDRS       = Query.h

HDRS		= $(TEST_HDRS) $(SOKCET_HDRS) $(SUPPORT_HDRS) $(NODMG_HDRS) $(NHM_HDRS) $(PERSISTENT_HDRS) $(RESOLVER_HDRS) $(COMPONENT_HDRS) $(IO_HDRS)

#NODMG_SRCS	= d_Object.cxx
#PERSISTENT_SRCS = Annotation.cxx Author.cxx Citation.cxx NameRecord.cxx Publication.cxx
#COMPONENT_SRCS  = Affiliation.cxx Date.cxx
#NHM_SRCS	= Nomencurator.cxx NRnode.cxx
#IO_SRCS         = NamedField.cxx
#SUPPORT_SRCS    = strdup.cxx strmcmp.cxx socketstream.cxx
#TEST_SRCS       = testNomencurator.cxx

d_Object.o : $(NODMG_HDRS) d_Object.cxx
d_Ref_Any.o : $(NODMG_HDRS) d_Ref_Any.cxx
Date.o : Date.h Date.cxx
Affiliation.o: Affiliation.cxx $(COMPONENT_HDRS) $(SUPPORT_HDRS)
Annotation.o : Annotation.cxx d_Ref.h d_Ref.cxx $(NODMG_HDRS) $(PERSISTENT_HDRS) $(IO_HDRS) $(COMPONENT_HDRS) $(SUPPORT_HDRS) $(RESOLVER_H)
Author.o : Author.cxx d_Ref.h d_Ref.cxx $(NODMG_HDRS) $(PERSISTENT_HDRS) $(IO_HDRS) $(COMPONENT_HDRS) $(SUPPORT_HDRS) $(RESOLVER_H)
Citation.o : Citation.cxx d_Ref.h d_Ref.cxx $(NODMG_HDRS) $(PERSISTENT_HDRS) $(IO_HDRS) $(COMPONENT_HDRS) $(SUPPORT_HDRS) $(RESOLVER_H)
NameRecord.o : NameRecord.cxx d_Ref.h d_Ref.cxx $(NODMG_HDRS) $(PERSISTENT_HDRS) $(IO_HDRS) $(COMPONENT_HDRS) $(SUPPORT_HDRS) $(RESOLVER_H)
Publication.o : Publication.cxx d_Ref.h d_Ref.cxx $(NODMG_HDRS) $(PERSISTENT_HDRS) $(IO_HDRS) $(COMPONENT_HDRS) $(SUPPORT_HDRS) $(RESOLVER_H)
NamedField.o : NamedField.cxx $(IO_HDRS) $(SUPPORT_HDRS)
NRnode.o : NRnode.cxx d_Ref.h d_Ref.cxx $(NODMG_HDRS) $(PERSISTENT_HDRS) $(IO_HDRS) $(COMPONENT_HDRS) $(SUPPORT_HDRS) $(RESOLVER_H)
Nomencurator.o : Nomencurator.cxx d_Ref.h d_Ref.cxx $(NHM_HDRS) $(NODMG_HDRS) $(PERSISTENT_HDRS) $(IO_HDRS) $(COMPONENT_HDRS) $(SUPPORT_HDRS) $(RESOLVER_H)
Resolver.o : Resolver.cxx d_Ref.h d_Ref.cxx $(NODMG_HDRS) $(PERSISTENT_HDRS) $(IO_HDRS) $(COMPONENT_HDRS) $(SUPPORT_HDRS) $(RESOLVER_H)
TEST_OBJS : Query.h d_Ref.h d_Ref.cxx $(NHM_HDRS) $(NODMG_HDRS) $(PERSISTENT_HDRS) $(IO_HDRS) $(COMPONENT_HDRS) $(SUPPORT_HDRS) $(SOCKET_HDRS) $(RESOLVER_H)

strdup.o : strdup.h strdup.cxx
strmcmp.o : strmcmp.h strmcmp.cxx
socketstream.o : socketstream.h socketstream.cxx

$(OBJES) : Makefile

