aMule Forum
English => Compilation problems => Topic started by: Gerd78 on January 08, 2007, 11:19:59 PM
-
The 20070108 reorganization breaks builds where srcdir != builddir.
There are two problems:
(1) src/libs/ec/abstracts/Makefile.am runs ./file_generator.pl from the current directory.
This should be $srcdir/file_generator.pl and is trivial to fix.
(2) file_generator.pl opens License.abstract from the current directory at line 202. It should open $srcdir/License.abstract instead.
This is more tricky to fix because file_generator.pl needs to allow specifying a different input file.
The rule is also run unconditionally even if it has just been run and the input files didn't change because all depends on BUILT_SOURCES, which is ECGeneratedFiles, which in turn is not a file (and therefore doesn't have a timestamp).
Furthermore, "make distclean" and "make maintainer-clean" are not removing src/libs/ec/cpp/ECTagTypes.h although it is a generated file.
-
A partial workaround is changing the rule
ECGeneratedFiles: $(ECGeneratedFilesSources)
./file_generator.pl $(ECGeneratedFilesSources);
to be
ECGeneratedFiles: $(ECGeneratedFilesSources)
cd $(srcdir) && ./file_generator.pl $(ECGeneratedFilesSources);
That way, "make" should at least run (not tested), but it doesn't fix the other issues.
-
Originally posted by Gerd78
The 20070108 reorganization breaks builds where srcdir != builddir.
There are two problems:
(1) src/libs/ec/abstracts/Makefile.am runs ./file_generator.pl from the current directory.
This should be $srcdir/file_generator.pl and is trivial to fix.
Done.
Originally posted by Gerd78
(2) file_generator.pl opens License.abstract from the current directory at line 202. It should open $srcdir/License.abstract instead.
This is more tricky to fix because file_generator.pl needs to allow specifying a different input file.
file_generator now forces the first parameter to be the dir where the abstracts are located. It also generates the files based on that folder, which might be right or wrong, I have no idea.
Originally posted by Gerd78
The rule is also run unconditionally even if it has just been run and the input files didn't change because all depends on BUILT_SOURCES, which is ECGeneratedFiles, which in turn is not a file (and therefore doesn't have a timestamp).
That's intentional.
Originally posted by Gerd78
Furthermore, "make distclean" and "make maintainer-clean" are not removing src/libs/ec/cpp/ECTagTypes.h although it is a generated file.
That's intentional too.
-
Sorry Kry, this is just broken.
"make install" currently rebuilds the sources because install depends on all, which depends on BUILT_SOURCES, which is always rebuilt. These 2 .h files trigger a rebuild of everything because mostly anything else depends on them. "make" followed by "make install" effectively builds the codebase twice. I just accidentally noticed it because the build took almost twice as long as usual.
I won't believe that this is intentional until you clearly say so. Otherwise, can we please try to fix it properly?
-
Is not finished, that's why it's intentional. I'm not done yet.
-
Try now.