mirror of
https://github.com/lingble/meta-tegra.git
synced 2025-10-29 19:42:41 +00:00
gcc-for-nvcc: backport buildpaths fixes from OE-Core gcc recipes
From OE-Core commits 350ff7d and 9221e4a Signed-off-by: Jan Kircher <jan.kircher@leica-microsystems.com> Co-authored-by: Jan Kircher <jan.kircher@leica-microsystems.com>
This commit is contained in:
@@ -106,3 +106,29 @@ target_prefix ?= "${prefix}"
|
|||||||
# The real WORKDIR location isn't a dependency for the shared workdir.
|
# The real WORKDIR location isn't a dependency for the shared workdir.
|
||||||
src_patches[vardepsexclude] = "WORKDIR"
|
src_patches[vardepsexclude] = "WORKDIR"
|
||||||
should_apply[vardepsexclude] += "PN"
|
should_apply[vardepsexclude] += "PN"
|
||||||
|
|
||||||
|
remove_sysroot_paths_from_configargs () {
|
||||||
|
replacement=${1}
|
||||||
|
# Prevent sysroot path from being used in configargs.h header, as it will
|
||||||
|
# be rewritten when used by other sysroots preventing support for gcc
|
||||||
|
# plugins. Additionally the path is embeddeded into the output binary, this
|
||||||
|
# prevents building a reproducible binary.
|
||||||
|
oe_runmake configure-gcc
|
||||||
|
sed -i "s@${STAGING_DIR_TARGET}@$replacement@g" ${B}/gcc/configargs.h
|
||||||
|
sed -i "s@${STAGING_DIR_HOST}@/$replacement@g" ${B}/gcc/configargs.h
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_sysroot_paths_from_checksum_options () {
|
||||||
|
stagingdir=${1}
|
||||||
|
replacement=${2}
|
||||||
|
# Prevent sysroot/workdir paths from being used in checksum-options.
|
||||||
|
# checksum-options is used to generate a checksum which is embedded into
|
||||||
|
# the output binary.
|
||||||
|
oe_runmake TARGET-gcc=checksum-options all-gcc
|
||||||
|
sed -i "s@${DEBUG_PREFIX_MAP}@@g" ${B}/gcc/checksum-options
|
||||||
|
sed -i "s@$stagingdir@$replacement@g" ${B}/gcc/checksum-options
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup_installed_include_fixed () {
|
||||||
|
find ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed -type f -not -name "README" -not -name limits.h -not -name syslimits.h | xargs rm -f
|
||||||
|
}
|
||||||
|
|||||||
@@ -62,6 +62,9 @@ do_configure () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
do_compile () {
|
do_compile () {
|
||||||
|
remove_sysroot_paths_from_configargs '/host'
|
||||||
|
remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' '/host'
|
||||||
|
|
||||||
oe_runmake all-host configure-target-libgcc
|
oe_runmake all-host configure-target-libgcc
|
||||||
(cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
|
(cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
|
||||||
}
|
}
|
||||||
@@ -168,6 +171,8 @@ do_install () {
|
|||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
cleanup_installed_include_fixed
|
||||||
}
|
}
|
||||||
|
|
||||||
ELFUTILS = "nativesdk-elfutils"
|
ELFUTILS = "nativesdk-elfutils"
|
||||||
|
|||||||
@@ -61,19 +61,8 @@ do_compile () {
|
|||||||
export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}"
|
export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}"
|
||||||
export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}"
|
export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}"
|
||||||
|
|
||||||
# Prevent native/host sysroot path from being used in configargs.h header,
|
remove_sysroot_paths_from_configargs '/host'
|
||||||
# as it will be rewritten when used by other sysroots preventing support
|
remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' '/host'
|
||||||
# for gcc plugins
|
|
||||||
oe_runmake configure-gcc
|
|
||||||
sed -i 's@${STAGING_DIR_TARGET}@/host@g' ${B}/gcc/configargs.h
|
|
||||||
sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/configargs.h
|
|
||||||
|
|
||||||
# Prevent sysroot/workdir paths from being used in checksum-options.
|
|
||||||
# checksum-options is used to generate a checksum which is embedded into
|
|
||||||
# the output binary.
|
|
||||||
oe_runmake TARGET-gcc=checksum-options all-gcc
|
|
||||||
sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options
|
|
||||||
sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/checksum-options
|
|
||||||
|
|
||||||
oe_runmake all-host configure-target-libgcc
|
oe_runmake all-host configure-target-libgcc
|
||||||
(cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
|
(cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
|
||||||
@@ -123,7 +112,7 @@ do_install () {
|
|||||||
cp ${S}/libquadmath/quadmath.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
|
cp ${S}/libquadmath/quadmath.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
|
||||||
cp ${S}/libquadmath/quadmath_weak.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
|
cp ${S}/libquadmath/quadmath_weak.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
|
||||||
|
|
||||||
find ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed -type f -not -name "README" -not -name limits.h -not -name syslimits.h | xargs rm -f
|
cleanup_installed_include_fixed
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -140,20 +140,8 @@ FILES:${PN}-doc = "\
|
|||||||
"
|
"
|
||||||
|
|
||||||
do_compile () {
|
do_compile () {
|
||||||
# Prevent full target sysroot path from being used in configargs.h header,
|
remove_sysroot_paths_from_configargs '/'
|
||||||
# as it will be rewritten when used by other sysroots preventing support
|
remove_sysroot_paths_from_checksum_options '${STAGING_DIR_TARGET}' '/'
|
||||||
# for gcc plugins. Additionally the path is embeddeded into the output
|
|
||||||
# binary, this prevents building a reproducible binary.
|
|
||||||
oe_runmake configure-gcc
|
|
||||||
sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/configargs.h
|
|
||||||
sed -i 's@${STAGING_DIR_HOST}@/@g' ${B}/gcc/configargs.h
|
|
||||||
|
|
||||||
# Prevent sysroot/workdir paths from being used in checksum-options.
|
|
||||||
# checksum-options is used to generate a checksum which is embedded into
|
|
||||||
# the output binary.
|
|
||||||
oe_runmake TARGET-gcc=checksum-options all-gcc
|
|
||||||
sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options
|
|
||||||
sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/checksum-options
|
|
||||||
|
|
||||||
oe_runmake all-host
|
oe_runmake all-host
|
||||||
}
|
}
|
||||||
@@ -202,37 +190,8 @@ do_install () {
|
|||||||
ln -sf g++-${BINV} c++-${BINV}
|
ln -sf g++-${BINV} c++-${BINV}
|
||||||
ln -sf gcc-${BINV} cc-${BINV}
|
ln -sf gcc-${BINV} cc-${BINV}
|
||||||
chown -R root:root ${D}
|
chown -R root:root ${D}
|
||||||
}
|
|
||||||
|
|
||||||
do_install:append () {
|
cleanup_installed_include_fixed
|
||||||
#
|
|
||||||
# Thefixinc.sh script, run on the gcc's compile phase, looks into sysroot header
|
|
||||||
# files and places the modified files into
|
|
||||||
# {D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed folder. This makes the
|
|
||||||
# build not deterministic. The following code prunes all those headers
|
|
||||||
# except those under include-fixed/linux, *limits.h and README, yielding
|
|
||||||
# the same include-fixed folders no matter what sysroot
|
|
||||||
|
|
||||||
include_fixed="${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed"
|
|
||||||
for f in $(find ${include_fixed} -type f); do
|
|
||||||
case $f in
|
|
||||||
*/include-fixed/linux/*)
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
*/include-fixed/*limits.h)
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
*/include-fixed/README)
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# remove file and directory if empty
|
|
||||||
bbdebug 2 "Pruning $f"
|
|
||||||
rm $f
|
|
||||||
find $(dirname $f) -maxdepth 0 -empty -exec rmdir {} \;
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Installing /usr/lib/gcc/* means we'd have two copies, one from gcc-cross
|
# Installing /usr/lib/gcc/* means we'd have two copies, one from gcc-cross
|
||||||
|
|||||||
Reference in New Issue
Block a user