Merge pull request #2921 from mglae/le9_toolchain_nm

Kodi: use toolchain nm for generating wrapper.def
This commit is contained in:
MilhouseVH 2018-08-29 18:15:43 +01:00 committed by GitHub
commit 7d8cd7dbf9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 10 deletions

View File

@ -1,24 +1,17 @@
setup_toolchain() { setup_toolchain() {
TARGET_AR_NM_RANLIB_PREFIX=""
if [ "$LTO_SUPPORT" = "yes" ]; then if [ "$LTO_SUPPORT" = "yes" ]; then
if flag_enabled "lto-parallel" "no"; then if flag_enabled "lto-parallel" "no"; then
TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT" TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT" TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_PARALLEL" TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_PARALLEL"
# static libs with lto info require gcc-ar/gcc-nm/gcc-ranlib instead of
# default binutils versions
TARGET_AR_NM_RANLIB_PREFIX="gcc-"
elif flag_enabled "lto-fat" "no"; then elif flag_enabled "lto-fat" "no"; then
TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_FAT" TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_FAT"
TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_FAT" TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_FAT"
TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_NO_PARALLEL" TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_NO_PARALLEL"
TARGET_AR_NM_RANLIB_PREFIX="gcc-"
elif flag_enabled "lto" "no"; then elif flag_enabled "lto" "no"; then
TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT" TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT" TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_NO_PARALLEL" TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_NO_PARALLEL"
TARGET_AR_NM_RANLIB_PREFIX="gcc-"
fi fi
fi fi
@ -69,9 +62,9 @@ setup_toolchain() {
export CPP="${TARGET_PREFIX}cpp" export CPP="${TARGET_PREFIX}cpp"
export LD="${TARGET_PREFIX}ld" export LD="${TARGET_PREFIX}ld"
export AS="${TARGET_PREFIX}as" export AS="${TARGET_PREFIX}as"
export AR="${TARGET_PREFIX}${TARGET_AR_NM_RANLIB_PREFIX}ar" export AR="${TARGET_PREFIX}ar"
export NM="${TARGET_PREFIX}${TARGET_AR_NM_RANLIB_PREFIX}nm" export NM="${TARGET_PREFIX}nm"
export RANLIB="${TARGET_PREFIX}${TARGET_AR_NM_RANLIB_PREFIX}ranlib" export RANLIB="${TARGET_PREFIX}ranlib"
export OBJCOPY="${TARGET_PREFIX}objcopy" export OBJCOPY="${TARGET_PREFIX}objcopy"
export OBJDUMP="${TARGET_PREFIX}objdump" export OBJDUMP="${TARGET_PREFIX}objdump"
export STRIP="${TARGET_PREFIX}strip" export STRIP="${TARGET_PREFIX}strip"

View File

@ -117,6 +117,10 @@ EOF
# To avoid cache trashing # To avoid cache trashing
touch -c -t $DATE $CROSS_CXX touch -c -t $DATE $CROSS_CXX
# install lto plugin for binutils
mkdir -p $TOOLCHAIN/lib/bfd-plugins
ln -sf ../gcc/$TARGET_NAME/$GCC_VERSION/liblto_plugin.so $TOOLCHAIN/lib/bfd-plugins
} }
configure_target() { configure_target() {

View File

@ -0,0 +1,17 @@
wrapper.def:
- make nm binary configurable (-DCMAKE_NM=..)
- fail if an empty file is generated
diff --git a/xbmc/cores/DllLoader/exports/CMakeLists.txt b/xbmc/cores/DllLoader/exports/CMakeLists.txt
index 580a779fdc..efcd872cad 100644
--- a/xbmc/cores/DllLoader/exports/CMakeLists.txt
+++ b/xbmc/cores/DllLoader/exports/CMakeLists.txt
@@ -16,7 +16,7 @@ elseif(NOT CORE_SYSTEM_NAME STREQUAL windows AND NOT CORE_SYSTEM_NAME STREQUAL w
add_options(C ALL_BUILDS "-fPIC")
add_library(wrapper OBJECT wrapper.c)
- add_custom_target(wrapper.def ALL nm ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/wrapper.dir/wrapper.c.o | grep __wrap | awk '{ printf(\"%s \", \$\$3) }' | sed \"s/___wrap_/__wrap_/g\" | sed \"s/__wrap_/-Wl,-wrap,/g\" > wrapper.def)
+ add_custom_target(wrapper.def ALL ${CMAKE_NM} ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/wrapper.dir/wrapper.c.o | grep __wrap | awk '{ printf(\"%s \", \$\$3) }' | sed \"s/___wrap_/__wrap_/g\" | sed \"s/__wrap_/-Wl,-wrap,/g\" > wrapper.def && test -s wrapper.def)
if(CORE_SYSTEM_NAME STREQUAL android)
add_custom_command(TARGET wrapper.def COMMAND echo \"-L${DEPENDS_PATH}/lib/dummy-lib${APP_NAME_LC} -l${APP_NAME_LC}\" >> wrapper.def)