https://github.com/DavidSpickett updated https://github.com/llvm/llvm-project/pull/111369
>From a2dd2330359ecd3c04e01b6f9121481e6784014a Mon Sep 17 00:00:00 2001 From: David Spickett <david.spick...@linaro.org> Date: Mon, 7 Oct 2024 12:29:41 +0000 Subject: [PATCH 1/2] [libclc] Update build instructions in readme The configure Python script was removed by d6e0e6d255a7d54a3873b7a5d048eee00ef6bb6d / https://reviews.llvm.org/D69966. The readme was never updated with the cmake way to do it. I couldn't find any dedicated buildbots for this so I'm making an educated guess. This is what built locally for me. --- libclc/README.TXT | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/libclc/README.TXT b/libclc/README.TXT index 57b5242b9bbecb..f64f0e05a742f2 100644 --- a/libclc/README.TXT +++ b/libclc/README.TXT @@ -23,29 +23,41 @@ generic implementations of most library requirements, allowing the target to override the generic implementation at the granularity of individual functions. -libclc currently only supports the PTX target, but support for more +libclc currently supports NVPTX, AMDGPU and SPIRV targets, but support for more targets is welcome. -Compiling and installing with Make ----------------------------------- +Compiling and installing +------------------------ -$ ./configure.py --with-llvm-config=/path/to/llvm-config && make -$ make install +(in the following instructions you can use make or ninja) -Note you can use the DESTDIR Makefile variable to do staged installs. +For an in-tree build, Clang must also be built at the same time: -$ make install DESTDIR=/path/for/staged/install +$ cmake <path-to>/llvm-project/llvm/CMakeLists.txt -DLLVM_ENABLE_PROJECTS="libclc;clang" \ + -DCMAKE_BUILD_TYPE=Release -G Ninja +$ ninja -Compiling and installing with Ninja ------------------------------------ +Then install: -$ ./configure.py -g ninja --with-llvm-config=/path/to/llvm-config && ninja $ ninja install -Note you can use the DESTDIR environment variable to do staged installs. +Note you can use the DESTDIR Makefile variable to do staged installs. $ DESTDIR=/path/for/staged/install ninja install +To build against an existing LLVM build or install: + +$ cmake <path-to>/llvm-project/libclc/CMakeLists.txt -DCMAKE_BUILD_TYPE=Release \ + -G Ninja -DLLVM_DIR=$(<path-to>/llvm-config --cmakedir) +$ ninja + +Then install as before. + +In both cases, the LLVM used must include the targets you want libclc support for. +AMDGPU and NVPTX are enabled in LLVM by default, but SPIRV must be enabled by +passing `-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=SPIRV` to CMake when configuring +LLVM. + Website ------- >From 1f30d315dd1da6569976049bb984d429efa5e86c Mon Sep 17 00:00:00 2001 From: David Spickett <david.spick...@linaro.org> Date: Tue, 8 Oct 2024 16:02:21 +0100 Subject: [PATCH 2/2] Address review comments --- libclc/README.TXT | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/libclc/README.TXT b/libclc/README.TXT index f64f0e05a742f2..06b00c08e708c1 100644 --- a/libclc/README.TXT +++ b/libclc/README.TXT @@ -23,8 +23,8 @@ generic implementations of most library requirements, allowing the target to override the generic implementation at the granularity of individual functions. -libclc currently supports NVPTX, AMDGPU and SPIRV targets, but support for more -targets is welcome. +libclc currently supports PTX, AMDGPU, SPIRV and CLSPV targets, but support for +more targets is welcome. Compiling and installing ------------------------ @@ -45,7 +45,7 @@ Note you can use the DESTDIR Makefile variable to do staged installs. $ DESTDIR=/path/for/staged/install ninja install -To build against an existing LLVM build or install: +To build out of tree, or in other words, against an existing LLVM build or install: $ cmake <path-to>/llvm-project/libclc/CMakeLists.txt -DCMAKE_BUILD_TYPE=Release \ -G Ninja -DLLVM_DIR=$(<path-to>/llvm-config --cmakedir) @@ -53,10 +53,15 @@ $ ninja Then install as before. -In both cases, the LLVM used must include the targets you want libclc support for. -AMDGPU and NVPTX are enabled in LLVM by default, but SPIRV must be enabled by -passing `-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=SPIRV` to CMake when configuring -LLVM. +In both cases this will include all supported targets. You can choose which +targets are enabled by passing `-DLIBCLC_TARGETS_TO_BUILD` to CMake. The default +is "all". + +In both cases, the LLVM used must include the targets you want libclc support for +(AMDGPU and NVPTX are enabled in LLVM by default). Apart from SPIRV where you do +not need an LLVM target but you do need the llvm-spirv tool +(https://github.com/KhronosGroup/SPIRV-LLVM-Translator) available. Either build +this in-tree, or place it in the directory pointed to by `LLVM_TOOLS_BINARY_DIR`. Website ------- _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits