New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LLVM Compiler Toolchain Visual Studio Extension #2665

Closed
sylveon opened this Issue Sep 29, 2018 · 11 comments

Comments

Projects
None yet
3 participants
@sylveon

sylveon commented Sep 29, 2018

Clang 7 has been installed in the workers, and the installer for it does not installs the LLVM-vs2014 toolset for VS anymore. The now recommended way of building with Clang on Visual Studio is this extension, which adds a llvm toolset. Currently, projects using the llvm toolset will just fail without this addon installed. Installing the addon in the workers will allow to use CI for those projects.

@CFSworks

This comment has been minimized.

CFSworks commented Sep 29, 2018

Just ran up against this brick wall too. Note however that the extension is for VS2017, so it cannot be installed in the VS2013 or VS2015 images.

@FeodorFitsner FeodorFitsner added this to the next-images-update milestone Sep 30, 2018

@FeodorFitsner

This comment has been minimized.

Member

FeodorFitsner commented Sep 30, 2018

Will deploy the extension early next week.

@CFSworks

This comment has been minimized.

CFSworks commented Sep 30, 2018

That's good for VS2017 - however, my project is explicitly VS2015. Do I have to give up on Clang entirely now that the toolchain has been removed from that image?

@FeodorFitsner

This comment has been minimized.

Member

FeodorFitsner commented Sep 30, 2018

I'm not sure if 6th and 7th LLVMs can be installed side-by-side as each new installation is asking about removing previous one. Will look into that.

Moving to VS 2017 is an option too.

@CFSworks

This comment has been minimized.

CFSworks commented Sep 30, 2018

My project must target XP, which VS 2017 won't support - sadly it's not an option. :(

It might be better to see if the LLVM folks have any ideas. There's no reason it can't integrate, they just don't provide out-of-the-box support for VS2015 in LLVM 7.0.0.

@FeodorFitsner

This comment has been minimized.

Member

FeodorFitsner commented Sep 30, 2018

Would you help opening the issue with them?

@sylveon

This comment has been minimized.

sylveon commented Sep 30, 2018

Alternatively, it's possible to copy the LLVM-vs2014 and LLVM-vs2014xp target files from Clang 6 to preserve them while still keeping Clang 7 installed.

Eg backup them somewhere, upgrade to 7, put them back in place.

@CFSworks

This comment has been minimized.

CFSworks commented Sep 30, 2018

@sylveon That's a good idea actually; I'm wondering about doing that myself.

The LLVM <=6 toolset files work by adding msbuild-bin to the binary search path, where Clang is copied as cl.exe - so it'd be necessary to copy the LLVM 7 binaries into such a directory. LLVM 7's toolset file, on the other hand, actually changes the path to cl/lld to LLVM's version.

The only problem is that this is a nonstandard workaround, so if the AppVeyor images were to include this, they wouldn't be shipping "vanilla" LLVM anymore (i.e. the build process working on AppVeyor no longer indicates that it would work on "vanilla" LLVM because it'd be necessary to replicate AppVeyor's workaround).

Really I'm just kind of surprised at this change in the first place. As recently as this March LLVM was supporting versions as old as MSVC 2010 - I wouldn't have been surprised if they dropped that and 2012, since I don't know if anybody uses those anymore. But MSVC 2015 is still very widely-used (case in point, AppVeyor still bothers to maintain images for it) and I can't find any mention of this anywhere. I'm thinking an issue on the LLVM bug tracker might be in order.

@CFSworks

This comment has been minimized.

CFSworks commented Sep 30, 2018

An update: It seems like at least one LLVM reviewer confirms that the VSIX does work for VS2015.

@FeodorFitsner I'll be seeing what I can do about installing the VSIX in my local VS2015 environment - if it's workable, could you do this for the AppVeyor VS2015 images as well?

I still don't have any good ideas for VS2013, though.

@FeodorFitsner

This comment has been minimized.

Member

FeodorFitsner commented Sep 30, 2018

Sure, let me know about your findings.

@CFSworks

This comment has been minimized.

CFSworks commented Sep 30, 2018

I only use the VS2015 build tools in my local environment. But for what it's worth, I was able to extract the .vsix manually and my build pipelines work without any manual intervention (besides using llvm instead of LLVM-vs2014 of course)

I have an answer on StackOverflow here detailing where I extracted the vsix.

Assuming the AppVeyor images use the full VS2015, it should be a matter of installing the vsix just as you would on VS2017. I still have no ideas about VS2013 - that one might require the manual method.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment