PDA

View Full Version : error in make




Soverc
Feb 10, 2006, 01:03 AM
the first example is what should happen the second one I give is what is happening for me. If anyone can shed some light on this please do so.

Thanks,

EXAMPLE 1 --

$ FOOMATIC_RIP=/usr/libexec/cups/filter/foomatic-rip CC=gcc-4.0 ./configure
checking for gcc... gcc-4.0
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc-4.0 accepts -g... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking whether make sets ${MAKE}... yes
checking for gzip... /usr/bin/gzip
checking for cups/model/... /usr/share/cups/model
checking for gs... /usr/local/bin/gs
testing /usr/local/bin/gs...
ESP Ghostscript 7.07 (2003-07-12)
Copyright 2003 artofcode LLC and Easy Software Products, all rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Version=707
ok
checking for foomatic-rip... /usr/libexec/cups/filter/foomatic-rip
checking for foomatic-ppdfile... no
checking for foomatic/db/... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating m2300w.spec
config.status: creating src/Makefile
config.status: creating src/m2300w-wrapper
config.status: creating ppd/Makefile
config.status: creating psfiles/Makefile
config.status: creating foomatic/Makefile

$ make
for DIR in src psfiles foomatic ppd; do (cd $DIR; make all); done
gcc-4.0 -g -O2 -o m2300w m2300w.c
make[1]: Nothing to be done for `all".
make[1]: Nothing to be done for `all".
make[1]: Nothing to be done for `all".

EXAMPLE2 --What happens for me---Note the error at the MAKE
FOOMATIC_RIP=/usr/libexec/cups/filter/foomatic-rip CC=gcc-4.0 ./configure
checking for gcc... gcc-4.0
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc-4.0 accepts -g... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking whether make sets ${MAKE}... yes
checking for floor in -lm... yes
checking for gzip... /usr/bin/gzip
checking for cups/model/... /usr/share/cups/model
checking for gs... /usr/local/bin/gs
testing /usr/local/bin/gs...
ESP Ghostscript 7.07 (2003-07-12)
Copyright 2003 artofcode LLC and Easy Software Products, all rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Version=707
ok
checking for foomatic-rip... /usr/libexec/cups/filter/foomatic-rip
checking for foomatic-ppdfile... no
checking for foomatic/db/... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating m2300w.spec
config.status: creating src/Makefile
config.status: creating src/m2300w-wrapper
config.status: creating ppd/Makefile
config.status: creating psfiles/Makefile
config.status: creating foomatic/Makefile
mikes-computer:/temp/m2300w-0.51 mike$ make
for DIR in src psfiles foomatic ppd; do (cd $DIR; make all); done
make[1]: Nothing to be done for `all'.
make[1]: Nothing to be done for `all'.
make[1]: Nothing to be done for `all'.
make[1]: *** No rule to make target `magicolor_2300W-m2300w.ppd', needed by `all'. Stop.
make: *** [all] Error 2



Doctor Q
Feb 10, 2006, 01:35 AM
Two thoughts, although I don't know if they will help.

1. If you add the make -d switch, the make command will tell you why it is making each decision. It might produce a lot of output to go though, but that could let you see what file dependencies are being tested, if you understand the way makefiles work (i.e., targets, dependencies, and date checking).

2. File foomatic/Makefile, which is being created, has a target named "all" which has a dependency on file magicolor_2300W-m2300w.ppd. But there is no rule to create file magicolor_2300W-m2300w.ppd.

I'm guessing that ppd is a printer definition file that should have already been present, so no rule is needed to generate it and "make all" is complaining that it can't find the file.

Soverc
Feb 10, 2006, 03:01 PM
Below you can see what I am getting when I do a make -d I have only pasted the last 25 or so lines.

I dont understand what the 'all' is.



