Avoid using `union wait` under musl as it does not provide this definition.
Implement solution suggested by http://www.openwall.com/lists/musl/2013/06/21/4
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
- Include `sys/user.h` if `__WORDSIZE` is undefined
- Add `fcntl.h` to `libscc.c` in order to declare `loff_t`
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Let configure include `sys/if_tun.h` when testing for `netinet/if_ether.h`
to detect the Kernel/libc header conflict on musl.
After this patch, configure will correctly detect `netinet/if_ether.h` as
unusable and the subsequent compilation will not attempt to use it.
Fixes the following compatibility error:
In file included from .../staging_dir/toolchain-mips_mips32_gcc-4.8-linaro_musl-1.1.9/include/linux/if_tun.h:20:0,
from linux/device.c:24:
.../staging_dir/toolchain-mips_mips32_gcc-4.8-linaro_musl-1.1.9/include/linux/if_ether.h:137:8: error: redefinition of 'struct ethhdr'
struct ethhdr {
^
In file included from .../staging_dir/toolchain-mips_mips32_gcc-4.8-linaro_musl-1.1.9/include/net/ethernet.h:10:0,
from linux/../have.h:180,
from linux/../system.h:26,
from linux/device.c:21:
.../staging_dir/toolchain-mips_mips32_gcc-4.8-linaro_musl-1.1.9/include/netinet/if_ether.h:96:8: note: originally defined here
struct ethhdr {
^
make[5]: *** [linux/device.o] Error 1
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Switch the mtr package to the upstream `newdns` git branch.
This will fix compilation on Glibc, uClibc and musl without requiring
further patches.
Note that the base version of this branch is 0.85, not 0.86 so the
lower version number is intentional.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
- Avoid non-pointer use of `FILE` type since its just a forward declaration
- Build with -D_GNU_SOURCE to expose required `struct tcphdr` members
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
- Add missing `sys/ttydefaults.h` include to `config.c`
- Restrict usage of `error.h` to glibc and uclibc only
- Avoid including `linux/if_tun.h` on non-glibc/uclibc to prevent
musl kernel/libc header conflicts
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Change occurences of `sys/unistd.h` to the standard `unistd.h` include.
Fixes build against musl.
Also refresh existing patch since it applied with fuzz.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
The correct includes for musl are protected by an __GLIBC__ check in the
upstream sources.
Since musl does not provide own defines to identify itself, simply invert
the condition to !__UCLIBC__ in order to fix the build on all libc flavors
supported by OpenWrt.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Pass HAVE_RLIM_T via TARGET_CPPFLAGS since configure uses that define
but never actually declares it.
Without doing that, `config.h` tries to declare `rlim_t` itself which
leads to `config.h:126:16: error: 'long long long' is too long for GCC`
with musl on at least x86_64.
Also refresh patches while we're at it.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Under musl a compilation unit cannot include both linux/kernel.h
and sys/sysinfo.h at the same time since that leads to a redefinition
of `struct sysinfo`.
Change the autoconf template to include linux/kernel.h while testing
for sys/sysinfo.h to test for that conflict.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
- Add patch to inhibit the libm IEEE math switch on musl
- Add postprocessing for config.sh to the Makefile to fixup
defines for musl, idea taken
from http://patchwork.openembedded.org/patch/91707/
This is the least invasive approach I could come up to fix the build
failure asap. Another possibility is maintaining yet another set of
musl specific architecture config files, but I think that this introduces
a lot of maintenance overhead.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>