summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/trylink25
1 files changed, 18 insertions, 7 deletions
diff --git a/scripts/trylink b/scripts/trylink
index 7fe262baa..4fea6fe76 100755
--- a/scripts/trylink
+++ b/scripts/trylink
@@ -46,6 +46,14 @@ try() {
46 return $exitcode 46 return $exitcode
47} 47}
48 48
49check_cc() {
50 if $CC $1 -shared -o /dev/null -xc /dev/null > /dev/null 2>&1; then
51 echo "$1";
52 else
53 echo "$2";
54 fi
55}
56
49EXE="$1" 57EXE="$1"
50CC="$2" 58CC="$2"
51LDFLAGS="$3" 59LDFLAGS="$3"
@@ -53,6 +61,9 @@ O_FILES="$4"
53A_FILES="$5" 61A_FILES="$5"
54LDLIBS="$6" 62LDLIBS="$6"
55 63
64# The -Wl,--sort-section option is not supported by older versions of ld
65SORT_SECTION=`check_cc "-Wl,--sort-section -Wl,alignment" ""`
66
56# Sanitize lib list (dups, extra spaces etc) 67# Sanitize lib list (dups, extra spaces etc)
57LDLIBS=`echo "$LDLIBS" | xargs -n1 | sort | uniq | xargs` 68LDLIBS=`echo "$LDLIBS" | xargs -n1 | sort | uniq | xargs`
58 69
@@ -64,7 +75,7 @@ test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group"
64try $CC $LDFLAGS \ 75try $CC $LDFLAGS \
65 -o $EXE \ 76 -o $EXE \
66 -Wl,--sort-common \ 77 -Wl,--sort-common \
67 -Wl,--sort-section -Wl,alignment \ 78 $SORT_SECTION \
68 -Wl,--gc-sections \ 79 -Wl,--gc-sections \
69 -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \ 80 -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \
70 $l_list \ 81 $l_list \
@@ -88,7 +99,7 @@ while test "$LDLIBS"; do
88 try $CC $LDFLAGS \ 99 try $CC $LDFLAGS \
89 -o $EXE \ 100 -o $EXE \
90 -Wl,--sort-common \ 101 -Wl,--sort-common \
91 -Wl,--sort-section -Wl,alignment \ 102 $SORT_SECTION \
92 -Wl,--gc-sections \ 103 -Wl,--gc-sections \
93 -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \ 104 -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \
94 $l_list 105 $l_list
@@ -117,7 +128,7 @@ if ! test -f busybox_ldscript; then
117 try $CC $LDFLAGS \ 128 try $CC $LDFLAGS \
118 -o $EXE \ 129 -o $EXE \
119 -Wl,--sort-common \ 130 -Wl,--sort-common \
120 -Wl,--sort-section -Wl,alignment \ 131 $SORT_SECTION \
121 -Wl,--gc-sections \ 132 -Wl,--gc-sections \
122 -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \ 133 -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \
123 $l_list \ 134 $l_list \
@@ -139,7 +150,7 @@ else
139 try $CC $LDFLAGS \ 150 try $CC $LDFLAGS \
140 -o $EXE \ 151 -o $EXE \
141 -Wl,--sort-common \ 152 -Wl,--sort-common \
142 -Wl,--sort-section -Wl,alignment \ 153 $SORT_SECTION \
143 -Wl,--gc-sections \ 154 -Wl,--gc-sections \
144 -Wl,-T -Wl,busybox_ldscript \ 155 -Wl,-T -Wl,busybox_ldscript \
145 -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \ 156 -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \
@@ -174,7 +185,7 @@ if test "$CONFIG_BUILD_LIBBUSYBOX" = y; then
174 -Wl,-soname="libbusybox.so.$BB_VER" \ 185 -Wl,-soname="libbusybox.so.$BB_VER" \
175 -Wl,--undefined=lbb_main \ 186 -Wl,--undefined=lbb_main \
176 -Wl,--sort-common \ 187 -Wl,--sort-common \
177 -Wl,--sort-section -Wl,alignment \ 188 $SORT_SECTION \
178 -Wl,--start-group $A_FILES -Wl,--end-group \ 189 -Wl,--start-group $A_FILES -Wl,--end-group \
179 $l_list \ 190 $l_list \
180 -Wl,--warn-common \ 191 -Wl,--warn-common \
@@ -195,7 +206,7 @@ if test "$CONFIG_FEATURE_SHARED_BUSYBOX" = y; then
195 try $CC $LDFLAGS \ 206 try $CC $LDFLAGS \
196 -o $EXE \ 207 -o $EXE \
197 -Wl,--sort-common \ 208 -Wl,--sort-common \
198 -Wl,--sort-section -Wl,alignment \ 209 $SORT_SECTION \
199 -Wl,--gc-sections \ 210 -Wl,--gc-sections \
200 -Wl,--start-group $O_FILES -Wl,--end-group \ 211 -Wl,--start-group $O_FILES -Wl,--end-group \
201 -L"$sharedlib_dir" -lbusybox \ 212 -L"$sharedlib_dir" -lbusybox \
@@ -234,7 +245,7 @@ int main(int argc, char **argv)
234 try $CC $LDFLAGS "$sharedlib_dir/applet.c" \ 245 try $CC $LDFLAGS "$sharedlib_dir/applet.c" \
235 -o $EXE \ 246 -o $EXE \
236 -Wl,--sort-common \ 247 -Wl,--sort-common \
237 -Wl,--sort-section -Wl,alignment \ 248 $SORT_SECTION \
238 -Wl,--gc-sections \ 249 -Wl,--gc-sections \
239 -L"$sharedlib_dir" -lbusybox \ 250 -L"$sharedlib_dir" -lbusybox \
240 -Wl,--warn-common \ 251 -Wl,--warn-common \