1. I think it's also must be somewhere near my CORBA macroses. (hmm,
may be really create separate page for autoconf CORBA support ?).
#!/bin/sh
#
# idl_depend.
# Tool for generating dependences from idl
# (C) Ruslan Shevchenko <[EMAIL PROTECTED]>, 1998
# $Id: idl_depend,v 1.1 2000/07/13 15:48:56 rssh Exp $
#
###########################################################
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#   notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#   notice, this list of conditions and the following disclaimer in the
#   documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
#   must display the following acknowledgement:
#      This product includes software developed by Ruslan Shevchenko, 
#      Ukraine, Kiev and his contributors.
# 4. Neither the name of the original author nor the names of his contributors
#    may be used to endorse or promote products derived from this software
#    without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
###########################################################

usage()
{
 echo "idl_depend, "
 echo "Usage: idl_depend [options]"
 echo " where options:"
 echo "     --idl_dir directory_where_you_store_idl_files"
 echo "     --idl_file file_to_process"
 echo "     --extra_idl_flag flags_which_you_want_pass_to_idl "
 echo "     --var_prefix prefix_of_make_varibales"
 echo "     --h_dir directory_where_generated_header_files_must_be"
 echo "     --cpp_dir directory_where_generated_cpp_files_must_be"
 echo "     --obj_dir directory_where_generated_object_files_must_be"
 echo "     --cln_h_suffix suffix for generated client headers (default: .h)"
 echo "     --cln_h1_suffix suffix for second generated client headers "
 echo "                                                     (default: no)"
 echo "     --cln_cpp_suffix suffix for generated client cpp (default: .cpp)"
 echo "     --cln_obj_suffix suffix for generated client objs (default: .o)"
 echo "     --srv_h_suffix suffix for generated skeleton headers (default: _skel.h)"
 echo "     --srv_h1_suffix suffix for second generated skeleton headers "
 echo "                                                (default: no.h)"
 echo "     --srv_cpp_suffix suffix for generated skeleton cxx sources "
 echo "                                               (default: _skel.cpp)"
 echo "     --srv_cpp_suffix suffix for generated skeleton object files  "
 echo "                                               (default: _skel.o)"
 echo "     --tie_h_suffix suffix for generated tie skeleton headers   "
 echo "                                               (default: _skel_tie.h)"
 echo "     --tie_h1_suffix second suffix for generated tie skeleton headers   "
 echo "                                               (default: no)"
 echo "     --tie_cpp_suffix suffix for generated tie skeleton sources  "
 echo "                                               (default: no)"
 echo "     --absolute-path : use absolute patch names"
 echo "     --additive-vars : do not set make variables to empty initial variable"
 echo "     --version : show version"
 echo "     --verbose : show debug information in stderr"
 echo "     --cxxcompile : use \$(CXXCOMPILE) instead \$(CXX) \$(CXXFLAGS)"
 echo "     --sgi-make : do not use += in generated Makefile "
}

IDL_DIR=
IDLS=
VAR_PREFIX=
H_DIR=
EXTRA_IDLFLAGS=
CLN_H_SUFFIX=.h
CLN_H1_SUFFIX=.h
CLN_CPP_SUFFIX=.cpp
CLN_OBJ_SUFFIX=.o
SRV_H_SUFFIX=_skel.h
SRV_H1_SUFFIX=_skel.h
SRV_CPP_SUFFIX=_skel.cpp
SRV_OBJ_SUFFIX=_skel.o
TIE_H_SUFFIX=_skel_tie.h
TIE_H1_SUFFIX=no
TIE_CPP_SUFFIX=no

