On 08/22/2012 10:03 AM, Slávek Banko wrote:
David,
I still have doubts about the patch. Reasons I got:
1) In the GIT never been such a form.
2) Other distributions not reported this problem.
3) The patch removes the command and leaves orphaned parameters.
4) When I tried to add it, on Debian/Ubuntu occurred FTBFS.
I can not help but still it shows me that the problem lies elsewhere.
Specifically, in that instead of 'moc-tqt' is called directly 'moc'.
Variable MOC_QT3 should be set to the 'moc-tqt'.
Please try this patch instead of your proposed. This is a
reduced "essence" of patches 594a27c9, 18173187 and 7b10d93d.
Slavek
OK,
I will look into this further tonight. All I can say is that without it, I get
a FTBFS. As I noted originally, I found the solution here:
http://trinity-devel.pearsoncomputing.net/?0::6608
The gnu make expansion rule is explained here:
http://www.gnu.org/software/make/manual/make.html
Specifically:
4.5.4 Writing Recipes with Directory Search
When a prerequisite is found in another directory through directory search,
this cannot change the recipe of the rule; they will execute as written.
Therefore, you must write the recipe with care so that it will look for the
prerequisite in the directory where make finds it.
For instance, the value of ‘$^’ is a list of all the prerequisites of the rule,
*including the names of the directories* in which they were found, and the value
of ‘$@’ is the target. Thus:
foo.o : foo.c
cc -c $(CFLAGS) $^ -o $@
The explanation of Automatic Variables is here:
http://www.gnu.org/software/make/manual/make.html#Automatic-Variables
10.5.3 Automatic Variables
$^ The names of all the prerequisites, with spaces between them. For
prerequisites which are archive members, only the named member is used (see
Archives). A target has only one prerequisite on each other file it depends on,
no matter how many times each file is listed as a prerequisite. So if you list a
prerequisite more than once for a target, the value of $^ contains just one copy
of the name.
As with the other person who originally posted
http://trinity-devel.pearsoncomputing.net/?0::6608, the change is apparently
necessary so that correct *directory* information is provided for the build. You
must be exporting some path somewhere in your build such that telling make to
use the correct directory information with '$^' results in double-path
information in your build. I don't know. It is either broken on your end or on
my end. I'm not using any exports to build, just the code from GIT. Building
just from GIT without altering the environment requires the patch I submitted.
I still don't completely understand why I need it and you don't other than
what I explained above being the only logical guess I have.
We need one of the makefile wizards on the list to take a look.
--
David C. Rankin, J.D.,P.E.