From a8e26c63b87f756fd95d3bb5dff71f060086338f Mon Sep 17 00:00:00 2001 From: nakst <> Date: Sat, 25 Dec 2021 11:00:43 +0000 Subject: [PATCH] extract sysroot for pre built toolchain --- util/build.c | 13 ++++++++++++- util/toolchain_wrapper.c | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/util/build.c b/util/build.c index 1102924..5f8a59d 100644 --- a/util/build.c +++ b/util/build.c @@ -1591,8 +1591,19 @@ void DoCommand(const char *l) { CallSystem("mv bin/source cross"); CallSystem("mkdir -p cross/bin2"); CallSystem("gcc -o bin/change_sysroot util/change_sysroot.c -Wall -Wextra"); + CallSystem("cross/bin2/" TOOLCHAIN_PREFIX "-gcc --verbose > bin/temp.txt"); + char *configureFlags = (char *) LoadFile("bin/temp.txt", NULL); + char *sysrootPath = strstr(configureFlags, "--with-sysroot="); + sysrootPath += 15; + char *sysrootPathEnd = strchr(sysrootPath, ' '); + if (sysrootPathEnd) *sysrootPathEnd = 0; + free(configureFlags); + CallSystem("rm bin/temp.txt"); + fprintf("Detected sysroot from gcc as \"%s\".\n", sysrootPath); #define MAKE_TOOLCHAIN_WRAPPER(tool) \ - CallSystem("gcc -o cross/bin2/" TOOLCHAIN_PREFIX "-" tool " util/toolchain_wrapper.c -Wall -Wextra -g -DTOOL=" TOOLCHAIN_PREFIX "-" tool) + CallSystemF("gcc -o cross/bin2/" TOOLCHAIN_PREFIX "-" tool \ + " util/toolchain_wrapper.c -Wall -Wextra -g " \ + " -DCONFIGURE_SYSROOT=\"%s\" -DTOOL=" TOOLCHAIN_PREFIX "-" tool, sysrootPath) MAKE_TOOLCHAIN_WRAPPER("addr2line"); MAKE_TOOLCHAIN_WRAPPER("ar"); MAKE_TOOLCHAIN_WRAPPER("as"); diff --git a/util/toolchain_wrapper.c b/util/toolchain_wrapper.c index ad3c203..2a1ea75 100644 --- a/util/toolchain_wrapper.c +++ b/util/toolchain_wrapper.c @@ -28,7 +28,7 @@ int main(int argc, char **argv) { // printf("'%s'\n", tool); char **newArgv = (char **) calloc(sizeof(char *), (argc + 4)); newArgv[0] = change; - newArgv[1] = "/home/runner/work/build-gcc/build-gcc/essence/root/"; + newArgv[1] = CONFIGURE_SYSROOT; newArgv[2] = sysroot; newArgv[3] = tool; memcpy(newArgv + 4, argv + 1, (argc - 1) * sizeof(char *));