* Missing header(s)
@ 2012-02-20 17:24 Isaac Dunham
2012-02-20 19:17 ` Rich Felker
0 siblings, 1 reply; 3+ messages in thread
From: Isaac Dunham @ 2012-02-20 17:24 UTC (permalink / raw)
To: musl
ar.h is a header that defines struct ar_hdr and several components.
Needed for at least GNU make-3.81 (I'm sticking with the last GPL2+ version, myself).
Included in NetBSD libc and glibc.
Copying the NetBSD version over worked fine for me; it doesn't define anything internal to the libc, and different implementations are functionally equivalent.
By the way, I've put together a sys/cdefs.h header that gets a lot of stuff to compile; ~95% of it is backwards-compatability macros. If you want, I can submit it; I'd add
#warn "sys/cdefs.h is not standard, and the macros are easily removed"
or some such message.
#include'ing <sys/cdefs.h> is semi-portable, though (NetBSD, GNU libc)--and the only option if you need to support some old systems as well as c99.
--
Isaac Dunham <idunham@lavabit.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Missing header(s)
2012-02-20 17:24 Missing header(s) Isaac Dunham
@ 2012-02-20 19:17 ` Rich Felker
2012-02-21 1:15 ` Isaac Dunham
0 siblings, 1 reply; 3+ messages in thread
From: Rich Felker @ 2012-02-20 19:17 UTC (permalink / raw)
To: musl
On Mon, Feb 20, 2012 at 09:24:59AM -0800, Isaac Dunham wrote:
> ar.h is a header that defines struct ar_hdr and several components.
Yeah, I've gotten this report before and just haven't gotten around to
adding it. I have no objection to adding ar.h though.
> Needed for at least GNU make-3.81 (I'm sticking with the last GPL2+
> version, myself).
Doesn't 3.81 already have some important bugs you need to patch
anyway? If so you could add ar.h at the same time. This won't be
needed for musl once I get ar.h added, but it would make the resulting
build more portable anyway.
> By the way, I've put together a sys/cdefs.h header that gets a lot
> of stuff to compile; ~95% of it is backwards-compatability macros.
> If you want, I can submit it; I'd add
I wouldn't mind seeing it, and as long as it's clean I'll probably add
it...
> #include'ing <sys/cdefs.h> is semi-portable, though (NetBSD, GNU
> #libc)--and the only option if you need to support some old systems
> #as well as c99.
I'm confused how it would be necessary for this. The __STDC__ and
__STDC_VERSION__ macros give you all you need to make the appropriate
definitions yourself if you really need to support pre-standardized C.
If you just need to support C89 and C99, you'd rarely have to test
anything anyway; just use the intersection of the 2 languages (which
is equivalent to C89, except that you can't use C99 keywords like
inline, restrict, _Bool, etc.).
As such, I still see apps that include sys/cdefs.h as buggy.
Rich
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Missing header(s)
2012-02-20 19:17 ` Rich Felker
@ 2012-02-21 1:15 ` Isaac Dunham
0 siblings, 0 replies; 3+ messages in thread
From: Isaac Dunham @ 2012-02-21 1:15 UTC (permalink / raw)
To: musl
[-- Attachment #1: Type: text/plain, Size: 1804 bytes --]
On Mon, 20 Feb 2012 14:17:03 -0500
Rich Felker <dalias@aerifal.cx> wrote:
> Doesn't 3.81 already have some important bugs you need to patch
> anyway? If so you could add ar.h at the same time. This won't be
> needed for musl once I get ar.h added, but it would make the resulting
> build more portable anyway.
It's running OK without patches, but I haven't pushed too hard. As mentioned, I just copied ar.h to /usr/include.
> > By the way, I've put together a sys/cdefs.h header that gets a lot
> > of stuff to compile; ~95% of it is backwards-compatability macros.
> > If you want, I can submit it; I'd add
> I wouldn't mind seeing it, and as long as it's clean I'll probably add
> it...
>
> > #include'ing <sys/cdefs.h> is semi-portable, though (NetBSD, GNU
> > libc)--and the only option if you need to support some old systems
> > as well as c99.
>
> I'm confused how it would be necessary for this. The __STDC__ and
> __STDC_VERSION__ macros give you all you need to make the appropriate
> definitions yourself if you really need to support pre-standardized C.
> If you just need to support C89 and C99, you'd rarely have to test
> anything anyway; just use the intersection of the 2 languages (which
> is equivalent to C89, except that you can't use C99 keywords like
> inline, restrict, _Bool, etc.).
It looks like it's meant to have one header allow the same source to build
with anything from K&R to C99 (in theory).
> As such, I still see apps that include sys/cdefs.h as buggy.
> Rich
I view it like features.h: nonsense, but if it's a choice between getting it building in a minute or an hour, I'd rather get it building sooner. Once I know how broken it is, I can decide whether to clean it up, forget it, or delete it. I'd rather not waste my time on completely broken code.
[-- Attachment #2: cdefs.h --]
[-- Type: text/x-chdr, Size: 653 bytes --]
/* Legacy, meant only for glibc compatability
* These were ripped off from glibc sys/cdefs.h
*/
#warn "sys/cdefs.h is only meant as a temporary measure"
#warn "Any code that requires it needs cleanup"
#ifndef _SYS_CDEFS_H_
#define _SYS_CDEFS_H_
#undef __P
#undef __PMT
#undef __NTH
#define __THROW
#define __P(param) param
#define __PMT(param) param
#define __NTH(param) param
#define __CONCAT(x,y) x ## y
#define __STRING(x) #x
#define __ptr_t void *
#define __long_double_t long double
#ifdef __cplusplus
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
#else
# define __BEGIN_DECLS
# define __END_DECLS
#endif
#endif /* _SYS_CDEFS_H_
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-02-21 1:15 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-20 17:24 Missing header(s) Isaac Dunham
2012-02-20 19:17 ` Rich Felker
2012-02-21 1:15 ` Isaac Dunham
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).