xref: /aosp_15_r20/external/angle/third_party/clspv/gn/README.md (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# CLSPV GN Build
2*8975f5c5SAndroid Build Coastguard Worker
3*8975f5c5SAndroid Build Coastguard WorkerThe clspv official build system is CMake and as such have no GN build infra. The
4*8975f5c5SAndroid Build Coastguard Workerfiles in here enable building `clspv` using the ANGLE GN build infra.
5*8975f5c5SAndroid Build Coastguard Worker
6*8975f5c5SAndroid Build Coastguard WorkerThe top-level build file is `BUILD.gn` with all the auxiliary build files
7*8975f5c5SAndroid Build Coastguard Workerlocated in the `gn` folder. The `clspv` build is heavily dependent on the LLVM
8*8975f5c5SAndroid Build Coastguard Workerbuild. The LLVM settings and targets needed for `clspv` are captured in the
9*8975f5c5SAndroid Build Coastguard Worker`gn/llvm` location. These utilize the LLVM experimental GN build infra [1].
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard Worker## Build Instructions
12*8975f5c5SAndroid Build Coastguard Worker
13*8975f5c5SAndroid Build Coastguard WorkerThe GN build in here is setup to function within the ANGLE GN build
14*8975f5c5SAndroid Build Coastguard Workerinfrastructure and as such follows the same setup as of ANGLE project. Please
15*8975f5c5SAndroid Build Coastguard Workerrefer top level ANGLE readme file.
16*8975f5c5SAndroid Build Coastguard Worker
17*8975f5c5SAndroid Build Coastguard WorkerAdd the following to `args.gn` file
18*8975f5c5SAndroid Build Coastguard Worker
19*8975f5c5SAndroid Build Coastguard Worker```
20*8975f5c5SAndroid Build Coastguard Workerangle_enable_cl = true
21*8975f5c5SAndroid Build Coastguard Worker```
22*8975f5c5SAndroid Build Coastguard Worker
23*8975f5c5SAndroid Build Coastguard WorkerNote: Only the `linux/x86{,_64}` and `android/arm{64}` combination of `os/cpu`
24*8975f5c5SAndroid Build Coastguard Workerare setup for now.
25*8975f5c5SAndroid Build Coastguard Worker
26*8975f5c5SAndroid Build Coastguard Worker## Updating the LLVM build targets
27*8975f5c5SAndroid Build Coastguard Worker
28*8975f5c5SAndroid Build Coastguard WorkerThe LLVM targets required for clspv are housed in the `gn/llvm` location. In the
29*8975f5c5SAndroid Build Coastguard Workercase of source files getting added/removed in the upstream LLVM, the relavant
30*8975f5c5SAndroid Build Coastguard Workertarget sources needs to be modified in `gn/llvm/sources/BUILD.gn`.
31*8975f5c5SAndroid Build Coastguard Worker
32*8975f5c5SAndroid Build Coastguard WorkerThe LLVM targets are named in the format `clspv_<llvm/clang>_<folder path
33*8975f5c5SAndroid Build Coastguard Workerslug with _>`.
34*8975f5c5SAndroid Build Coastguard Worker
35*8975f5c5SAndroid Build Coastguard WorkerFor instance `clspv_llvm_lib_frontend_offloading` refers to the LLVM
36*8975f5c5SAndroid Build Coastguard Workertarget in `third_party/llvm/src/llvm/lib/Frontend/Offloading`. The `sources`
37*8975f5c5SAndroid Build Coastguard Workerlist in from the corresponding LLVM `BUILD.gn` file, here
38*8975f5c5SAndroid Build Coastguard Worker`third_party/llvm/src/llvm/utils/gn/secondary/llvm/lib/Frontend/Offloading` can
39*8975f5c5SAndroid Build Coastguard Workerbe copied with prefix path "//$clspv_llvm_dir/llvm/lib/Frontend/Offloading/"
40*8975f5c5SAndroid Build Coastguard Workerapplied to it.
41*8975f5c5SAndroid Build Coastguard Worker
42*8975f5c5SAndroid Build Coastguard Worker## References
43*8975f5c5SAndroid Build Coastguard Worker
44*8975f5c5SAndroid Build Coastguard Worker[1]: https://github.com/llvm/llvm-project/blob/main/llvm/utils/gn/README.rst
45