<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>44831</bug_id>
          
          <creation_ts>2023-01-07 12:43:01 +0300</creation_ts>
          <short_desc>Q: link libLLVM statically</short_desc>
          <delta_ts>2023-06-15 23:27:03 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>llvm15.0-devel</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</reporter>
          <assigned_to name="Arseny Maslennikov">arseny</assigned_to>
          <cc>arseny</cc>
    
    <cc>grenka</cc>
    
    <cc>lakostis</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>219744</commentid>
    <comment_count>0</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2023-01-07 12:43:01 +0300</bug_when>
    <thetext>Привет!

Пытаюсь собрать библиотеку, где libLLVM будет слинкован статически. Внутри CMakeLists.txt объявляю:

set(LLVM_LINK_LLVM_DYLIB OFF)

но после этого все равно в списке библиотек на линковку появляется /usr/lib/llvm-15/../libLLVM-15.so

Других флагов для управления процессом внутри AddLLVM и LLVM-Config я не нашел, отсюда вопрос, как предполагается собирать LLVM статически, раз -static-libs теперь входят в субпакет -devel?

Оригинальная логика из пакета, где я хочу залинковать libLLVM:

if (LLVM_LINK_LLVM_DYLIB)                                                                                                                                                                                                                                     
  set(LLVM_LIBS LLVM)                                                                                                                                                                                                                                         
else()                                                                                                                                                                                                                                                        
  llvm_map_components_to_libnames(LLVM_LIBS                                                                                                                                                                                                                   
    ${LLVM_TARGETS_TO_BUILD}                                                                                                                                                                                                                                  
    DebugInfoDWARF                                                                                                                                                                                                                                            
    Symbolize)                                                                                                                                                                                                                                                
endif()                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                              
target_link_options(amd_comgr                                                                                                                                                                                                                                 
  PUBLIC                                                                                                                                                                                                                                                      
    ${AMD_COMGR_PUBLIC_LINKER_OPTIONS}                                                                                                                                                                                                                        
  PRIVATE                                                                                                                                                                                                                                                     
    ${AMD_COMGR_PRIVATE_LINKER_OPTIONS})                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                              
target_link_libraries(amd_comgr                                                                                                                                                                                                                               
  PRIVATE                                                                                                                                                                                                                                                     
    ${LLD_LIBS}                                                                                                                                                                                                                                               
    ${LLVM_LIBS}                                                                                                                                                                                                                                              
    ${CLANG_LIBS})</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219745</commentid>
    <comment_count>1</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2023-01-07 12:44:07 +0300</bug_when>
    <thetext>https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/blob/amd-stg-open/lib/comgr/CMakeLists.txt сам CMakeLists.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219908</commentid>
    <comment_count>2</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2023-01-10 14:49:30 +0300</bug_when>
    <thetext>Я пока собрал https://git.altlinux.org/tasks/313080, но туда планируется ещё кое-что добавить по несвязанным причинам.

#100 llvm15.0 15.0.6-alt1.1 -&gt; 15.0.6-alt2
 Tue Jan 10 2023 Arseny Maslennikov &lt;arseny@altlinux&gt; 15.0.6-alt2
 &lt;...&gt;
 - Allow cmake config users to override LLVM_LINK_LLVM_DYLIB=ON. (Closes: 44831)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220031</commentid>
    <comment_count>3</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2023-01-12 00:04:37 +0300</bug_when>
    <thetext>(In reply to Arseny Maslennikov from comment #2)
&gt; Я пока собрал https://git.altlinux.org/tasks/313080, но туда планируется ещё
&gt; кое-что добавить по несвязанным причинам.
&gt; 
&gt; #100 llvm15.0 15.0.6-alt1.1 -&gt; 15.0.6-alt2
&gt;  Tue Jan 10 2023 Arseny Maslennikov &lt;arseny@altlinux&gt; 15.0.6-alt2
&gt;  &lt;...&gt;
&gt;  - Allow cmake config users to override LLVM_LINK_LLVM_DYLIB=ON. (Closes:
&gt; 44831)

Спасибо! Но пока я не понял, как этим пользоваться :)

$ less build.log.tmp
...
&lt;13&gt;Jan 11 09:48:10 rpmi: llvm15.0-filesystem-15.0.6-alt2 sisyphus+313080.200.2.1 1673364156 installed
&lt;13&gt;Jan 11 09:48:25 rpmi: llvm15.0-polly-15.0.6-alt2 sisyphus+313080.200.2.1 1673364156 installed
&lt;13&gt;Jan 11 09:48:25 rpmi: llvm15.0-gold-15.0.6-alt2 sisyphus+313080.200.2.1 1673364156 installed
&lt;13&gt;Jan 11 09:48:26 rpmi: llvm15.0-libs-15.0.6-alt2 sisyphus+313080.200.2.1 1673364156 installed
&lt;13&gt;Jan 11 09:48:31 rpmi: llvm15.0-15.0.6-alt2 sisyphus+313080.200.2.1 1673364156 installed
&lt;13&gt;Jan 11 09:48:49 rpmi: llvm15.0-devel-15.0.6-alt2 sisyphus+313080.200.2.1 1673364156 installed

