# Copyright 2000, International Business Machines Corporation and others.
# All Rights Reserved.
# 
# This software has been released under the terms of the IBM Public
# License.  For details, see the LICENSE file in the top-level source
# directory or online at http://www.openafs.org/dl/license10.html

# Makefile for gtx, a display-independent, object-oriented window toolkit.

srcdir=@srcdir@
include @TOP_OBJDIR@/src/config/Makefile.config
include @TOP_OBJDIR@/src/config/Makefile.lwp


INCLS=gtxobjects.h \
	gtxwindows.h \
	gtxcurseswin.h \
	gtxinput.h \
	gtxdumbwin.h \
	gtxX11win.h \
	gtxobjects.h \
	gtxkeymap.h \
	gtxlightobj.h \
	gtxtextobj.h \
	gtxframe.h \
	gtxobjdict.h \
	${TOP_INCDIR}/afs/keys.h \
	${TOP_INCDIR}/afs/cellconfig.h \
	${TOP_INCDIR}/afs/cmd.h

LIBS=\
	${TOP_LIBDIR}/librx.a \
	${TOP_LIBDIR}/liblwp.a \
	${TOP_LIBDIR}/libsys.a \
	${TOP_LIBDIR}/libcmd.a \
	${TOP_LIBDIR}/libkauth.a \
	${TOP_LIBDIR}/libauth.a \
	${TOP_LIBDIR}/librxkad.a \
	${TOP_LIBDIR}/libafsrfc3961.a \
	${TOP_LIBDIR}/libafscom_err.a \
	${TOP_LIBDIR}/libopr.a \
	${TOP_LIBDIR}/util.a

EXTRA_LIBS=${LIB_curses} ${XLIBS}

KEYMAP_SRCS=keymap.c input.c frame.c

KEYMAP_OBJS=keymap.o input.o frame.o

WINDOW_SRCS=curseswindows.c \
	dumbwindows.c \
	X11windows.c \
	windows.c

WINDOW_OBJS=curseswindows.o \
	dumbwindows.o \
	X11windows.o \
	windows.o

OBJECT_SRCS=objects.c \
	lightobject.c \
	textobject.c

OBJECT_OBJS=objects.o \
	lightobject.o \
	textobject.o

DICT_SRCS=objdict.c
DICT_OBJS=objdict.o

CB_SRCS=textcb.c
CB_OBJS=textcb.o

all: gtxtest \
	${TOP_LIBDIR}/libgtx.a \
	${TOP_INCDIR}/afs/gtxcurseswin.h \
	${TOP_INCDIR}/afs/gtxdumbwin.h \
	${TOP_INCDIR}/afs/gtxframe.h \
	${TOP_INCDIR}/afs/gtxinput.h \
	${TOP_INCDIR}/afs/gtxkeymap.h \
	${TOP_INCDIR}/afs/gtxlightobj.h \
	${TOP_INCDIR}/afs/gtxobjdict.h \
	${TOP_INCDIR}/afs/gtxobjects.h \
	${TOP_INCDIR}/afs/gtxtextcb.h \
	${TOP_INCDIR}/afs/gtxtextobj.h \
	${TOP_INCDIR}/afs/gtxwindows.h \
	${TOP_INCDIR}/afs/gtxX11win.h

${TOP_LIBDIR}/libgtx.a: libgtx.a
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxcurseswin.h: gtxcurseswin.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxdumbwin.h: gtxdumbwin.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxframe.h: gtxframe.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxinput.h: gtxinput.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxkeymap.h: gtxkeymap.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxlightobj.h: gtxlightobj.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxobjdict.h: gtxobjdict.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxobjects.h: gtxobjects.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxtextcb.h: gtxtextcb.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxtextobj.h: gtxtextobj.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxwindows.h: gtxwindows.h
	${INSTALL_DATA} $? $@

${TOP_INCDIR}/afs/gtxX11win.h: gtxX11win.h
	${INSTALL_DATA} $? $@

tests: object_test screen_test curses_test cb_test gtxtest

# All objects in the library
LIBSRCS = ${KEYMAP_SRCS} ${WINDOW_SRCS} ${OBJECT_SRCS} ${DICT_SRCS} ${CB_SRCS}
LIBOBJS = $(KEYMAP_OBJS) ${WINDOW_OBJS} ${OBJECT_OBJS} ${DICT_OBJS} ${CB_OBJS}

${LIBSRCS}: ${INCLS}
$(LIBOBJS): ${INCLS}

keymap.o: keymap.c ${INCLS}

frame.o: frame.c $(INCLS)

input.o: input.c ${INCLS}

curseswindows.o: curseswindows.c ${INCLS}

dumbwindows.o: dumbwindows.c ${INCLS}

X11windows.o: X11windows.c ${INCLS}

windows.o: windows.c ${INCLS}

lightobject.o: lightobject.c ${INCLS}

textobject.o: textobject.c ${INCLS}

textcb.o: textcb.c ${INCLS}

#
# Test programs.
#
curses_test.o: curses_test.c ${INCLS} AFS_component_version_number.o

curses_test: curses_test.o $(LIBS)
	$(AFS_LDRULE) curses_test.o $(LIBS) ${EXTRA_LIBS}

screen_test.o: screen_test.c ${INCLS} AFS_component_version_number.o

