License question regarding use of LLVM

Hello Sir/Madam,

I am unclear about the use of LLVM with regards to what I need to do to obey the Apache 2.0 license listed on the LLVM website. Here are the questions I have listed out for your convenience:

  1. If I’m writing code that I compile using Clang as my compiler of choice, will that require me to include a license file that includes the copyright details mentioned on LLVM’s website?

  2. If I’m working on a programming language of my own that may later use LLVM’s api or tools to generate LLVM IR code, will I also need to include a license file that details the copyright details mentioned in question 1?

  3. Since LLVM is open source, does that imply that the code I write (that doesn’t modify LLVM source code in any way instead uses LLVM tools) is also open source under any license of my choosing, or is it bound by the Apache 2.0 license as well?

  4. If I’m simply planning on using LLVM’s tools (Clang and LLVM IR generation) to implement a compiler/interpreter for my own programming language, would the same scenarios in questions 1-3 apply.

Forgive me for the many questions, I’m certainly no lawyer and would like to know the proper methods to handle licenses for open source software. I’m a university student majoring in Computer Engineering and most of my focus is on the engineering end for creating things rather than legal IP licensing, etc. I would appreciate any help I can receive.

  • Muhammad

I understand that the Apache 2.0 license is about code on which the license is applied and not on code that may use, for example, in this instance the LLVM compiler to compile that separate code.

If you were to include licensed code within your own code, you would then need to account for that included code by giving the Apache license. You may be able to license the non-Apache code separately but mixing code this way can make it hard to see how the code is separately licensed. Separating code through libraries and include files would be recommended.

I do not think APIs, the interfaces, can be licensed. The use of licensed tools would not require your code using those tools to have the same license.

Neil Nelson