xmake-io / xmake

๐Ÿ”ฅ A cross-platform build utility based on Lua
https://xmake.io
Apache License 2.0
10.04k stars 785 forks source link

Cross compile Lua for Windows on FreeBSD host - XMake picks host compiler #1042

Closed RussellHaley closed 3 years ago

RussellHaley commented 3 years ago
russellh@jailbird /s/s/XMakeWinLua (master) [255]> xmake --version
xmake v2.3.8+202011141924, A cross-platform build utility based on Lua
Copyright (C) 2015-present Ruki Wang, tboox.org, xmake.io
                         _
    __  ___ __  __  __ _| | ______
    \ \/ / |  \/  |/ _  | |/ / __ \
     >  <  | \__/ | /_| |   <  ___/
    /_/\_\_|_|  |_|\__ \|_|\_\____|
                         by ruki, xmake.io

    ๐Ÿ‘‰  Manual: https://xmake.io/#/getting_started
    ๐Ÿ™  Donate: https://xmake.io/#/sponsor

Describe the bug

I have a small project to build Lua 5.1,5.3,5.4 or Windows. The project builds correctly on Windows with llvm-mingw. I transferred the project directory to FreeBSD and set up the configuration "the same" and I get a compile error:

error: '__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributes`

Windows build (full build not shown):

PS C:\Users\russh\XMakeWinLua> xmake show
The information of xmake:
    version: 2.3.8+202011112238
    host: windows/x64
    programdir: C:\Program Files (x86)\WinLua\XMake\xmake\share\xmake
    programfile: C:\Program Files (x86)\WinLua\XMake\xmake\bin\xmake.exe
    globaldir: C:\Users\russh\AppData\Local\.xmake
    tmpdir: C:\Users\russh\AppData\Local\Temp\.xmake\201114
    workingdir: C:\Users\russh\XMakeWinLua
    packagedir: C:\Users\russh\AppData\Local\.xmake\packages
    packagedir(cache): C:\Users\russh\AppData\Local\.xmake\cache\packages\2011

The information of project: WinLua - Lua Build
    plat: mingw
    arch: x86_64
    mode: release
    buildir: build
    configdir: C:\Users\russh\XMakeWinLua\.xmake\windows\x64
    projectdir: C:\Users\russh\XMakeWinLua
    projectfile: C:\Users\russh\XMakeWinLua\xmake.lua

PS C:\Users\russh\XMakeWinLua> xmake
[100%]: build ok!

FreeBSD fails. I tried with and without --cross. I figured out it was grabbing my host compiler (which does not have mingw). I tried re-configuring xmake with --bin, but it seems to ignore this options and take the host compiler. I then removed my .xmake file and noticed a little detail in the configuration output that only shows up the first time I run config. XMake ignores the --bin directive for the C compiler and AR, but picks correctly for the C++ compiler (ha ha):

russellh@jailbird /s/s/XMakeWinLua (master)> ./config-xmake.sh
checking for clang ... /usr/bin/clang     <------ Ooops!
checking for ar ... /usr/local/bin/ar
checking for the static library archiver (ar) ... ar
checking for clang++ ... /storage/build/llvm-mingw-host/bin/clang++  <------ Hurray!
checking for the shared library linker (sh) ... clang++
configure
{
    arch = x86_64
    kind = static
    toolchain = clang
    mrc = x86_64-w64-mingw32-windres
    buildir = build
    bin = /storage/build/llvm-mingw-host/bin
    mode = release
    plat = mingw
    ccache = true
    host = bsd
}

I also noticed that when I add --cross to a project, it is never removed. If I configure first with --cross, then without --cross, the option is still there until I delete the .xmake directory. Here is the reproduced issue:

russellh@jailbird /s/s/XMakeWinLua (master)> cat config-xmake.sh
#!/bin/sh
ARCH="x86_64"
TRIPLET="$ARCH-w64-mingw32"
xmake f -v -a $ARCH -p mingw --toolchain=clang --mrc="$TRIPLET-windres"
russellh@jailbird /s/s/XMakeWinLua (master)> ./config-xmake.sh
configure
{
    mode = release
    ccache = true
    toolchain = clang
    mrc = x86_64-w64-mingw32-windres
    plat = mingw
    buildir = build
    arch = x86_64
    kind = static
    host = bsd
}
russellh@jailbird /s/s/XMakeWinLua (master)> fg
Send job 1, 'nvim XMakeWinLua/xmake.lua' to foreground
russellh@jailbird /s/s/XMakeWinLua (master)> cat config-xmake.sh
#!/bin/sh
ARCH="x86_64"
TRIPLET="$ARCH-w64-mingw32"
xmake f -v -a $ARCH -p mingw --cross="$TRIPLET-" --toolchain=clang --mrc="$TRIPLET-windres"
russellh@jailbird /s/s/XMakeWinLua (master)> ./config-xmake.sh
checking for clang ... /usr/bin/clang
checking for clang++ ... /usr/bin/clang++
checking for the shared library linker (sh) ... clang++
checking for ar ... /usr/local/bin/ar
checking for the static library archiver (ar) ... ar
configure
{
    buildir = build
    mrc = x86_64-w64-mingw32-windres
    cross = x86_64-w64-mingw32-
    arch = x86_64
    toolchain = clang
    mode = release
    kind = static
    host = bsd
    plat = mingw
    ccache = true
}
russellh@jailbird /s/s/XMakeWinLua (master)> fg
Send job 1, 'nvim XMakeWinLua/xmake.lua' to foreground
russellh@jailbird /s/s/XMakeWinLua (master)> cat config-xmake.sh
#!/bin/sh
ARCH="x86_64"
TRIPLET="$ARCH-w64-mingw32"
xmake f -v -a $ARCH -p mingw --toolchain=clang --mrc="$TRIPLET-windres"
russellh@jailbird /s/s/XMakeWinLua (master)> ./config-xmake.sh
configure
{
    kind = static
    toolchain = clang
    host = bsd
    cross = x86_64-w64-mingw32-
    ccache = true
    buildir = build
    plat = mingw
    mrc = x86_64-w64-mingw32-windres
    arch = x86_64
    mode = release
}
russellh@jailbird /s/s/XMakeWinLua (master)> rm -rf .xmake/
russellh@jailbird /s/s/XMakeWinLua (master)> ./config-xmake.sh
checking for clang ... /usr/bin/clang
checking for ar ... /usr/local/bin/ar
checking for the static library archiver (ar) ... ar
checking for clang++ ... /usr/bin/clang++
checking for the shared library linker (sh) ... clang++
configure
{
    toolchain = clang
    mode = release
    host = bsd
    kind = static
    plat = mingw
    mrc = x86_64-w64-mingw32-windres
    ccache = true
    arch = x86_64
    buildir = build
}

I'm still on the dev branch. :-) Thanks Ruki!

waruqi commented 3 years ago

xmake f -v -a $ARCH -p mingw --cross="$TRIPLET-" --toolchain=clang --mrc="$TRIPLET-windres"

