This is the bare minimum to get it to build.
Things that work:
- It's able to make a build and run the test suite with just freestyle_stroke_material.blend failing (but that also fails with regular msvc)
- It's faster than msvc (bmw27 on my polluted dev box, msvc 10:28.21 vs clang 09:55.08)
Things that are broken:
- BF_alembic + BF_openvdb
- Just boost unhappy about some things, I can either patch this in our boost version or we can update to a newer boost (I think this got fixed in 1.62) but i can imagine the other platforms won't be thrilled about a boost update.
- OSL
has some kind of linking error, incompatibilities due to __cplusplus being set to '199711L' for the pre-compiled libs and clang has a higher value, causing a conflict between std::shared_ptr and boost::shared_ptr, I can work around this in the osl headers.
Bullethas some sse related issues, couldn't get this building easily, but didn't look too hard either.
- Cycles
the avx kernel has a stray andn instruction ( from the bmi instruction set , available on haswell and up) even adding -no-bmi doesn't seem to change things) causing issues in my ivy-bridge. See T55054 for details.fixed, but the perf regression for msvc remains, but thats better handled in T55054.
So many warnings, will have to do check the flags that are being passed.down from > 10.000 to a couple of hundreds that seem like genuine warns to me.
things that'll probably be misunderstood:
- This doesn't free us from msvc. Clang on windows uses the msvc headers+libs+c runtime and is faking the ms compiler by supplying it's own stub for cl.exe,
I tested with the following setup, others may work, but that's untested for now.
- msvc 2017
- llvm/clang 6.0.0
- llvm-vs2017-integration [1]
I played a little with asan, it seems to work for /MT but not /MTd, there's some linker issues with it and it doesn't resolve addresses to line numbers yet, but i hope to get this working. asan works, have added an 'asan' configuration in the visual studio solution so it's as easy as changing from debug->release, however for line number information you need a copy of llvm-symbolizer which for some reason doesn't ship with the official llvm distro.