Rejecting impossible implicit prerequisite `all.cc'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.C'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.cpp'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.p'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.f'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.F'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.m'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.r'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.s'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.S'.
Trying pattern rule with stem `all'.
Rejecting impossible implicit prerequisite `all.mod'.
Trying pattern rule with stem `all'.
Trying implicit prerequisite `all.sh'.
Looking for a rule with intermediate file `all.sh'.
Avoiding implicit rule recursion.
Trying pattern rule with stem `all.sh'.
Trying implicit prerequisite `all.sh,v'.
Trying pattern rule with stem `all.sh'.
Trying implicit prerequisite `RCS/all.sh,v'.
Trying pattern rule with stem `all.sh'.
Trying implicit prerequisite `RCS/all.sh'.
Trying pattern rule with stem `all.sh'.
Trying implicit prerequisite `s.all.sh'.
Trying pattern rule with stem `all.sh'.
Trying implicit prerequisite `SCCS/s.all.sh'.
No implicit rule found for `all'.
Finished prerequisites of target file `all'.
Must remake target `all'.
make[1]: *** No rule to make target `all'. Stop.
Got a SIGCHLD; 1 unreaped children.
Reaping losing child 0x0030a800 PID 6574
make: *** [all] Error 2
Removing child 0x0030a800 PID 6574 from chain.

zimv20
Feb 10, 2006, 03:24 PM
is there, in fact, an "all" target in the makefile?

are you calling the makefile correctly?

Soverc
Feb 10, 2006, 03:31 PM
This is all that is in the makefile

# $Header: /cvsroot/m2300w/m2300w/Makefile.in,v 1.5 2004/08/04 14:11:22 gfuer Exp $
#
# Copyright (C) 2004 Gerhard Fuernkranz
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#


INSTALL = /usr/bin/install -c

INSTROOT =
PREFIX = /usr
NAME = m2300w
VERSION = 0.51
RELEASE = 1
DOCDIR = $(INSTROOT)$(PREFIX)/share/doc/$(NAME)-$(VERSION)

SUBDIRS = src psfiles foomatic ppd
DOCFILES = README README.ghostscript INSTALL COPYING

all:
for DIR in $(SUBDIRS); do (cd $$DIR; $(MAKE) $@); done

install:
rm -rf $(INSTROOT)$(PREFIX)/share/$(NAME)/crd
for DIR in $(SUBDIRS); do (cd $$DIR; $(MAKE) INSTROOT=$(INSTROOT) $@); done
$(INSTALL) -c -d -m 755 $(DOCDIR)
$(INSTALL) -c -m 644 $(DOCFILES) $(DOCDIR)

ppd: always
$(MAKE) install
(cd foomatic; $(MAKE) $@)
$(MAKE) install

clean:
rm -rf INSTROOT
rm -f $(NAME)-$(VERSION).tar.gz
rm -f $(NAME)-$(VERSION)-$(RELEASE).spec
for DIR in $(SUBDIRS); do (cd $$DIR; $(MAKE) $@); done

distclean: clean
for DIR in $(SUBDIRS); do (cd $$DIR; $(MAKE) $@); done
rm -rf config.log autom4te.cache config.status Makefile m2300w.spec

rpm: all m2300w.spec
rm -rf INSTROOT
mkdir -m 755 INSTROOT
$(MAKE) install INSTROOT=`pwd`/INSTROOT
M2300W_MAKE=y rpm -bb --buildroot=`pwd`/INSTROOT m2300w.spec
# rm -rf INSTROOT

srpm: m2300w.spec
rm -f $(NAME)-$(VERSION)-$(RELEASE).spec
ln -s m2300w.spec $(NAME)-$(VERSION)-$(RELEASE).spec
rpm -bs $(NAME)-$(VERSION)-$(RELEASE).spec

tarball: distclean
rm -rf /tmp/$(NAME)-$(VERSION)
mkdir /tmp/$(NAME)-$(VERSION)
find . | cpio -pdum /tmp/$(NAME)-$(VERSION)
find /tmp/$(NAME)-$(VERSION) -name CVS | xargs rm -rf
HERE=`pwd`; cd /tmp ; \
tar zcvf $$HERE/$(NAME)-$(VERSION).tar.gz $(NAME)-$(VERSION)

always:

Doctor Q
Feb 10, 2006, 03:32 PM
It appears to be treating "all" as the name of a particular source file, and trying to compile or process it, rather than giving "all" the usual meaning in a Makefile, which is to build all other target files.

I think you are looking at a symptom of something than went wrong earlier in the process.

If these are files you downloaded, perhaps you need to go back to that source for help, clues, or further information.

zimv20
Feb 10, 2006, 05:36 PM
two things:
1. do you have write permission for /usr?
2. for the makefiles in the subdirs, what are their all targets?