Bug 8901 - gcc failes to build if fortran is enabled
Summary: gcc failes to build if fortran is enabled
Status: RESOLVED WORKSFORME
Alias: None
Product: buildroot
Classification: Unclassified
Component: Other (show other bugs)
Version: unspecified
Hardware: All Linux
: P5 normal
Target Milestone: ---
Assignee: unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-05-02 18:53 UTC by Thijs Vermeir
Modified: 2016-09-12 15:07 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thijs Vermeir 2016-05-02 18:53:42 UTC
When BR2_TOOLCHAIN_BUILDROOT_FORTRAN is enabled, gcc failes to build with this error:

---
In file included from ../../../libgfortran/generated/any_l4.c:26:0:
../../../libgfortran/libgfortran.h:60:29: fatal error: quadmath_weak.h: No such file or directory
 #  include "quadmath_weak.h"
                             ^
compilation terminated.
---

A quick fix is to also enable BR2_TOOLCHAIN_BUILDROOT_WCHAR as this is enabling libquadmath in `package/gcc/gcc.mk`.

This can be reproduces with a minimal qemu config:
---
BR2_x86_64=y
BR2_DL_DIR="$(TOPDIR)/../dl"
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_5=y
BR2_TOOLCHAIN_BUILDROOT_FORTRAN=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
BR2_SYSTEM_DHCP="eth0"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.5"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux-4.5.config"
BR2_TARGET_ROOTFS_EXT2=y
# BR2_TARGET_ROOTFS_TAR is not set
---
Comment 1 Samuel Martin 2016-05-02 19:13:53 UTC
(In reply to Thijs Vermeir from comment #0)

AFAICS, this defconfig will try to build a fortran, so libquadmath, without wchar support, which is required by quadmath...

Care to test with these patches:
https://github.com/tSed/buildroot/commit/ae69ebb61cb14455b282c34b26da97e6d2d4a49d
https://github.com/tSed/buildroot/commit/82b0c580ce934c969839ce5e5029700d9bbdaff6

They are part of a longer series not posted yet.

Regards,
Comment 2 Thijs Vermeir 2016-05-02 20:46:26 UTC
This works for x86_64, but does not work for qemu_arm_versatile_defconfig.

---
for i in  libgfortran libquadmath ; do cp -dpf /home/tvermeir/buildroot/bug-fortran/output/host/usr/arm-buildroot-linux-uclibcgnueabi/lib*/${i}.a /home/tvermeir/buildroot/bug-fortran/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/ ; done
cp: cannot stat ‘/home/tvermeir/buildroot/bug-fortran/output/host/usr/arm-buildroot-linux-uclibcgnueabi/lib*/libquadmath.a’: No such file or directory
package/pkg-generic.mk:205: recipe for target '/home/tvermeir/buildroot/bug-fortran/output/build/host-gcc-final-4.9.3/.stamp_host_installed' failed
make[1]: *** [/home/tvermeir/buildroot/bug-fortran/output/build/host-gcc-final-4.9.3/.stamp_host_installed] Error 1
Makefile:36: recipe for target '_all' failed
make: *** [_all] Error 2
---
Comment 3 Thomas Petazzoni 2016-09-12 15:07:44 UTC
The original patches from Samuel indeed did not fix the build issue on ARM indeed. But in fact the patches from Samuel have not been committed upstream as-is, but were improved to take into account the fact that libquadmath only exists on i386 and x86_64. libquadmath is only copied if BR2_TOOLCHAIN_HAS_LIBQUADMATH and BR2_TOOLCHAIN_HAS_LIBQUADMATH is only "y" on i386 and x86_64.

I just tested qemu_arm_versatile_defconfig + Fortran supported enabled, and it builds fine.