#! /bin/bash
#*******************************************************************************
# E.S.O. - ALMA project
#
# "@(#) $Id: acsMakeLogTSDependencies,v 1.3 2007/02/08 15:06:13 nbarriga Exp $"
#
#************************************************************************
#   NAME
#   acsMakeLogtsDependencies - create the makefile to build  
# 
#   SYNOPSIS
#
#   acsMakeLogTSDependencies <logtsname>
# 
#   DESCRIPTION
#   Utility used by acsMakefile to create the makefile to build LogTS products.
#   It is not intended to be used as a standalone command.
#
#
#   (1) see also GNU Make 3.64, 4.3.5 pag 37
#
#
#   The .dlts itself depends to Makefile.
#
#   The rules is written to standard output.
#
#   <logtsname>     The name of the origin XML file.
#                 (Without directory)
#
#
#   FILES
#   $ACSROOT/include/acsMakefile   
#
#   ENVIRONMENT
#
#   RETURN VALUES
#
#   SEE ALSO 
#   acsMakefile, Makefile, (GNU) make
#
#   BUGS    
#
#----------------------------------------------------------------------
logtsName=$1

#
# I cannot put the following variable under object since 
# make do_idl cleans up ../object
# 
tDir="../object/${logtsName}"

echo "# Dependency file for ACSLOGTSDEF: ${logtsName}"
echo "# Created automatically by acsMakeLogTSDependencies -  `date '+%d.%m.%y %T'`"
echo "# DO NOT EDIT THIS FILE"
echo "../object/${logtsName}.dlts: Makefile"
echo ""
#
###################################################
#  ALL TARGET
##################################################
#
echo "#"
echo "# ALL TARGET"
echo "#"
#

echo "# preliminary, compute which targets are wanted"
echo "ifeq (\$(call mustBuild,Java),true)"
echo "    ALL_LOGTS += ../lib/${logtsName}LTS.jar "
echo "endif"
echo "ifeq (\$(call mustBuild,C++),true)"
echo "    ALL_LOGTS += ../lib/lib${logtsName}LTS.a ../lib/lib${logtsName}LTS.so "
echo "endif"
echo "ifeq (\$(call mustBuild,Python),true) "
echo "    ALL_LOGTS += ../lib/python/site-packages/${logtsName}LTS.py "
echo "endif"
echo ""
echo "# MAIN TARGET FOR DO_ALL"
echo ""
echo "do_logts_${logtsName}: \$(ALL_LOGTS) "
echo ""
#
# second step, we generate an C++ and header  files out of an XML file, 
#
echo "../object/${logtsName}.cpp ../object/${logtsName}.h:  ../idl/${logtsName}.xml"
echo "ifeq (\$(call mustBuild,C++),true)"
echo "	\$(AT)echo \"== LOGTS generating C++ from (${logtsName}) XML \" "
echo "	\$(AT)mkdir -p ../object"
echo "	\$(AT)loggingtsGenH ../idl/${logtsName}.xml ../object/${logtsName}.h"
echo "	\$(AT)loggingtsGenCpp ../idl/${logtsName}.xml ../object/${logtsName}.cpp"
echo "" 
echo "../object/${logtsName}LTS.da:" 
# CHANGE
echo "	-@vltMakeLibraryDependencies ${logtsName}LTS \"${logtsName}\" \"\" \"\" \"\" > ../object/${logtsName}LTS.da" 
echo "vpath %.so  \$(LIB_PATH_LIST)"
echo "-include ../object/${logtsName}LTS.da" 
echo "endif"
echo ""
#
# third step, if we're not on VxWorks we generate Java and Python 
# source files
#
echo "../lib/${logtsName}LTS.jar:  ../idl/${logtsName}.xml"
echo "ifndef MAKE_VXWORKS"
echo "ifeq (\$(call mustBuild,Java),true)"
echo "	\$(AT)echo \"== LOGTS generating Java from (${logtsName}) XML \" "
echo "	\$(AT)loggingtsGenJava ../idl/${logtsName}.xml  || exit -2"
echo "	-\$(AT)echo \"== LOGTS Compiling generated Java classes into Stub jarfile (${logtsName})\" "
echo "	\$(AT)(cd ${tDir};  export CLASSPATH=\`vltMakeJavaClasspath\`:.; javac  \`find . -name \*.java | tr '\n' ' '\` ) || exit -13 ; \\"
echo "	    if [ xx\$(DEBUG) = xxon ]; \\"
echo "    then \\"
echo "		(cd ${tDir}; touch ../../lib/${logtsName}LTS.jar; find . \( -name \*.class -o -name \*.java \) -exec jar uf ../../lib/${logtsName}LTS.jar  \{\} \; ) ; \\"
echo "	    else\\"
echo "		(cd ${tDir}; touch ../../lib/${logtsName}LTS.jar; find . -name \*.class -exec jar uf ../../lib/${logtsName}LTS.jar  \{\} \; ) ;	\\"
echo "	    fi;\\"
echo ""
echo "endif"
echo "endif"
echo ""
#
echo "../lib/python/site-packages/${logtsName}LTS.py:  ../idl/${logtsName}.xml"
echo "ifndef MAKE_VXWORKS"
echo "ifeq (\$(call mustBuild,Python),true)"
echo "	\$(AT)echo \"== LOGTS generating Python from (\$(<F)) XML \" "
echo "	\$(AT)loggingtsGenPython ../idl/${logtsName}.xml ../object/${logtsName}LTS.py || exit -2"
echo "	\$(AT)cp ../object/${logtsName}LTS.py ../lib/python/site-packages/"
echo "endif"
echo "endif"

