#
# Makefile for various libTw clients
#
TOPDIR=..
THISDIR=$(TOPDIR)/clients
SUBDIRS=

-include $(TOPDIR)/makeautoconf

BINS=

BINS_libTw=twattach twcat twclip twdialog twevent twfindtwin twlsmsgport twlsobj twsendmsg twsetroot twterm

BINS_libTT=ttdemo ttdemo2 ttdemo3


ifneq ($(CONF_SOCKET),n)
  #
  # twsysmon and twmapscrn are Linux-specific
  #
  ifeq ($(OS),Linux)
    SUBDIRS+=mapscrn
    BINS_libTw+=twsysmon
  endif
  
  BINS+=$(BINS_libTw)

endif

ifeq ($(CONF_TT),y)
  BINS+=$(BINS_libTT)
endif

OBJS_twattach=attach.o
OBJS_twcat=cat.o
OBJS_twclip=clip.o
OBJS_twevent=event.o
OBJS_twdialog=dialog.o
OBJS_twdm=dm.o
OBJS_twfindtwin=findtwin.o
OBJS_twlsmsgport=lsmsgport.o
OBJS_twlsobj=lsobj.o
OBJS_twsendmsg=sendmsg.o
OBJS_twsetroot=setroot.o
OBJS_twsysmon=sysmon.o
OBJS_twterm=pty.o term.o
OBJS_twthreadtest=threadtest.o
OBJS_ttdemo=demo.o
OBJS_ttdemo2=demo2.o
OBJS_ttdemo3=demo3.o

CC_FLAGS_threadtest.o+=-D_REENTRANT

#
# LD_FLAGS+=$(LD_LIBTW)
# use fine-grained libs instead:
#
LD_FLAGS_twattach+=$(LD_LIBTW)
LD_FLAGS_twcat+=$(LD_LIBTW)
LD_FLAGS_twclip+=$(LD_LIBTW)
LD_FLAGS_twevent+=$(LD_LIBTW)
LD_FLAGS_twdialog+=$(LD_LIBTW)
LD_FLAGS_twdm+=$(LD_LIBTW)
LD_FLAGS_twfindtwin+=$(LD_LIBTW)
LD_FLAGS_twlsmsgport+=$(LD_LIBTW)
LD_FLAGS_twlsobj+=$(LD_LIBTW)
LD_FLAGS_twsendmsg+=$(LD_LIBTW)
LD_FLAGS_twsetroot+=$(LD_LIBTW)
LD_FLAGS_twsysmon+=$(LD_LIBTW)
LD_FLAGS_twterm+=$(LD_LIBTW)
LD_FLAGS_twthreadtest+=$(LD_LIBTW) $(LD_LIBPTHREAD)
LD_FLAGS_ttdemo+=$(LD_LIBTT)
LD_FLAGS_ttdemo2+=$(LD_LIBTT)
LD_FLAGS_ttdemo3+=$(LD_LIBTT)


all: build-all

-include $(TOPDIR)/conf/conf.current
-include .modules
-include .depend
-include $(TOPDIR)/.hdepend

ifneq ($(LD_LIBCRYPT),no)
 BINS_libTw+=twdm
 ifneq ($(LD_LIBCRYPT),)
   LD_FLAGS_twdm+=$(LD_LIBCRYPT)
 endif
endif

ifneq ($(bindir),)
  CC_FLAGS_dm.o+=-DBINDIR=\"$(bindir)\"
endif
 
ifneq ($(CONF_SOCKET),n)
  ifeq ($(CONF_SOCKET_PTHREADS),y)
    BINS_libTw+=twthreadtest
  endif
endif

ifeq ($(CONF__UNICODE),y)
  LD_FLAGS_twterm+=$(LD_LIBTUTF)
  LD_FLAGS_twdm+=$(LD_LIBTUTF)
endif

#
# include the do-everything file.
# Must correctly set all BINS, SHLIBS, ARLIBS, CC_FLAGS* and LD_FLAGS* before including this!
#
include $(TOPDIR)/makerules

build-all: $(BINS) links build-subdirs

ifneq ($(filter twattach,$(BINS)),)
  links: twdetach
else
  links:
endif

twdetach: twattach
	$(LN) $< $@

install:
	$(INSTALL-DIR) $(DESTDIR)$(bindir) && \
	$(INSTALL-DIR) $(DESTDIR)$(sbindir) && \
	$(INSTALL) $(filter-out twdm,$(BINS)) $(DESTDIR)$(bindir) && \
	$(INSTALL) $(filter twdm,$(BINS)) $(DESTDIR)$(sbindir) && \
	$(LN) twattach $(DESTDIR)$(bindir)/twdetach

uninstall:
	cd $(DESTDIR)$(bindir)  && rm -f $(filter-out twdm,$(BINS)) twdetach || true
	cd $(DESTDIR)$(sbindir) && rm -f $(filter twdm,$(BINS)) || true
	rmdir $(DESTDIR)$(bindir) || true
	rmdir $(DESTDIR)$(sbindir) || true

clean:
	rm -f .*.flags .*.bin gmon.out core tw* tt* *.la *.a *.o *.lo *.so *.so.* ; \
	rm -fr .libs

