[lazarus] Command line in Win32 [was: CVS Changes]

Peter Vreman peter at freepascal.org
Thu Aug 16 10:11:59 EDT 2001

> Peter Vreman wrote:
> > 
> > Becuase we've now also native win32 tools the using environment for
> > passing options is not required anymore. But it is not possible to
> > detect if you are using the go32v2 make.exe or the win32 make.exe. So
> > you need to specify the USEENV=1 option manually when you are 'cross'
> > compiling.
> So you are saying that the previous 1.0.4 Win32 release didn't have a
> make specifically for win32 but it was some sort of generic make?

the makew32.zip from 1.0.4 release contained go32v2 binaries for make.exe and the
fileutils (cp.exe, mv.exe, etc.) All those tools were required to be go32v2 because of the
commandline length problems. So including a win32 make.exe and having a go32v2 cp.exe was
not possible.

Now we've finally managed to get all utils as native win32 (not cygwin) binaries. We've
made them already available as for win2000 those are required, see the FAQ.

> I guess what has me confused is why would it build binaries for months
> using the current setup. Then on Tuesday after some modifications to the
> makefile that were made on Monday nothing works. I didn't change the
> compiler, make, nothing except those file changes made to the Lazarus
> code and it's makefile and now you say that the make.exe is what is
> wrong. Just has me confused. So you see my question is what happened to
> the makefile on Monday that suddenly required me to use USEENV=1 when I
> never had to in the past?

The USEENV=1 is required because the check for OS_TARGET==win32 has been removed. In the
previous Makefile when compiling for win32 would implicitly toggle the usage of the
environment for passing options.

But with the new fpcmake and the newly available makew32 it was also possible to use a
go32v2 compiler and using win32 make, and that also has the commandline length problem and
thus the usage of the environment. When this was added like the old way a check for
OS_TARGET==go32v2 would be necessary.

Having both a check for OS_TARGET=go32v2 and OS_TARGET=win32 in the makefile would always
call the compiler using the environment under Win32/Dos. Also using the go32v2 make.exe
and go32v2 compiler.exe.

If it was possible to check for which target make.exe was build it would be possible to
add autodetection again. But a simple way of detecting it is not possible.

More information about the Lazarus mailing list