>>> "Thomas" == Thomas Richter <[EMAIL PROTECTED]> 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