make-w32
[Top][All Lists]
Advanced

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

Re: [Mingw-msys] RE: Differences between mingw-make and msys' make


From: Earnie Boyd
Subject: Re: [Mingw-msys] RE: Differences between mingw-make and msys' make
Date: Tue, 24 Sep 2002 21:07:00 -0400

Soren A wrote:
> 
> I continue to update my own postings. Just wondering, is *anybody* at
> all reading this? Chirp if you exist.
> *I*, Soren A <address@hidden> wrote
> around 23 Sep 2002 news:address@hidden:
> 

Yes, but you'll probably get a better audience at address@hidden

> >
> >  (1) The error:
> >   make[1]: Entering directory
> >   `/k/WinNT_sees_now/tmpbuilddir/gmakes/make-3.80rc2_build' [...]
> >   h:\src\make-3.80rc2_patched\dir.c:1072: glob.h: No such file or
> >   directory
> >
> > Analysis: In the top-level of the build dir, <dir.c> includes header
> > <glob/glob.h>. That's not going to work using the Makefile I was able
> > to generate because glob/ isn't in the include dirs (those passed by
> > '-I').
> >
> > In your Makefile.am I see that you have the line that's like this:
> >
> >    AM_CPPFLAGS = $(GLOBINC) $(w32_include)
> >
> > And that line was probably supposed to take care of the problem. But
> > my Makefile has:
> >
> >  GLOBINC =
> >  GLOBLIB =
> >
> > So nothing is in those macros. See (3) below.
> 
> ADDITION: OK, now I am on a *different* machine running the *same*
> Cygwin-everything and so forth. But I upgraded _MinGW_ to the newest
> gcc-3.2 and everything else I could lay my hands on last night:
> binutils, win32-api, MinGW-runtime, etc etc. And now, for no apparent
> reason, the trouble documented in (1) and (3) has gone away; 'configure'
> successfully substitutes into these two macros and things are better --
> but not really right, yet. Because of the way it's done by Automake, the
> entire <libglob.a> archive is added to 'make.exe', thus bloating it.
> 
> Because it is passed as a complete archive name instead using -Lbar/
> -lfoo syntax. I have worked that out (so that it is conditionally fixed
> for us and some other users without changing it for everyone in the
> Universe) by modifying the GNU autotools build configuration files
> (configure.in, Makefile.am). I will post an announcement of a URL where
> my changes will be published, later.
> 

I don't really care about what the "autotools" do with your Makefile for
this post.  It's not relevant.  If autotools get it wrong go complain to
their lists.

> >  (2) The error:
> >   make[1]: Entering directory
> >   `/k/WinNT_sees_now/tmpbuilddir/gmakes/make-3.80rc2_build' gcc
> >   -DLOCALEDIR=\"/usr/local/share/locale\" -DLIBDIR=\"/usr/local/lib\"
> >   -DINCLUDEDIR=\"/usr/local/include\" -DHAVE_CONFIG_H -I.
> >   -I/h/src/make-3.80rc2_patched -I. -I/h/src/make-3.80rc2_patched/glob
> >   -I/h/src/make-3.80rc2_patched/w32/include -O2 -Wundef
> >   -Wimplicit-function-declaration -mcpu=i586 -c -o w32misc.o
> >   w32/subproc/misc.c gcc.exe: w32/subproc/misc.c: No such file or
> >   directory gcc.exe: No input files
> >   make[1]: *** [w32misc.o] Error 1
> >
> > Analysis: This rule wasn't written in the best way. To keep this build
> > portable and GNU-proper all rules must allow building outside the
> > source dir (which I generally do but I think John, you may not have
> > been). The way I know how to fix this is to rewrite the rule like
> > this:
> >
> > w32misc.o: w32/subproc/misc.c
> >      $(COMPILE) -c -o w32misc.o $<
> 
> CORRECTION: GNU does not recommend this -- this is wrong (my fix was
> wrong). Some 'make' programs won't do this right. It should be,
> instead:
> 
>   loadavg.c: $(srcdir)/getloadavg.c
>         cp $(srcdir)/getloadavg.c $@
> 
> > Which then finds the .c file because the top of the makefile has the
> > src dir in VPATH.
> >

If you're concerned with a portable Makefile, VPATH shouldn't be used
either. :)

> >  (3) The error:
> >    make[1]: Entering directory
> >    `/k/WinNT_sees_now/tmpbuilddir/gmakes/make-3.80rc2_build' gcc -O2
> >    -Wundef -Wimplicit-function-declaration -mcpu=i586 -o make.exe
> >    ar.o arscan.o commands.o default.o dir.o expand.o file.o
> >    function.o getopt.o getopt1.o implicit.o job.o main.o misc.o read.o
> >    remake.o remote-stub.o rule.o signame.o variable.o version.o
> >    vpath.o hash.o pathstuff.o dirent.o sub_proc.o w32err.o
> >    getloadavg.o w32misc.o
> >    ar.o(.text+0x486)://h/src/make-3.80rc2_patched/ar.c: undefined
> >    reference to `fnmatch'
> >    read.o(.text+0x45a6)://h/src/make-3.80rc2_patched/read.c: undefined
> >    reference to `glob'
> >    read.o(.text+0x47c9)://h/src/make-3.80rc2_patched/read.c: undefined
> >    reference to `globfree' make[1]: *** [make.exe] Error 1
> >
> > Analysis: This is a basic link-time failure obviously, and is
> > connected to (1) above. Because the macro GLOBLIB is empty, no go. An
> > entry like the following needs to be in GLOBLIB:
> >
> >    -L$(top_builddir)/glob -lglob
> 
> As per above, this was a major issue (because I decided to make it one
> ;-).
> 

So, the real problem for this is Soren, or something else?

Earnie.




reply via email to

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