| 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/Caveats -- |
| |
| GNU make and sh.exe: |
| |
| 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). |
| |
| There are very few true ports of Bourne shell for NT right now. |
| There is a version of GNU bash available from Cygnus gnu-win32 |
| porting effort. Other possibilites are to get the MKS version |
| of sh.exe or to build your own with a package like |
| NutCracker (DataFocus) or Portage (Consensys). |
| |
| Tivoli uses a homegrown port of GNU bash which is not (yet) |
| freely available. It may be available someday, but I am not in control |
| of this decision nor do I influence it. Sorry! |
| |
| GNU make test suite: |
| |
| 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. Tested on both Windows NT and Windows 95. |
| |
| Building GNU make on Windows NT and Windows 95 with Microsoft Visual C |
| |
| 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). |
| |
| Program has not been built under non-Intel architectures (yet). |
| |
| I have not tried to build with any other compilers than MSVC. |
| |
| Pathnames and white space: |
| |
| Unlike Unix, Windows 95/NT systems encourage pathnames which |
| contain white space (e.g. C:\Program Files\). These sorts of pathnames |
| are legal under Unix too, but are never encouraged. There is |
| at least one place in make (VPATH/vpath handling) where paths |
| containing white space will simply not work. There may be others |
| too. I chose to not try and port make in such a way so that |
| these sorts of paths could be handled. I offer these suggestions |
| as workarounds: |
| |
| 1. Use 8.3 notation |
| 2. Rename the directory so it does not contain white space. |
| |
| If you are unhappy with this choice, this is free software |
| and you are free to take a crack at making this work. The code |
| in w32/pathstuff.c and vpath.c would be the places to start. |
| |
| SAMBA/NTFS/VFAT: |
| |
| I have not had any success building the debug version of this |
| package using SAMBA as my file server. The reason seems to be |
| related to the way VC++ 4.0 changes the case name of the pdb |
| filename it is passed on the command line. It seems to change |
| the name always to to lower case. I contend that |
| the VC++ compiler should not change the casename of files that |
| are passed as arguments on the command line. I don't think this |
| was a problem in MSVC 2.x, but I know it is a problem in MSVC 4.x. |
| |
| The package builds fine on VFAT and NTFS filesystems. |
| |
| Most all of the development I have done to date has been using |
| NTFS and long file names. I have not done any considerable work |
| under VFAT. VFAT users may wish to be aware that this port |
| of make does respect case sensitivity. |
| |
| Version 3.76 contains some preliminary support for FAT. |
| Make now tries to work around some difficulties with stat'ing of |
| files and caching of filenames and directories internally. |
| There is still a known problem with filenames sometimes being found |
| to have modification dates in the future which cause make to |
| complain about the file and exit (remake.c). |
| |
| Bug reports: |
| |
| Please submit bugs via the normal bug reporting mechanism |
| which is described in one of the texinfo files. If you don't |
| have texinfo for Windows NT or Windows 95, these files are simple |
| text files and can be read with a text editor. |
| |