
#
# try ./configure first to fill in all the definitions corresponding
# to your system, but you always can edit the sections below manually.
#

CC=		@CC@
CFLAGS=		@CFLAGS@
RANLIB= 	@RANLIB@
INSTALL=	@INSTALL@

#
# how to compile, link, and name shared libraries
#

SHLIB_LD=	@SHLIB_LD@
SHLIB_CFLAGS=	@SHLIB_CFLAGS@
SHLIB_SUFFIX=	@SHLIB_SUFFIX@
SHLD_FLAGS=	@DL_LD_FLAGS@
DL_LIBS=	@DL_LIBS@

SHLIB_LD_LIBS  = @SHLIB_LD_LIBS@

#
# where to install shells, libraries, and includes
#

INST_OTCLSH=	@prefix@/bin
INST_OWISH=	@prefix@/bin
INST_OLIB=	@prefix@/lib
INST_OLIBSH=	@INST_OLIBSH@
INST_OINC=	@prefix@/include


#
# ------------ you shouldn't need to configure below here -----------------
#

INCLUDES = \
	-I. \
	@V_INCLUDES@ \
	@V_INCLUDE_X11@ \
	-I@includedir@ \
	@V_INCLUDE@

DEFINES = \
	@V_DEFINE@

LIB =	@V_LIBS@ \
	@V_LIB_X11@ @V_LIB@ -lm

OTCLLIB= -L. -lotcl

CP= cp -f
RM= rm -f
MV= mv -f

CFILES = otcl.c otclAppInit.c otkAppInit.c

.c.o:
	$(CC) -c $(CFLAGS) $(DEFINES) $(INCLUDES) $<

all: libotcl.a libotcl$(SHLIB_SUFFIX) otclsh owish

#
# compile an appinit with tcl and otcl and link against
# libotcl.a plus required tcl libs to give a standalone binary
#

otclsh: otclAppInit.c libotcl.a
	rm -f libotcl$(SHLIB_SUFFIX)
	$(CC) -o otclsh $(SHLD_FLAGS) $(CFLAGS) $(INCLUDES) otclAppInit.c \
	$(OTCLLIB) $(LIB)

#
# compile an appinit with tcl/tk and otcl and link against
# libotcl.a plus required tcl/tk libs to give a standalone binary
#

owish: otkAppInit.c libotcl.a
	rm -f libotcl$(SHLIB_SUFFIX)
	$(CC) -o owish $(SHLD_FLAGS) $(CFLAGS) $(INCLUDES) otkAppInit.c \
	$(OTCLLIB) $(LIB)

#
# compile otcl.c and link it into a library archive
# INCLUDES give a path to tclInt.h (plus tk and X11)
#

libotcl.a: otcl.c
	rm -f libotcl.a otcl.o
	$(CC) -c $(CFLAGS) $(DEFINES) $(INCLUDES) otcl.c
	ar cq libotcl.a otcl.o
	$(RANLIB) libotcl.a

#
# compile otcl.c and link it into a shared object
# INCLUDES give a path to tclInt.h (plus tk and X11)
#

libotcl$(SHLIB_SUFFIX): otcl.c
	rm -f libotcl$(SHLIB_SUFFIX) otcl.o so_locations
	$(CC) -c $(CFLAGS) $(DEFINES) $(SHLIB_CFLAGS) $(INCLUDES) otcl.c
	$(SHLIB_LD) -o libotcl$(SHLIB_SUFFIX) otcl.o

test: otclsh owish
	./otclsh lib/test.tcl
	./owish lib/test.tcl

dirs:
	for d in $(INST_OWISH) $(INST_OTCLSH) $(INST_OLIB) $(INST_OLIBSH) $(INST_OINC); do \
		if [ ! -d $$d ]; then \
			mkdir -p $$d ;\
		fi;\
	done

install: owish otclsh libotcl.a libotcl$(SHLIB_SUFFIX) otcl.h dirs
	$(INSTALL) owish $(INST_OWISH)
	$(INSTALL) otclsh $(INST_OTCLSH)
	$(INSTALL) libotcl.a $(INST_OLIB)
	$(RANLIB)  $(INST_OLIB)/libotcl.a
	$(INSTALL) libotcl$(SHLIB_SUFFIX) $(INST_OLIBSH)
	$(INSTALL) -m 644 otcl.h $(INST_OINC)

clean:
	rm -f owish otclsh libotcl.a libotcl$(SHLIB_SUFFIX) \
	otcl.o otkAppInit.o otclAppInit.o \
	config.status config.log config.cache \
	core so_locations *.core Makefile

# To be compatible with ns/nam
distclean: clean

binclean:
	rm -f otcl.o otkAppInit.o otclAppInit.o \
	config.status config.log config.cache \
	core so_locations

srctar:
	@cwd=`pwd` ; dir=`basename $$cwd` ; \
	    name=otcl-`cat VERSION | tr A-Z a-z` ; \
	    tar=otcl-src-`cat VERSION`.tar.gz ; \
	    list="" ; \
	    for i in `cat FILES` ; do list="$$list $$name/$$i" ; done; \
	    echo \
	    "(rm -f $$tar; cd .. ; ln -s $$dir $$name)" ; \
	     (rm -f $$tar; cd .. ; ln -s $$dir $$name) ; \
	    echo \
	    "(cd .. ; tar cfh $$tar [lots of files])" ; \
	     (cd .. ; tar cfhz - $$list) > $$tar ; \
	    echo \
	    "rm ../$$name; chmod 444 $$tar" ;  \
	     rm ../$$name; chmod 444 $$tar

depend: $(CFILES)
	@echo Making dependencies for $(srcdir){$(CFILES)}
	@$(CC) -MM $(CFLAGS) $(INCLUDES) $(DEFINES) $(CFILES) > makedep
	@echo '/^# DO NOT DELETE THIS LINE/+1,$$d' > eddep
	@echo '$$r makedep' >> eddep
	@echo 'w' >>eddep
	@$(CP) Makefile Makefile.bak
	@ed - Makefile < eddep
	@$(RM) eddep makedep
	@echo '# DEPENDENCIES MUST END AT END OF FILE' >> Makefile
	@echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> Makefile
	@echo '# see make depend above' >> Makefile

# DO NOT DELETE THIS LINE
# DEPENDENCIES MUST END AT END OF FILE
# IF YOU PUT STUFF HERE IT WILL GO AWAY
# see make depend above