Please remove --toolchain=clang, it will use clang/clang++.

We need only use the following configuation command if llvm-mingw has been to added to PATH/bin.

xmake f -v -a $ARCH -p mingw -c

or we can set mingw sdk path

xmake f -v -a $ARCH -p mingw -c --mingw=/opt/mingw_sdk_path/xxxx

If I configure first with --cross, then without --cross, the option is still there until I delete the .xmake directory.

You need add -c to xmake f to ignore configuration cache and force to re-detect all mingw toolchain infos.

RussellHaley commented 3 years ago

It wouldn't accept the --mingw option (what stupid thing could I have done? ha ha). The autodetect only worked when my cross compiler was the first clang compiler found in the path:

russellh@jailbird /s/s/XMakeWinLua (master)> echo $SHELL
/usr/local/bin/fish
russellh@jailbird /s/s/XMakeWinLua (master) [255]> echo $PATH
/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin /home/russellh/bin /storage/build/llvm-mingw-host/bin/
russellh@jailbird /s/s/XMakeWinLua (master) [255]> xmake f -v -a i386 -p mingw -c
checking for mingw directory ... no
please run:
    - xmake config --mingw=xxx
or  - xmake global --mingw=xxx

russellh@jailbird /s/s/XMakeWinLua (master)> xmake global --mingw="/storage/build/llvm-mingw-host"
...
error: Invalid option: --mingw=/storage/build/llvm-mingw-host
xmake f -v -c -a i386 -p mingw --mingw="/storage/build/llvm-mingw-host/"
...
error: Invalid option: --mingw=/storage/build/llvm-mingw-host/
russellh@jailbird /s/s/XMakeWinLua (master) [255]> xmake f -v -c -a i386 -p mingw
checking for mingw directory ... no
please run:
    - xmake config --mingw=xxx
or  - xmake global --mingw=xxx
russellh@jailbird /s/s/XMakeWinLua (master)> set PATH /storage/build/llvm-mingw-host/bin $PATH
russellh@jailbird /s/s/XMakeWinLua (master)> xmake f -v -c -a i386 -p mingw
checking for mingw directory ... /storage/build/llvm-mingw-host
checking for i686-w64-mingw32-ar ... /storage/build/llvm-mingw-host/bin/i686-w64-mingw32-ar
checking for the static library archiver (ar) ... i686-w64-mingw32-ar
checking for i686-w64-mingw32-g++ ... /storage/build/llvm-mingw-host/bin/i686-w64-mingw32-g++
checking for the shared library linker (sh) ... i686-w64-mingw32-g++
configure
{
    clean = true
    ccache = true
    arch = i386
    kind = static
    bin = /storage/build/llvm-mingw-host/bin
    host = bsd
    buildir = build
    cross = i686-w64-mingw32uwp-
    plat = mingw
    mingw = /storage/build/llvm-mingw-host
    mode = release
}
RussellHaley commented 3 years ago

This is what finally worked (with llvm-mingw as the first compiler in my path):

xmake f -v -c -a i386 -p mingw --mrc="i686-w64-mingw32-windres"

waruqi commented 3 years ago

xmake global --mingw="/storage/build/llvm-mingw-host" ... error: Invalid option: --mingw=/storage/build/llvm-mingw-host

I forgot to enable the --mingw option on freebsd, I have now added support for it on the dev branch, you can update to dev branch and try it again.

This is what finally worked (with llvm-mingw as the first compiler in my path):

Yes, if the mingw sdk path is not specified, xmake will automatically detect it from the $PATH path.

xmake f -v -c -a i386 -p mingw --mrc="i686-w64-mingw32-windres"

--mrc="i686-w64-mingw32-windres"

xmake should automatically use it, no need to set this parameter.

https://github.com/xmake-io/xmake/blob/ffc6d4548d70deda6c9a0a8bd8c6d33c969ece32/xmake/toolchains/mingw/xmake.lua#L79

RussellHaley commented 3 years ago
russellh@jailbird /s/g/xmake (dev)> git la
* a16354dba (HEAD -> dev, origin/dev) improve package:has_xx/check_xx
...
<monkey builds xmake>
russellh@jailbird /s/g/xmake (dev)> xmake --version
xmake v2.3.8+202011162255, A cross-platform build utility based on Lua
Copyright (C) 2015-present Ruki Wang, tboox.org, xmake.io
...
russellh@jailbird /s/s/XMakeWinLua (master) [255]> xmake f -v -a i386 -p mingw -c
checking for mingw directory ... /storage/build/llvm-mingw-host
checking for i686-w64-mingw32-g++ ... /storage/build/llvm-mingw-host/bin/i686-w64-mingw32-g++
checking for the shared library linker (sh) ... i686-w64-mingw32-g++
checking for i686-w64-mingw32-ar ... /storage/build/llvm-mingw-host/bin/i686-w64-mingw32-ar
checking for the static library archiver (ar) ... i686-w64-mingw32-ar
configure
{
    theme = default
    buildir = build
    clean = true
    plat = mingw
    bin = /storage/build/llvm-mingw-host/bin
    mingw = /storage/build/llvm-mingw-host
    host = bsd
    ccache = true
    kind = static
    arch = i386
    mode = release
    network = public
    proxy_pac = pac.lua
    cross = i686-w64-mingw32uwp-
}
russellh@jailbird /s/s/XMakeWinLua (master)> xmake
...
error: cannot get program for mrc
russellh@jailbird /s/s/XMakeWinLua (master)> xmake f -v -a i386 -p mingw -c --mrc="i686-w64-mingw32-windres"
checking for mingw directory ... /storage/build/llvm-mingw-host
checking for i686-w64-mingw32-g++ ... /storage/build/llvm-mingw-host/bin/i686-w64-mingw32-g++
checking for the shared library linker (sh) ... i686-w64-mingw32-g++
checking for i686-w64-mingw32-ar ... /storage/build/llvm-mingw-host/bin/i686-w64-mingw32-ar
checking for the static library archiver (ar) ... i686-w64-mingw32-ar
configure
{
    plat = mingw
    cross = i686-w64-mingw32uwp-
    network = public
    bin = /storage/build/llvm-mingw-host/bin
    proxy_pac = pac.lua
    mingw = /storage/build/llvm-mingw-host
    ccache = true
    theme = default
    mode = release
    kind = static
    arch = i386
    host = bsd
    buildir = build
    mrc = i686-w64-mingw32-windres
    clean = true
}
russellh@jailbird /s/s/XMakeWinLua (master)> xmake clean
russellh@jailbird /s/s/XMakeWinLua (master)> xmake
[  5%]: compiling.release resources/lua.rc
...
[100%]: build ok!

Also note that it grabbed an unexpected --cross variant: cross = i686-w64-mingw32uwp-

waruqi commented 3 years ago

oh, I have improved it, you can update to dev version and try it again. xmake f -v -a i386 -p mingw -c

RussellHaley commented 3 years ago

