diff --git a/configure.ac b/configure.ac index 5cbc2fa..e4d190d 100644 --- a/configure.ac +++ b/configure.ac @@ -51,7 +51,11 @@ AS_CASE([$host_os], AC_SEARCH_LIBS([clock_gettime], [rt], [CLOCK_GETTIME_LIBS="-lrt"]) AC_SUBST([CLOCK_GETTIME_LIBS]) LIBS="$saved_LIBS" - ] + ], + [*-musl], [ + # Upstream refuses to define this, we will do it ourselves then. + AC_DEFINE([__MUSL__], [1], [Define to 1 if we are building for musl]) + ], ) # Checks for header files. diff --git a/src/funopen.c b/src/funopen.c index 7d6ae31..1e05c7e 100644 --- a/src/funopen.c +++ b/src/funopen.c @@ -1,5 +1,5 @@ /* - * Copyright © 2011, 2013 Guillem Jover + * Copyright © 2011, 2013, 2017 Guillem Jover * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -137,6 +137,12 @@ funopen(const void *cookie, return fopencookie(cookiewrap, mode, funcswrap); } +#elif defined(__MUSL__) +/* + * This is unimplementable on musl based systems, and upstream has stated + * they will not add the needed support to implement it. Just ignore this + * interface there, as it has never been provided anyway. + */ #else -#error "Function funopen() needs to be ported." +#error "Function funopen() needs to be ported or disabled." #endif diff --git a/src/libbsd.map b/src/libbsd.map index 2b9a3db..304c593 100644 --- a/src/libbsd.map +++ b/src/libbsd.map @@ -114,6 +114,9 @@ LIBBSD_0.6 { LIBBSD_0.7 { getbsize; + /* This symbol might not be present on some specific systems, such + * as musl based ones. It might need to be removed on SOVERSION bump, + * as it cannot be portabily implemented everywhere. */ funopen; reallocarray;