Index: llvm/utils/gn/build/BUILD.gn =================================================================== --- llvm/utils/gn/build/BUILD.gn +++ llvm/utils/gn/build/BUILD.gn @@ -285,9 +285,14 @@ } } 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) { Index: llvm/utils/sysroot.py =================================================================== --- llvm/utils/sysroot.py +++ llvm/utils/sysroot.py @@ -35,13 +35,16 @@ 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.')