1*4882a593Smuzhiyunrequire gcc-configure-common.inc 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunEXTRA_OECONF_PATHS = "\ 4*4882a593Smuzhiyun --with-sysroot=/not/exist \ 5*4882a593Smuzhiyun --with-build-sysroot=${STAGING_DIR_TARGET} \ 6*4882a593Smuzhiyun" 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun# An arm hard float target like raspberrypi4 won't build 9*4882a593Smuzhiyun# as CFLAGS don't make it to the fortran compiler otherwise 10*4882a593Smuzhiyun# (the configure script sets FC to $GFORTRAN unconditionally) 11*4882a593Smuzhiyunexport GFORTRAN = "${FC}" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyundo_configure () { 14*4882a593Smuzhiyun for target in libbacktrace libgfortran 15*4882a593Smuzhiyun do 16*4882a593Smuzhiyun rm -rf ${B}/${TARGET_SYS}/$target/ 17*4882a593Smuzhiyun mkdir -p ${B}/${TARGET_SYS}/$target/ 18*4882a593Smuzhiyun cd ${B}/${TARGET_SYS}/$target/ 19*4882a593Smuzhiyun chmod a+x ${S}/$target/configure 20*4882a593Smuzhiyun relpath=${@os.path.relpath("${S}", "${B}/${TARGET_SYS}")} 21*4882a593Smuzhiyun ../$relpath/$target/configure ${CONFIGUREOPTS} ${EXTRA_OECONF} 22*4882a593Smuzhiyun # Easiest way to stop bad RPATHs getting into the library since we have a 23*4882a593Smuzhiyun # broken libtool here 24*4882a593Smuzhiyun sed -i -e 's/hardcode_into_libs=yes/hardcode_into_libs=no/' ${B}/${TARGET_SYS}/$target/libtool 25*4882a593Smuzhiyun done 26*4882a593Smuzhiyun} 27*4882a593SmuzhiyunEXTRACONFFUNCS += "extract_stashed_builddir" 28*4882a593Smuzhiyundo_configure[depends] += "${COMPILERDEP}" 29*4882a593Smuzhiyun 30*4882a593Smuzhiyundo_compile () { 31*4882a593Smuzhiyun for target in libbacktrace libgfortran 32*4882a593Smuzhiyun do 33*4882a593Smuzhiyun cd ${B}/${TARGET_SYS}/$target/ 34*4882a593Smuzhiyun oe_runmake MULTIBUILDTOP=${B}/${TARGET_SYS}/$target/ 35*4882a593Smuzhiyun done 36*4882a593Smuzhiyun} 37*4882a593Smuzhiyun 38*4882a593Smuzhiyundo_install () { 39*4882a593Smuzhiyun cd ${B}/${TARGET_SYS}/libgfortran/ 40*4882a593Smuzhiyun oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/${TARGET_SYS}/libgfortran/ install 41*4882a593Smuzhiyun if [ -d ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/finclude ]; then 42*4882a593Smuzhiyun rmdir --ignore-fail-on-non-empty -p ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/finclude 43*4882a593Smuzhiyun fi 44*4882a593Smuzhiyun if [ -d ${D}${infodir} ]; then 45*4882a593Smuzhiyun rmdir --ignore-fail-on-non-empty -p ${D}${infodir} 46*4882a593Smuzhiyun fi 47*4882a593Smuzhiyun chown -R root:root ${D} 48*4882a593Smuzhiyun} 49*4882a593Smuzhiyun 50*4882a593SmuzhiyunINHIBIT_DEFAULT_DEPS = "1" 51*4882a593SmuzhiyunDEPENDS = "gcc-runtime gcc-cross-${TARGET_ARCH}" 52*4882a593Smuzhiyun 53*4882a593SmuzhiyunBBCLASSEXTEND = "nativesdk" 54*4882a593Smuzhiyun 55*4882a593SmuzhiyunPACKAGES = "\ 56*4882a593Smuzhiyun ${PN}-dbg \ 57*4882a593Smuzhiyun libgfortran \ 58*4882a593Smuzhiyun libgfortran-dev \ 59*4882a593Smuzhiyun libgfortran-staticdev \ 60*4882a593Smuzhiyun" 61*4882a593Smuzhiyun 62*4882a593SmuzhiyunLICENSE:${PN} = "GPL-3.0-with-GCC-exception" 63*4882a593SmuzhiyunLICENSE:${PN}-dev = "GPL-3.0-with-GCC-exception" 64*4882a593SmuzhiyunLICENSE:${PN}-dbg = "GPL-3.0-with-GCC-exception" 65*4882a593Smuzhiyun 66*4882a593SmuzhiyunFILES:${PN} = "${libdir}/libgfortran.so.*" 67*4882a593SmuzhiyunFILES:${PN}-dev = "\ 68*4882a593Smuzhiyun ${libdir}/libgfortran*.so \ 69*4882a593Smuzhiyun ${libdir}/libgfortran.spec \ 70*4882a593Smuzhiyun ${libdir}/libgfortran.la \ 71*4882a593Smuzhiyun ${libdir}/gcc/${TARGET_SYS}/${BINV}/libgfortranbegin.* \ 72*4882a593Smuzhiyun ${libdir}/gcc/${TARGET_SYS}/${BINV}/libcaf_single* \ 73*4882a593Smuzhiyun ${libdir}/gcc/${TARGET_SYS}/${BINV}/finclude/ \ 74*4882a593Smuzhiyun ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ \ 75*4882a593Smuzhiyun" 76*4882a593SmuzhiyunFILES:${PN}-staticdev = "${libdir}/libgfortran.a" 77*4882a593Smuzhiyun 78*4882a593SmuzhiyunINSANE_SKIP:${MLPREFIX}libgfortran-dev = "staticdev" 79*4882a593Smuzhiyun 80*4882a593Smuzhiyundo_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata" 81*4882a593Smuzhiyundo_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata" 82*4882a593Smuzhiyundo_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata" 83*4882a593Smuzhiyun 84*4882a593Smuzhiyunpython __anonymous () { 85*4882a593Smuzhiyun f = d.getVar("FORTRAN") 86*4882a593Smuzhiyun if "fortran" not in f: 87*4882a593Smuzhiyun raise bb.parse.SkipRecipe("libgfortran needs fortran support to be enabled in the compiler") 88*4882a593Smuzhiyun} 89