#
#       TTCN-3 Parser
#
#         Makefile
#
# Copyright (C) 2001 Institute for Telematics
#
#    Michael Schmitt <schmitt@itm.mu-luebeck.de>
#    Roman Koch <rkoch@itm.mu-luebeck.de>
#
#    Medical University of Luebeck,
#    Ratzeburger Allee 160,
#    23538 Luebeck,
#    Germany
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
# $Id: Makefile,v 1.25 2001/08/05 16:40:02 schmitt Exp $
#

ifeq ($(OSTYPE),solaris)
CXX=CC
CPPFLAGS=-I.
CXXFLAGS=-g +p +w2
ifndef LIBANTLR
LIBANTLR=antlr/libantlr.a
endif
LDFLAGS=-Bstatic
else
CXX=g++
CPPFLAGS=-I.
CXXFLAGS=-g -Wall -ansi -pedantic
ifndef LIBANTLR
LIBANTLR=antlr/libantlr-g++-cygwin.a
endif
LDFLAGS=
endif

objects	 = InfoAST.o EnvAST.o ScopeAST.o TTCNMain.o TTCNLexer.o TTCNParser.o TTCNSymbolParser.o TTCNTreeParser.o


# Eliminate implicit rules

.SUFFIXES :


# Link TTCN-3 Parser

TTCN3Parser : $(objects) $(LIBANTLR)
	$(CXX) -o TTCN3Parser $(objects) $(LIBANTLR) $(LDFLAGS)

TTCN3Parser.purify : $(objects) $(LIBANTLR)
	purify $(CXX) -o TTCN3Parser.purify $(objects) $(LIBANTLR) $(LDFLAGS)


# Compile .cpp files

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


# Compile ANTLR grammar files

LexerFiles        = TTCNLexer.cpp TTCNLexer.hpp \
										TTCNLexerTokenTypes.hpp TTCNLexerTokenTypes.txt
ParserFiles       = TTCNParser.cpp TTCNParser.hpp \
										TTCNParserTokenTypes.hpp TTCNParserTokenTypes.txt
SymbolParserFiles = TTCNSymbolParser.cpp TTCNSymbolParser.hpp \
										TTCNSymbolParserTokenTypes.hpp TTCNSymbolParserTokenTypes.txt
TreeParserFiles   = TTCNTreeParser.cpp TTCNTreeParser.hpp \
										TTCNTreeParserTokenTypes.hpp TTCNTreeParserTokenTypes.txt

$(LexerFiles) : .lexer_made

.lexer_made : TTCNLexer.g Makefile
	java antlr.Tool $<
	touch .lexer_made

$(ParserFiles) : .parser_made

.parser_made : TTCNParser.g TTCNLexerTokenTypes.txt Makefile
	java antlr.Tool $<
	touch .parser_made

$(SymbolParserFiles) : .symbolparser_made

.symbolparser_made : TTCNSymbolParser.g TTCNParserTokenTypes.txt Makefile
	java antlr.Tool $<
	touch .symbolparser_made

$(TreeParserFiles) : .treeparser_made

.treeparser_made : TTCNTreeParser.g TTCNParserTokenTypes.txt Makefile
	java antlr.Tool $<
	touch .treeparser_made


# General file dependencies

*.o              : $(LIBANTLR) Makefile InfoAST.hpp EnvAST.hpp ScopeAST.hpp
TTCNMain.o       : TTCNLexer.hpp TTCNParser.hpp TTCNTreeParser.hpp
TTCNTreeParser.o : TTCNSymbolParser.hpp

# Maintainance

.PHONY : clean webupdate

clean :
	- rm -f TTCN3Parser TTCN3Parser.purify test_parser.log $(objects) \
          $(LexerFiles) $(ParserFiles) $(SymbolParserFiles) $(TreeParserFiles)\
	        .lexer_made .parser_made .symbolparser_made .treeparser_made *.tmp

webupdate :
	tar cvf sources.tar GPL.txt Makefile \
          InfoAST.hpp InfoAST.cpp EnvAST.hpp EnvAST.cpp ScopeAST.hpp ScopeAST.cpp \
          TTCNMain.cpp TTCNLexer.g TTCNParser.g TTCNSymbolParser.g TTCNTreeParser.g INSTALL README
	gzip -9 sources.tar
	mv sources.tar.gz /usr/local/apache/htdocs/english/research/specification/ttcn3parser/.
