Proper way to build LLVM+Clang

Hello,

Are you trying to build LLVM from GitHub source (https://github.com/llvm/llvm-project)?
The README.md describes the build steps pretty clearly.

On Linux, I use:
$ cd llvm-project
$ mkdir build
$ cd build
$ cmake “Unix Makefiles” -DLLVM_ENABLE_PROJECTS=clang …/llvm
$ make

Hope that helps!

Not so much actually, I am seeing build error for libc on MacOS Mojave

CMake Error at /Users/aditya/Code/github/llvm_src/llvm-project/libc/CMakeLists.txt:72 (include):

include could not find load file:

/Users/aditya/Code/github/llvm_src/llvm-project/libc/config/darwin/x86_64/entrypoints.txt

CMake Error at /Users/aditya/Code/github/llvm_src/llvm-project/libc/CMakeLists.txt:73 (include):

include could not find load file:

/Users/aditya/Code/github/llvm_src/llvm-project/libc/config/darwin/x86_64/headers.txt

– Skipping libc entrypoint libc.src.assert.__assert_fail.

– Skipping libc entrypoint libc.src.errno.__errno_location.

– Skipping libc entrypoint libc.src.math.cosf.

– Skipping libc entrypoint libc.src.math.sinf.

– Skipping libc entrypoint libc.src.math.sincosf.

On Ubuntu 20.04 I have both those files in the directory

~/llvm-project/libc/config/linux/x86_64

Will the following command work in the directory ~/llvm-project/libc?

find . -name headers.txt

Neil Nelson

There are only files for linux (x86_64 and aarch64) there. Don’t know why there are no files for darwin. May be a libc developer care to answer?

Very good.

In the CMakeLists.txt file showing the error is the line

set(LIBC_TARGET_OS ${CMAKE_SYSTEM_NAME})

where below that line LIBC_TARGET_OS is put into the directory string giving the error such that CMAKE_SYSTEM_NAME is set to ‘darwin’ (note the lower case change in the code) by most likely a calling makefile.

in the llvm-project directory the following line

grep -r CMAKE_SYSTEM_NAME *

gives close to 200 lines mostly in makefiles. Looking down that list it is interesting to see that the sub-projects to llvm-project have a variety of ways to use the CMAKE_SYSTEM_NAME string. It is not regular in the sub-projects. Some distinctions are by OS and others by hardware, x86_64 and aarch64, with aarch64 identifying ARM processors. But apparently you have an x86_64 processor.

We do not have the darwin directory for the files but we have files with the same name in what would be a closely related directory and that those two related directories are based on processor type. We might try an experiment, work an hypothesis. Let’s create the needed darwin directory and copy the two files in from the x86_64 directory and then run the build sequence and see what happens.

If the build fails or the resulting build does not run as expected, we know that the two files on hand from the linux directory will not work and someone will need to construct those files and make them available, which may take a while.

But if the build is successful, then we have identified an easily correctable bug in the makefiles and you are making headway.

Neil Nelson

Thanks for providing build error, I haven’t seen this one but, perhaps someone else may be able to help resolve this.

A couple of things you may want to check -

Cheers!

Not so much actually, I am seeing build error for libc on MacOS Mojave

CMake Error at /Users/aditya/Code/github/llvm_src/llvm-project/libc/CMakeLists.txt:72 (include):

include could not find load file:

/Users/aditya/Code/github/llvm_src/llvm-project/libc/config/darwin/x86_64/entrypoints.txt

CMake Error at /Users/aditya/Code/github/llvm_src/llvm-project/libc/CMakeLists.txt:73 (include):

include could not find load file:

/Users/aditya/Code/github/llvm_src/llvm-project/libc/config/darwin/x86_64/headers.txt

– Skipping libc entrypoint libc.src.assert.__assert_fail.

– Skipping libc entrypoint libc.src.errno.__errno_location.

– Skipping libc entrypoint libc.src.math.cosf.

– Skipping libc entrypoint libc.src.math.sinf.

– Skipping libc entrypoint libc.src.math.sincosf.