while [ "x$*" != "x" ]
do
   case $1 in
     --idl_dir|--idl-dir)
                IDL_DIR=$2
                shift
                ;;
     --extra-idl-flags|--extra_idl_flags|--extra-idl-flag|--extra_idl_flag)
                EXTRA_IDLFLAGS="$EXTRA_IDLFLAGS $2"
                shift
                ;;
     --idl_file|--idl-file)
                IDLS="$IDLS $2"
                shift
                ;;
     --var_prefix|--var-prefix)
                VAR_PREFIX=$2
                shift
                ;;
     --h_dir|--h-dir)
                H_DIR=$2;
                shift
                ;;
     --cpp_dir|--cpp-dir)
                CPP_DIR=$2;
                shift
                ;;
     --obj_dir|--obj-dir)
                OBJ_DIR=$2;
                shift
                ;;
     --cln_h_suffix|--cln-h-suffix)
                CLN_H_SUFFIX=$2
                shift
                ;;
     --cln_h1_suffix|--cln-h1-suffix)
                CLN_H1_SUFFIX=$2
                shift
                ;;
     --cln_cpp_suffix|--cln-cpp-suffix)
                CLN_CPP_SUFFIX=$2
                shift
                ;;
     --cln_obj_suffix|--cln-obj-suffix)
                CLN_OBJ_SUFFIX=$2
                shift
                ;;
     --srv_h_suffix|--srv-h-suffix)
                SRV_H_SUFFIX=$2
                shift
                ;;
     --srv_h1_suffix|--srv-h1-suffix)
                SRV_H1_SUFFIX=$2
                shift
                ;;
     --srv_cpp_suffix|--srv-cpp-suffix)
                SRV_CPP_SUFFIX=$2
                shift
                ;;
     --srv_obj_suffix|--srv-obj-suffix)
                SRV_OBJ_SUFFIX=$2
                shift
                ;;
     --tie_h_suffix|--tie-h-suffix)
                TIE_H_SUFFIX=$2
                shift
                ;;
     --tie_h1_suffix|--tie-h1-suffix)
                TIE_H1_SUFFIX=$2
                shift
                ;;
     --tie_cpp_suffix|--tie-cpp-suffix)
                TIE_CPP_SUFFIX=$2
                shift
                ;;
     --absolute_path|--absolute-path)
                ABSOLUTE=1
                ;;
     --additive_vars|--additive-vars)
                ADDITIVE_VARS=1
                ;;
     --cxxcompile)
                CXXCOMPILE=1
                ;;
     --sgi-make|--sgi_make)
                SGI_MAKE=1
                ;;
     --verbose)
                VERBOSE=yes
                ;;
     --version)
        echo "idl_depend: makefile generator for idl -> C++ transformation"
        echo "(C) Ruslan Shevchenko <[EMAIL PROTECTED]>, 1998,1999,2000"
        echo $Id: idl_depend,v 1.1 2000/07/13 15:48:56 rssh Exp $x
                exit
                ;;
     --*)
                usage
                exit
                ;;
   esac
   shift
done


if [ "x$IDLS" = "x" ]
then
  if [ "x$IDL_DIR" = "x" ]
  then
    IDLS="*.idl"
  else
    IDLS="$IDL_DIR/*.idl"
  fi
fi


if [ "x$SGI_MAKE" = "x" ]
then
  if [ "x$ADDITIVE_VARS" = "x" ]
  then
    echo IDL_${VAR_PREFIX}ALL=
  fi
else
  if [ "x$ADDITIVE_VARS" = "x" ]
  then
    idl_all_var= 
    idl_cl_all_objs_var=
    idl_skel_all_objs_var= 
    idl_srv_all_objs_var=
  else
    echo "options --additive-vars and --sgi-make are incompatible" 1>&2 
    exit 1 
  fi
fi

if test "x$VERBOSE" = "xyes"; then
 echo IDL_DIR=$IDL_DIR                >& 2
 echo IDLS=$IDLS                      >& 2
 echo VAR_PREFIX=$VAR_PREFIX          >& 2
 echo H_DIR=$H_DIR                    >& 2
 echo EXTRA_IDLFLAGS=$EXTRA_IDLFLAGS  >& 2
 echo CLN_H_SUFFIX=$CLN_H_SUFFIX      >& 2
 echo CLN_H1_SUFFIX=$CLN_H1_SUFFIX    >& 2
 echo CLN_CPP_SUFFIX=$CLN_CPP_SUFFIX  >& 2
 echo CLN_OBJ_SUFFIX=$CLN_OBJ_SUFFIX  >& 2
 echo SRV_H_SUFFIX=$SRV_H_SUFFIX      >& 2
 echo SRV_H1_SUFFIX=$SRV_H1_SUFFIX    >& 2
 echo SRV_CPP_SUFFIX=$SRV_CPP_SUFFIX  >& 2
 echo SRV_OBJ_SUFFIX=$SRV_OBJ_SUFFIX  >& 2
 echo TIE_H_SUFFIX=$TIE_H_SUFFIX      >& 2
 echo TIE_H1_SUFFIX=$TIE_H1_SUFFIX    >& 2
 echo TIE_CPP_SUFFIX=$TIE_CPP_SUFFIX  >& 2
fi


