Hello Eli, First quick answer:
> > Missing header: > > #include <direct.h> (for chdir) > > place in make.h (ie line 364) > > Is <direct.h> the only header where chdir's prototype is declared? > doesn't that compiler have it in unistd.h as well? The > latter is where chdir's prototype lives on Posix platforms, > so if we could use the same with the MS compiler, it'd be better. > > If using <direct.h> is the only way, then it will have to be > conditioned on some MS-specific symbol, since this is a > non-standard header which other compilers don't have. > 1) There is no unistd.h anywhere 2) direct.h defines to following: --------------------------------------- int __cdecl _chdir(const char *); char * __cdecl _getcwd(char *, int); int __cdecl _mkdir(const char *); int __cdecl _rmdir(const char *); int __cdecl _chdrive(int); char * __cdecl _getdcwd(int, char *, int); int __cdecl _getdrive(void); unsigned long __cdecl _getdrives(void); unsigned __cdecl _getdiskfree(unsigned, struct _diskfree_t *); --------------------------------------- And there is this: #if !__STDC__ /* Non-ANSI names for compatibility */ int __cdecl chdir(const char *); char * __cdecl getcwd(char *, int); int __cdecl mkdir(const char *); int __cdecl rmdir(const char *); #define diskfree_t _diskfree_t #endif /* __STDC__ */ Note: Do you see now the effect of _MSC_EXTENSIONS visavi __STDC__? If I had disabled the extensions and got __STDC__ defined to true, the compiler would never had found the right prototypes for chdir et al (maybe using local prototypes instead). Hopefully this would have been catched at link time, otherwise a local replacement would have been used. I will read on... Jerker _______________________________________________ Make-w32 mailing list [email protected] http://lists.gnu.org/mailman/listinfo/make-w32
