It also requires to set the Buildroot settings according to the toolchain ones
(see xref:external-toolchain-backend[]).
+When using an external toolchain, Buildroot generates a wrapper program, that
+passes the appropriate options (according to the configuration) to the
+external toolchain programs. In case you need to debug this wrapper, you can
+set the environment variable BR_DEBUG_WRAPPER to either one of:
+
+* +0+, empty or not set: no debug
+
+* +1+: trace all arguments on a single line
+
+* +2+: trace one argument per line
+
Using the internal Buildroot toolchain backend
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
char *relbasedir, *absbasedir;
char *progpath = argv[0];
char *basename;
- int ret, i, count = 0;
+ char *env_debug;
+ int ret, i, count = 0, debug;
/* Calculate the relative paths */
basename = strrchr(progpath, '/');
/* finish with NULL termination */
*cur = NULL;
- if (getenv("BR_DEBUG_WRAPPER")) {
- fprintf(stderr, "Executing");
-
- for (i = 0; args[i]; i++)
- fprintf(stderr, " %s", args[i]);
-
- fprintf(stderr, "\n");
+ /* Debug the wrapper to see actual arguments passed to
+ * the compiler:
+ * unset, empty, or 0: do not trace
+ * set to 1 : trace all arguments on a single line
+ * set to 2 : trace one argument per line
+ */
+ if ((env_debug = getenv("BR_DEBUG_WRAPPER"))) {
+ debug = atoi(env_debug);
+ if (debug > 0) {
+ fprintf(stderr, "Toolchain wrapper executing:");
+ for (i = 0; args[i]; i++)
+ fprintf(stderr, "%s'%s'",
+ (debug == 2)?"\n ":" ", args[i]);
+ fprintf(stderr, "\n");
+ }
}
if (execv(path, args))