NAME
idl - Invokes the Interface Definition Language (IDL) compiler
SYNOPSIS
idl filename [argument] ...
ARGUMENTS
- -client file_type
-
Determines which client files to generate. If you do not specify this
argument, the compiler generates all client files. The file types are
as follows:
- none
-
Does not generate client files.
- stub
-
Generates only a client stub file.
- aux
-
Generates only a client auxiliary file. A
client auxiliary file is generated only if the interface contains any
out-of-line or self-pointing types.
- all
-
Generates client stub and client auxiliary
files. This is the default and is the same as not specifying the
-client argument.
- -server file_type
-
Determines which server files to generate. If you do not specify this
argument, the compiler generates all server files. The file types are
as follows:
- none
-
Does not generate server files.
- stub
-
Generates only a server stub file.
- aux
-
Generates only a server auxiliary file. A
server auxiliary file is generated only if the interface contains any
out-of-line, self-pointing, or pipe types.
- all
-
Generates server stub and server auxiliary
files. This is the default and is the same as not specifying the
-server argument.
- -cstub filename
-
Specifies a pathname for the client stub file. When you give a filename,
do not give a file extension; the idl compiler
appends .c to the C source file and .o to the object file.
If you do not use the -cstub argument, the idl compiler
appends _cstub.c to the C source file and _cstub.o to
the object file.
- -sstub filename
-
Specifies a pathname for the server stub file. When you give a filename,
do not give a file extension; the idl compiler
appends .c to the C source file and .o to the object file.
If you do not use the -sstub argument, the idl compiler
appends _sstub.c to the C source file and _sstub.o to
the object file.
- -caux filename
-
Specifies a pathname for the client auxiliary file. When you give a filename,
do not give a file extension; the idl compiler
appends .c to the C source file and .o to the object file.
If you do not use the -caux argument, the idl compiler
appends _caux.c to the C source file and _caux.o to
the object file.
- -saux filename
-
Specifies a pathname for the server auxiliary file. When you give a filename,
do not give a file extension; the idl compiler
appends .c to the C source file and .o to the object file.
If you do not use the -saux argument, the idl compiler
appends _saux.c to the C source file and _saux.o to
the object file.
- -header header_file
-
Allows you to specify a name for the generated header file. By default the
compiler takes the basename of the IDL file and appends the .h
extension to it.
- -out directory
-
Places the output files in the directory you specify. By default the
compiler places the output files in the current working directory.
- -Idirectory
-
Specifies a directory name that contains imported interface definition
files. You can specify more than one directory by specifying additional
-Idirectory arguments on the command line. The
compiler searches the directories in the order you list them. If a file is
present in more than one directory, the compiler takes the first occurrence
of the file. The default behavior of the compiler is to first search the
current directory, then all directories you specify, then the system IDL
directory. The directory you specify is also passed to the C preprocessor
and the C compiler.
- -no_def_idir
-
Specifies that the compiler search only the current directory for imported
files. When you use this with -Idirectory, the
compiler searches only the directories you list, not the current directory,
and not the system IDL directory.
- -no_mepv
-
Causes the compiler to not generate a manager Entry Point Vector (EPV) in
the server stub. Use this argument if the manager code and IDL file do not use
the same operation names. If you specify this argument you must provide
an EPV within the manager code that can be used when the interface
is registered with the RPC server runtime.
The name of the type that you construct an EPV with is
if_name_vmajor-version_minor-version_epv_t where
if_name is the interface name.
It is not necessary to
use this argument if the operation names in the manager code and IDL file
are the same. In this case, the compiler generates a manager EPV in the
server stub using the names of the operations in the IDL file.
(For information on registering
the server, see the rpc_intro(3rpc) and
rpc_server_register_if(3rpc)
reference pages later in this chapter.
See also the OSF DCE Application Development Guide--Core Components.)
- -cepv
-
Generates local routines in the client stub file
(filename_cstub.c) and defines a Client Entry Point Vector (CEPV)
of the name if_name_vmajor-version_minor-version_c_epv
where if_name is the interface name. The CEPV
contains the addresses of the local routines. The client code must call the
routines indirectly by using the addresses in the CEPV; otherwise, the stub
routines in the client stub file must have the same names as the operations in
the IDL file. (For information on registering
the server, see the rpc_intro(3rpc) and
rpc_server_register_if(3rpc)
reference pages later in this chapter.
See also the OSF DCE Application Development Guide--Core Components.)
- -cpp_cmd 'c_preprocessor_command_line'
-
Allows you to specify a C preprocessor
other than the default. The compiler invokes the C
preprocessor found in that command line. The output of the C preprocessor is
an expanded version of the input file(s) containing replacement text for any
preprocessor directives (for example, the #include preprocessor directive).
- -cpp_opt 'command_options'
-
Specifies additional options to be passed to the C preprocessor. You can add
options to the command line used to invoke the C preprocessor
independent of the -cpp_cmd argument. The IDL compiler
concatenates the -cpp_cmd, -cpp_opt, -D, -U, -I arguments
and the source filename into a command used to invoke the C preprocessor.
The compiler repeats this process for each Attribute Configuration File (ACF)
and IDL file.
- -no_cpp
-
Does not invoke the C preprocessor. Note that the C preprocessor must be run on
files that contain preprocessor directives (such as #include) in the
interface definition.
- -cc_cmd 'command_line'
-
Invokes the C compiler and compiler options you specify in the
compiler options.
- -cc_opt 'command_options'
-
Specifies additional options to be passed to the C compiler. You can add
options to the command line used to invoke the C compiler
independent of the -cc_cmd argument. The IDL compiler
concatenates the -cc_cmd, -cc_opt, -I
arguments and the source filename into a command that invokes the C
compiler. This procedure is done for each generated stub or auxiliary file.
- -Dname[=definition]
-
Defines a symbol name and an optional value to be passed to the C
preprocessor. You can use this method of defining a symbol instead of using
#define in the source code. You can use more than one -Dname
argument on the command line. This argument has no effect if
you use the -no_cpp argument.
- -Uname
-
Removes (undefines) any initial definition of a symbol name as defined by
-Dname. You can use this method to remove a
symbol name instead of using #undef in the source code.
You can use more than one
-Uname argument on the command line.
This argument has no effect if you use the -no_cpp argument. If
you define and undefine a name on the same command line, undefining takes
precedence.
- -space_opt
-
Generates code for the marshalling and unmarshalling of data
that is optimized for space, rather than speed.
- -syntax_only
-
Checks only the syntax of the IDL file, but does not generate any output files.
- -keep file_types
-
Specifies which files to retain. To produce the object modules, the IDL
compiler first creates C source modules, then invokes the target C compiler
to produce object modules, and finally, deletes the C source modules.
If you do not use -keep, only the object modules are saved.
The file types are as follows:
- none
-
Does not save the C source or the object
modules. Does not invoke the C compiler.
- c_source
-
Saves only the C source modules. Does
not invoke the C compiler.
- object
-
Saves only the object modules.
- all
-
Saves both the C source and the object
modules.
- -bug n, -no_bug n
-
Retains (-bug) or does not retain (-no_bug) a
specified bug from earlier IDL compiler versions. This is an
NCS compatibility argument and is not supported in DCE
- -stdin
-
Takes the standard output of a previous utility as the input to the idl
command. For example:
$ cat my_filename.idl | idl -stdin
- -version
-
Displays the current version of the IDL compiler.
- -v
-
Prints informational messages (verbose mode) on the screen while the
compiler is running.
- -no_warn
-
Suppresses compiler warning messages.
- -confirm
-
Displays all the idl command arguments you chose, but
does not compile the source IDL file. If you use this with the
-v argument, informational messages about how the compiler
behaves if you do not use -confirm are displayed but no corresponding
actions are performed.
DESCRIPTION
The idl command invokes the IDL compiler to convert an
interface definition, written in IDL, into output files. The output files
include a header file, server stub file, client stub file, and auxiliary
files. The compiler constructs the names of the output files
by keeping the basename of the interface definition source file but
replacing the filename extension with the new extension (or suffix and
extension) appropriate to the newly generated type of output file.
For example, math.idl could produce math_sstub.c
or math_sstub.o for the server stub.
The idl command accepts the following input:
- An interface definition filename.
- Arguments to indicate either special actions to be performed by the
compiler, or special properties of the input or output files.
The IDL compiler searches through directories
for any related ACF. For example,
if you compile a file named source.idl, the compiler automatically
searches for a file named source.acf. The compiler also searches
for any imported IDL file (and its related ACF). The compiler
searches for these files using the following order:
- The current working directory. The compiler always searches this directory
unless you specify the -no_def_idir and -Idirectory
arguments together.
- Any imported directory. The compiler searches each directory you are
specifying
in the -Idirectory argument.
- The system IDL directory.
The compiler automatically imports nbase.idl, which resides in
the system IDL directory.
The compiler always searches this directory
unless you specify the -no_def_idir argument.
- The directory specified in the source filename. If you explicitly specify
a directory in the source IDL pathname, then that directory is searched
for the corresponding ACF. For example,
$ idl /path/pathname/my_source.idl
causes the IDL compiler to look for /path/pathname/my_source.acf if
my_source.acf is not found in the directories in 1 through 3 above.
Note that this directory is not searched for any imported IDL file or
its corresponding ACF.
Restrictions
The following filenames are reserved by the IDL compiler. Naming an IDL file
with one of these names may result in unexpected behavior.
iovector.idl lbase.idl nbase.idl ncastat.idl
ndrold.idl rpc.idl rpcbase.idl rpcpvt.idl
rpcsts.idl rpctypes.idl twr.idl uuid.idl
CAUTIONS
The IDL compiler generates ANSI C code. It also supports C compilers that
are not fully ANSI compliant although a warning message may occur during
compilation of the stubs by the C compiler.
A C compiler that is not fully ANSI compliant may generate the following
warning messages:
- warning: & before array or function: ignored
- warning: enumeration type clash, operator =
FILES
- /lib/cpp
-
C preprocessor
- dceshared/bin/idl
-
Compiler
- dceshared/include
-
System IDL directory for imported files
- dceshared/include/dce/nbase.idl
-
Predefined IDL types
- dceshared/nls/msg/LANG/idl.cat
Compiler error messages
- dceshared/share/include/file.ext
-
All .idl or .h files that are part of DCE RPC
EXAMPLES
- Invoke the IDL compiler to compile the interface definition file test.idl
and keep the generated C source modules. Only server files are generated.
The server stub default filename is overridden by creating a file named
test_ss.c for the
server stub module. The server auxiliary default filename
is overridden by creating a file named test_sa.c for the server auxiliary
module.
$ idl test.idl -keep c_source -client none -sstub test_ss.c -saux test_sa.c
- Invoke the IDL compiler to compile the interface definition file
test.idl, but do not run the C preprocessor.
The manager entry point vector is not
defined in the generated server stub module. The IDL compiler searches the
parent directory of the current directory for any IDL files that test.idl
could import. The generated output files are located in the output
subdirectory under the current directory.
$ idl test.idl -no_cpp -no_mepv -I.. -out ./output
RELATED INFORMATION
Books: OSF DCE Application Development Guide--Core Components.
© 1990-1996, Transarc Corporation