You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.1 KiB
120 lines
4.1 KiB
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|
# |
|
# Filename: package/.../libtool/parse-config |
|
# Copyright (C) 2007 - 2009 The OpenSDE Project |
|
# Copyright (C) 2006 The T2 SDE Project |
|
# |
|
# More information can be found in the files COPYING and README. |
|
# |
|
# This program is free software; you can redistribute it and/or modify |
|
# it under the terms of the GNU General Public License as published by |
|
# the Free Software Foundation; version 2 of the License. A copy of the |
|
# GNU General Public License can be found in the file COPYING. |
|
# --- SDE-COPYRIGHT-NOTE-END --- |
|
|
|
libtool_remove_la() |
|
{ |
|
echo "Removing .la files..." |
|
grep '\.la$' $builddir/flist.txt | xargs rm -fv "$root/{}" |
|
} |
|
|
|
# Some packges have outdated libtool that e.g. does not handle lib64. The |
|
# LIBTOOL-QUIRK flag allows automated updating of those files. |
|
|
|
libtool_fixup() |
|
{ |
|
local pref= ltmain= |
|
|
|
if atstage native; then |
|
pref="$root" |
|
else |
|
pref="$base/build/$SDECFG_ID/TOOLCHAIN/tools.cross" |
|
fi |
|
|
|
for ltmain in "$pref/usr/share/libtool"/{,config/}ltmain.sh; do |
|
[ ! -s "$ltmain" ] || break |
|
done |
|
|
|
[ -f configure.in -o -f configure.ac ] && libtoolize -c -f |
|
|
|
find -name libtool -o -name ltmain.sh | while read fn; do |
|
case "$fn" in |
|
*libtool) cp -fv "$pref/usr/bin/libtool" "$fn" ;; |
|
*) cp -fv "$ltmain" "$fn" ;; |
|
esac |
|
done |
|
} |
|
|
|
# Many libtool and ltmain files contain an error which is hostile in |
|
# our build environment: |
|
# - on systems where the libdir is not */lib, libtool still searches |
|
# /lib and /usr/lib first |
|
# - removal of temporary paths during library search does not work, |
|
# this concerns mainly dependency_libs in .la files where build system |
|
# paths and other things survive |
|
# |
|
# We try to correct any libtool and ltmain file now: |
|
libtool_correct_files() { |
|
# do not do anything if we're outside builddir (like sysfiles is) |
|
[[ ${PWD//src.$pkg.$config.$id/} = $PWD ]] && return |
|
|
|
# find all libtool etal files, and sed them |
|
find -type f -name "libtool*" -o -name "ltmain*" -o -name "ltconfig*" -o -name "ltcf*" | while read f; do |
|
cp $f $f.ltcorrect |
|
sed -i \ |
|
-e 's,sys_lib_dlsearch_path_spec="/lib .*$lt_ld_extra.*,sys_lib_dlsearch_path_spec="$lt_ld_extra",' \ |
|
-e "s,'s% \$path % %g',\"s% \$path % %g\",g" -e "s,'s% -L\$path % %g',\"s% -L\$path % %g\",g" \ |
|
-e 's,echo "$\(lib_search_path\|deplibs\|dependency_libs\) ",echo " $\1 ",g' \ |
|
$f |
|
|
|
# previous sed does (per line): |
|
# 1. Dynamic library search path |
|
# libtool.m4/ltmain.sh use the ld.so.conf list (lt_ld_extra) of path to search for dynamic libs, |
|
# that variable is, however prefixed with "-L/lib -L/usr/lib" statically, the latter paths are |
|
# removed by the sed expression |
|
# 2. Wrong quotes around sed expression |
|
# A cleanup routine for temporary paths (grep for notinst_path) in libtool*/ltmain.* removes |
|
# paths that should not appear after installation of the library. For this to work the "$path" |
|
# variable must be evaluated (which is not possible with ' around it) |
|
# 3. Sed expects a leading whitespace |
|
# To be sure that the cleaning process (mentioned in 2.) works also for the first argument, |
|
# a " " is prepended before it is run through the sed expression (see 2.). |
|
|
|
diff $f.ltcorrect $f >/dev/null || echo_warning "Corrected $f" |
|
|
|
rm -f $f.ltcorrect |
|
done |
|
} |
|
|
|
libtool_final_check() |
|
{ |
|
local ld=${libdir##*/} |
|
# do not do anything if we're outside builddir (like sysfiles is) |
|
[[ ${PWD//src.$pkg.$config.$id/} = $PWD ]] && return |
|
if [ -f libtool -a -f $root/usr/bin/libtool ] && |
|
! egrep -q "sys_lib_search_path_spec=.* /usr/$ld " libtool |
|
then |
|
echo_warning "Overwriting libtool - configure broken beyond believe." |
|
cp $root/usr/bin/libtool . |
|
echo -e "#!/bin/true" > missing |
|
fi |
|
} |
|
|
|
if ! atstage toolchain && hasflag LIBTOOL-QUIRK; then |
|
hook_add preconf 8 libtool_fixup |
|
elif ! hasflag NO-LIBTOOL-FIX; then |
|
hook_add preconf 8 libtool_correct_files |
|
fi |
|
|
|
if ! hasflag NO-LIBTOOL-FIX; then |
|
# use our libtool widely |
|
export LIBTOOL=${archprefix}libtool |
|
|
|
#hook_add premake 7 libtool_final_check |
|
fi |
|
|
|
if ! atstage native; then |
|
hook_add postflist 5 libtool_remove_la |
|
fi |
|
|
|
|