Ruslan,
I think you will find that automake's depcomp in C preprocessor mode
already handles IDL dependencies (I'm using the CVS version now :).
Regards,
Alex.
Ruslan Shevchenko writes:
> 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
>
>