Note that the directory where xmake found the compiler is not in my path. I don't know how it found that one? Did xmake walk out too many directories? There is an "i686-w64-mingw32-g++" available in the path so it's a curious choice.

russellh@jailbird /s/s/XMakeWinLua (master)> echo $PATH
/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin /home/russellh/bin /storage/build/llvm-mingw-host/bin/
russellh@jailbird /s/s/XMakeWinLua (master)> rm -rf .xmake
russellh@jailbird /s/s/XMakeWinLua (master)> xmake global --mingw=""
configure
{
    network = public
    proxy_pac = pac.lua
    theme = default
    mingw =
}
russellh@jailbird /s/s/XMakeWinLua (master)> xmake f -v -a i386 -p mingw -c
checking for mingw directory ...
checking for i686-w64-mingw32-ar ... /storage/build/llvm-mingw-10.0-host/bin/i686-w64-mingw32-ar
checking for the static library archiver (ar) ... i686-w64-mingw32-ar
checking for i686-w64-mingw32-g++ ... /storage/build/llvm-mingw-10.0-host/bin/i686-w64-mingw32-g++
checking for the shared library linker (sh) ... i686-w64-mingw32-g++
configure
{
    plat = mingw
    clean = true
    host = bsd
    mingw =
    kind = static
    proxy_pac = pac.lua
    cross = i686-w64-mingw32-
    theme = default
    mode = release
    network = public
    ccache = true
    buildir = build
    arch = i386
    bin = /storage/build/llvm-mingw-10.0-host/bin
}
russellh@jailbird /s/s/XMakeWinLua (master)> xmake
error: cannot get program for mrc
russellh@jailbird /s/s/XMakeWinLua (master) [255]> which i686-w64-mingw32-g++
/storage/build/llvm-mingw-host/bin//i686-w64-mingw32-g++

I like the global mingw library setting.

russellh@jailbird /s/s/XMakeWinLua (master)> xmake global --mingw="/storage/build/llvm-mingw-host"
configure
{
    network = public
    mingw = /storage/build/llvm-mingw-host
    theme = default
    proxy_pac = pac.lua
}
russellh@jailbird /s/s/XMakeWinLua (master)> xmake f -v -a i386 -p mingw -c --mrc="i686-w64-mingw32-windres"
checking for mingw directory ... /storage/build/llvm-mingw-host
checking for i686-w64-mingw32-ar ... /storage/build/llvm-mingw-host/bin/i686-w64-mingw32-ar
checking for the static library archiver (ar) ... i686-w64-mingw32-ar
checking for i686-w64-mingw32-g++ ... /storage/build/llvm-mingw-host/bin/i686-w64-mingw32-g++
checking for the shared library linker (sh) ... i686-w64-mingw32-g++
configure
{
    mrc = i686-w64-mingw32-windres
    kind = static
    bin = /storage/build/llvm-mingw-host/bin
    network = public
    proxy_pac = pac.lua
    mingw = /storage/build/llvm-mingw-host
    host = bsd
    ccache = true
    plat = mingw
    theme = default
    buildir = build
    clean = true
    mode = release
    arch = i386
    cross = i686-w64-mingw32-
}
russellh@jailbird /s/s/XMakeWinLua (master)> xmake
...
[100%]: build ok!
waruqi commented 3 years ago

maybe is symlink? /storage/build/llvm-mingw-host -> /storage/build/llvm-mingw-10.0-host?

Can you let me see your bin list?


ls -l /storage/build/llvm-mingw-host/bin/
ls -l /storage/build/llvm-mingw-10.0-host/bin/
RussellHaley commented 3 years ago

Hmmm... I renamed llvm-mingw-host to llvm-mingw-10.0-host right before rebuilding for llvm 11?

