Hi Adam, * Adam Mercer wrote on Wed, Dec 30, 2009 at 11:57:27AM CET: > On one of my projects I'm running into an issue, only on certain > platforms, where the compile script isn't available. e.g. on CentOS 5 > > $ autoreconf > test/Makefile.am: required file `gnuscripts/compile' not found > autoreconf: automake failed with exit status: 1 > $ > > yet I have other projects, on the same platform, that don't require > the compile script to be available. AFAICT the compile script is for > systems where the the compiler doesn't understand "-c -o". This > therefore leads me to the question why does the compiler not > understand "-c -o" in this package but it does in others?
The rules generated by Automake may or may not need to use the -c and -o options at the same time. This depends upon a few internal details: whether the subdir-objects option is used, whether objects need to be renamed due to per-target compile flags, etc. Even in packages where the `compile' script is not deemed necessary, the rules might use '-c -o' if configure determined that GCC is used; that compiler is always assumed to allow this option combination. > The > test/Makefile.am to which the above error refers is attached. Is there > anything in this that explains why it wants the compile script? I cannot see anything in the Makefile.am that would need -c -o. Note that for library dependencies that apply to all programs in a makefile you can use the "global" LDADD variable, which may allow you to remove most if not all of those per-target *_LDADD settings. Note further that the default set of sources for a program foo is foo.c (and Automake 1.11+ allows you to change the default source file extension to, say, .cpp, too), so you don't need to explicitly set most of those *_SOURCES variables either. > PS: I simple solution would be to just put an appropriate version of > the compile script in the gnuscripts but I would like to understand > why it is needed in this case, and not in others. Sure. Hope this helps. Cheers, Ralf