Mail Archives: djgpp-workers/1998/07/02/06:52:58
On Wed, 1 Jul 1998, Nate Eldredge wrote:
> 1. If none of the macros __STRICT_ANSI__, _POSIX_SOURCE, etc. were
> defined by the source, the system headers take it upon themselves to
> define _POSIX_SOURCE. This leads to problems when compiling things like
> djasm, since DJGPP's coff.h only defines the important stuff ifndef
> _POSIX_SOURCE.
I know nothing about DJGPP cross-compile setup, but why do you need to
mix DJGPP and local headers to compile djasm? It is IMHO a very bad
idea, and the problem you've described might as well be the tip of an
iceberg.
Doesn't Linux have coff.h?
> It seems that Linux's headers think of these macros
> inclusively. For instance, _GNU_SOURCE allows all GNU extensions but
> also defines _POSIX_SOURCE, which they consider a subset. DJGPP, OTOH,
> uses them *ex*clusively-- _POSIX_SOURCE turns off everything not allowed
> by POSIX. I wonder who is right?
I think both are right. You just shouldn't mix headers from different
libraries, that's all.
> 2. When cross-compiling, everything uses misc.exe. That's fine, but it
> caused the following gotcha. After failing in my attempt to
> cross-compile, I loaded dosemu, and thought I'd try compiling that way.
> So I did a `make clean' to get rid of all the Linux stuff. Oops! It
> uses `misc rm', and misc.exe is a Linux ELF binary! dosemu crashes, and
> I spend several minutes thinking it's a bug in it.
"make clean" should be done in the same environment where the
files-to-be-cleaned were built.
> I guess there's not really any way around this, other than to have
> separate makefiles for DOS and Unix, or to require that fileutils be
> installed.
That's too extreme, IMHO. Since the only problem is with DOSEmu (and
other DOSsish environment)--Unix will refuse to run something whose
format is not recognized--you could make misc depend on a small program
which tests whether it is a v2-style executable. There's a function in
v2.02 library to test that (_check_v2_prog).
- Raw text -