Build (D)COM output again.
authorJelmer Vernooij <jelmer@samba.org>
Fri, 9 May 2008 11:20:42 +0000 (13:20 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 15 Sep 2008 15:37:06 +0000 (17:37 +0200)
source4/librpc/scripts/build_idl.sh
source4/pidl/pidl

index 3f13b64a2e9117cfcc450838d181714f5d674524..5b2d09f6542debcab4fdf72cd06d53aac3883116 100755 (executable)
@@ -8,7 +8,7 @@ PIDL_EXTRA_ARGS="$*"
 
 [ -d $OUTDIR ] || mkdir -p $OUTDIR || exit 1
 
-PIDL="$PIDL --outputdir $OUTDIR --header --ndr-parser --server --client --swig --python $PIDL_EXTRA_ARGS"
+PIDL="$PIDL --outputdir $OUTDIR --header --ndr-parser --server --client --swig --python --dcom-proxy --com-header $PIDL_EXTRA_ARGS"
 
 if [ x$FULLBUILD = xFULL ]; then
       echo Rebuilding all idl files in $IDLDIR
index b7a22f04997b307dc0ea1b523215f25af3daaaeb..af6c6cca89afb2c16aafdfc36d90ec7e426dbd23 100755 (executable)
@@ -483,6 +483,8 @@ my($opt_quiet) = 0;
 my($opt_outputdir) = '.';
 my($opt_verbose) = 0;
 my($opt_warn_compat) = 0;
+my($opt_dcom_proxy);
+my($opt_com_header);
 
 #########################################
 # display help text
@@ -523,6 +525,8 @@ Samba 4 output:
  --swig[=OUTFILE]        create swig wrapper file [BASENAME.i]
  --server[=OUTFILE]      create server boilerplate [ndr_BASENAME_s.c]
  --template              print a template for a pipe
+ --dcom-proxy[=OUTFILE]  create DCOM proxy [ndr_BASENAME_p.c]
+ --com-header[=OUTFILE]  create header for COM [com_BASENAME.h]
 
 Samba 3 output:
  --samba3-ndr-client[=OUTF] create client calls for Samba3 
@@ -566,6 +570,8 @@ my $result = GetOptions (
                'python' => \$opt_python,
            'diff' => \$opt_diff,
            'swig:s' => \$opt_swig,
+        'dcom-proxy:s' => \$opt_dcom_proxy,
+               'com-header:s' => \$opt_com_header,
            'quiet' => \$opt_quiet,
                'verbose' => \$opt_verbose,
            'warn-compat' => \$opt_warn_compat,
@@ -626,6 +632,25 @@ sub process_file($)
                unlink($tempfile);
        }
 
+       my $comh_filename = ($opt_com_header or "$outputdir/com_$basename.h");
+       if (defined($opt_com_header)) {
+               require Parse::Pidl::Samba4::COM::Header;
+               my $res = Parse::Pidl::Samba4::COM::Header::Parse($pidl,"$outputdir/ndr_$basename.h");
+               if ($res) {
+                       FileSave($comh_filename, $res);
+               }
+       }
+
+       if (defined($opt_dcom_proxy)) {
+               require Parse::Pidl::Samba4::COM::Proxy;
+               my $res = Parse::Pidl::Samba4::COM::Proxy::Parse($pidl,$comh_filename);
+               if ($res) {
+                       my ($client) = ($opt_dcom_proxy or "$outputdir/$basename\_p.c");
+                       FileSave($client, $res);
+               }
+       }
+
+
        if ($opt_warn_compat) {
                require Parse::Pidl::Compat;
                Parse::Pidl::Compat::Check($pidl);