From 6073f87d7f160a9306209efd390409e7fe67e6db Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Wed, 17 Feb 2021 13:48:10 -0500 Subject: [PATCH] sysroot.py: add support for non-darwin platforms CMAKE_SYSROOT works fine here, and `sysroot.py make-fake` borders on trivial here, but I suppose it's still nice to have a consistent script to set these up across platforms. And these are the platforms where we can do real sysroot management one day. Differential Revision: https://reviews.llvm.org/D96882 --- llvm/utils/gn/build/BUILD.gn | 11 ++++++++--- llvm/utils/sysroot.py | 7 +++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/llvm/utils/gn/build/BUILD.gn b/llvm/utils/gn/build/BUILD.gn index 362924a..ecfd6f9 100644 --- a/llvm/utils/gn/build/BUILD.gn +++ b/llvm/utils/gn/build/BUILD.gn @@ -285,9 +285,14 @@ config("compiler_defaults") { } } if (sysroot != "") { - assert(current_os == "win", "FIXME: Make sysroot work on non-win") - assert(is_clang, "sysroot only works with clang-cl as host compiler") - cflags += [ "/winsysroot" + rebase_path(sysroot, root_build_dir) ] + assert(current_os != "mac" && current_os != "ios", + "FIXME: Make sysroot work on darwin") + if (current_os == "win") { + assert(is_clang, "sysroot only works with clang-cl as host compiler") + cflags += [ "/winsysroot" + rebase_path(sysroot, root_build_dir) ] + } else { + cflags += [ "--sysroot=" + rebase_path(sysroot, root_build_dir) ] + } } if (use_ubsan) { diff --git a/llvm/utils/sysroot.py b/llvm/utils/sysroot.py index 3acf6bc..fb832e6 100755 --- a/llvm/utils/sysroot.py +++ b/llvm/utils/sysroot.py @@ -35,13 +35,16 @@ def make_fake_sysroot(out_dir): os.path.join(vsinstalldir, 'VC')) os.mkdir(os.path.join(out_dir, 'Windows Kits')) mkjunction(os.path.join(out_dir, 'Windows Kits', '10'), winsdk) + elif sys.platform == 'darwin': + assert False, "FIXME: Implement on darwin" else: - assert False, "FIXME: Implement on non-win" + os.symlink('/', out_dir) print('Done.') + abs_out_dir = os.path.abspath(out_dir) if sys.platform == 'win32': # CMake doesn't like backslashes in commandline args. - abs_out_dir = os.path.abspath(out_dir).replace(os.path.sep, '/') + abs_out_dir = abs_out_dir.replace(os.path.sep, '/') print('Pass -DLLVM_WINSYSROOT=' + abs_out_dir + ' to cmake.') else: print('Pass -DCMAKE_SYSROOT=' + abs_out_dir + ' to cmake.') -- 2.7.4