######################
# Builds the library #
######################
CC = $(CONF_CC)
CFLAGS = -fPIC $(CONF_CFLAGS) -I. $(CONF_DEBUG)
LDFLAGS = $(CONF_LDFLAGS) $(CONF_DEBUG)

##########################################################################
# Specify where to place header and library files after a 'make install' #
##########################################################################
INCDIR = /usr/include/tvision
LIBDIR = /usr/lib

##################################################
# Dynamic and static library names, don't change #
##################################################
LIBDYN = lib$(CONF_LIBNAME).so.$(CONF_VERSION)
LIBLDD = lib$(CONF_LIBNAME).so
LIBSTA = lib$(CONF_LIBNAME).a

##############################
# Includes for user programs #
##############################
INCS =	app.h buffers.h colorsel.h config.h dialogs.h drawbuf.h editors.h \
	help.h helpbase.h menus.h msgbox.h objects.h outline.h resource.h \
	stddlg.h system.h textview.h tkeys.h tobjstrm.h ttypes.h tv.h \
	tvobjs.h util.h validate.h views.h

###################
# Library objects #
###################
OBJS =	TApplication.o TBackground.o TButton.o TChDirDialog.o \
	TCheckBoxes.o TCluster.o TCollection.o TCommandSet.o \
	TDeskTop.o TDialog.o TDirCollection.o TDirListBox.o \
	TEditWindow.o TEditor.o TFileCollection.o TFileDialog.o \
	TFileEditor.o TFileList.o TFrame.o TGroup.o THistory.o \
	THistoryViewer.o THistoryWindow.o TIndicator.o TInputLine.o \
	TLabel.o TListBox.o TListViewer.o TMemo.o TMenuBar.o \
	TMenuBox.o TMenuPopup.o TMenuView.o TMultiCheckBoxes.o \
	TObject.o TOutline.o TParamText.o TPoint.o TProgram.o \
	TRadioButtons.o TResourceCollection.o TResourceFile.o \
	TScrollBar.o TScroller.o TSortedCollection.o TStaticText.o \
	TStatusLine.o TStrListMaker.o TStringCollection.o TValidator.o \
	TView.o TWindow.o allnames.o asm.o colorsel.o drivers.o \
	editstat.o help.o helpbase.o histlist.o linux.o menu.o \
	misc.o msgbox.o new.o palette.o sall.o stddlg.o textview.o \
	tobjstrm.o tvtext.o

################
# Source files #
################
SRCS =	TApplication.cc TBackground.cc TButton.cc TChDirDialog.cc \
	TCheckBoxes.cc TCluster.cc TCollection.cc TCommandSet.cc \
	TDeskTop.cc TDialog.cc TDirCollection.cc TDirListBox.cc \
	TEditWindow.cc TEditor.cc TFileCollection.cc TFileDialog.cc \
	TFileEditor.cc TFileList.cc TFrame.cc TGroup.cc THistory.cc \
	THistoryViewer.cc THistoryWindow.cc TIndicator.cc TInputLine.cc \
	TLabel.cc TListBox.cc TListViewer.cc TMemo.cc TMenuBar.cc \
	TMenuBox.cc TMenuPopup.cc TMenuView.cc TMultiCheckBoxes.cc \
	TObject.cc TOutline.cc TParamText.cc TPoint.cc TProgram.cc \
	TRadioButtons.cc TResourceCollection.cc TResourceFile.cc \
	TScrollBar.cc TScroller.cc TSortedCollection.cc TStaticText.cc \
	TStatusLine.cc TStrListMaker.cc TStringCollection.cc TValidator.cc \
	TView.cc TWindow.cc allnames.cc asm.cc colorsel.cc drivers.cc \
	editstat.cc help.cc helpbase.cc histlist.cc linux.cc menu.cc \
	misc.cc msgbox.cc new.cc palette.cc sall.cc stddlg.cc textview.cc \
	tobjstrm.cc tvtext.cc

###################
# Other variables #
###################
RCS = $(INCS) $(SRCS)
DISTFILES = Makefile mkdepend $(RCS)

#######################
# Rules to make files #
#######################
.c.o:
	$(CC) $(CFLAGS) -c $<

.cc.o:
	$(CC) $(CFLAGS) -c $<

###########
# Targets #
###########
all: confcheck createlink $(LIBDYN) $(LIBSTA)

$(LIBDYN): $(OBJS)
	$(CC) -shared -Wl,-soname,$(LIBLDD) -o $(LIBDYN) $(OBJS)

$(LIBSTA): $(OBJS)
	$(AR) rcs $(LIBSTA) $(OBJS)

