automake
[Top][All Lists]
Advanced

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

Re: Changing library does *not* always cause executable to be remade wit


From: zaufi
Subject: Re: Changing library does *not* always cause executable to be remade with "make"!?!?..
Date: Wed, 7 May 2003 13:09:27 +0400
User-agent: KMail/1.5.9

On Wednesday 07 May 2003 10:25, address@hidden wrote:
> I have a complex tree of source code.
>
> Some directories have Makefile.am's that create noinst libraries.
>
> All the noinst libraries are used to build a single executable.
>
> If noinst library is changed... this does *not* always cause
>
> executable to be rebuilt!?!?!
>
> How fix???
>
> Executable is only rebuilt if one of name_SOURCES files is changed.
>
> This is a problem because modifying something in the
>
> name_LDADD list does NOT cause executable to be remade?!?!?!
>
> Chris

I have almost the same tree as yours. My solution is:

Ex:

bin_PROGRAMS = name
name_SOURCES = ...
name_DEPENDENCIES = $(top_builddir)/path/libnoinst.a ...
name_LDADD = $(name_DEPENDENCIES)

The main trick is to explain to make how to rebuild noinst library in other 
than current directory.To do this I use the following in my 
admin/Makefile.deps (which is included in _EVERY_ Makefile.am's):

#
# Get all depended targets for all 'main' targets as space separated list
#
AM_DEPTGTS := $(sort $(foreach t, \
                $(bin_PROGRAMS) $(pkgbin_PROGRAMS) $(lib_LTLIBRARIES) 
$(pkglib_LTLIBRARIES) \
                $(noinst_LIBRARIES) $(LIBRARIES) $(check_PROGRAMS), \
                $($(addsuffix _DEPENDENCIES, $(subst .,_,$(subst 
-,_,$(t)))))))


#
# Rule to make all depended libs
#
$(AM_DEPTGTS):
        address@hidden(MKMSG) "Make depended target \`$(@)'"; \
        $(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(DEPDIR)/includes && \
        $(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) || exit 1

... so make will know how to build $(top_builddir)/path/libnoinst.a (and other 
depended libs)

good luck





reply via email to

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