Print this page
1575 untangle libmlrpc ... (libmlrpc)
*** 17,136 ****
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# This is a wrapper script around the ndrgen compiler (ndrgen1).
- # CC must be defined in the environment or on the command line.
! NDRPROG="${0%/*}/ndrgen1"
! INCDIR=${ROOT}/usr/include/smbsrv
PROGNAME=`basename $0`
ndrgen_usage()
{
if [[ $1 != "" ]] ; then
print "$PROGNAME: ERROR: $1"
fi
! echo "usage: $PROGNAME [-Y cpp-path] file [file]..."
exit 1
}
! # Copy header text from the input ndl file to the generated ndr C file.
! ndrgen_copy_header()
{
- ndl_file=$1
- ndr_file=$2
nawk 'BEGIN { copy=0; }
/^\/\* NDRGEN_HEADER_BEGIN \*\// { copy=1; next; }
/^\/\* NDRGEN_HEADER_END \*\// { copy=0; next; }
! /./ { if (copy==1) print; }' < $ndl_file > $ndr_file
}
- if [[ $# -lt 1 ]] ; then
- ndrgen_usage
- fi
! while getopts "Y" FLAG $*; do
case $FLAG in
! Y)
! CC_FLAG="y"
! ;;
! *)
! ndrgen_usage
! ;;
esac
done
! if [[ $CC_FLAG = "y" ]] ; then
! shift $(($OPTIND - 1))
!
! if [[ $# -lt 1 ]] ; then
! ndrgen_usage "C pre-processor path is missing"
! else
! CC=$1
! shift $(($OPTIND - 1))
!
! # Check for cw being invoked with -_cc or -_gcc
! if [[ $1 = "-_cc" || $1 = "-_gcc" ]] ; then
! CC_ARG=$1
! shift $(($OPTIND - 1))
! fi
! fi
fi
! if [[ $CC = "" ]] ; then
! ndrgen_usage "C pre-processor is not defined"
fi
- if [ ! -f $CC ] || [ ! -x $CC ] ; then
- ndrgen_usage "cannot run $CC"
- fi
-
for i
do
if [[ ! -r $i ]] ; then
print "$PROGNAME: ERROR: cannot read $i"
exit 1
fi
! BASENAME=`basename $i .ndl`
! TMP_NAME=$BASENAME.ndl.c
!
! cp $i $TMP_NAME
!
! if $CC $CC_ARG -E -D__a64 -D__EXTENSIONS__ -D_FILE_OFFSET_BITS=64 \
! -I. -I${INCDIR} -I${INCDIR}/ndl -DNDRGEN $TMP_NAME | \
! $NDRPROG > $BASENAME.raw
! then
! touch ${BASENAME}_ndr.c
! ndrgen_copy_header $i ${BASENAME}_ndr.c
!
! cat - << EOF >> ${BASENAME}_ndr.c
! /*
! * Please do not edit this file.
! * It was generated using ndrgen.
! */
!
! #include <strings.h>
! #include <smbsrv/ndr.h>
! #include <smbsrv/ndl/$BASENAME.ndl>
! EOF
!
! cat $BASENAME.raw >> ${BASENAME}_ndr.c
!
! rm -f $BASENAME.raw
! rm -f $TMP_NAME
! else
! rm -f $BASENAME.raw
! rm -f $TMP_NAME
! exit 1
! fi
done
--- 17,118 ----
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
+
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
+ # Copyright 2013 Nexenta Systems, Inc. All rights reserved.
+ #
# This is a wrapper script around the ndrgen compiler (ndrgen1).
! NDRPROG="${0}1"
+ # Note: most *.ndl files require an ANSI-compatible cpp,
+ # so we can NOT use /usr/lib/cpp or /usr/ccs/lib/cpp
+ # Wish there was an easier way to get an ANSI cpp.
+ CPP="${CC} -E"
+ CPPFLAGS="-DNDRGEN"
+ V_FLAG=
+
PROGNAME=`basename $0`
ndrgen_usage()
{
if [[ $1 != "" ]] ; then
print "$PROGNAME: ERROR: $1"
fi
! echo "usage: $PROGNAME [options] file.ndl [file.ndl]..."
! echo " options: -Y cc-path -Ddefine -Iinclude"
exit 1
}
! # Process the input ndl file ($1) generating C code on stdout.
! process()
{
+ # Put the standard top matter
+ #
+ # Want the include directive to have just
+ # include "file.ndl" (no path) so...
+ inc_ndl=`basename $1`
+ cat - << EOF
+ /*
+ * Please do not edit this file.
+ * It was generated using ndrgen.
+ */
+
+ #include <strings.h>
+ #include <libmlrpc/ndr.h>
+ #include "$inc_ndl"
+ EOF
+
+ # Put optional custom top matter
nawk 'BEGIN { copy=0; }
/^\/\* NDRGEN_HEADER_BEGIN \*\// { copy=1; next; }
/^\/\* NDRGEN_HEADER_END \*\// { copy=0; next; }
! /./ { if (copy==1) print; }' $1
!
! # now the real ndrgen output
! [ -n "$V_FLAG" ] &&
! echo "$CPP $CPPFLAGS $1 | $NDRPROG" >&2
! $CPP $CPPFLAGS $1 | $NDRPROG
}
! while getopts "D:I:Y:V" FLAG
! do
case $FLAG in
! D|I) CPPFLAGS="$CPPFLAGS -${FLAG}${OPTARG}";;
! Y) CPP="$OPTARG";;
! V) V_FLAG="V";;
! *) ndrgen_usage;;
esac
done
+ shift $(($OPTIND - 1))
! if [[ $# -lt 1 ]] ; then
! ndrgen_usage
fi
! if [ ! -x $CPP ] ; then
! ndrgen_usage "cannot run $CPP"
fi
for i
do
if [[ ! -r $i ]] ; then
print "$PROGNAME: ERROR: cannot read $i"
exit 1
fi
! base=`basename $i .ndl`
! process $i > ${base}_ndr.c || {
! echo "ndrgen error";
! rm ${base}_ndr.c;
! }
done