# Generated automatically from Makefile.in by configure.
#
# src/Makefile.in  --
#
# Makefile for Extended Tcl C sources. 
# 
#------------------------------------------------------------------------------
# Copyright 1992-1994 Karl Lehenbauer and Mark Diekhans.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
# that the above copyright notice appear in all copies.  Karl Lehenbauer and
# Mark Diekhans make no representations about the suitability of this
# software for any purpose.  It is provided "as is" without express or
# implied warranty.
#------------------------------------------------------------------------------
# $Id: Makefile.in,v 4.0 1994/07/16 05:27:54 markd Rel $
#------------------------------------------------------------------------------
#
SHELL = /bin/sh

#------------------------------------------------------------------------------
# Autoconfig defines that can be overridden in Config.mk

CC          = cc
RANLIB      = ranlib
srcdir      = .
srcbasedir  = /usr/src/tclX7.3b
bldbasedir  = /usr/src/tclX7.3b
prefix      = /usr/local
exec_prefix = /usr/local
ARCH        = 
LIBS        =   -lbsd -lieee -lm

#------------------------------------------------------------------------------
# Include user-editable defines.

include ${bldbasedir}/Config.mk

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

LIBTCL_A      = ${bldbasedir}/tclmaster/lib${ARCH}/libtcl.a
LIBTCLX_A     = ${bldbasedir}/tclmaster/lib${ARCH}/libtclx.a
TCL           = ${bldbasedir}/tclmaster/bin${ARCH}/tcl
TCLEXTEND_H   = ${bldbasedir}/tclmaster/include/tclExtend.h
TCLPP_H       = ${bldbasedir}/tclmaster/include/tcl++.h
APPINIT       = ${bldbasedir}/tclmaster/src/tclXAppInit.c
SYSLIBS       = ${bldbasedir}/tclmaster/src/SYSLIBS${ARCH}
TCLXMAINPP_C  = ${bldbasedir}/tclmaster/src/tclXmain++.C
TCLXMAINPP_O  = ${bldbasedir}/tclmaster/lib${ARCH}/tclXmain++.o

LDLIBS = ${LIBTCLX_A} ${LIBTCL_A} ${LIBS}

CC_FLAGS = ${CPPFLAGS} ${XCFLAGS} ${CFLAGS} -I${srcbasedir}/src \
           -I${bldbasedir}/src -I${TCL_UCB_SRC}

.c.o:
	${CC} ${CC_FLAGS} -c $<

%.so: %.c
	${SHCC} -c ${CC_FLAGS} $< -o $@

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

OBJS= \
    tclXbsearch.o    tclXchmod.o      tclXclock.o      tclXcmdInit.o \
    tclXcmdloop.o    tclXcnvclock.o   tclXdebug.o      tclXdup.o     \
    tclXfcntl.o      tclXfilecmds.o   tclXfilescan.o   tclXflock.o   \
    tclXfstat.o      tclXgeneral.o    tclXgetdate.o    tclXhandles.o \
    tclXid.o         tclXinit.o       tclXkeylist.o    tclXlib.o     \
    tclXlist.o       tclXmain.o       tclXmath.o       tclXmsgcat.o  \
    tclXprocess.o    tclXprofile.o    tclXregexp.o     tclXselect.o  \
    tclXserver.o     tclXsignal.o     tclXshell.o      tclXstring.o  \
    tclXunixcmds.o   tclXutil.o       tclXdata.o

UCBOBJS=tclCmdIL.o

LDFLAGS = -N
DLLBIN = /usr/dll/bin
SHCC = ${CC} -B/usr/dll/jump/
SHOBJS = ${subst tclXmain.so,,${OBJS:.o=.so}} ${UCBOBJS:.o=.so} oldCompat.so
JUMP_VER = 3.2.0
JUMP_ARGS = -v ${JUMP_VER} -a 0x60c80000 -j 0x1000 -g 4096
export JUMP_DIR = $(shell pwd)/jump
export JUMP_LIB = libtclx

#------------------------------------------------------------------------------
# Compile the TclX library and link the shell.  If the link fails, purge
# the executable, as some systems leave invalid executables around.

all: made.tmp ${TCL} ${TCLEXTEND_H} ${TCLPP_H} ${APPINIT} ${SYSLIBS} \
     ${TCLXMAINPP_C} ${TCL_PLUS_BUILD}

${TCL}: tclXAppInit.o ${LIBTCLX_A} ${LIBTCL_A} made.tmp 
	${CC} ${CC_FLAGS} ${XLDFLAGS} tclXAppInit.o ${LDLIBS} ${XLDLIBS} \
	      -o ${TCL} || (rm -f ${TCL}; exit 1)

made.tmp ${LIBTCLX_A}: ${OBJS} ${UCBOBJS} ${CPLUSOBJS}
	${AR} cr ${LIBTCLX_A} ${OBJS} ${UCBOBJS} ${CPLUSOBJS}
	${RANLIB} ${LIBTCLX_A}
	touch made.tmp

shared: tcl.shared

install.shared: shared
	install -c -s tcl.shared ${prefix}/bin/tcl
	install -c -m 644 libtclx.sa ${prefix}/lib
	install -c -s libtclx.so.${JUMP_VER} ${prefix}/lib
	ldconfig

