# Generated automatically from Makefile.in by configure.
##  -*- Mode: Makefile -*-
##
##

########################################################################
## pthread
##

#THREADED=1

ifdef THREADED
  PTHREAD_LIBS = 
  PTHREAD_INCS = 
endif

########################################################################
## machine dependence
##

CXXLIB_machdep = 

LDOPT_SO_machdep = -shared
LDOPT_machdep = -rdynamic

########################################################################
## for configure
##

LOCAL_INCLUDES = -I. 

CC = gcc
CFLAGS = -g -O2 -Wall
CXX = c++ 
DEFS = -DHAVE_CONFIG_H -DCPU_x86 -DLinux
CXXFLAGS = -g -O2 $(DEFS) $(CXXFLAGS_machdep) \
		$(LOCAL_INCLUDES) -Wall 
LDFLAGS = 
LIBS = -lm 

LDOPT_SO	= $(LDOPT_SO_machdep)
LDOPT           = $(LDOPT_machdep)

RANLIB = ranlib

PERL = perl

ifdef THREADED
  CXXFLAGS := $(CXXFLAGS) -DTHREADED $(PTHREAD_INCS)
  LDOPT_SO := $(LDOPT_SO) $(PTHREAD_LIBS)
  LDOPT    := $(LDOPT) $(PTHREAD_LIBS)
endif

########################################################################
## suffix
##

.SUFFIXES: .cc $(SUFFIXES)

########################################################################
## Files
##

ARCHIVE		= libitk.a
SHAREDLIB	= libitk.so

SRCS		= utility.cc Thread.cc Socket.cc syserrortab.cc \
		  WithDescriber.cc \
		  SString.cc Buffer.cc GetOpt.cc SimpleSexp.cc \
		  SimpleSexp2.cc SimpleSexp2Scanner.tab.cc \
	          SimpleSexp2Lexer.cc
OBJS		= $(SRCS:.cc=.o)

#TESTPROG        = foo
TESTPROG        = 

########################################################################
## General Rules
##

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

########################################################################
## Top Goals
##

all: prepare $(ARCHIVE) $(SHAREDLIB) $(TESTPROG) 

test: $(TESTPROG)

$(ARCHIVE): $(OBJS)
	$(AR) ruv $@ $^
	$(RANLIB) $@

$(SHAREDLIB): $(OBJS)
	$(CXX) $(LDOPT_SO) -o $@ $^

prepare:
	rm -f itk
	ln -s . itk

########################################################################
## SimpleSexp2
##

SimpleSexp2Scanner.tab.cc : SimpleSexp2Scanner.y
	bison -p SimpleSexp2yy -d -o $(@:.cc=.c) $^
	mv $(@:.cc=.c) $@

SimpleSexp2Scanner.tab.h : SimpleSexp2Scanner.tab.cc

SimpleSexp2Scanner.lex.o : SimpleSexp2Scanner.tab.h

SimpleSexp2Lexer.cc : SimpleSexp2Lexer.lex
	flex -o$@ $^

WORKFILES += SimpleSexp2Scanner.tab.* SimpleSexp2Lexer.cc

## test

tt : tt.o libitk.a
	g++ -o $@ $^ -lfl -lpthread


########################################################################
## Document
##

SUBDIRNAME = itk
DOCSOURCE = doc.dxx

#DOCROOTDIR = ../doc
DOCROOTDIR = ./doc
HTMLROOTDIR = $(DOCROOTDIR)/html
HTMLDIR = $(HTMLROOTDIR)/$(SUBDIRNAME)
TEXFILEBASE = $(SUBDIRNAME).tex
TEXDIR = $(DOCROOTDIR)/tex
TEXFILE = $(TEXDIR)/$(TEXFILEBASE)

doc: FORCE
	mkdir -p $(TEXDIR)
	mkdir -p $(HTMLDIR)
	doc++ -d $(HTMLDIR) $(DOCSOURCE)
	doc++ -t -ep ../mydoc -o $(TEXFILE) $(DOCSOURCE)
	(cd $(TEXDIR) ; latex $(TEXFILEBASE) ; latex $(TEXFILEBASE))
FORCE:

##======================================================================
## clean up
##

distclean: clean
	rm -f config.h config.cache config.log config.status Makefile.machdep
	touch Makefile.machdep

clean:
	rm -f *~ *.o *.a $(TESTPROG)

config:
	./configure --enable-pthread

depend: prepare
	$(CXX) -MM $(CXXFLAGS) *.cc > Makefile.depend

include Makefile.depend

########################################################################
## test
##

test :
	(cd test ; make)


