From: Michael G. <mg...@te...> - 2006-09-12 05:28:30
|
> Now when I run make (mymake is a symlink to the MINgw make.exe), I get > the following: > > $ mymake > makefile:136: warning: overriding commands for target > `{/cygdrive/c/ruby/lib/rub > y/1.8/i386-mswin32}.cc{}.obj' > makefile:133: warning: ignoring old commands for target > `{/cygdrive/c/ruby/lib/r > uby/1.8/i386-mswin32}.cc{}.obj' > makefile:148: warning: overriding commands for target > `{/cygdrive/c/ruby/lib/rub > y/1.8/i386-mswin32}.cxx{}.obj' > makefile:145: warning: ignoring old commands for target > `{/cygdrive/c/ruby/lib/r > uby/1.8/i386-mswin32}.cxx{}.obj' > makefile:160: warning: overriding commands for target > `{/cygdrive/c/ruby/lib/rub > y/1.8/i386-mswin32}.cpp{}.obj' > makefile:157: warning: ignoring old commands for target > `{/cygdrive/c/ruby/lib/r > uby/1.8/i386-mswin32}.cpp{}.obj' > makefile:172: warning: overriding commands for target > `{/cygdrive/c/ruby/lib/rub > y/1.8/i386-mswin32}.c{}.obj' > makefile:169: warning: ignoring old commands for target > `{/cygdrive/c/ruby/lib/r > uby/1.8/i386-mswin32}.c{}.obj' > c:\mingw\bin\mingw32-make.exe: *** No rule to make target `{.', needed > by `extfu > nc.obj'. Stop. > $ > > Do the warnings have anything to do with the failure? I don't know (since I don't know how the Makefile is actually created. However the warnings themselves indicate that something is seriously wrong with the created Makefile. For once there are lots of warnings that you have more than one rule for the same target and that in all cases the later rule takes precedence. This implies that either one of the two rules is broken and could be left out anyway or (and that's what I do assume) there went something wrong when creating the rules in the first place. Now let's have a look at a set of rules in particular (as an example): > {$(srcdir)}.cc{}.obj: > $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -Tp$(<:\=/) > > {$(topdir)}.cc{}.obj: > $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -Tp$(<:\=/) > > {$(hdrdir)}.cc{}.obj: > $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -Tp$(<:\=/) > > .cc.obj: > $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -Tp$(<:\=/) With $(hdrdir) == $(topdir) two of the above 4 rules are the same anyway; there are more such examples in your file. I'm not sure I do understand the meaning of "{}" and "{$(somevariable)}" Could e.g. the first pattern be rewritten as $(srcdir)/%.cc : $(srcdir)/%.obj: Note I'm not (yet) saying it is wrong. I simply don't understand it. Then there is this errormsg: > c:\mingw\bin\mingw32-make.exe: *** No rule to make target `{.', needed > by `extfunc.obj'. Stop. I could not find any rule in your Makefile that explicitly names such a target except for those rules (or better patterns) I mentioned above whose meaning I do not understand. Without knowing what "{}" means and not being able to find this syntax when doing a quick search of the make infopages I'd suppose there is something wrong at that point. [I'd be interested in a pointer to read up on that particular syntax if it is indeed valid]. Last not least you get this errormsg when creating your Makefile: > ... > creating Makefile > c:/ruby/lib/ruby/1.8/mkmf.rb:985: warning: global variable `$preload' > not initialized I think that's worth investigating as well. HTH, best, Michael |