LINUX.ORG.RU

непонятность при сборке libclc. странная ошибка

 ,


0

1

Не собирается libckc:

-- The CXX compiler identification is GNU 12.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
LLVM version: 15.0.6
LLVM system libs: 
LLVM libs: -lLLVM-15
LLVM libdir: /usr/lib
LLVM bindir: /usr/bin
LLVM ld flags: -L/usr/lib
LLVM cxx flags: -I/usr/include;-std=c++14;;;-fno-exceptions;-D_GNU_SOURCE;-D__STDC_CONSTANT_MACROS;-D__STDC_FORMAT_MACROS;-D__STDC_LIMIT_MACROS;-fno-rtti;-fno-exceptions

clang: /usr/bin/clang
llvm-as: /usr/bin/llvm-as
llvm-link: /usr/bin/llvm-link
opt: /usr/bin/opt
llvm-spirv: LLVM_SPIRV-NOTFOUND

CMake Error at CMakeLists.txt:119 (message):
  SPIR-V targets requested, but spirv-tools is not installed



-- Configuring incomplete, errors occurred!
See also "/w/t/src/libclc-15.0.6.src/build/CMakeFiles/CMakeOutput.log"

CMakeLists.txt:119:
if( "spirv-mesa3d-" IN_LIST LIBCLC_TARGETS_TO_BUILD OR "spirv64-mesa3d-
" IN_LIST LIBCLC_TARGETS_TO_BUILD )
        if( NOT LLVM_SPIRV )
                message( FATAL_ERROR "SPIR-V targets requested, but spirv-tools is not installed" )
        endif()
endif()

Конфиг сборки:
mkdir build
cd build

 cmake  \
     -S ..
     -B .
     -DCMAKE_INSTALL_PREFIX=/usr \
     -DLLVM_CONFIG=/usr/bin/llvm-config \
     -DARCH='r600;amdgcn' \
     -DLIBCLC_TARGETS_TO_BUILD='r600--;amdgcn--;amdgcn--amdhsa' \
     -DLLVM_CXX_FLAGS:STRING="$CXXFLAGS" \

 make
 make DESTDIR="$PKG" install

Почему он хочет LLVM_SPIRV, когда он мне не нужен?

Перемещено hobbit из general

★★★★★

Ответ на: комментарий от Khnazile

spirv-tools установлен.

> cat /usr/lib/pkgconfig/SPIRV-Tools.pc
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include

Name: SPIRV-Tools
Description: Tools for SPIR-V
Version: 2022.4.1
URL: https://github.com/KhronosGroup/SPIRV-Tools

Libs: -L${libdir} -lSPIRV-Tools-opt -lSPIRV-Tools -lSPIRV-Tools-link
Cflags: -I${includedir}

почему он тогда ругается? что ещё смотреть?

teod0r ★★★★★
() автор топика
Ответ на: комментарий от Khnazile

вот греп в дереве исходников:

> grep -ir 'spirv.tools'
build/CMakeCache.txt:LLVM_SPIRV:FILEPATH=LLVM_SPIRV-NOTFOUND
CMakeLists.txt:find_program( LLVM_SPIRV llvm-spirv PATHS ${LLVM_BINDIR} NO_DEFAULT_PATH )
CMakeLists.txt:message( "llvm-spirv: ${LLVM_SPIRV}" )
CMakeLists.txt: if( NOT LLVM_SPIRV )
CMakeLists.txt:                                     COMMAND ${LLVM_SPIRV} ${spvflags}

либо строка LLVM_SPIRV:FILEPATH=LLVM_SPIRV-NOTFOUND какая-то странная. либо он ищет файл llvm-spirv, но его нет в установленных пакетом SPIRV-Tools!... если я правильно понял

teod0r ★★★★★
() автор топика
Последнее исправление: teod0r (всего исправлений: 1)
Ответ на: комментарий от teod0r

Я вот примерно из-за таких постоянных плясок с бубном уже года два как забил на самостоятельную сборку llvm/libclc.
Возможно тебе необходимо включить вот этот таргет: amdgcn-mesa-mesa3d
Впрочем, что-то все так поменялось, что я уже ничего понять не могу.

Как я понял, это какая-то новая примочка, которую сделал khronos, и она нужна, чтобы libclc линковался с llvm16+ https://github.com/KhronosGroup/SPIRV-LLVM-Translator

Khnazile ★★★★★
()
Последнее исправление: Khnazile (всего исправлений: 1)