make compilation

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

make compilation

valerij zaporogeci
Hi.
I've just compiled make 4.2 for Windows (XP x64, Visual Studio 2008
compiler, through nmake). Didn't test it though, just made my small
project with a quite simplistic makefile and it worked. The
compilation wasn't without problems. I don't know either this is my
fault or make's one. In any case, It would be useful to get your
attention on it. for at least 1 side.
First:
subproc nmakefile doesn't set -I ..\..\glob so compiler says glob.h is
missing. this include is inside makeint.h, the latter is included for
example in sub_proc.c, w32err.c.
second:
in pathstuff.c there is a reference to isblank() which is not found
anywhere, so in the end linker can not resolve symbol _isblank().
During investigation I found that there is a macro ISBLANK in the
makeint.h and just uppercased isblank() in pathstuff.c to ISBLANK().
:D Of course it compiled now, but I cannot say whether this bravery
isn't stupidity. How do you think? Is it supposed to be ISBLANK macro
there or there is really a function isblank()?
Thanks.

_______________________________________________
Make-w32 mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/make-w32
Reply | Threaded
Open this post in threaded view
|

Re: make compilation

Eli Zaretskii
> From: valerij zaporogeci <[hidden email]>
> Date: Fri, 6 Oct 2017 01:37:09 +0300
>
> I've just compiled make 4.2 for Windows (XP x64, Visual Studio 2008
> compiler, through nmake). Didn't test it though, just made my small
> project with a quite simplistic makefile and it worked. The
> compilation wasn't without problems. I don't know either this is my
> fault or make's one. In any case, It would be useful to get your
> attention on it. for at least 1 side.
> First:
> subproc nmakefile doesn't set -I ..\..\glob so compiler says glob.h is
> missing. this include is inside makeint.h, the latter is included for
> example in sub_proc.c, w32err.c.
> second:
> in pathstuff.c there is a reference to isblank() which is not found
> anywhere, so in the end linker can not resolve symbol _isblank().
> During investigation I found that there is a macro ISBLANK in the
> makeint.h and just uppercased isblank() in pathstuff.c to ISBLANK().
> :D Of course it compiled now, but I cannot say whether this bravery
> isn't stupidity. How do you think? Is it supposed to be ISBLANK macro
> there or there is really a function isblank()?

Thank you for your report.  I believe all of these issues are solved
in Make 4.2.1, the latest released version.  Could you please try that
and see if any of the problems remain?

_______________________________________________
Make-w32 mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/make-w32
Reply | Threaded
Open this post in threaded view
|

Re: make compilation

Eli Zaretskii
[Please keep the list address on the CC list.]

> From: valerij zaporogeci <[hidden email]>
> Date: Fri, 6 Oct 2017 15:08:08 +0300
>
> Yes, now I tried 4.2.1. the second problem is gone, since now ISBLANK is used.
> but the first still is there. complilation fails with "cannot open
> subproc.lib" message. After adding -I ../../glob in subproc's
> nmakefile everything compiles fine.

I must be missing something, because I don't see how subproc/NMakefile
comes into play here.  Are you building using the build_w32.bat batch
file?  Because if you are, that batch file doesn't reference any
NMakefile, it just compiles the files by directly invoking cl.exe, the
MSVC compiler, and the cl.exe command line does include "/I glob".

From my POV, the various methods mentioned in README.W32, besides the
one which uses build_w32.bat, are much less reliable due to different
versions of Studio and Nmake that each have its own quirks.  The batch
file, by contrast, should "just work".

_______________________________________________
Make-w32 mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/make-w32
Reply | Threaded
Open this post in threaded view
|

Re: make compilation

Eli Zaretskii
> From: valerij zaporogeci <[hidden email]>
> Date: Fri, 6 Oct 2017 15:43:28 +0300
>
> As I said I used nmake /f nmakefile from the Studio command prompt.
> in the main nmakefile there is /I glob, but in the subproc's one there isn't.
>
> subproc's nmakefile is invoked from the main:
> w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib:
> w32/subproc/misc.c w32/subproc/sub_proc.c w32/subproc/w32err.c
> subproc.bat $(SUBPROC_MAKEFILE) $(MAKE)
> if exist WinDebug\make.exe erase WinDebug\make.exe
> if exist WinRel\make.exe erase WinRel\make.exe
>
> isn't it?
> but in the Include path of that file, glob is missing.
> Anyway, without that change, it fails. :)

Paul, can you make this change in subproc/NMakefile?  I don't have MS
tools installed, so I cannot test this change with the latest Git
repository.

Thanks.

_______________________________________________
Make-w32 mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/make-w32