#  Authors     [Robert Meolic (meolic@uni-mb.si)]
#  Revision    [$Revision: 31 $]
#  Date        [$Date: 2013-04-06 07:52:12 +0200 (sob, 06 apr 2013) $]
#
#  Copyright   [This file is part of Bdd Scout package.
#               Copyright (C) 2008, 2013 UM-FERI
#               UM-FERI, Smetanova ulica 17, SI-2000 Maribor, Slovenia
#
#               Bdd Scout 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.
#
#               Bdd Scout 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., 51 Franklin Street, Fifth Floor,
#               Boston, MA 02110-1301 USA.]

MAINNAME = MAINNAME
EXTNAME1 = EXTNAME1

RM = rm -f
CP = cp
MKDIR = mkdir -p
CD = cd

all: nop

# used for local testing
local: start $(BINDIR) \
     $(BINDIR)/$(MAINNAME) \
     $(BINDIR)/$(EXTNAME1) \
     $(BINDIR)/COPYING \
     $(BINDIR)/bddview.tcl \
     $(BINDIR)/bddscout.tcl \
     $(BINDIR)/bddscoutIFIP.tcl \
     $(BINDIR)/pkgIndex.tcl \
     $(BINDIR)/pkgExtensionIFIP.tcl \
     $(BINDIR)/example.bddview \
     $(BINDIR)/example.bdd \
     $(BINDIR)/example.bf \
     ok

# used for packaging
# produces bddscout.so which is staticaly or dinamicaly linked with Biddy
# (depends on available Biddy package)
package: start $(BINDIR) $(BINDIR)/$(MAINNAME) $(BINDIR)/$(EXTNAME1) ok

# -----------------------------------------------------------------------
# help

nop:
	@echo Please, check README to get instructions for building BDD Scout

start:
	@echo "----------------------------------"
	@echo "| Building Bdd Scout package ... |"
	@echo "----------------------------------"

ok:
	@echo "-------------------------------------------"
	@echo "| Bdd Scout package successfully compiled |"
	@echo "-------------------------------------------"

# -----------------------------------------------------------------------
# create directory, copy files

$(BINDIR):
	$(MKDIR) $(BINDIR)

$(BINDIR)/COPYING: ./COPYING
	$(CP) ./COPYING $(BINDIR)

$(BINDIR)/bddview.tcl: $(BDDVIEWDIR)/bddview.tcl
	$(CP) $(BDDVIEWDIR)/bddview.tcl $(BINDIR)

$(BINDIR)/bddscout.tcl: ./bddscout.tcl
	$(CP) ./bddscout.tcl $(BINDIR)

$(BINDIR)/bddscoutIFIP.tcl: ./bddscoutIFIP.tcl
	$(CP) ./bddscoutIFIP.tcl $(BINDIR)

$(BINDIR)/pkgIndex.tcl: ./pkgIndex.tcl
	$(CP) ./pkgIndex.tcl $(BINDIR)

$(BINDIR)/pkgExtensionIFIP.tcl: ./pkgExtensionIFIP.tcl
	$(CP) ./pkgExtensionIFIP.tcl $(BINDIR)

$(BINDIR)/example.bddview: $(BDDVIEWDIR)/example.bddview
	$(CP) $(BDDVIEWDIR)/example.bddview $(BINDIR)

$(BINDIR)/example.bdd: ./example.bdd
	$(CP) ./example.bdd $(BINDIR)

$(BINDIR)/example.bf: ./example.bf
	$(CP) ./example.bf $(BINDIR)

# -----------------------------------------------------------------------
# make objects
# -----------------------------------------------------------------------

$(BINDIR)/bddscout.o: bddscout.c bddscout.h bddscoutStubInit.c bddscoutStubLib.c
	$(CC) -I$(BIDDYDIR) -o $(BINDIR)/bddscout.o -c bddscout.c -D'USECONST=$(USECONST)'
	$(CC) -I$(BIDDYDIR) -o $(BINDIR)/bddscoutStubInit.o -c bddscoutStubInit.c
	$(CC) -I$(BIDDYDIR) -o $(BINDIR)/bddscoutStubLib.o -c bddscoutStubLib.c

$(BINDIR)/bddscoutIFIP.o: bddscoutIFIP.c bddscout.h
	$(CCEXT1) -I$(BIDDYDIR) -o $(BINDIR)/bddscoutIFIP.o -c bddscoutIFIP.c -D'USECONST=$(USECONST)'

# -----------------------------------------------------------------------
# make libraries, use tcl/tk
# -----------------------------------------------------------------------

$(BINDIR)/$(MAINNAME): $(BINDIR)/bddscout.o $(BINDIR)/bddscoutStubInit.o
	$(CD) $(BINDIR); $(LN) $(MAINNAME) bddscout.o bddscoutStubInit.o -L$(BIDDYLIB) -lbiddy $(TCLSTUBLIB)
	$(CD) $(BINDIR); $(AR) $(BDDSCOUTLIB) bddscoutStubLib.o
	$(CC) -o $(BINDIR)/bddscout bddscoutMain.c $(TCLTKLIB)

$(BINDIR)/$(EXTNAME1): $(BINDIR)/bddscoutIFIP.o $(BINDIR)/$(BDDSCOUTLIB)
	$(CD) $(BINDIR); $(LNEXT1) $(EXTNAME1) bddscoutIFIP.o $(BDDSCOUTLIB) $(BIDDYLIBEXT) $(TCLSTUBLIB)

# -----------------------------------------------------------------------
# purge = purify source directory, clean = purify bin directory

purge:
	@$(RM) *~
	@$(RM) */*~

clean:
	@$(RM) $(BINDIR)/bddscout.o
	@$(RM) $(BINDIR)/bddscoutIFIP.o
	@$(RM) $(BINDIR)/bddscoutStubInit.o
	@$(RM) $(BINDIR)/bddscoutStubLib.o
