OPENWINHOME=/usr/openwin
DEFAULT_TOOLKIT = xv

# Sun:
# TOOLKITS = olit xv
# Linux:
TOOLKITS = xv

INTERFACE_MODULES = \
	xcursor xfileselect xpath xdialog \
	xkernel xpicture xwindow xmenu xtimer

CLEAN_MODULES = \
	deltaControls deltaFont deltaPicture \
	deltaDialog deltaIOState deltaSystem \
	deltaEventIO deltaIOSystem deltaTimer \
	deltaFileSelect deltaMenu deltaWindow \
	commonDef dialogDef menuDef timerDef \
	windowDef dialogDevice menuDevice timerDevice \
	windowDevice cursorInternal ioState misc \
	picture xevent xtypes

# Link options files
LO_FILES = \
	x.lo \
	$(TOOLKITS:%=%.lo)

LIBRARY_MODULES = \
	libCleanIO \
	$(TOOLKITS:%=libClean%)

# Static and Dynamic Libraries
LIBRARIES = \
	$(LIBRARY_MODULES:%=%.a)
#	$(LIBRARY_MODULES:%=%.so.1.0) \

# Links to versions of shared libraries
# SHARED_LIB_LINKS = 
#	$(LIBRARY_MODULES:%=%.so)

IOLIB_FILES = \
	$(CLEAN_MODULES:%=%.dcl) \
	$(LO_FILES) \
	$(SHARED_LIB_LINKS) \
	$(LIBRARIES)

#
# Install section
#

# INSTALL_IOLIB_DIR = $(PWD)
INSTALL_IOLIB_FILES = $(IOLIB_FILES:%=$(INSTALL_IOLIB_DIR)/%)
INSTALL_SHARED_LIB_LINKS = $(SHARED_LIB_LINKS:%=$(INSTALL_IOLIB_DIR)/%)

install: compile $(INSTALL_IOLIB_DIR) $(INSTALL_IOLIB_FILES) \
											$(INSTALL_SHARED_LIB_LINKS)

$(INSTALL_IOLIB_DIR) :
	install -d $@

$(INSTALL_IOLIB_DIR)/% : %
	install -m 644 $< $@

#
# Compile section
#
compile: $(LIBRARIES)

libCleanIO.so.1.0: $(INTERFACE_MODULES:%=%.o) $(CLEAN_MODULES:%=%.o)
	$(LD) $(LDSHARED) -o $@ $(INTERFACE_MODULES:%=%.o) $(CLEAN_MODULES:%=%.o)

libCleanIO.a: $(INTERFACE_MODULES:%=%.o) $(CLEAN_MODULES:%=%.o)
	$(AR) r $@ $?
	$(RANLIB) $@

$(TOOLKITS:%=libClean%.a): 
	cd $(@:libClean%.a=%); $(MAKE) ../$@ STATICLIBRARY=../$@ 

$(TOOLKITS:%=libClean%.so.1.0): 
	cd $(@:libClean%.so.1.0=%); $(MAKE) ../$@ DYNAMICLIBRARY=../$@ 

#
# Clean up section
#
cleanup:
	$(RM) $(INTERFACE_MODULES:%=%.icl) $(INTERFACE_MODULES:%=%.dcl) \
			$(INTERFACE_MODULES:%=%.abc) $(INTERFACE_MODULES:%=%.o)
	$(RM) $(CLEAN_MODULES:%=%.abc) $(CLEAN_MODULES:%=%.o)
	$(RM) $(LIBRARIES)
	$(RM) $(LO_FILES) $(SHARED_LIB_LINKS)
	for dir in $(TOOLKITS); do cd $$dir; $(MAKE) $@; cd ..; done; exit 0

#
#
# Generate the *.lo files
#
#	delimiter used in the sed patterns, this character may *not*
#	appear in the expansions of $(IOLIB) and $(OPENWINLIB)
DEL = %

OPENWINLIB = $(OPENWINHOME)/lib
IOLIB = $(INSTALL_IOLIB_DIR)

$(INSTALL_IOLIB_DIR)/olit.lo: olit/x.lo.in
	sed -e s\$(DEL)'$$CLEANIOLIB'$(DEL)$(IOLIB)$(DEL)g $? | \
	sed -e s\$(DEL)'$$OPENWINLIB'$(DEL)$(OPENWINLIB)$(DEL)g > $@

$(INSTALL_IOLIB_DIR)/olits.lo: olit/xs.lo.in
	sed -e s\$(DEL)'$$CLEANIOLIB'$(DEL)$(IOLIB)$(DEL)g $? | \
	sed -e s\$(DEL)'$$OPENWINLIB'$(DEL)$(OPENWINLIB)$(DEL)g > $@

$(INSTALL_IOLIB_DIR)/xv.lo: xv/x.lo.in
	sed -e s\$(DEL)'$$CLEANIOLIB'$(DEL)$(IOLIB)$(DEL)g $? | \
	sed -e s\$(DEL)'$$OPENWINLIB'$(DEL)$(OPENWINLIB)$(DEL)g > $@

$(INSTALL_IOLIB_DIR)/xvs.lo: xv/xs.lo.in
	sed -e s\$(DEL)'$$CLEANIOLIB'$(DEL)$(IOLIB)$(DEL)g $? | \
	sed -e s\$(DEL)'$$OPENWINLIB'$(DEL)$(OPENWINLIB)$(DEL)g > $@

$(INSTALL_IOLIB_DIR)/libCleanIO.so: $(INSTALL_IOLIB_DIR)/libCleanIO.so.1.0
	ln -s $? $@
$(INSTALL_IOLIB_DIR)/libCleanxv.so: $(INSTALL_IOLIB_DIR)/libCleanxv.so.1.0
	ln -s $? $@
$(INSTALL_IOLIB_DIR)/libCleanolit.so: $(INSTALL_IOLIB_DIR)/libCleanolit.so.1.0
	ln -s $? $@

$(INSTALL_IOLIB_DIR)/x.lo: $(INSTALL_IOLIB_DIR)/$(DEFAULT_TOOLKIT).lo
	ln -s $? $@
$(INSTALL_IOLIB_DIR)/xs.lo: $(INSTALL_IOLIB_DIR)/$(DEFAULT_TOOLKIT)s.lo
	ln -s $? $@

#
# Commands
#

.SUFFIXES: .fcl .icl .dcl .abc .o

RANLIB = ranlib
# RANLIB = /bin/true
FCLC = fclc
CLM = clm
CLMFLAGS = -nw

# Solaris:
# LDSHARED = -G

.fcl.o:
	$(FCLC) $<
	$(CLM) $(CLMFLAGS) -O $*

.fcl.dcl:
	$(FCLC) $<

.icl.abc:
	$(CLM) $(CLMFLAGS) -ABC $*

.icl.o:
	$(CLM) $(CLMFLAGS) -O $*

.abc.o:
	$(CLM) $(CLMFLAGS) -O $*