.PHONY:	ciall coall clean dist confcheck createlink install uninstall 

###################
# Store revisions #
###################
ciall:
	ci Makefile $(RCS)

#####################
# Recover revisions #
#####################
coall:
	co $(RCS)

########################
# Remove garbage files #
########################
clean:
	rm -f $(LIBDYN) $(LIBSTA) *.bak *.o *~
	rm -f tvision

############################
# Package-making procedure #
############################
destdir = ../$(CONF_DISTDIR)/lib

dist: $(DISTFILES)
	@for file in $(DISTFILES); do \
		ln $$file $(destdir) || { \
			echo Copying $$file instead; \
			cp -p $$file $(destdir); \
		}; \
	done

###########################################
# Check if external variables are defined #
###########################################
confcheck:
	@if test -z "$(CONF_VERSION)"; then \
		echo Please run the main makefile; \
		exit 1; \
	fi

############################################
# Create a symbolic link to this directory #
############################################
createlink:
	rm -f tvision
	ln -s . tvision

################################
# Library installing procedure #
################################
install: confcheck all uninstall
	install -m 755 {$(LIBDYN),$(LIBSTA)} $(LIBDIR)
	ln -s $(LIBDYN) $(LIBDIR)/$(LIBLDD)
	mkdir $(INCDIR)
	cp $(INCS) $(INCDIR)

##################################
# Library uninstalling procedure #
##################################
uninstall: confcheck
	rm -f $(LIBDIR)/{$(LIBDYN),$(LIBLDD),$(LIBSTA)}
	rm -f -r $(INCDIR)

# Automatically generated dependencies
TApplication.o: TApplication.cc
TBackground.o: TBackground.cc
TButton.o: TButton.cc
TChDirDialog.o: TChDirDialog.cc
TCheckBoxes.o: TCheckBoxes.cc
TCluster.o: TCluster.cc
TCollection.o: TCollection.cc
TCommandSet.o: TCommandSet.cc
TDeskTop.o: TDeskTop.cc
TDialog.o: TDialog.cc
TDirCollection.o: TDirCollection.cc
TDirListBox.o: TDirListBox.cc
TEditWindow.o: TEditWindow.cc
TEditor.o: TEditor.cc
TFileCollection.o: TFileCollection.cc
TFileDialog.o: TFileDialog.cc
TFileEditor.o: TFileEditor.cc
TFileList.o: TFileList.cc
TFrame.o: TFrame.cc
TGroup.o: TGroup.cc
THistory.o: THistory.cc
THistoryViewer.o: THistoryViewer.cc
THistoryWindow.o: THistoryWindow.cc
TIndicator.o: TIndicator.cc
TInputLine.o: TInputLine.cc
TLabel.o: TLabel.cc
TListBox.o: TListBox.cc
TListViewer.o: TListViewer.cc
TMemo.o: TMemo.cc
TMenuBar.o: TMenuBar.cc
TMenuBox.o: TMenuBox.cc
TMenuPopup.o: TMenuPopup.cc
TMenuView.o: TMenuView.cc
TMultiCheckBoxes.o: TMultiCheckBoxes.cc
TObject.o: TObject.cc
TOutline.o: TOutline.cc
TParamText.o: TParamText.cc
TPoint.o: TPoint.cc
TProgram.o: TProgram.cc
TRadioButtons.o: TRadioButtons.cc
TResourceCollection.o: TResourceCollection.cc
TResourceFile.o: TResourceFile.cc
TScrollBar.o: TScrollBar.cc
TScroller.o: TScroller.cc
TSortedCollection.o: TSortedCollection.cc
TStaticText.o: TStaticText.cc
TStatusLine.o: TStatusLine.cc
TStrListMaker.o: TStrListMaker.cc
TStringCollection.o: TStringCollection.cc
TValidator.o: TValidator.cc
TView.o: TView.cc
TWindow.o: TWindow.cc
allnames.o: allnames.cc
asm.o: asm.cc
colorsel.o: colorsel.cc
drivers.o: drivers.cc
editstat.o: editstat.cc
help.o: help.cc tvision/help.h
helpbase.o: helpbase.cc tvision/helpbase.h
histlist.o: histlist.cc
linux.o: linux.cc
menu.o: menu.cc
misc.o: misc.cc
msgbox.o: msgbox.cc
new.o: new.cc
palette.o: palette.cc
stddlg.o: stddlg.cc
textview.o: textview.cc
tobjstrm.o: tobjstrm.cc
tvtext.o: tvtext.cc
# Makefile ends here
