# Makefile	K. J. Turner	13/02/12

#*************************************************************
#	lola -- LOtos LAboratory
#
#   Makefile to compile LOLA in a UNIX system.
#
#   TOPO,TOPOBIN,TOPOINC,TOPOLIB and EPS,EPSBIN,EPSINC,EPSLIB
#   environment variables must be set before installing LOLA.
#
#*************************************************************
# (C) Copyright 1993-1994; dit/upm
#  Distributed under the conditions stated in the
#  TOPO General Public License (see file LICENSE)
#*************************************************************

# KJT 13/02/12: use "lola.exe" for compilation under CygWin, "lola" for Unix
TRGT=	lola.exe
XTRGT=	xlola

EPS=/usr/local/eps
EPSINC = $(EPS)/lib
EPSLIB = $(EPS)/lib

TOPO=/usr/local/topo
TOPOBIN = $(TOPO)/bin
TOPOINC = $(TOPO)/lib
TOPOLIB = $(TOPO)/lib

XLIB= -lXaw -lXmu -lXt -lXext -lX11
XINCDIRS= -I/usr/include/X11R5
XLIBDIRS= -L/usr/lib/X11R5
LD_OPTIONS= -Bstatic

#
# OpenWindows : uncomment for Solaris if necessary
#
# XLIB= -lXaw -lXmu -lXt -lXext -lX11 -lsocket -lnsl -lw -lintl
# XINCDIRS= -I/usr/openwin/include
# XLIBDIRS= -L/usr/openwin/lib
# LD_OPTIONS=-Bdynamic -ldl -Bstatic

# CC=gcc

# KJT 13/02/12: use "-m32" for compilation on 64-bit system
CF_DBX=-DNDEBUG -O3
# CF_DBX=-DNDEBUG -O3
# CF_DBX=-mno-cygwin -DNDEBUG -O3

# KJT 11/03/98: added CF_TE flags for TE-LOLA
# CF_TE= -DTIME -DASAP
CF_TE=
INCDIRS= -I$(EPSINC) -I$(TOPOINC)
LIBDIRS= -L$(EPSLIB) -L$(TOPOLIB)
CFLAGS=	$(CF_DBX) $(CF_TE) $(INCDIRS)

#
# headers
#

LIH   = libst.h licell.h ligetlin.h lihash.h lilists.h limisc.h listack.h\
	listdout.h listrbk.h

IRH   = baattr.h babeh.h babool.h badefca.h baexpr.h bainit.h balotosf.h\
	bamove.h basust_v.h basynset.h batables.h  batransl.h batyperw.h\
	batime.h

ETH   = excount.h eximmed.h expre_br.h exsucces.h exsynchr.h

CMDH  = excomp.h exdiver.h exdupbeh.h exexpans.h expostex.h exrmparm.h\
	incomm.h\
	itintexp.h\
	iefunc.h ie_k.h ietables.h ie_nrec.h ie_vc.h ievcdeex.h\
	inhelp.h

IFCH  = apxlola.h inparser.h

HS    = $(LIH) $(IRH) $(ETH) $(CMDH) $(IFCH)

#
# sources
#

LISRC = libst.c licell.c ligetlin.c lihash.c lilists.c limisc.c\
	listack.c listdout.c listrbk.c

IRSRC = babeh.c babool.c badefca.c baexpr.c baexprl.c bagatedl.c\
	bagates.c bainit.c baitcont.c balotosf.c bamove.c baoffer.c bapred.c\
	baprint.c barelab.c basust_v.c basynset.c batables.c batransl.c\
	batyperw.c bavasgnl.c basyninf.c batime.c

ETSRC = excount.c exdis.c exdiver.c exenab.c\
	exextpar.c exgatech.c exhide.c eximmed.c exinst.c\
	exitproc.c exlet.c expar.c explet.c expre_br.c exprprit.c exrelab.c\
	exsynchr.c exsucces.c extlet.c

CMDSRC= exexpans.c expostex.c exrmparm.c exdupbeh.c excomp.c\
	ststep.c\
	iefunc.c ie_k.c ietables.c ie_nrec.c ie_vc.c ievcdeex.c\
	itintexp.c\
	incomm.c instat.c inhelp.c

IFCSRC= apxlola.c inparser.c

SRCS  = $(LISRC) $(IRSRC) $(ETSRC) $(CMDSRC) $(IFCSRC) lola.c

#
# objects
#

LIOBJ = libst.o licell.o ligetlin.o lihash.o lilists.o limisc.o listack.o\
	listdout.o listrbk.o

IROBJ = babeh.o babool.o badefca.o baexpr.o baexprl.o bagatedl.o\
	bagates.o bainit.o baitcont.o balotosf.o bamove.o baoffer.o bapred.o\
	baprint.o barelab.o basust_v.o basynset.o batables.o batransl.o\
	batyperw.o bavasgnl.o basyninf.o batime.o

ETOBJ = excount.o exdis.o exdiver.o exenab.o\
	exextpar.o exgatech.o exhide.o eximmed.o exinst.o\
	exitproc.o exlet.o expar.o explet.o expre_br.o exprprit.o exrelab.o\
	exsynchr.o exsucces.o extlet.o

CMDOBJ= exexpans.o expostex.o exrmparm.o exdupbeh.o excomp.o\
	ststep.o\
	iefunc.o ie_k.o ietables.o ie_nrec.o ie_vc.o ievcdeex.o\
	itintexp.o\
	incomm.o instat.o inhelp.o

IFCOBJ= apxlola.o inparser.o

OBJS  = $(LIOBJ) $(IROBJ) $(ETOBJ) $(CMDOBJ) $(IFCOBJ) lola.o

install:       $(TRGT)
	strip $(TRGT)
	cp $(TRGT) $(TOPOBIN)/$(TRGT)
	chmod a+x $(TOPOBIN)/$(TRGT)

install-xlola:
	@$(MAKE) $(XTRGT) CFLAGS="-DXLOLA $(CFLAGS) $(XINCDIRS)"
	cp $(XTRGT) $(TOPOBIN)/$(XTRGT)
	chmod a+x $(TOPOBIN)/$(XTRGT)

$(TRGT):        $(OBJS)
	LD_LIBRARY_PATH="$(LD_LIBRARY_PATH)" LD_OPTIONS="$(LD_OPTIONS)" \
	$(CC) $(CFLAGS) $(LIBDIRS) -o $@ $(OBJS) -lcast

$(XTRGT):        $(OBJS)
	LD_LIBRARY_PATH="$(LD_LIBRARY_PATH)" LD_OPTIONS="$(LD_OPTIONS)" \
	$(CC) $(CFLAGS) $(LIBDIRS) $(XLIBDIRS) -o $@\
	      $(OBJS) -lcast $(XLIB)

# KJT 21/08/07: moved definition of "yyval" outside "yyparse" as used in code
inparser.c : inparser.y
	yacc inparser.y
	sed "1,1 D" < y.tab.c | sed "s/# line .*//;s/YYSTYPE yylval;/YYSTYPE yylval,yyval;/;s/YYSTYPE yyval;//" > inparser.c
	rm -f y.tab.c

$(OBJS): $(HS)

all: $(TRGT) $(XTRGT)

clean::
	-rm -f $(TRGT) $(OBJS) $(XTRGT)
	-rm -f core *~

#------------------------------------------------------------------