russellh@jailbird /u/h/russellh> ls -l /storage/build/llvm-mingw-host/bin/
total 398765
lrwxr-xr-x  1 russellh  russellh        14 Nov 11 15:23 aarch64-w64-mingw32-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 aarch64-w64-mingw32-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32-as@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 aarch64-w64-mingw32-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Nov 11 15:23 aarch64-w64-mingw32-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 aarch64-w64-mingw32-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 aarch64-w64-mingw32-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 aarch64-w64-mingw32-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Nov 11 15:23 aarch64-w64-mingw32-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 aarch64-w64-mingw32-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Nov 11 15:23 aarch64-w64-mingw32-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        21 Nov 11 15:25 aarch64-w64-mingw32-widl@ -> i686-w64-mingw32-widl
lrwxr-xr-x  1 russellh  russellh        15 Nov 11 15:23 aarch64-w64-mingw32-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Nov 11 15:23 aarch64-w64-mingw32uwp-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 aarch64-w64-mingw32uwp-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32uwp-as@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32uwp-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32uwp-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32uwp-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32uwp-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32uwp-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32uwp-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 aarch64-w64-mingw32uwp-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32uwp-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 aarch64-w64-mingw32uwp-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Nov 11 15:23 aarch64-w64-mingw32uwp-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 aarch64-w64-mingw32uwp-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 aarch64-w64-mingw32uwp-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 aarch64-w64-mingw32uwp-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Nov 11 15:23 aarch64-w64-mingw32uwp-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 aarch64-w64-mingw32uwp-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Nov 11 15:23 aarch64-w64-mingw32uwp-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        21 Nov 11 15:25 aarch64-w64-mingw32uwp-widl@ -> i686-w64-mingw32-widl
lrwxr-xr-x  1 russellh  russellh        15 Nov 11 15:23 aarch64-w64-mingw32uwp-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Nov 11 15:23 armv7-w64-mingw32-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 armv7-w64-mingw32-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32-as@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 armv7-w64-mingw32-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Nov 11 15:23 armv7-w64-mingw32-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 armv7-w64-mingw32-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 armv7-w64-mingw32-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 armv7-w64-mingw32-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Nov 11 15:23 armv7-w64-mingw32-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 armv7-w64-mingw32-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Nov 11 15:23 armv7-w64-mingw32-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        21 Nov 11 15:25 armv7-w64-mingw32-widl@ -> i686-w64-mingw32-widl
lrwxr-xr-x  1 russellh  russellh        15 Nov 11 15:23 armv7-w64-mingw32-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Nov 11 15:23 armv7-w64-mingw32uwp-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 armv7-w64-mingw32uwp-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32uwp-as@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32uwp-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32uwp-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32uwp-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32uwp-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32uwp-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32uwp-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 armv7-w64-mingw32uwp-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32uwp-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 armv7-w64-mingw32uwp-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Nov 11 15:23 armv7-w64-mingw32uwp-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 armv7-w64-mingw32uwp-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 armv7-w64-mingw32uwp-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 armv7-w64-mingw32uwp-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Nov 11 15:23 armv7-w64-mingw32uwp-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 armv7-w64-mingw32uwp-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Nov 11 15:23 armv7-w64-mingw32uwp-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        21 Nov 11 15:25 armv7-w64-mingw32uwp-widl@ -> i686-w64-mingw32-widl
lrwxr-xr-x  1 russellh  russellh        15 Nov 11 15:23 armv7-w64-mingw32uwp-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh         8 Nov 11 11:45 clang@ -> clang-11
lrwxr-xr-x  1 russellh  russellh         5 Nov 11 15:23 clang++@ -> clang
-rwxr-xr-x  1 russellh  russellh  81513808 Nov 11 15:23 clang-11*
-rwxr-xr-x  1 russellh  russellh  55364880 Nov 11 15:23 clang-check*
lrwxr-xr-x  1 russellh  russellh         5 Nov 11 15:23 clang-cl@ -> clang
lrwxr-xr-x  1 russellh  russellh         5 Nov 11 15:23 clang-cpp@ -> clang
-rwxr-xr-x  1 russellh  russellh  22897840 Nov 11 15:23 clang-extdef-mapping*
-rwxr-xr-x  1 russellh  russellh   2238712 Nov 11 15:23 clang-format*
-rwxr-xr-x  1 russellh  russellh   3131864 Nov 11 15:23 clang-offload-bundler*
-rwxr-xr-x  1 russellh  russellh   2006384 Nov 11 15:23 clang-offload-wrapper*
-rwxr-xr-x  1 russellh  russellh  24175280 Nov 11 15:23 clang-refactor*
-rwxr-xr-x  1 russellh  russellh  23276088 Nov 11 15:23 clang-rename*
-rwxr-xr-x  1 russellh  russellh  23030976 Nov 11 15:23 clang-scan-deps*
-rwxr-xr-x  1 russellh  russellh     15216 Nov 11 15:23 clang-target-wrapper*
-rwxr-xr-x  1 russellh  russellh      2674 Nov 11 15:23 clang-target-wrapper.sh*
-rwxr-xr-x  1 russellh  russellh   4381192 Nov 11 15:23 diagtool*
-rwxr-xr-x  1 russellh  russellh      1155 Nov 11 15:23 dlltool-wrapper.sh*
-rwxr-xr-x  1 russellh  russellh     21426 Nov 10 23:47 git-clang-format*
-rwxr-xr-x  1 russellh  russellh      9974 Nov 10 23:47 hmaptool*
lrwxr-xr-x  1 russellh  russellh        14 Nov 11 15:23 i686-w64-mingw32-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 i686-w64-mingw32-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32-as@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 i686-w64-mingw32-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Nov 11 15:23 i686-w64-mingw32-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 i686-w64-mingw32-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 i686-w64-mingw32-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 i686-w64-mingw32-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Nov 11 15:23 i686-w64-mingw32-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 i686-w64-mingw32-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Nov 11 15:23 i686-w64-mingw32-strip@ -> llvm-strip
-rwxr-xr-x  1 russellh  russellh    437176 Nov 11 15:25 i686-w64-mingw32-widl*
lrwxr-xr-x  1 russellh  russellh        15 Nov 11 15:23 i686-w64-mingw32-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Nov 11 15:23 i686-w64-mingw32uwp-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 i686-w64-mingw32uwp-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32uwp-as@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32uwp-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32uwp-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32uwp-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32uwp-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32uwp-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32uwp-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 i686-w64-mingw32uwp-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32uwp-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 i686-w64-mingw32uwp-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Nov 11 15:23 i686-w64-mingw32uwp-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 i686-w64-mingw32uwp-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 i686-w64-mingw32uwp-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 i686-w64-mingw32uwp-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Nov 11 15:23 i686-w64-mingw32uwp-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 i686-w64-mingw32uwp-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Nov 11 15:23 i686-w64-mingw32uwp-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        21 Nov 11 15:25 i686-w64-mingw32uwp-widl@ -> i686-w64-mingw32-widl
lrwxr-xr-x  1 russellh  russellh        15 Nov 11 15:23 i686-w64-mingw32uwp-windres@ -> windres-wrapper
-rwxr-xr-x  1 russellh  russellh      1263 Nov 11 15:23 ld-wrapper.sh*
lrwxr-xr-x  1 russellh  russellh         3 Nov 11 15:23 ld.lld@ -> lld
lrwxr-xr-x  1 russellh  russellh         3 Nov 11 15:23 ld64.lld@ -> lld
-rwxr-xr-x  1 russellh  russellh  48618040 Nov 11 15:23 lld*
lrwxr-xr-x  1 russellh  russellh         3 Nov 11 15:23 lld-link@ -> lld
-rwxr-xr-x  1 russellh  russellh    349000 Nov 11 15:23 lldb*
-rwxr-xr-x  1 russellh  russellh    135648 Nov 11 15:23 lldb-argdumper*
-rwxr-xr-x  1 russellh  russellh  41175160 Nov 11 15:23 lldb-instr*
-rwxr-xr-x  1 russellh  russellh  16410776 Nov 11 15:23 lldb-server*
-rwxr-xr-x  1 russellh  russellh    313328 Nov 11 15:23 lldb-vscode*
lrwxr-xr-x  1 russellh  russellh        15 Nov 11 15:23 llvm-addr2line@ -> llvm-symbolizer
-rwxr-xr-x  1 russellh  russellh   9259392 Nov 11 15:23 llvm-ar*
-rwxr-xr-x  1 russellh  russellh   3701168 Nov 11 15:23 llvm-cov*
-rwxr-xr-x  1 russellh  russellh   3111832 Nov 11 15:23 llvm-cvtres*
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 llvm-dlltool@ -> llvm-ar
-rwxr-xr-x  1 russellh  russellh   9449808 Nov 11 15:23 llvm-nm*
-rwxr-xr-x  1 russellh  russellh   3663576 Nov 11 15:23 llvm-objcopy*
-rwxr-xr-x  1 russellh  russellh  10918136 Nov 11 15:23 llvm-objdump*
-rwxr-xr-x  1 russellh  russellh   4807720 Nov 11 15:23 llvm-pdbutil*
-rwxr-xr-x  1 russellh  russellh   1590992 Nov 11 15:23 llvm-profdata*
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 llvm-ranlib@ -> llvm-ar
-rwxr-xr-x  1 russellh  russellh    440024 Nov 11 15:23 llvm-rc*
-rwxr-xr-x  1 russellh  russellh   4902272 Nov 11 15:23 llvm-readobj*
-rwxr-xr-x  1 russellh  russellh    366504 Nov 11 15:23 llvm-strings*
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 llvm-strip@ -> llvm-objcopy
-rwxr-xr-x  1 russellh  russellh   4146960 Nov 11 15:23 llvm-symbolizer*
-rwxr-xr-x  1 russellh  russellh     15096 Nov 11 15:23 llvm-wrapper*
-rwxr-xr-x  1 russellh  russellh      1820 Nov 11 15:23 objdump-wrapper.sh*
-rwxr-xr-x  1 russellh  russellh     57935 Nov 10 23:47 scan-build*
-rwxr-xr-x  1 russellh  russellh      4702 Jul 31 23:28 scan-view*
-rwxr-xr-x  1 russellh  russellh       940 Nov 11 15:23 uasm-wrapper.sh*
lrwxr-xr-x  1 russellh  russellh         3 Nov 11 15:23 wasm-ld@ -> lld
-rwxr-xr-x  1 russellh  russellh     23488 Nov 11 15:23 windres-wrapper*
lrwxr-xr-x  1 russellh  russellh        14 Nov 11 15:23 x86_64-w64-mingw32-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 x86_64-w64-mingw32-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32-as@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 x86_64-w64-mingw32-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Nov 11 15:23 x86_64-w64-mingw32-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 x86_64-w64-mingw32-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 x86_64-w64-mingw32-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 x86_64-w64-mingw32-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Nov 11 15:23 x86_64-w64-mingw32-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 x86_64-w64-mingw32-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Nov 11 15:23 x86_64-w64-mingw32-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        21 Nov 11 15:25 x86_64-w64-mingw32-widl@ -> i686-w64-mingw32-widl
lrwxr-xr-x  1 russellh  russellh        15 Nov 11 15:23 x86_64-w64-mingw32-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Nov 11 15:23 x86_64-w64-mingw32uwp-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 x86_64-w64-mingw32uwp-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32uwp-as@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32uwp-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32uwp-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32uwp-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32uwp-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32uwp-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32uwp-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 x86_64-w64-mingw32uwp-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32uwp-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Nov 11 15:23 x86_64-w64-mingw32uwp-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Nov 11 15:23 x86_64-w64-mingw32uwp-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Nov 11 15:23 x86_64-w64-mingw32uwp-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 x86_64-w64-mingw32uwp-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Nov 11 15:23 x86_64-w64-mingw32uwp-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Nov 11 15:23 x86_64-w64-mingw32uwp-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Nov 11 15:23 x86_64-w64-mingw32uwp-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Nov 11 15:23 x86_64-w64-mingw32uwp-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        21 Nov 11 15:25 x86_64-w64-mingw32uwp-widl@ -> i686-w64-mingw32-widl
lrwxr-xr-x  1 russellh  russellh        15 Nov 11 15:23 x86_64-w64-mingw32uwp-windres@ -> windres-wrapper
russellh@jailbird /u/h/russellh> ls -l /storage/build/llvm-mingw-10.0-host/bin/
total 855219
lrwxr-xr-x  1 russellh  russellh        14 Sep 28 22:13 aarch64-w64-mingw32-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 aarch64-w64-mingw32-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 aarch64-w64-mingw32-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Sep 28 22:13 aarch64-w64-mingw32-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 aarch64-w64-mingw32-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 aarch64-w64-mingw32-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 aarch64-w64-mingw32-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Sep 28 22:13 aarch64-w64-mingw32-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 aarch64-w64-mingw32-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Sep 28 22:13 aarch64-w64-mingw32-strip@ -> llvm-strip
-rwxr-xr-x  1 russellh  russellh    437176 Sep 28 22:14 aarch64-w64-mingw32-widl*
lrwxr-xr-x  1 russellh  russellh        15 Sep 28 22:13 aarch64-w64-mingw32-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Sep 28 22:13 aarch64-w64-mingw32uwp-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 aarch64-w64-mingw32uwp-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32uwp-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32uwp-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32uwp-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32uwp-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32uwp-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32uwp-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 aarch64-w64-mingw32uwp-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32uwp-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 aarch64-w64-mingw32uwp-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Sep 28 22:13 aarch64-w64-mingw32uwp-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 aarch64-w64-mingw32uwp-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 aarch64-w64-mingw32uwp-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 aarch64-w64-mingw32uwp-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Sep 28 22:13 aarch64-w64-mingw32uwp-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 aarch64-w64-mingw32uwp-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Sep 28 22:13 aarch64-w64-mingw32uwp-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        15 Sep 28 22:13 aarch64-w64-mingw32uwp-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Sep 28 22:13 armv7-w64-mingw32-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 armv7-w64-mingw32-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 armv7-w64-mingw32-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Sep 28 22:13 armv7-w64-mingw32-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 armv7-w64-mingw32-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 armv7-w64-mingw32-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 armv7-w64-mingw32-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Sep 28 22:13 armv7-w64-mingw32-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 armv7-w64-mingw32-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Sep 28 22:13 armv7-w64-mingw32-strip@ -> llvm-strip
-rwxr-xr-x  1 russellh  russellh    437176 Sep 28 22:14 armv7-w64-mingw32-widl*
lrwxr-xr-x  1 russellh  russellh        15 Sep 28 22:13 armv7-w64-mingw32-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Sep 28 22:13 armv7-w64-mingw32uwp-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 armv7-w64-mingw32uwp-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32uwp-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32uwp-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32uwp-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32uwp-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32uwp-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32uwp-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 armv7-w64-mingw32uwp-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32uwp-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 armv7-w64-mingw32uwp-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Sep 28 22:13 armv7-w64-mingw32uwp-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 armv7-w64-mingw32uwp-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 armv7-w64-mingw32uwp-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 armv7-w64-mingw32uwp-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Sep 28 22:13 armv7-w64-mingw32uwp-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 armv7-w64-mingw32uwp-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Sep 28 22:13 armv7-w64-mingw32uwp-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        15 Sep 28 22:13 armv7-w64-mingw32uwp-windres@ -> windres-wrapper
-rwxr-xr-x  1 russellh  russellh  39948336 Sep 28 22:13 bugpoint*
-rwxr-xr-x  1 russellh  russellh  21722088 Sep 28 22:13 c-index-test*
lrwxr-xr-x  1 russellh  russellh         8 Apr 19  2020 clang@ -> clang-10
lrwxr-xr-x  1 russellh  russellh         5 Sep 28 22:13 clang++@ -> clang
-rwxr-xr-x  1 russellh  russellh  74878712 Sep 28 22:13 clang-10*
-rwxr-xr-x  1 russellh  russellh  50855024 Sep 28 22:13 clang-check*
lrwxr-xr-x  1 russellh  russellh         5 Sep 28 22:13 clang-cl@ -> clang
lrwxr-xr-x  1 russellh  russellh         5 Sep 28 22:13 clang-cpp@ -> clang
-rwxr-xr-x  1 russellh  russellh  20774432 Sep 28 22:13 clang-extdef-mapping*
-rwxr-xr-x  1 russellh  russellh   2161016 Sep 28 22:13 clang-format*
-rwxr-xr-x  1 russellh  russellh  25988160 Sep 28 22:13 clang-import-test*
-rwxr-xr-x  1 russellh  russellh   2987632 Sep 28 22:13 clang-offload-bundler*
-rwxr-xr-x  1 russellh  russellh   1894408 Sep 28 22:13 clang-offload-wrapper*
-rwxr-xr-x  1 russellh  russellh  22034560 Sep 28 22:13 clang-refactor*
-rwxr-xr-x  1 russellh  russellh  21144104 Sep 28 22:13 clang-rename*
-rwxr-xr-x  1 russellh  russellh  20812920 Sep 28 22:13 clang-scan-deps*
-rwxr-xr-x  1 russellh  russellh     15216 Sep 28 22:13 clang-target-wrapper*
-rwxr-xr-x  1 russellh  russellh      2548 Sep 28 22:13 clang-target-wrapper.sh*
-rwxr-xr-x  1 russellh  russellh   4236224 Sep 28 22:13 diagtool*
-rwxr-xr-x  1 russellh  russellh      1155 Sep 28 22:13 dlltool-wrapper.sh*
-rwxr-xr-x  1 russellh  russellh  26298816 Sep 28 22:13 dsymutil*
-rwxr-xr-x  1 russellh  russellh     21271 Jul 31 23:28 git-clang-format*
-rwxr-xr-x  1 russellh  russellh      9974 Jul 31 23:28 hmaptool*
lrwxr-xr-x  1 russellh  russellh        14 Sep 28 22:13 i686-w64-mingw32-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 i686-w64-mingw32-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 i686-w64-mingw32-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Sep 28 22:13 i686-w64-mingw32-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 i686-w64-mingw32-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 i686-w64-mingw32-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 i686-w64-mingw32-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Sep 28 22:13 i686-w64-mingw32-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 i686-w64-mingw32-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Sep 28 22:13 i686-w64-mingw32-strip@ -> llvm-strip
-rwxr-xr-x  1 russellh  russellh    437176 Sep 28 22:14 i686-w64-mingw32-widl*
lrwxr-xr-x  1 russellh  russellh        15 Sep 28 22:13 i686-w64-mingw32-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Sep 28 22:13 i686-w64-mingw32uwp-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 i686-w64-mingw32uwp-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32uwp-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32uwp-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32uwp-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32uwp-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32uwp-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32uwp-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 i686-w64-mingw32uwp-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32uwp-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 i686-w64-mingw32uwp-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Sep 28 22:13 i686-w64-mingw32uwp-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 i686-w64-mingw32uwp-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 i686-w64-mingw32uwp-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 i686-w64-mingw32uwp-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Sep 28 22:13 i686-w64-mingw32uwp-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 i686-w64-mingw32uwp-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Sep 28 22:13 i686-w64-mingw32uwp-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        15 Sep 28 22:13 i686-w64-mingw32uwp-windres@ -> windres-wrapper
-rwxr-xr-x  1 russellh  russellh      1269 Sep 28 22:13 ld-wrapper.sh*
lrwxr-xr-x  1 russellh  russellh         3 Sep 28 22:13 ld.lld@ -> lld
lrwxr-xr-x  1 russellh  russellh         3 Sep 28 22:13 ld64.lld@ -> lld
-rwxr-xr-x  1 russellh  russellh  36137448 Sep 28 22:13 llc*
-rwxr-xr-x  1 russellh  russellh  40006816 Sep 28 22:13 lld*
lrwxr-xr-x  1 russellh  russellh         3 Sep 28 22:13 lld-link@ -> lld
-rwxr-xr-x  1 russellh  russellh    348608 Sep 28 22:13 lldb*
-rwxr-xr-x  1 russellh  russellh    131288 Sep 28 22:13 lldb-argdumper*
-rwxr-xr-x  1 russellh  russellh  37729128 Sep 28 22:13 lldb-instr*
-rwxr-xr-x  1 russellh  russellh  15299584 Sep 28 22:13 lldb-server*
-rwxr-xr-x  1 russellh  russellh    287888 Sep 28 22:13 lldb-vscode*
-rwxr-xr-x  1 russellh  russellh  25799936 Sep 28 22:13 lli*
lrwxr-xr-x  1 russellh  russellh        15 Sep 28 22:13 llvm-addr2line@ -> llvm-symbolizer
-rwxr-xr-x  1 russellh  russellh   9309584 Sep 28 22:13 llvm-ar*
-rwxr-xr-x  1 russellh  russellh   2973808 Sep 28 22:13 llvm-as*
-rwxr-xr-x  1 russellh  russellh    423392 Sep 28 22:13 llvm-bcanalyzer*
-rwxr-xr-x  1 russellh  russellh  26927712 Sep 28 22:13 llvm-c-test*
-rwxr-xr-x  1 russellh  russellh   2608248 Sep 28 22:13 llvm-cat*
-rwxr-xr-x  1 russellh  russellh  12250344 Sep 28 22:13 llvm-cfi-verify*
-rwxr-xr-x  1 russellh  russellh    184624 Sep 28 22:13 llvm-config*
-rwxr-xr-x  1 russellh  russellh   3523928 Sep 28 22:13 llvm-cov*
-rwxr-xr-x  1 russellh  russellh   2979904 Sep 28 22:13 llvm-cvtres*
-rwxr-xr-x  1 russellh  russellh   3003800 Sep 28 22:13 llvm-cxxdump*
-rwxr-xr-x  1 russellh  russellh    361816 Sep 28 22:13 llvm-cxxfilt*
-rwxr-xr-x  1 russellh  russellh    480584 Sep 28 22:13 llvm-cxxmap*
-rwxr-xr-x  1 russellh  russellh   2343472 Sep 28 22:13 llvm-diff*
-rwxr-xr-x  1 russellh  russellh   2154904 Sep 28 22:13 llvm-dis*
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 llvm-dlltool@ -> llvm-ar
-rwxr-xr-x  1 russellh  russellh   7962288 Sep 28 22:13 llvm-dwarfdump*
-rwxr-xr-x  1 russellh  russellh  25491928 Sep 28 22:13 llvm-dwp*
-rwxr-xr-x  1 russellh  russellh   2886000 Sep 28 22:13 llvm-elfabi*
-rwxr-xr-x  1 russellh  russellh  20003984 Sep 28 22:13 llvm-exegesis*
-rwxr-xr-x  1 russellh  russellh   4120144 Sep 28 22:13 llvm-extract*
-rwxr-xr-x  1 russellh  russellh   1654672 Sep 28 22:13 llvm-ifs*
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 llvm-install-name-tool@ -> llvm-objcopy
-rwxr-xr-x  1 russellh  russellh  16559424 Sep 28 22:13 llvm-jitlink*
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 llvm-lib@ -> llvm-ar
-rwxr-xr-x  1 russellh  russellh   3401232 Sep 28 22:13 llvm-link*
-rwxr-xr-x  1 russellh  russellh   2992648 Sep 28 22:13 llvm-lipo*
-rwxr-xr-x  1 russellh  russellh  33478560 Sep 28 22:13 llvm-lto*
-rwxr-xr-x  1 russellh  russellh  35354280 Sep 28 22:13 llvm-lto2*
-rwxr-xr-x  1 russellh  russellh   9834256 Sep 28 22:13 llvm-mc*
-rwxr-xr-x  1 russellh  russellh   7393224 Sep 28 22:13 llvm-mca*
-rwxr-xr-x  1 russellh  russellh   2617912 Sep 28 22:13 llvm-modextract*
-rwxr-xr-x  1 russellh  russellh    330272 Sep 28 22:13 llvm-mt*
-rwxr-xr-x  1 russellh  russellh   9495680 Sep 28 22:13 llvm-nm*
-rwxr-xr-x  1 russellh  russellh   3498504 Sep 28 22:13 llvm-objcopy*
-rwxr-xr-x  1 russellh  russellh  10886928 Sep 28 22:13 llvm-objdump*
-rwxr-xr-x  1 russellh  russellh    493736 Sep 28 22:13 llvm-opt-report*
-rwxr-xr-x  1 russellh  russellh   4692648 Sep 28 22:13 llvm-pdbutil*
-rwxr-xr-x  1 russellh  russellh   1504272 Sep 28 22:13 llvm-profdata*
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 llvm-ranlib@ -> llvm-ar
-rwxr-xr-x  1 russellh  russellh    443856 Sep 28 22:13 llvm-rc*
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 llvm-readelf@ -> llvm-readobj
-rwxr-xr-x  1 russellh  russellh   4733432 Sep 28 22:13 llvm-readobj*
-rwxr-xr-x  1 russellh  russellh   2656432 Sep 28 22:13 llvm-reduce*
-rwxr-xr-x  1 russellh  russellh   8391944 Sep 28 22:13 llvm-rtdyld*
-rwxr-xr-x  1 russellh  russellh   3025360 Sep 28 22:13 llvm-size*
-rwxr-xr-x  1 russellh  russellh   3093232 Sep 28 22:13 llvm-split*
-rwxr-xr-x  1 russellh  russellh   3820776 Sep 28 22:13 llvm-stress*
-rwxr-xr-x  1 russellh  russellh    362144 Sep 28 22:13 llvm-strings*
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 llvm-strip@ -> llvm-objcopy
-rwxr-xr-x  1 russellh  russellh   3556632 Sep 28 22:13 llvm-symbolizer*
-rwxr-xr-x  1 russellh  russellh   3225216 Sep 28 22:13 llvm-tblgen*
-rwxr-xr-x  1 russellh  russellh    428752 Sep 28 22:13 llvm-undname*
-rwxr-xr-x  1 russellh  russellh     15096 Sep 28 22:13 llvm-wrapper*
-rwxr-xr-x  1 russellh  russellh   4094600 Sep 28 22:13 llvm-xray*
-rw-r--r--  1 russellh  russellh     12165 Apr  4  2009 o2dll.sh
-rwxr-xr-x  1 russellh  russellh   4695720 Sep 28 22:13 obj2yaml*
-rwxr-xr-x  1 russellh  russellh      1820 Sep 28 22:13 objdump-wrapper.sh*
-rwxr-xr-x  1 russellh  russellh  40928136 Sep 28 22:13 opt*
-rwxr-xr-x  1 russellh  russellh  10413744 Sep 28 22:13 sancov*
-rwxr-xr-x  1 russellh  russellh   3494096 Sep 28 22:13 sanstats*
-rwxr-xr-x  1 russellh  russellh     56477 Jul 31 23:28 scan-build*
-rwxr-xr-x  1 russellh  russellh      4702 Jul 31 23:28 scan-view*
-rwxr-xr-x  1 russellh  russellh   3178784 Sep 28 22:13 verify-uselistorder*
lrwxr-xr-x  1 russellh  russellh         3 Sep 28 22:13 wasm-ld@ -> lld
-rwxr-xr-x  1 russellh  russellh     23488 Sep 28 22:13 windres-wrapper*
lrwxr-xr-x  1 russellh  russellh        14 Sep 28 22:13 x86_64-w64-mingw32-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 x86_64-w64-mingw32-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 x86_64-w64-mingw32-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Sep 28 22:13 x86_64-w64-mingw32-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 x86_64-w64-mingw32-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 x86_64-w64-mingw32-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 x86_64-w64-mingw32-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Sep 28 22:13 x86_64-w64-mingw32-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 x86_64-w64-mingw32-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Sep 28 22:13 x86_64-w64-mingw32-strip@ -> llvm-strip
-rwxr-xr-x  1 russellh  russellh    437176 Sep 28 22:14 x86_64-w64-mingw32-widl*
lrwxr-xr-x  1 russellh  russellh        15 Sep 28 22:13 x86_64-w64-mingw32-windres@ -> windres-wrapper
lrwxr-xr-x  1 russellh  russellh        14 Sep 28 22:13 x86_64-w64-mingw32uwp-addr2line@ -> llvm-addr2line
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 x86_64-w64-mingw32uwp-ar@ -> llvm-ar
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32uwp-c++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32uwp-c11@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32uwp-c99@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32uwp-cc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32uwp-clang@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32uwp-clang++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 x86_64-w64-mingw32uwp-dlltool@ -> dlltool-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32uwp-g++@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        23 Sep 28 22:13 x86_64-w64-mingw32uwp-gcc@ -> clang-target-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        13 Sep 28 22:13 x86_64-w64-mingw32uwp-ld@ -> ld-wrapper.sh
lrwxr-xr-x  1 russellh  russellh         7 Sep 28 22:13 x86_64-w64-mingw32uwp-nm@ -> llvm-nm
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 x86_64-w64-mingw32uwp-objcopy@ -> llvm-objcopy
lrwxr-xr-x  1 russellh  russellh        18 Sep 28 22:13 x86_64-w64-mingw32uwp-objdump@ -> objdump-wrapper.sh
lrwxr-xr-x  1 russellh  russellh        11 Sep 28 22:13 x86_64-w64-mingw32uwp-ranlib@ -> llvm-ranlib
lrwxr-xr-x  1 russellh  russellh        12 Sep 28 22:13 x86_64-w64-mingw32uwp-strings@ -> llvm-strings
lrwxr-xr-x  1 russellh  russellh        10 Sep 28 22:13 x86_64-w64-mingw32uwp-strip@ -> llvm-strip
lrwxr-xr-x  1 russellh  russellh        15 Sep 28 22:13 x86_64-w64-mingw32uwp-windres@ -> windres-wrapper
-rwxr-xr-x  1 russellh  russellh   1669856 Sep 28 22:13 yaml2obj*
russellh@jailbird /u/h/russellh> i686-w64-mingw32-g++ --version
clang version 11.0.0 (https://github.com/llvm/llvm-project.git 176249bd6732a8044d457092ed932768724a6f06)
Target: i686-w64-windows-gnu
Thread model: posix
InstalledDir: /storage/build/llvm-mingw-host/bin
russellh@jailbird /u/h/russellh> /storage/build/llvm-mingw-10.0-host/bin/i686-w64-mingw32-g++ --version
clang version 10.0.0 (https://github.com/llvm/llvm-project.git d32170dbd5b0d54436537b6b75beaf44324e0c28)
Target: i686-w64-windows-gnu
Thread model: posix
InstalledDir: /storage/build/llvm-mingw-10.0-host/bin
russellh@jailbird /u/h/russellh>
waruqi commented 3 years ago

oh, now there are two strange problems.

  1. /storage/build/llvm-mingw-10.0-host does not exist in your $PATH, but xmake found it.
  2. The i686-w64-mingw32-windres program is not found by default.

I added some debug info to the test branch, you can update to test branch and run the following commands. I want to see the debug output info.

xmake update -s github:xmake-io/xmake#test
xmake g -c
xmake f -a i386 -p mingw -c -vD
xmake -r -vD
RussellHaley commented 3 years ago

Okay, well here is problem three. This one is specific to FreeBSD. FreeBSD comes with unzip as a native tool, but the -v flag does not give the version: it is only for verbose mode.

russellh@jailbird /s/g/xmake (dev)> git checkout test
M       core/src/lua-cjson/lua-cjson
Switched to branch 'test'
Your branch is up to date with 'origin/test'.
russellh@jailbird /s/g/xmake (test)> xmake update -s github:xmake-io/xmake#test
update version test from https://github.com/xmake-io/xmake.git ..
error: run `sh /usr/local/share/xmake/scripts/update-script.sh /usr/local/share/xmake /tmp/.xmake1001/201118/xmakesrc/test/xmake` failed, may permission denied!
failed
russellh@jailbird /s/g/xmake (test)> su
root@jailbird:/storage/git/xmake # xmake update -s github:xmake-io/xmake#test
error: unzip or 7zip not found! we need install it first
root@jailbird:/storage/git/xmake # unzip
Usage: unzip [-aCcfjLlnopqtuvyZ1] [-d dir] [-x pattern] zipfile

As per the man page:

     -v          List verbosely, rather than extract, the contents of the
                 zipfile.  This differs from -l by using the long listing.
                 Note that most of the data is currently fake and does not
                 reflect the content of the archive.

I ran into this unzip issue with LuaRocks. The solution in LuaRocks was to assume that unzip exists on FreeBSD (which it does by default).

UNZIP(1)                FreeBSD General Commands Manual               UNZIP(1)
...
HISTORY
     The unzip utility appeared in FreeBSD 8.0.
russellh@jailbird /s/g/xmake (test)> which unzip
/usr/bin/unzip

hmmm... I'm having trouble getting the path set in root. Not sure the best way to tackle this tonight (I'm tired). I have added your public key to my server. I'll send you the connection info in an email. Feel free to poke around yourself (or not, just an offer).

waruqi commented 3 years ago

Ok, I forgot that you are using freebsd, maybe you can only pull the test branch source code to try it.

cd xmake
git fetch origin test:test
git checkout test
export XMAKE_PROGRAM_DIR=`pwd`/xmake
xmake g -c
xmake f -a i386 -p mingw -c -vD
xmake -r -vD

Of course, if you provide me with a ssh connection, I am also happy to login to debug it.

waruqi commented 3 years ago

I have fixed it on dev branch, xmake can successfully find windres now. you can fetch the dev source and try it again.

$ xmake g --mingw=/storage/build/llvm-mingw-host/
$ xmake f -p mingw -c -a i386
$ xmake -r 
checking for mingw directory ... /storage/build/llvm-mingw-host/
[ 40%]: compiling.release src/test.rc
[ 60%]: compiling.release src/main.cpp
[ 80%]: linking.release test.exe
[100%]: build ok!
$ xmake g -c
$ xmake f -p mingw -c --mingw=/storage/build/llvm-mingw-host/
$ xmake -r      
checking for architecture ... x86_64
checking for mingw directory ... /storage/build/llvm-mingw-host/
[ 40%]: compiling.release src/test.rc
[ 60%]: compiling.release src/main.cpp
[ 80%]: linking.release test.exe
[100%]: build ok!

This seems to be a bug of llvm-mingw/x86_64-w64-mingw32-windres. When I run the x86_64-w64-mingw32-windres --version command, it always returns non-zero exitcode.

$ /storage/build/llvm-mingw-host/bin/x86_64-w64-mingw32-windres --version || echo "fails"
version: LLVM windres (GNU windres compatible) 0.1
fails <--  non-zero 

This causes xmake to always fail to detect windres commands, but GNU windres does not have this problem.

I have improved find_windres to support llvm-mingw/windres detection. It works now on your freebsd.

RussellHaley commented 3 years ago
static void print_version(void) {
    printf(
"version: LLVM windres (GNU windres compatible) 0.1\n"
    );
    exit(1);
}

Seems a curious choice? I'll ask about it.

Do you have time to do something about unzip on FreeBSD? It would be good if it could skip the version check (that fails as noted above) and default to using the built in unzip. If preferred, I can put it in a feature request? There is no priority on it.

Thank you again for all your diligence. I greatly appreciate it.

waruqi commented 3 years ago

Do you have time to do something about unzip on FreeBSD? It would be good if it could skip the version check (that fails as noted above) and default to using the built in unzip. If preferred, I can put it in a feature request? There is no priority on it.

Currently xmake does not consider the built-in unzip, which will affect the package size.

In addition, the unzip not found problem that you encountered before is only caused by root. Xmake does not enable root execution by default, so unzip is not found. You can manually pass --root or set XMAKE_ROOT=y envs to enable root to avoid this problem.

# xmake l --root lib.detect.find_tool unzip
{ 
  program = "/usr/local/bin/unzip",
  name = "unzip" 
}

russellh@jailbird /s/g/xmake (test)> su root@jailbird:/storage/git/xmake # xmake update -s github:xmake-io/xmake#test error: unzip or 7zip not found! we need install it first root@jailbird:/storage/git/xmake # unzip Usage: unzip [-aCcfjLlnopqtuvyZ1] [-d dir] [-x pattern] zipfile

waruqi commented 3 years ago

russellh@jailbird /s/g/xmake (test)> xmake update -s github:xmake-io/xmake#test update version test from https://github.com/xmake-io/xmake.git .. error: run sh /usr/local/share/xmake/scripts/update-script.sh /usr/local/share/xmake /tmp/.xmake1001/201118/xmakesrc/test/xmake failed, may permission denied!

This is another question. I forgot that you installed xmake via the make install command, and the xmake update command currently only supports xmake installed via the get.sh script, which will install xmake to ~/.local/bin/xmake.

So you can only pull xmake source code to update it yourself, instead of executing xmake update

RussellHaley commented 3 years ago

Thanks Ruki!

RussellHaley commented 3 years ago

Hi Ruki,

I spoke with Martin at llvm-mingw and he has agreed to accept a patch for the windres-wrapper.

https://github.com/mstorsjo/llvm-mingw/pull/173

waruqi commented 3 years ago

Hi Ruki,

I spoke with Martin at llvm-mingw and he has agreed to accept a patch for the windres-wrapper.

mstorsjo/llvm-mingw#173

Oh, It's great! :+1:

But I use windres to try to compile an empty rc file to better detect it. After compiling rc successfully, it will return zero code normally. I works fine now.

RussellHaley commented 3 years ago

Of course you did. You're amazing! Regards.