set(LLVM_LINK_LLVM_DYLIB OFF) объявлена в CMakeLists.txt проекта и все равно в link.txt я вижу libLLVM-15.so:

[builder@localhost .in]$ cat ~/RPM/BUILD/rocm-comgr-5.4.1/lib/comgr/x86_64-alt-linux/CMakeFiles/amd_comgr.dir/link.txt 
/usr/bin/clang++ -fPIC -pipe -frecord-gcc-switches -Wall -g -O2 -O2 -g -DNDEBUG -pthread -Wl,--version-script=/usr/src/RPM/BUILD/rocm-comgr-5.4.1/lib/comgr/x86_64-alt-linux/src/exportmap -Wl,--no-undefined -fuse-ld=lld -shared -Wl,-soname,libamd_comgr.so.2 -o libamd_comgr.so.2.4 &quot;CMakeFiles/amd_comgr.dir/src/comgr-compiler.cpp.o&quot; CMakeFiles/amd_comgr.dir/src/comgr.cpp.o &quot;CMakeFiles/amd_comgr.dir/src/comgr-device-libs.cpp.o&quot; &quot;CMakeFiles/amd_comgr.dir/src/comgr-disassembly.cpp.o&quot; &quot;CMakeFiles/amd_comgr.dir/src/comgr-elfdump.cpp.o&quot; &quot;CMakeFiles/amd_comgr.dir/src/comgr-env.cpp.o&quot; &quot;CMakeFiles/amd_comgr.dir/src/comgr-metadata.cpp.o&quot; &quot;CMakeFiles/amd_comgr.dir/src/comgr-objdump.cpp.o&quot; &quot;CMakeFiles/amd_comgr.dir/src/comgr-signal.cpp.o&quot; &quot;CMakeFiles/amd_comgr.dir/src/comgr-symbol.cpp.o&quot; &quot;CMakeFiles/amd_comgr.dir/src/comgr-symbolizer.cpp.o&quot; &quot;CMakeFiles/amd_comgr.dir/src/time-stat/time-stat.cpp.o&quot;  -Wl,-rpath,/usr/lib/llvm-15.0/lib64: 
....
/usr/lib/llvm-15.0/lib64/libclangASTMatchers.a /usr/lib/llvm-15.0/lib64/libclangEdit.a /usr/lib/llvm-15.0/lib64/libclangSupport.a /usr/lib/llvm-15.0/lib64/libclangFormat.a /usr/lib/llvm-15.0/lib64/libclangToolingInclusions.a /usr/lib/llvm-15.0/lib64/libclangAST.a /usr/lib/llvm-15.0/lib64/libclangToolingCore.a /usr/lib/llvm-15.0/lib64/libclangRewrite.a /usr/lib/llvm-15.0/lib64/libclangLex.a /usr/lib/llvm-15.0/lib64/libclangBasic.a /usr/lib/llvm-15.0/lib64/libLLVM-15.so</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222681</commentid>
    <comment_count>4</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2023-03-08 22:13:57 +0300</bug_when>
    <thetext>Арсений, есть ли успехи с починкой пакета, нужна ли вам помощь?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222972</commentid>
    <comment_count>5</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2023-03-17 12:27:00 +0300</bug_when>
    <thetext>После изучения апстримной cmake-лапши у меня сложилось впечатление, что нужно:
* либо собирать два разных &quot;LLVM distribution&quot;[1][2][3], т. е. снова переписывать сборку и упаковку, мейнтейнить перечисление этих компонентов, etc. с пока неясным мне результатом, и разложить получившиеся артефакты в совсем разные семейства пакетов (i. e. это две сборки из одних и тех же исходников);
* либо в каком-то виде возвращать RH-0001-CMake-Split-static-library-exports-into-their-own-ex.patch (т. е. реализовать его заново). Сейчас занялся этим.

[1] https://github.com/llvm/llvm-project/blob/llvmorg-15.0.7/clang/cmake/caches/MultiDistributionExample.cmake
[2] https://llvm.org/docs/BuildingADistribution.html
[3] https://github.com/gentoo/gentoo/blob/dbc45b1f9e41ec0832af235b948028c7afa531fc/sys-devel/clang/clang-15.0.7-r1.ebuild</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227772</commentid>
    <comment_count>6</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2023-06-15 23:27:03 +0300</bug_when>
    <thetext>Проблема рассосалась сама собой при сборке с llvm16, пока закрываю.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>