tcl.shared: tclXAppInit.o libtclx.sa 
	${CC} ${LDFLAGS} ${XLDFLAGS} tclXAppInit.o libtclx.sa ${TCL_UCB_SRC}/libtcl.sa ${LIBS} -o $@

libtclx.sa: ${SHOBJS} libtclx.so.${JUMP_VER}
	${DLLBIN}/mkstubs -l libtclx ${JUMP_ARGS} -- libtclx
	ar rs libtclx.sa tclXmain.o

libtclx.so.${JUMP_VER}: ${SHOBJS}
	${DLLBIN}/mkimage -l libtclx ${JUMP_ARGS} -- ${SHOBJS} ${TCL_UCB_SRC}/libtcl.sa $(LIBS) -lc `${CC} -print-libgcc-file-name` -lc

tclCmdIL.o: tclCmdIL.c ${TCL_UCB_SRC}/patchlevel.h
	MASTER=${TCL_MASTERDIR}/`../tools/tclxversion` ;\
	${CC} -c ${CC_FLAGS} -DTCL_LIBRARY=\"$$MASTER\" tclCmdIL.c

tclCmdIL.so: tclCmdIL.c ${TCL_UCB_SRC}/patchlevel.h
	MASTER=${TCL_MASTERDIR}/`../tools/tclxversion` ;\
	${SHCC} -c ${CC_FLAGS} -DTCL_LIBRARY=\"$$MASTER\" tclCmdIL.c -o $@

tclCmdIL.c: ${TCL_UCB_SRC}/tclCmdIL.c
	rm -f tclCmdIL.c
	cp ${TCL_UCB_SRC}/tclCmdIL.c tclCmdIL.c

tclXinit.o: tclXinit.c
	MASTER=${TCL_MASTERDIR}/`../tools/tclxversion` ;\
	${CC} -c ${CC_FLAGS} -DTCL_MASTERDIR=\"$$MASTER\" \
	    ${srcdir}/tclXinit.c

tclXinit.so: tclXinit.c
	MASTER=${TCL_MASTERDIR}/`../tools/tclxversion` ;\
	${SHCC} -c ${CC_FLAGS} -DTCL_MASTERDIR=\"$$MASTER\" \
	    ${srcdir}/tclXinit.c -o $@

tclXcmdInit.o: tclXcmdInit.c tclXpatchl.h

tclXgetdate.c: tclXgetdate.y
	${YACC} $(srcdir)/tclXgetdate.y
	sed 's/yy/TclXyy/g' <y.tab.c >tclXgetdate.c
	rm y.tab.c

tcl++.o: tcl++.C tcl++.h
	${CCPLUS} -c ${CC_FLAGS} ${srcdir}/tcl++.C
	${AR} cr ${LIBTCLX_A} tcl++.o
	${RANLIB} ${LIBTCLX_A}
	touch made.tmp

#------------------------------------------------------------------------------
# Copy include files, etc to the master directory.
#

${TCLEXTEND_H}: tclExtend.h
	rm -f ${TCLEXTEND_H}
	cp ${srcdir}/tclExtend.h ${TCLEXTEND_H}

${TCLPP_H}: tcl++.h
	rm -f ${TCLPP_H}
	cp ${srcdir}/tcl++.h ${TCLPP_H}

${APPINIT}: tclXAppInit.c
	rm -f ${APPINIT}
	cp ${srcdir}/tclXAppInit.c ${APPINIT}

${SYSLIBS}: SYSLIBS
	rm -f ${SYSLIBS}
	cp SYSLIBS ${SYSLIBS}

${TCLXMAINPP_C}: tclXmain++.C
	rm -f ${TCLXMAINPP_C}
	cp tclXmain++.C ${TCLXMAINPP_C}

#------------------------------------------------------------------------------
# Make sure tcl++.h compiles, plus force tcl++.o into the library.

TCL_PLUS: tcl++ tcl++.o ${TCLXMAINPP_O}

tcl++: tclXmain++.o tcl++.o made.tmp
	${CCPLUS} ${CC_FLAGS} ${XLDFLAGS} tclXmain++.o tclXAppInit.o \
           ${LDLIBS} ${XLDLIBS} -o tcl++

tclXmain++.o: tcl++.h tclXmain++.C
	${CCPLUS} -c ${CC_FLAGS} tclXmain++.C

tclXmain++.C: tclXmain.c
	rm -f tclXmain++.C
	cp ${srcdir}/tclXmain.c tclXmain++.C

${TCLXMAINPP_O}: tclXmain++.o
	rm -f ${TCLXMAINPP_O}
	cp tclXmain++.o ${TCLXMAINPP_O}

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

clean:
	-rm -f made.tmp tclXgetdate.c tclXmain++.C tclXAppInit.o tclCmdIL.c
	-rm -f ${OBJS} ${UCBOBJS} tclXmain++.o tcl++.o ${TCL} tcl++
	-rm -f ${SHOBJS} tcl.shared libtclx.sa libtclx.so.* jump/_*

#------------------------------------------------------------------------------
# Restore to the distributed state.

distclean: clean
	rm -f Makefile tclXconfig.h SYSLIBS
