Hello! On Thu, Oct 12, 2006 at 04:21:01AM -0000, Ralf Corsepius wrote: > From: Ralf Corsepius <[EMAIL PROTECTED]> > On Thu, 2006-10-12 at 00:05 +0200, Thomas Schwinge wrote: > > On Wed, Oct 11, 2006 at 05:48:12AM +0200, Ralf Corsepius wrote: > > > On Tue, 2006-10-10 at 16:15 +0200, Thomas Schwinge wrote: > > > > On Sun, May 14, 2006 at 06:09:10AM +0200, Ralf Wildenhues wrote: > > > > > > http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=automake&pr=492 > > > > > > We were talking about the issue why Automake doesn't emit proper rules > > > > for compiling (pre processed) Assembler files (the .S ones) when using > > > > `AM_INIT_AUTOMAKE([subdir-objects])'. > > > > > > > > When using code file `libfoo_a_SOURCES = somewhere/a.S', Automake > > > > currently assembles `somewhere/a.S' and puts `a.o' into the current > > > > directory (as opposed to `somewhere/a.o'), but when creating `libfoo.a' > > > > it wants to add `somewhere/a.o', which will then obviously fail. > > > > Indeed I can confirm that this isn't a problem anymore with the cvs > > version of Automake. > > > > > Unfortunately so far, there had not been a new automake release since > > > then. > > > > Is there already an estimation possible when this will happen? > > I wish I know that, at least I am eagerly waiting for it, because we > (rtems.org) can't avoid to ship a patched/hacked version of automake, > exactly because of this problem :(
What I'm doing in the mean time is applying the following hack (which is both ugly and nice at the same time... ;-) to _projects_ which depend on that functionality, i.e. I don't patch Automake itself. configure.ac #v+ [...] # # Makefile.correct_output_files_for_.S_files.patch # # The used version of Automake might emit rules that don't put compiled (pre # processed) Assembler files where they belong. We're bitten by this bug # because we use the Automake option `subdir-objects', to not clutter the main # build directory with all the object files. The problem is that the emitted # rules will place those in the main build directory, but later, when creating # the libraries, look for them in the subdirectories. # # See <http://sourceware.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=automake&pr=492>. # # Another note: even with versions of Automake that don't have this issue # fixed, a correct rule is emitted for linux/src/arch/i386/lib/semaphore.S, see # the comment by Thomas Schwinge on 2006-10-10 on the above bug report. # # Again, a real patch is being used here and not some `sed' magic, so that # it'll fail loudly in case some internals we're relying on are changed. # AC_CONFIG_COMMANDS([frob_Makefile_for_correct_output_files_for_.S_files],[ # Do we have a version of Automake that doesn't have this bug? if grep -q CPPASCOMPILE.\*-c.\*-o < "$srcdir"/Makefile.in then] AC_MSG_NOTICE([... not a problem with the used version of Automake.]) [# We don't. elif "$PATCH" -f \ < "$srcdir"/Makefile.correct_output_files_for_.S_files.patch then] AC_MSG_NOTICE([Applied a patch to fix a bug in your version of Automake. ] [The applied fix should work in most cases. You could also consider] [updating to Automake 1.10 or better.]) [else] AC_MSG_ERROR([failed to patch using ] [`Makefile.correct_output_files_for_.S_files.patch'. ] [You have a serious problem. Please contact <$PACKAGE_BUGREPORT>.]) [fi ],[ PACKAGE_BUGREPORT=$PACKAGE_BUGREPORT PATCH=$PATCH ]) AC_OUTPUT #v- Makefile.correct_output_files_for_.S_files.patch #v+ --- Makefile.save 2006-10-09 23:43:54.000000000 +0200 +++ Makefile 2006-10-09 23:57:00.000000000 +0200 @@ -1864,6 +1864,6 @@ $(SHELL) ./config.status;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ frob_Makefile_for_correct_output_files_for_.S_files $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ frob_Makefile_for_correct_output_files_for_.S_files $(am__depfiles_maybe);; \ esac; @@ -3520,5 +3520,5 @@ .S.o: - $(CCASCOMPILE) -c $< + $(CCASCOMPILE) -c -o $@ $< .S.obj: #v- As I promised: nice and ugly at the same time... Regards, Thomas
signature.asc
Description: Digital signature
