summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-09-02 12:46:06 -0400
committerRich Felker <dalias@aerifal.cx>2012-09-02 12:46:06 -0400
commitfb247fafa04ee52dda816355ab0461132297b9a4 (patch)
tree25c815d12a2beb2f9faaa0cc0308c1274beded6e /include
parent3f62f76cab46fbd28248ed251a88278c6ea1be3a (diff)
downloadmusl-fb247fafa04ee52dda816355ab0461132297b9a4.tar.gz
avoid "inline" in public headers for strict c89 compatibility
while musl itself requires a c99 compiler, some applications insist on being compiled with c89 compilers, and use of "inline" in the headers was breaking them. much of this had been avoided already by just skipping the inline keyword in pre-c99 compilers or modes, but this new unified solution is cleaner and may/should result in better code generation in the default gcc configuration.
Diffstat (limited to 'include')
-rw-r--r--include/byteswap.h17
-rw-r--r--include/endian.h19
-rw-r--r--include/math.h9
-rw-r--r--include/sys/syscall.h4
4 files changed, 22 insertions, 27 deletions
diff --git a/include/byteswap.h b/include/byteswap.h
index 8689cd57..bf222d3c 100644
--- a/include/byteswap.h
+++ b/include/byteswap.h
@@ -3,26 +3,21 @@
#include <stdint.h>
-#if __STDC_VERSION__ >= 199901L
-inline
+#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
+#define __inline inline
#endif
-static uint16_t __bswap_16(uint16_t __x)
+
+static __inline uint16_t __bswap_16(uint16_t __x)
{
return __x<<8 | __x>>8;
}
-#if __STDC_VERSION__ >= 199901L
-inline
-#endif
-static uint32_t __bswap_32(uint32_t __x)
+static __inline uint32_t __bswap_32(uint32_t __x)
{
return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
}
-#if __STDC_VERSION__ >= 199901L
-inline
-#endif
-static uint64_t __bswap_64(uint64_t __x)
+static __inline uint64_t __bswap_64(uint64_t __x)
{
return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
}
diff --git a/include/endian.h b/include/endian.h
index 41ca1711..528cef31 100644
--- a/include/endian.h
+++ b/include/endian.h
@@ -1,6 +1,10 @@
#ifndef _ENDIAN_H
#define _ENDIAN_H
+#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
+#define __inline inline
+#endif
+
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __PDP_ENDIAN 3412
@@ -20,26 +24,17 @@
#include <stdint.h>
-#if __STDC_VERSION__ >= 199901L
-inline
-#endif
-static uint16_t __bswap16(uint16_t __x)
+static __inline uint16_t __bswap16(uint16_t __x)
{
return __x<<8 | __x>>8;
}
-#if __STDC_VERSION__ >= 199901L
-inline
-#endif
-static uint32_t __bswap32(uint32_t __x)
+static __inline uint32_t __bswap32(uint32_t __x)
{
return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
}
-#if __STDC_VERSION__ >= 199901L
-inline
-#endif
-static uint64_t __bswap64(uint64_t __x)
+static __inline uint64_t __bswap64(uint64_t __x)
{
return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
}
diff --git a/include/math.h b/include/math.h
index 2fdcb7b4..f808be62 100644
--- a/include/math.h
+++ b/include/math.h
@@ -5,6 +5,10 @@
extern "C" {
#endif
+#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
+#define __inline inline
+#endif
+
#define __NEED_float_t
#define __NEED_double_t
#define __NEED___uint16_t
@@ -83,10 +87,7 @@ int __signbitl(long double);
#define isunordered(x,y) (isnan((x)) ? ((void)(y),1) : isnan((y)))
-#if __STDC_VERSION__ >= 199901L
-inline
-#endif
-static int __isrel(long double __x, long double __y, int __rel)
+static __inline int __isrel(long double __x, long double __y, int __rel)
{
if (isunordered(__x, __y)) return 0;
if (__rel==-2) return __x < __y;
diff --git a/include/sys/syscall.h b/include/sys/syscall.h
index 901941aa..154e5ab5 100644
--- a/include/sys/syscall.h
+++ b/include/sys/syscall.h
@@ -4,6 +4,10 @@
extern "C" {
#endif
+#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
+#define __inline inline
+#endif
+
long __syscall_ret(unsigned long);
long __syscall(long, ...);
long syscall(long, ...);