1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00
samba-mirror/pidl
Andrew Tridgell 431b25e895 pidl: support using pidl from top level directory
pidl needs to know if it is being used within the samba tree or not,
to get the names of some include files right. This adds support for
using pidl in the top level directory of a Samba build

This change also makes it clear that is_intree() is a boolean
function. Previously it returned different values for Samba3 and
Samba4, but there is nothing that depends on that

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2011-02-07 13:22:00 +11:00
..
lib pidl: support using pidl from top level directory 2011-02-07 13:22:00 +11:00
tests pidl:NDR: add support for 'ms_union' property. 2011-02-01 11:21:42 +01:00
expr.yp pidl: fix formatting in expr.yp 2009-08-07 11:50:24 +02:00
idl.yp pidl: sync idl.yp with the CPP changes 2011-01-05 10:24:48 +01:00
Makefile.PL Move pidl to top-level directory. 2008-09-17 17:12:27 +02:00
MANIFEST pidl: remove references to EJS and SWIG code 2009-01-13 13:01:36 +01:00
META.yml Move pidl to top-level directory. 2008-09-17 17:12:27 +02:00
pidl pidl:Samba3/ClientNDR: implement rpccli_ stubs on top of dcerpc_ stubs 2010-08-12 14:31:23 +02:00
README Update instructions for checking out pidl. 2009-03-10 17:11:39 +01:00
TODO Fix executability of samba3-srv. 2008-10-10 15:00:30 +02:00
wscript pidl:wscript: don't warn about pidl gammar file changes for now 2011-01-18 08:10:06 +01:00

Introduction:
=============
This directory contains the source code of the pidl (Perl IDL) 
compiler for Samba 4. 

The main sources for pidl are available using Git as part of
the combined Samba 3 / Samba 4 tree. Use:
git clone git://git.samba.org/samba.git

Pidl works by building a parse tree from a .pidl file (a simple 
dump of it's internal parse tree) or a .idl file 
(a file format mostly like the IDL file format midl uses). 
The IDL file parser is in idl.yp (a yacc file converted to 
perl code by yapp)

After a parse tree is present, pidl will call one of it's backends 
(which one depends on the options given on the command-line). Here is 
a list of current backends:

Standalone installation:
========================
Run Makefile.PL to generate the Makefile. 

Then run "make install" (as root) to install.

Internals overview:
===================

-- Generic --
Parse::Pidl::Dump - Converts the parse tree back to an IDL file
Parse::Pidl::Samba4::Header - Generates header file with data structures defined in IDL file
Parse::Pidl::NDR - Generates intermediate datastructures for use by NDR parses/generators
Parse::Pidl::ODL - Generates IDL structures from ODL structures for use in the NDR parser generator
Parse::Pidl::Test - Utility functions for use in pidl's testsuite

-- Samba NDR --
Parse::Pidl::Samba4::NDR::Client - Generates client call functions in C using the NDR parser
Parse::Pidl::Samba4::NDR::Parser - Generates pull/push functions for parsing NDR
Parse::Pidl::Samba4::NDR::Server - Generates server side implementation in C
Parse::Pidl::Samba4::TDR - Parser generator for the "Trivial Data Representation"
Parse::Pidl::Samba4::Template - Generates stubs in C for server implementation
Parse::Pidl::Samba4::Python - Generates bindings for Python

-- Samba COM / DCOM --
Parse::Pidl::Samba4::COM::Proxy - Generates proxy object for DCOM (client-side)
Parse::Pidl::Samba4::COM::Stub - Generates stub call handler for DCOM (server-side)
Parse::Pidl::Samba4::COM::Header - Generates headers for COM

-- Wireshark --
Parse::Pidl::Wireshark::NDR - Generates a parser for the Wireshark network sniffer
Parse::Pidl::Wireshark::Conformance - Reads conformance files containing additional data for generating Wireshark parsers

-- Utility modules --
Parse::Pidl::Util - Misc utility functions used by *.pm and pidl.pl
Parse::Pidl::Typelist - Utility functions for keeping track of known types and their representation in C

Tips for hacking on pidl:
 - Look at the pidl's parse tree by using the --keep option and looking 
   at the generated .pidl file. 
 - The various backends have a lot in common, if you don't understand how one 
   implements something, look at the others
 - See pidl(1) and the documentation on midl
 - See 'info bison' and yapp(1) for information on the file format of idl.yp