for i in $IDLS
do
  TESTEMPTY=`echo $i | sed '/\*/d'`
  if [ "x$TESTEMPTY" = "x" ]
  then
    echo no idl files found.
    exit
  fi


  j=`basename $i .idl`
  if [ "x$H_DIR" = "x" ]
  then
    CL_H=${j}${CLN_H_SUFFIX}
    CL_H1=${j}${CLN_H1_SUFFIX}
    SKEL_H=${j}${SRV_H_SUFFIX}
    SKEL_H1=${j}${SRV_H1_SUFFIX}
    TIE_H=${j}${TIE_H_SUFFIX}
    TIE_H1=${j}${TIE_H1_SUFFIX}
  else
    CL_H="${H_DIR}/${j}${CLN_H_SUFFIX}"
    CL_H1="${H_DIR}/${j}${CLN_H1_SUFFIX}"
    SKEL_H="${H_DIR}/${j}${SRV_H_SUFFIX}"
    SKEL_H1="${H_DIR}/${j}${SRV_H1_SUFFIX}"
    TIE_H="${H_DIR}/${j}${TIE_H_SUFFIX}"
    TIE_H1="${H_DIR}/${j}${TIE_H1_SUFFIX}"
  fi


  if [ "x$CPP_DIR" = "x" ]
  then
    CL_CPP=$j${CLN_CPP_SUFFIX}
    SKEL_CPP=${j}${SRV_CPP_SUFFIX}
    TIE_CPP=${j}${TIE_CPP_SUFFIX}
  else
    CL_CPP=${CPP_DIR}/$j${CLN_CPP_SUFFIX}
    SKEL_CPP=${CPP_DIR}/${j}${SRV_CPP_SUFFIX}
    TIE_CPP=${CPP_DIR}/${j}${TIE_CPP_SUFFIX}
  fi


  if [ "x$OBJ_DIR" = "x" ]
  then
    CL_OBJ=$j${CLN_OBJ_SUFFIX}
    SKEL_OBJ=${j}${SRV_OBJ_SUFFIX}
  else
    CL_OBJ=${OBJ_DIR}/$j$CLN_OBJ_SUFFIX
    SKEL_OBJ=${OBJ_DIR}/${j}${SRV_OBJ_SUFFIX}
  fi


  CUR_IDL=$i

  if [ "x$ABSOLUTE" != "x" ]
  then
   case $CL_H in
     /*)
        ;;
      *)
        CL_H=`pwd`/$CL_H
        CL_H1=`pwd`/$CL_H1
        SKEL_H=`pwd`/$SKEL_H
        SKEL_H1=`pwd`/$SKE_H1
        TIE_H=`pwd`/$TIE_H
        TIE_H1=`pwd`/$TIE_H
        ;;
   esac
   case $CL_CPP in
     /*)
        ;;
      *)
        CL_CPP=`pwd`/$CL_CPP
        SKEL_CPP=`pwd`/$SKEL_CPP
        TIE_CPP=`pwd`/$TIE_CPP
        ;;
    esac
    case $CL_OBJ in
      /*)
         ;;
       *)
         CL_OBJ=`pwd`/$CL_OBJ
         SKEL_OBJ=`pwd`/$SKEL_OBJ
         ;;
    esac 
    case $CUR_IDL in
      /*)
         ;;
       *)
         CUR_IDL=`pwd`/$CUR_IDL
         ;;
    esac
  fi

  if test "x$CL_H" = "x$SKEL_H" ; then
    TARGET="$CL_H"
  else
    TARGET="$CL_H $SKEL_H"
  fi


  if test "x$CL_CPP" = "x$SKEL_CPP" ; then
    TARGET="$TARGET $CL_CPP"
  else
    TARGET="$TARGET $CL_CPP $SKEL_CPP"
  fi

  echo "$TARGET: $CUR_IDL"
  echo "        \$(IDL2CXX) \$(IDLFLAGS) $EXTRA_IDLFLAGS   $CUR_IDL"


  if [ "x$H_DIR" != "x" ]
  then
    LOC_CLN_H=$j${CLN_H_SUFFIX}
    LOC_CLN_H1=$j${CLN_H1_SUFFIX}
    LOC_SRV_H=$j${SRV_H_SUFFIX}
    LOC_SRV_H1=$j${SRV_H1_SUFFIX}
    LOC_TIE_H=$j${TIE_H_SUFFIX}
    LOC_TIE_H1=$j${TIE_H1_SUFFIX}
    echo "      mv $LOC_CLN_H  $CL_H"
    if test "x$CLN_H1_SUFFIX" != "xno" ; then
       echo "CLN_H1_SUFFIX:     mv $LOC_CLN_H1  $CL_H1" >& 2
       echo "   mv $LOC_CLN_H1  $CL_H1"
    fi
    if test  "x$SRV_H_SUFFIX" != "xno" ; then
     if test ! "x$SRV_H_SUFFIX" = "x$CLN_H_SUFFIX" ; then
       echo "   mv ${j}${SRV_H_SUFFIX} $SKEL_H"
     fi
    fi
    if test  "x$SRV_H1_SUFFIX" != "xno" ; then
       echo "SRV_H1_SUFFIX      mv $LOC_SRV_H1 $SKEL_H1" >& 2
       echo "   mv $LOC_SRV_H1 $SKEL_H1"
    fi
    if test  "x$TIE_H_SUFFIX" != "xno" ; then
      echo "    if [ -f ${LOC_TIE_H} ]; then mv ${LOC_TIE_H} $TIE_H; fi"
    fi
    if test  "x$TIE_H1_SUFFIX" != "xno" ; then
      echo "    if [ -f ${LOC_TIE_H1} ]; then mv ${LOC_TIE_H1} $TIE_H1; fi"
    fi
  fi
  if [ "x$CPP_DIR" != "x" ]
  then
    LOC_CLN_CPP=$j${CLN_CPP_SUFFIX}
    LOC_SRV_CPP=$j${SRV_CPP_SUFFIX}
    LOC_TIE_CPP=$j${TIE_CPP_SUFFIX}
    echo "      mv $LOC_CLN_CPP $CL_CPP"
    if test  "x$SRV_CPP_SUFFIX" != "xno"; then
     if test  "x$SRV_CPP_SUFFIX" != "x$CLN_CPP_SUFFIX"; then
      echo "    mv ${j}${SRV_CPP_SUFFIX} $SKEL_CPP"
     fi
    fi
    if test ! "x$TIE_CPP_SUFFIX" = "xno"; then
      echo "    if [ -f ${LOC_TIE_CPP} ]; then mv ${LOC_TIE_CPP} $TIE_CPP; fi"
    fi
  fi
  echo
  if [ "x$SGI_MAKE" != "x" ]
  then
    idl_all_var="$idl_all_var $CL_H"
    idl_cl_all_objs_var="$idl_cl_all_objs_var $CL_OBJ"
    idl_skel_all_objs_var="$idl_skel_all_objs_var $SKEL_OBJ"
    if test "x$SKEL_OBJ" = "x$CL_OBJ"
    then
       idl_srv_all_objs_var="$idl_srv_all_objs_var $SKEL_OBJ"
    else
       idl_srv_all_objs_var="$idl_srv_all_objs_var $SKEL_OBJ $CL_OBJ"
    fi
  else
    echo IDL_${VAR_PREFIX}ALL += $CL_H 
    echo IDL_CL_${VAR_PREFIX}ALL_OBJS += $CL_OBJ
    echo IDL_SKEL_${VAR_PREFIX}ALL_OBJS += $SKEL_OBJ
    if test "x$SKEL_OBJ" = "x$CL_OBJ"
    then
      echo IDL_SRV_${VAR_PREFIX}ALL_OBJS += $SKEL_OBJ 
    else
      echo IDL_SRV_${VAR_PREFIX}ALL_OBJS += $SKEL_OBJ $CL_OBJ
    fi
  fi
  echo
  echo  IDL_${VAR_PREFIX}`echo $j | tr [:lower:] [:upper:]`_CL_OBJS=$CL_OBJ
  echo  IDL_${VAR_PREFIX}`echo $j | tr [:lower:] [:upper:]`_SKEL_OBJS=$SKEL_OBJ
  echo  IDL_${VAR_PREFIX}`echo $j | tr [:lower:] [:upper:]`_SRV_OBJS=$CL_OBJ $SKEL_OBJ
  echo
  echo  "$CL_OBJ: $CL_CPP"
  if test "x$CXXCOMPILE" = x
  then
    echo  "     \$(CXX) -c \$(CXXFLAGS) -o $CL_OBJ $CL_CPP"
  else
    echo  "     \$(CXXCOMPILE) -c -o $CL_OBJ $CL_CPP"
  fi
  if test ! "x$SKEL_OBJ" = "x$CL_OBJ"; then
    echo  "$SKEL_OBJ: $SKEL_CPP"
    if test "x$CXXCOMPILE" = "x"
    then
      echo  "   \$(CXX) -c \$(CXXFLAGS) -o $SKEL_OBJ $SKEL_CPP"
    else
      echo  "   \$(CXXCOMPILE) -c -o $SKEL_OBJ $SKEL_CPP"
    fi
  fi
  echo
done

if [ "x$SGI_MAKE" != "x" ]
then
  echo IDL_${VAR_PREFIX}ALL = $idl_all_var 
  echo IDL_CL_${VAR_PREFIX}ALL_OBJS = $idl_cl_all_objs_var
  echo IDL_SKEL_${VAR_PREFIX}ALL_OBJS = $idl_skel_all_objs_var 
  echo IDL_SRV_${VAR_PREFIX}ALL_OBJS = $idl_srv_all_objs_var
fi


Reply via email to