This is the mail archive of the
automake@gnu.org
mailing list for the automake project.
Re: Corba IDL and automake
- From: Alexandre Duret-Lutz <duret_g at lrde dot epita dot fr>
- To: Thomas Richter <thor at math dot TU-Berlin dot DE>
- Cc: automake at gnu dot org
- Date: Tue, 25 Feb 2003 17:46:36 +0100
- Subject: Re: Corba IDL and automake
- References: <200302251033.LAA05774@cleopatra.math.tu-berlin.de>
>>> "Thomas" == Thomas Richter <thor at math dot TU-Berlin dot DE> writes:
[...]
Thomas> 1) If I run "automake --foreign", I get the following warnings:
Thomas> idl/Makefile.am:21: invalid variable `noinst_libidl_a_HEADERS'
Thomas> idl/Makefile.am:8: invalid unused variable name: `IDL_SOURCES'
Thomas> Why is "noinst_libidl_a_HEADERS" invalid? These are header files for
Thomas> the idl static library that are not to be included in the distribution.
Because foo_HEADERS means "please install these header in the
$(foodir) directory during `make install'", and you haven't
defined $(noinst_libidl_adir).
These headers should be listed in libidl_a_SOURCES or
nodist_libidla_a_SOURCES (whether you want to distribute them or
not).
Thomas> Why is IDL_SOURCES unused? It is very well used in all
Thomas> the lines below.
It's not used by Automake. Automake reserves *_SOURCES
variables. IDL_SOURCES would be the sources for an undeclared
IDL program, so Automake presumes you made a typo.
Thomas> 2) I need to specify an explicit make rule how to form
Thomas> an object from a .cpp file. If I don't, then the
Thomas> automake generated makefile does not include any such
Thomas> rule, and it won't compile any object code and would
Thomas> rather fail to build the final library. Why is this so,
Automake doesn't understand what you do because you are using
many "GNUmakisms" such as "$(forall...)" or %-rules. By doing
so you hide data, so Automake cannot help.
Thomas> and what would be a more apropriate solution instead of
Thomas> giving the rule manually (which is, as far as I
Thomas> understand it, against the automake paradigm).
I suggest you install Automake 1.7.3 (any version >= 1.7 will
do), and run it with the -Wall option. This will flag various
unportable constructs in your Makefile.
If you fixes these (using `.idl.cpp:' instead of `%.cpp: %.idl',
using `$(idlsources:.idl=.cpp)' instead of `$(forall...)'), then
Automake should work better. At least it will see your sources,
so it can output rules to build them.
--
Alexandre Duret-Lutz