Port of GNU make to Windows NT and Windows 95 
Builds natively with MSVC 2.x or MSVC 4.x compilers.

To build with nmake on Windows NT or Windows 95:

	1. Make sure cl.exe is in your %Path%. Example:
	
		set Path=%Path%;c:/msdev/bin

	2. Make sure %include% is set to msvc include directory. Example:

		set include=c:/msdev/include

	3. Make sure %lib% is set to msvc lib directory. Example:

		set lib=c:/msdev/lib

	4. nmake /f NMakefile


There is a bat file (build_w32.bat) for folks who have fear of nmake.
	
Outputs:

	WinDebug/make.exe
	WinRel/make.exe

Notes:

	This port prefers you have a working sh.exe somewhere on your
	system. If you don't have sh.exe, port falls back to
	MSDOS mode for launching programs (via a batch file).
	The MSDOS mode style execution has not been tested too
	carefully though (I use GNU bash as sh.exe).

	I verified all functionality with a slightly modified version
	of make-test-0.4.5 (modifications to get test suite to run
	on Windows NT). All tests pass in an environment that includes
	sh.exe. 

	I did not provide a Visual C project file with this port as
	the project file would not be considered freely distributable
	(or so I think). It is easy enough to create one though if
	you know how to use Visual C. 

	I build the program statically to avoid problems locating DLL's
	on machines that may not have MSVC runtime installed. If you
	prefer, you can change make to build with shared libraries by
	changing /MT to /MD in the NMakefile (or build_w32.bat). 