screen_test: screen_test.o ${WINDOW_OBJS} ${LIBS}
	$(AFS_LDRULE) screen_test.o ${WINDOW_OBJS} ${LIBS} ${EXTRA_LIBS}

cb_test.o: cb_test.c ${INCLS} AFS_component_version_number.o

cb_test: cb_test.o ${CB_OBJS} ${LIBS}
	$(AFS_LDRULE) cb_test.o ${CB_OBJS} ${LIBS} ${EXTRA_LIBS}

gtxtest.o: gtxtest.c ${INCLS} AFS_component_version_number.o

gtxtest: gtxtest.o libgtx.a ${LIBS}
	$(AFS_LDRULE) gtxtest.o libgtx.a ${LIBS} ${EXTRA_LIBS}

object_test.o: object_test.c ${INCLS} AFS_component_version_number.o

object_test: object_test.o ${WINDOW_OBJS} ${DICT_OBJS} ${OBJECT_OBJS} ${CB_OBJS} ${LIBS}
	$(AFS_LDRULE) object_test.o ${WINDOW_OBJS} ${DICT_OBJS} \
		${OBJECT_OBJS} ${CB_OBJS} ${LIBS} ${EXTRA_LIBS}

#
# Installation targets
#
libgtx.a: ${LIBOBJS} AFS_component_version_number.o
	-$(RM) -f $@
	$(AR) crv $@ ${LIBOBJS} AFS_component_version_number.o
	${RANLIB} $@

install: libgtx.a
	${INSTALL} -d ${DESTDIR}${libdir}/afs
	${INSTALL} -d ${DESTDIR}${includedir}/afs
	${INSTALL_DATA} libgtx.a ${DESTDIR}${libdir}/afs/libgtx.a
	${INSTALL_DATA} ${srcdir}/gtxcurseswin.h ${DESTDIR}${includedir}/afs/gtxcurseswin.h
	${INSTALL_DATA} ${srcdir}/gtxdumbwin.h ${DESTDIR}${includedir}/afs/gtxdumbwin.h
	${INSTALL_DATA} ${srcdir}/gtxframe.h ${DESTDIR}${includedir}/afs/gtxframe.h
	${INSTALL_DATA} ${srcdir}/gtxinput.h ${DESTDIR}${includedir}/afs/gtxinput.h
	${INSTALL_DATA} ${srcdir}/gtxkeymap.h ${DESTDIR}${includedir}/afs/gtxkeymap.h
	${INSTALL_DATA} ${srcdir}/gtxlightobj.h ${DESTDIR}${includedir}/afs/gtxlightobj.h
	${INSTALL_DATA} ${srcdir}/gtxobjdict.h ${DESTDIR}${includedir}/afs/gtxobjdict.h
	${INSTALL_DATA} ${srcdir}/gtxobjects.h ${DESTDIR}${includedir}/afs/gtxobjects.h
	${INSTALL_DATA} ${srcdir}/gtxtextcb.h ${DESTDIR}${includedir}/afs/gtxtextcb.h
	${INSTALL_DATA} ${srcdir}/gtxtextobj.h ${DESTDIR}${includedir}/afs/gtxtextobj.h
	${INSTALL_DATA} ${srcdir}/gtxwindows.h ${DESTDIR}${includedir}/afs/gtxwindows.h
	${INSTALL_DATA} ${srcdir}/gtxX11win.h ${DESTDIR}${includedir}/afs/gtxX11win.h

dest: libgtx.a
	${INSTALL} -d ${DEST}/lib/afs
	${INSTALL} -d ${DEST}/include/afs
	${INSTALL_DATA} libgtx.a ${DEST}/lib/afs/libgtx.a
	${INSTALL_DATA} ${srcdir}/gtxcurseswin.h ${DEST}/include/afs/gtxcurseswin.h
	${INSTALL_DATA} ${srcdir}/gtxdumbwin.h ${DEST}/include/afs/gtxdumbwin.h
	${INSTALL_DATA} ${srcdir}/gtxframe.h ${DEST}/include/afs/gtxframe.h
	${INSTALL_DATA} ${srcdir}/gtxinput.h ${DEST}/include/afs/gtxinput.h
	${INSTALL_DATA} ${srcdir}/gtxkeymap.h ${DEST}/include/afs/gtxkeymap.h
	${INSTALL_DATA} ${srcdir}/gtxlightobj.h ${DEST}/include/afs/gtxlightobj.h
	${INSTALL_DATA} ${srcdir}/gtxobjdict.h ${DEST}/include/afs/gtxobjdict.h
	${INSTALL_DATA} ${srcdir}/gtxobjects.h ${DEST}/include/afs/gtxobjects.h
	${INSTALL_DATA} ${srcdir}/gtxtextcb.h ${DEST}/include/afs/gtxtextcb.h
	${INSTALL_DATA} ${srcdir}/gtxtextobj.h ${DEST}/include/afs/gtxtextobj.h
	${INSTALL_DATA} ${srcdir}/gtxwindows.h ${DEST}/include/afs/gtxwindows.h
	${INSTALL_DATA} ${srcdir}/gtxX11win.h ${DEST}/include/afs/gtxX11win.h

#
# Misc targets
#
clean:
	$(RM) -f  *.o *.a *.ln object_test screen_test curses_test core cb_test gtxtest AFS_component_version_number.c

include ../config/Makefile.version
