help-make
[Top][All Lists]
Advanced

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

Help needed on implicit rule search/paths et al


From: Tristan Van Berkom
Subject: Help needed on implicit rule search/paths et al
Date: Wed, 02 Apr 2003 16:38:50 -0500

Hello all,
        I've been working for about a week now on a build environment
with relatively many sources (this includes libraries, kernel drivers,
daemon
processes written in a number of different languages). We develop an
aplience (jukebox embedded system) just to give you an idea of the 
environment; the output of our source tree is a working "distro" if
you will.

I have used `make' before for a number of projects but never
so extensivly or for such a large source tree. Actualy I've read
the docs on make at gnu.org/manual/ so many times that I practicly know
them by heart. Tonight; I will read "Managing Projects with Make" 
(O'Reilly books) but I doubt it will help :(

        The first question I have is "is this list archived somewhere ?"
I got this mail address from:
        http://www.gnu.org/directory/make.html
and it doesn't seem to point to any subscription page.

        Question number 2.. a little more technical:
"I have a target that `make' seems to think that it made but didn't."
(wow; as if that seemed to mean anything ... details below)

I sincerely hope that I'm not writing this letter to /dev/null
Maybe someone has had similar problems that can explain or
maybe someone can point me to some usefull documentation before
I start reading the source :S

Well; Cheers all,
                -Tristan Van Berkom

mailto:address@hidden  // work (week)
mailto:address@hidden // home (weekend)


===================
Details follow:

Need to make .o and .dep.mk from .c

so on the first pass (say after make maintainer-clean)
I generate the .dep.mk from the .c and then the .o from
the .c useing some pattern rules like so:

%.o: %.c
        $(mkobj)

%.dep.mk: %.c
        $(mkdep)


this works fine because the .dep.mk doesn't exist.
on the next pass we'll include all the .dep.mk's for
"that subdir".

See `Figure 1' below for an example of the generated .dep.mk
No; there are no trailing tabs. the last line is terminated with a
newline.

now; I would expect that after `touch'ing one of those headers
the .o and the .dep.mk would get remade...

(see `Figure 2' for the output from `make --debug=b all')
at this point. it seems that make forgot that the .o
also had to be remade.

and whats worse; if I go ahead and `rm -f obj/gtkjacket.o'
(one of the prereq's of libgtktt.so wich is `all:')
(see `Figure 3' for the output from `make --debug=b all')

two important lines:
    Must remake target
`../../../jukebox-source/libs/gtktt/obj/gtkjacket.o'.
    Successfully remade target file
`../../../jukebox-source/libs/gtktt/obj/gtkjacket.o'.

Funny; I gave exactly 1 pattern rule for `%.o:%.c' and it
wasn't executed... hmmm.


Figure 1
=========================================================================
$(topbuilddir)/jukebox-source/libs/gtktt/obj/gtktogglejacket.o \
$(topbuilddir)/jukebox-source/libs/gtktt/config/gtktogglejacket.dep.mk :
\
    $(topbuilddir)/jukebox-source/libs/gtktt/src/gtktogglejacket.c \
    $(topbuilddir)/jukebox-root/usr/include/gtk-2.0/gtk/gtklabel.h \
    $(topbuilddir)/jukebox-root/usr/include/gtk-2.0/gdk/gdk.h \
    $(topbuilddir)/jukebox-root/usr/include/gtk-2.0/gdk/gdkcolor.h \
    $(topbuilddir)/jukebox-root/usr/include/gtk-2.0/gdk/gdktypes.h \
    $(topbuilddir)/jukebox-root/usr/include/glib-2.0/glib.h \
    $(topbuilddir)/jukebox-root/usr/include/glib-2.0/galloca.h \
    $(topbuilddir)/jukebox-root/usr/include/glib-2.0/gtypes.h \
    $(topbuilddir)/jukebox-root/usr/lib/glib-2.0/include/glibconfig.h \
    $(topbuilddir)/jukebox-root/usr/include/glib-2.0/gmacros.h \
    $(topbuilddir)/jukebox-root/usr/include/limits.h \
    $(topbuilddir)/jukebox-root/usr/include/features.h \
               < ... snip ... >
    $(topbuilddir)/jukebox-root/usr/include/gtk-2.0/gtk/gtkvseparator.h
\
    $(topbuilddir)/jukebox-root/usr/include/glade-2.0/glade/glade.h \
    $(topbuilddir)/jukebox-root/usr/include/glade-2.0/glade/glade-xml.h
\
    $(topbuilddir)/jukebox-root/usr/include/gtk-2.0/gtk/gtkdata.h \
   
$(topbuilddir)/jukebox-root/usr/include/glade-2.0/glade/glade-widget-tree.h
=========================================================================


Figure 2
=========================================================================
Reading makefiles...
Updating goal targets....
 File `all' does not exist.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtktogglejacket.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttanimator.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtktthscale.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttkeyboard.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttmisc.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttsplash.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttvscale.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttxml.dep.mk'.
Must remake target `all'.
Successfully remade target file `all'.
make: Nothing to be done for `all'.
=========================================================================

Figure 3
=========================================================================
Reading makefiles...
Updating goal targets....
 File `all' does not exist.
     File `../../../jukebox-source/libs/gtktt/obj/gtkjacket.o' does not
exist.
    Must remake target
`../../../jukebox-source/libs/gtktt/obj/gtkjacket.o'.
    Successfully remade target file
`../../../jukebox-source/libs/gtktt/obj/gtkjacket.o'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtktogglejacket.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttanimator.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtktthscale.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttkeyboard.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttmisc.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttsplash.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttvscale.dep.mk'.
       Prerequisite
`../../../jukebox-root/usr/include/gtk-2.0/gtk/gtkwidget.h' is new
er than target
`../../../jukebox-source/libs/gtktt/config/gtkttxml.dep.mk'.
   Prerequisite `../../../jukebox-source/libs/gtktt/obj/gtkjacket.o' of
target `libgtktt.so' 
does not exist.
  Must remake target `libgtktt.so'.
  Ignoring VPATH name
`../../../jukebox-source/libs/gtktt/bin/libgtktt.so'.
/usr/bin/gcc --shared -o ./bin/libgtktt.so ./obj/gtkjacket.o
./obj/gtktogglejacket.o .
/obj/gtkttanimator.o ./obj/gtktthscale.o ./obj/gtkttkeyboard.o
./obj/gtkttmisc.o ./obj
/gtkttsplash.o ./obj/gtkttvscale.o ./obj/gtkttxml.o
=========================================================================




reply via email to

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