[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: aggregate makefile not working correctly (make install)
From: |
Nicola Pero |
Subject: |
Re: aggregate makefile not working correctly (make install) |
Date: |
Sun, 5 Jan 2003 00:25:38 +0000 (GMT) |
> Hi all,
>
> assume you have a number of libraries, bundles and tools that depend on
> each other and that you want to build with a single make file. I have
> set this up as follows:
>
> GNUSTEP_MAKEFILES = $(GNUSTEP_SYSTEM_ROOT)/Makefiles
PS. you don't need to set GNUSTEP_MAKEFILES, it's set automatically by
GNUstep.sh.
> include $(GNUSTEP_MAKEFILES)/common.make
> SUBPROJECTS = <list of projects; libraries first, then the bundles, then
> the tools>
> include $(GNUSTEP_MAKEFILES)/aggregate.make
>
> Whenever I add a new symbol to one of the libraries, the tools depending
> on this library/symbol do not compile with "make install".
>
> ld: fatal: Symbol referencing errors. No output written to
> shared_obj/sparc/solaris2.8/gnu-gnu-gnu/HolzPoolWeb
>
> I need to cd into in to the library directory that got a new symbol, do
> "make install" there, cd back to the parent directory and type "make
> install" again. That is a bit annoying. What am I missing? Shouldn't
> this work?
One trick which can be helpful is to make sure that the tools are
compiling and linking against the non-installed versions of the libraries.
It seems your problem is that the tools are built against the installed
versions of the libraries (then, of course, you need to install the new
libraries first before being able to use them).
In the GNUmakefile for the tools, you can add something like -
ADDITIONAL_INCLUDE_DIRS += -I../Source
ADDITIONAL_LIB_DIRS += -L../Source/obj
with the appropriate -I and -L flags (those are just examples for a single
library in Source, with headers in Source too.) to make sure that the
tools are using the libraries and library headers in the package itself --
not the installed ones.
To make sure this is satisfied, you can delete the installed libraries,
and try compiling everything (with a single 'make' at top-level), then
hack the -I and -L flags until it compiles by finding headers and
libraries in the non-installed locations. :-)
If you're confused, you can also have a look at gnustep-base or
gnustep-gui for example which are doing this.
Apologizes if I missed your question/problem, and you already knew this.