#
###################################################
#  CLEAN TARGET
##################################################
#
echo "#"
echo "# CLEAN TARGET"
echo "#"
# NOTE: after the transition to the new system a dependency should be added
# to clean_lib_${logtsName}
echo "clean_logts_${logtsName}: "
echo "	-\$(AT)\$(RM)  ../lib/${logtsName}LTS.jar ../object/${logtsName}.dlts ../object/${logtsName} ../object/${logtsName}.cpp ../object/${logtsName}.o ../object/${logtsName}.h  ../object/${logtsName}LTS.py  ../lib/lib${logtsName}LTS.a ../lib/lib${logtsName}LTS.so  ../lib/python/site-packages/${logtsName}LTS.py  ../object/${logtsName}.d ../object/${logtsName}LTS.da "
echo ""
echo ""
#
###################################################
#  INSTALL TARGET
##################################################
#
echo "#"
echo "# INSTALL TARGET"
echo "#"
# NOTE: after the transition to the new system a dependency should be added
# to install_lib_${logtsName}
echo ".PHONY: install_logts_${logtsName}"
echo "install_logts_${logtsName}: \$(VLTTOP)/include/${logtsName}.h \$(VLTTOP)/lib/lib${logtsName}LTS.a \$(VLTTOP)/lib/lib${logtsName}LTS.so \$(VLTTOP)/idl/${logtsName}.xml \$(VLTTOP)/lib/python/site-packages/${logtsName}LTS.py \$(VLTTOP)/lib/${logtsName}LTS.jar"
echo ""
#
echo "\$(VLTTOP)/lib/python/site-packages/${logtsName}LTS.py: ../idl/${logtsName}.xml"
echo "	-\$(AT)echo \"== installing LOGTS Python (${logtsName}) \" "
echo "	\$(AT)cp ../lib/python/site-packages/${logtsName}LTS.py \$(VLTTOP)/lib/python/site-packages/"
echo ""
echo "\$(VLTTOP)/idl/${logtsName}.xml: ../idl/${logtsName}.xml"
echo "	-\$(AT)echo \"== installing XML file with ACS LOGTS (${logtsName}) \" "
echo "	\$(AT)cp ../idl/${logtsName}.xml \$(VLTTOP)/idl "
echo ""

# remove me, see note above
echo "\$(VLTTOP)/lib/lib${logtsName}LTS.a: ../lib/lib${logtsName}LTS.a"
echo "	-\$(AT)echo \"== installing LOGTS C++ (${logtsName}) \" "
echo "	\$(AT)cp -f $< \$(VLTTOP)/lib"
echo ""
echo "\$(VLTTOP)/lib/lib${logtsName}LTS.so: ../lib/lib${logtsName}LTS.so"
echo "	\$(AT)cp -f $< \$(VLTTOP)/lib"
echo ""
echo "\$(VLTTOP)/include/${logtsName}.h: ../object/${logtsName}.h"
echo "	\$(AT)cp $< \$(VLTTOP)/include/"
echo ""
echo "\$(VLTTOP)/lib/${logtsName}LTS.jar: ../lib/${logtsName}LTS.jar"
echo "	-\$(AT)echo \"== installing LOGTS Java (${logtsName}) \" "
echo "	\$(AT)cp $< \$(VLTTOP)/lib/"

# ___oOo___
