diff options
author | Elliott Hughes <enh@google.com> | 2018-11-30 13:47:05 -0800 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2018-11-30 16:40:14 -0600 |
commit | 360a2bfd5de1bc7fbdb69347f2b105fc231e63ef (patch) | |
tree | 0ba590f33591e5f45f9b14136debbe911ab7ad40 | |
parent | 890909a6d0ec2fa7f55afd22aa142b4b3d5f156a (diff) | |
download | toybox-360a2bfd5de1bc7fbdb69347f2b105fc231e63ef.tar.gz |
macOS: Apple's ancient linker doesn't have --as-needed or --gc-sections.
-rwxr-xr-x | configure | 6 | ||||
-rwxr-xr-x | scripts/make.sh | 4 |
2 files changed, 7 insertions, 3 deletions
@@ -22,7 +22,11 @@ CFLAGS="$CFLAGS -funsigned-char" [ -z "$OPTIMIZE" ] && OPTIMIZE="-Os -ffunction-sections -fdata-sections -fno-asynchronous-unwind-tables -fno-strict-aliasing" # We accept LDFLAGS, but by default don't have anything in it -[ -z "$LDOPTIMIZE" ] && LDOPTIMIZE="-Wl,--gc-sections" +if [ "$(uname)" != "Darwin" ] +then + [ -z "$LDOPTIMIZE" ] && LDOPTIMIZE="-Wl,--gc-sections" + LDASNEEDED="-Wl,--as-needed" +fi # The makefile provides defaults for these, so this only gets used if # you call scripts/make.sh and friends directly. diff --git a/scripts/make.sh b/scripts/make.sh index 306a7cda..640dcbed 100755 --- a/scripts/make.sh +++ b/scripts/make.sh @@ -115,7 +115,7 @@ then for i in util crypt m resolv selinux smack attr rt crypto z log do echo "int main(int argc, char *argv[]) {return 0;}" | \ - ${CROSS_COMPILE}${CC} $CFLAGS $LDFLAGS -xc - -o generated/libprobe -Wl,--as-needed -l$i > /dev/null 2>/dev/null && + ${CROSS_COMPILE}${CC} $CFLAGS $LDFLAGS -xc - -o generated/libprobe $LDASNEEDED -l$i > /dev/null 2>/dev/null && echo -l$i >> generated/optlibs.dat echo -n . done @@ -125,7 +125,7 @@ fi # LINK needs optlibs.dat, above -LINK="$(echo $LDOPTIMIZE $LDFLAGS -o "$UNSTRIPPED" -Wl,--as-needed $(cat generated/optlibs.dat))" +LINK="$(echo $LDOPTIMIZE $LDFLAGS -o "$UNSTRIPPED" $LDASNEEDED $(cat generated/optlibs.dat))" genbuildsh > generated/build.sh && chmod +x generated/build.sh || exit 1 #TODO: "make $SED && make" doesn't regenerate config.h because diff .config |