[Top][All Lists]
[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.
- Re: [Mingw-msys] RE: Differences between mingw-make and msys' make,
Earnie Boyd <=