Richard Frith-Macdonald wrote:
On 9 Apr 2011, at 23:17, Wolfgang Lux wrote:
Just tried to execute make check on a clean machine after executing
make but before installing via sudo make install. The result is
that all tests fail to build because the header file GNUstepBase/
GSConfig.h is not found. E.g.,
In file included from /home/wolfgang/Projects/GNUstep/base/Headers/
Foundation/NSAutoreleasePool.h:27
from /usr/GNUstep/System/Library/Makefiles/
TestFramework/Testing.h:26
from decoding.m:5:
/home/wolfgang/Projects/GNUstep/base/Headers/GNUstepBase/
GSVersionMacros.h:193:33: warning: GNUstepBase/GSConfig.h: No such
file or directory
This _could_ be solved by adding -I$(TOP_DIR)/Source to
ADDITIONAL_INCLUDE_DIRS in the check rule in Tests/GNUmakefile.
However, I do not understand why this file is moved to Source/
GNUstepBase from Headers/GNUstepBase in the first place, where it
is created by the configure script. If this file were left in
Headers/GNUstepBase no additional include flags would be needed
(the question applies to config.h as well of course). An additional
benefit of not moving the file is that configure would not touch it
when the configuration hasn't changed and thus could avoid needless
recompilation.
These headers are actually placed in $GNUSTEP_TARGET_DIR/GNUstepBase
when you build base. The GNUSTEP_TARGET_DIR part of that path
contains no architecture/os specific in a flattened setup, but
varies if you are using a non-flattened setup (because there are
different versions of the header for each of the different non-
flattened builds).
Ah well, I see. I guess there would be some autoconf magic to generate
the headers in those directories right away (something like
AC_CONFIG_FILE([Source/$GNUSTEP_TARGET_DIR/GNUstepBase/
GSConfig.h:GSConfig.h.in]) IIRC).
I guess nobody else tried running the tests on an uninstalled base
on a clean machine (which is precisely where it's most important to
run them) ... thanks for doing that.
I've added the appropriate include directory in the makefile so that
it should now work (I hope) for both flattened and non-flattened
builds.
With this change the header is now found. Yet, make check still fails
building the tests before installing. This happens because the
compiler is looking for NXConstantString, e.g.,
decoding.m:47: error: cannot find interface declaration for
`NXConstantString'
The problem is that the compiler is invoked without the -fconstant-
string-class=NSConstantString flag. This flag is added by
AUXILIARY_OBJCFLAGS += -fconstant-string-class=NSConstantString
in base.make. Yet, as this file isn't installed the flag (obviously)
is not added to the command line.
Wolfgang
_______________________________________________
Gnustep-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnustep-dev