gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNUstep-base: make check fails on a clean machine


From: Wolfgang Lux
Subject: Re: GNUstep-base: make check fails on a clean machine
Date: Sun, 10 Apr 2011 11:41:00 +0200

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]