This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

egcs-1.1b and Solaris make


I decided to investigate the issue of egcs requiring GNU Make further.
Step 1 was just seeing what happens if I use a different make, in this
case, Solaris make.

I configured egcs-1.1, and used --srcdir to build binaries in a separate
tree (therefore exercising VPATH) and without --enable-shared.  I did
make bootstrap-lean.  Both during the configure and the build, I used
a path such that make was /usr/ccs/bin/make, the Solaris make program.

libiberty built fine, but texinfo uses explicit GNU Make constructs in
both texinfo/lib and texinfo/makeinfo, of this form:

DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)

-include $(DEP_FILES)

I simply commented out these two lines, and did a 'mkdir .deps' in
each directory.  With this hack, Solaris make had no trouble building
texinfo.

Since other GNU tools have acceptable ways of doing dependencies without
requiring GNU make, texinfo should be fixed, I think.

At this stage, the three-stage bootstrap of the compiler itself went fine.
I suspect that any Posix-compliant make will have no trouble with it.

However, I then had a mysterious problem when building libio.
For some reason, some files were not built.  I end with

-------------------------
ar rc libio.a filedoalloc.o floatconv.o genops.o fileops.o  iovfprintf.o  iovfscanf.o ioignore.o iopadn.o  iofgetpos.o iofread.o iofscanf.o  iofsetpos.o iogetdelim.o iogetline.o  ioprintf.o ioseekoff.o ioseekpos.o  outfloat.o strops.o iofclose.o iopopen.o ioungetc.o peekc.o iogetc.o  ioputc.o iofeof.o ioferror.o iofdopen.o iofflush.o iofgets.o iofopen.o iofprintf.o iofputs.o iofwrite.o  iogets.o ioperror.o ioputs.o ioscanf.o iosetbuffer.o iosetvbuf.o  iosprintf.o iosscanf.o ioftell.o iovsscanf.o iovsprintf.o ioprims.o iostrerror.o cleanup.o  stdfiles.o
ar: cannot open peekc.o
	No such file or directory
ar: cannot open iogetc.o
	No such file or directory
ar: cannot open ioputc.o
	No such file or directory
ar: cannot open iofeof.o
	No such file or directory
ar: cannot open ioferror.o
	No such file or directory
ar: peekc.o not found
ar: iogetc.o not found
ar: ioputc.o not found
ar: iofeof.o not found
ar: ioferror.o not found
-------------------------

These five files are also not included in the dependency information.
But this is very odd, since they appear in IO_OBJECTS along with other
files that compile just fine.  It's almost as if the IO_OBJECTS
variable were truncated.  It is

IO_OBJECTS = filedoalloc.o floatconv.o genops.o fileops.o \
  iovfprintf.o \
  iovfscanf.o ioignore.o iopadn.o \
  iofgetpos.o iofread.o iofscanf.o \
  iofsetpos.o iogetdelim.o iogetline.o \
  ioprintf.o ioseekoff.o ioseekpos.o \
  outfloat.o strops.o iofclose.o iopopen.o ioungetc.o peekc.o iogetc.o \
  ioputc.o iofeof.o ioferror.o

in <build-dir>/sparc-sun-solaris2.5.1/libio/Makefile.


If I just cd to that directory and type

make peekc.o

nothing happens; no commands are executed and make returns success.
However,

make qqq.o

says
make: Fatal error: Don't know how to make target `qqq.o'

I don't understand this.  However, if I explicitly add

peekc.o: peekc.c

to the Makefile, peekc.o builds.

If I add five such lines, I can finish the build.

Joe


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]