summaryrefslogtreecommitdiff
path: root/scripts/trylink
AgeCommit message (Collapse)Author
2020-04-29build system: remove KBUILD_STR()Jean-Philippe Brucker
When using GNU Make >=4.3, the KBUILD_STR() definition interferes badly with dependency checks during build, and forces a complete rebuild every time Make runs. In if_changed_rule, Kconfig checks if the command used to build a file has changed since last execution. The previous command is stored in the generated .<file>.o.cmd file. For example applets/.applets.o.cmd defines a "cmd_applets/applets.o" variable: cmd_applets/applets.o := gcc ... -D"KBUILD_STR(s)=#s" ... Here the '#' should be escaped with a backslash, otherwise GNU Make interprets it as starting a comment, and ignore the rest of the variable. As a result of this truncation, the previous command doesn't equal the new command and Make rebuilds each target. The problem started to appear when GNU Make 4.3 (released January 2020), introduced a backward-incompatible fix to macros containing a '#'. While the above use of '#', a simple Make variable, still needs to be escaped, a '#' within a function invocation doesn't need to be escaped anymore. As Martin Dorey explained on the GNU Make discussion [1], the above declaration is generated from make-cmd, defined as: make-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))) Since GNU Make 4.3, the first argument of subst should not have a backslash. make-cmd now looks for literally \# and doesn't find it, and as a result doesn't add the backslash when generating .o.cmd files. [1] http://savannah.gnu.org/bugs/?20513 We could fix it by changing make-cmd to "$(subst #,\#,...)", but to avoid compatibility headaches, simply get rid of the KBUILD_STR definition, as done in Linux by b42841b7bb62 ("kbuild: Get rid of KBUILD_STR"). Quote the string arguments directly rather than asking the preprocessor to quote them. Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-11-19scripts/trylink: be more clever when deciding that "lib elimination" has ↵Denys Vlasenko
finished: Before: Trying libraries: crypt m resolv Library crypt is not needed, excluding it Library m is needed, can't exclude it (yet) Library resolv is needed, can't exclude it (yet) Library m is needed, can't exclude it (yet) Library resolv is needed, can't exclude it (yet) Final link with: m resolv After: Trying libraries: crypt m resolv Library crypt is not needed, excluding it Library m is needed, can't exclude it (yet) Library resolv is needed, can't exclude it (yet) Final link with: m resolv Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-07-15build system: FEATURE_LIBBUSYBOX_STATIC - try to pull libc/libm into libbusyboxDenys Vlasenko
It variously fails with different toolchains I tried... Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-01-24remove "local" bashism from a few scriptsDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2016-07-12trylink: use "mktemp tmp.XXXXXXXXXX" to placate OS XDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2016-06-20scripts/trylink: libbusybox fixDenys Vlasenko
gcc 6.1.1 can emit empty line with spaces Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2016-04-22scripts/trylink: document DATA_SEGMENT_ALIGN() hackDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2016-04-03trylink: on failure, print a hint about CONFIG_EXTRA_LDLIBSDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2015-12-01trylink: include LDFLAGS when checking linkageMike Frysinger
The user might be including options in their LDFLAGS (like -fuse-ld=gold) that change the behavior of the linker and thus change the results of the flag tests. Make sure we include the user's LDFLAGS when running these tests so we filter out flags that will fail when used later on. URL: https://bugs.gentoo.org/499712 Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2015-10-20typo fixDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2015-10-20scripts/trylink: remove $CPPFLAGSDenys Vlasenko
We don't use it in final link, should not use it in check_FOO then. This uncovered a logic bug in glibc check... Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2015-10-20scripts/trylink: fix bit-rotted linker option verificationDenys Vlasenko
To that end, *make it complain* when check_cc fails on options we usually want to succeed. text data bss dec hex filename 929697 932 17692 948321 e7861 busybox-1.23.2/busybox 915361 911 17484 933756 e3f7c busybox-1.23.2.fixed/busybox 927725 932 17448 946105 e6fb9 busybox-1.24.0/busybox 913630 911 17240 931781 e37c5 busybox-1.24.0.fixed/busybox Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2015-03-16trylink: respect compiler settings when probing featuresMike Frysinger
The CPPFLAGS/CFLAGS settings might have features that matter, so make sure we utilize them when testing the compiler. URL: https://bugs.gentoo.org/471118 Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2015-03-16trylink: use mktemp instead of hardcoding pathsMike Frysinger
This way we respect standard tempdir env vars and are guaranteed to be unique. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2014-05-03trylink: emit names of linked executablesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2014-04-19modprobe-small: fix help messages for aliased module-related appletsDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2013-09-28trylink: only prefix libs with -lMike Frysinger
If our pkg-config queries pass back a flag like -pthread, the trylink script will expand that to -l-pthread. So change trylink to only add the -l prefix to a value that doesn't have a - prefix already. Reported-by: thaehaid@incognitomail.org Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-05-09pam link error with SHARED_BUSYBOX and LIBBUSYBOX enabledSteve Iribarne
Signed-off-by: Steve Iribarne <siribarne@grid-net.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-06-19cosmetics on top of Dan's patchesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-06-19Define GNU-specific link options in one placeDan Fandrich
This makes them easier to change to support a non-GNU toolchain. Signed-off-by: Dan Fandrich <dan@coneharvesters.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-05-21trylink: gold may not support --sort-common (yet)Bernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2009-06-27trylink: don't use ld --gc-sections if ld doesn't support itDenys Vlasenko
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2008-10-23- give glob a chanceBernhard Reutner-Fischer
CROSS_COMPILE=~/foo-bar-baz would fail otherwise See http://www.uclibc.org/lists/buildroot/2008-October/011191.html
2008-08-26trylink: make messages less confusingDenis Vlasenko
2008-06-14hush: add support for ':'; create testsuite entriesDenis Vlasenko
text data bss dec hex filename 809569 612 7044 817225 c7849 busybox_old 809528 612 7044 817184 c7820 busybox_unstripped
2008-05-09- pass flags to ld in one argumentBernhard Reutner-Fischer
2008-04-30trylink: fix glibc check; make --sort-section option look less uglyDenis Vlasenko
2008-03-21*: fix build problems found with randomconfigDenis Vlasenko
2008-02-14build system: pass CFLAGS to link stage too (closes bug 1376)Denis Vlasenko
2008-02-13build system: don't use -o /dev/null, old gcc can delete /dev/null!Denis Vlasenko
2007-12-28trylink: instead of build error, disable --gc-sections if GLIBC && STATICDenis Vlasenko
nameif: glibc build fixlet
2007-11-18make output a little more friendlyMike Frysinger
2007-11-13trylink: accomodate older versions of ldDenis Vlasenko
2007-10-11fix a problem with two different applet_name'sDenis Vlasenko
2007-10-11add -fvisibility=hidden to CC flags, mark XXX_main functionsDenis Vlasenko
EXTERNALLY_VISIBLE. 5% size reduction of libbusybox.so
2007-10-10Move applets/applet.c into libbb, allows to get rid of --whole-archiveDenis Vlasenko
(smaller code). Tested in static and shared mode.
2007-10-10trylink: s/strip/$STRIP/gDenis Vlasenko
2007-10-09trylink: trivial cleanupDenis Vlasenko
2007-10-09trylink: reformat link flags for readabilityDenis Vlasenko
trylink: add --sort-section alignment: text data bss dec hex filename - 6557 428 3260 10245 2805 busybox + 6555 428 3260 10243 2803 busybox - 909621 1076 12108 922805 e14b5 libbusybox.so.1.8.0.svn + 908868 1050 12016 921934 e114e libbusybox.so.1.8.0.svn
2007-10-09trylink: remove useless redirects, add missing error checksDenis Vlasenko
2007-10-09trylink: trivial fixesDenis Vlasenko
2007-10-08make "individual applets" build less noisy.Denis Vlasenko
add *.tmp to list of files deleted by make mrproper.
2007-10-07make --help work for "individual applets" too.Denis Vlasenko
2007-10-07libbusybox: move (possibly compressed) help stuff into libbusybox.Denis Vlasenko
Makes individual binaries much smaller.
2007-10-07reviving libbusybox, adding CONFIG_INDIVIDUAL part 4Denis Vlasenko
2007-10-07reviving libbusybox, adding CONFIG_INDIVIDUAL part 3Denis Vlasenko
2007-10-07reviving libbusybox, adding CONFIG_INDIVIDUAL part 2Denis Vlasenko
2007-10-07reviving libbusybox, adding CONFIG_INDIVIDUAL part 1Denis Vlasenko
2007-09-03trylink: reinstate accidentally deleted --verboseDenis Vlasenko
trylink: remove commented-out parts
2007-09-02- Generally strip off -l that does not pull in a lib.Bernhard Reutner-Fischer
If l_list is non-empty then add the group flags.