3cdd7778ad8672f8f74440f53c7134866aff2d9e
[ikiwiki.git] / docs / developer / clang / index.html
1 <div>
2 <style TYPE="text/css">
3 <!-- 
4 .programlisting {
5         Background-Color: #f5f5f5;
6         Line-Height: 1.2em;
7         Border-Color: #d4d4d4;
8         Border-Style: solid;
9         Border-Width: thin;
10         Margin-Left: auto;
11         Margin-Right: auto;
12         Padding: 5pt;
13         Width: 90%;
14 }
15
16 table
17 {
18         margin: 0.5em 0 0 0.5em;
19         border-collapse: collapse;
20 }
21
22 th, td
23 {
24         padding: 0.25em 0.5em 0.25em 0.5em;
25         border: 1pt solid #ADB9CC;
26 }
27
28 tr {
29         Vertical-Align: top;
30 }
31
32 td {
33         Vertical-Align: top;
34 }
35
36 th, td.theader {
37         Background-Color: #f8f8f8;
38         Font-Weight: bold;
39         Vertical-Align: middle;
40         Padding: 5pt;
41 }
42
43 --> 
44 </style>
45 <h1 align="center">Compiling DragonFly BSD using llvm/clang </h1>
46
47 <!-- 
48 <h2> THIS NEEDS AN UPDATE !!!! </h2>
49 -->
50
51 <h2>Overview</h2>
52 This page tracks the progress on an effort to compile DragonFly with llvm/clang instead of gcc.
53  
54  
55 <h2>How?</h2>
56  
57 <pre class="programlisting">
58 cd /usr/src
59 env WORLD_CCVER=clang make -DNO_GCC44 buildworld
60 env WORLD_CCVER=clang make buildkernel KERNCONF=...
61 </pre>
62  
63 <!-- 
64 <h2>HostInfo patch</h2>
65 <strike>This <a href="http://leaf.dragonflybsd.org/~alexh/clang/clang_ccclib.patch">patch</a> enables a DragonFly BSD target for ccc with its own toolchain configuration.</strike>
66 -->
67
68 <!--
69 <h2>Notes</h2>
70 llvm/clang bug <a href="http://llvm.org/bugs/show_bug.cgi?id=3812">#3812</a> was reopened as it seems to be an actual bug. The patch (atomic.patch) is only intended to be TEMPORARY and will kill gcc compatibility! I will update this as soon as a llvm/clang is fixed.
71 --> 
72  
73 <h2>Status (Kernel/pc32)</h2>
74 <table>
75 <tbody>
76 <tr><td><b>Type</b> </td><td><b>llvm/clang revision</b></td><td><b>Status</b> </td><td><b>Remarks</b></td></tr>
77  
78 <tr><td >GENERIC </td><td >66925 </td><td >Doesn't compile</td><td >Filed llvm/clang bug <a 
79 href="http://llvm.org/bugs/show_bug.cgi?id=3805"><strike>#3805</strike></a></td></tr>
80  
81 <tr><td >GENERIC </td><td >67025 </td><td >Doesn't link (ncr, nsp, tmc) </td><td ><a href="http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/bd65e5279418f9630b54e4e33fd72d348e88c955">This commit</a> should fix it</td></tr>
82  
83 <tr><td >GENERIC </td><td >67025 </td><td >Compiles, doesn't boot</td><td >(see Current Log) - Filed 
84 llvm/clang bug <a href="http://llvm.org/bugs/show_bug.cgi?id=3812">#3812</a>. </td></tr>
85  
86 <tr><td >GENERIC </td><td >67025 </td><td >Boots, seems to work ok </td><td >network adapters removed from system</td></tr>
87 <tr><td >GENERIC </td><td >67025 </td><td >Boots, survives stress test (buildworld)</td><td></td></tr>
88 </tbody>
89 </table>
90  
91 <h2>Status (Userland/pc32)</h2>
92 <table>
93 <tbody>
94 <tr><td><b>Type</b> </td><td><b>llvm/clang revision</b></td><td><b>Status</b> </td><td><b>Problem area</b></td><td><b>Remarks</b></td></tr>
95 <tr><td >world </td><td >67025 </td><td >Doesn't compile </td><td>all</td><td > Filed llvm/clang bug <a 
96 href="http://llvm.org/bugs/show_bug.cgi?id=3853"><strike>#3853</strike></a> </td></tr>
97 <tr><td >world </td><td >69545 </td><td >Partially compiles </td><td >lib/libc</td><td >Issue with zero-size arrays (see note below), filed llvm/clang bug <a 
98 href="http://llvm.org/bugs/show_bug.cgi?id=4020">#4020</a> Edit: <a href="http://gitweb.dragonflybsd.org/dragonfly.git/commit/c4b81afc2638e5b2a17902644721fc0594615287">This commit</a> solves this issue</td></tr>
99 </tbody>
100 </table>
101  
102  
103 <h2>Related llvm/clang bug reports</h2>
104 <table>
105 <tbody>
106 <tr><td><b></b>Bug #</td><td><b>Bug Description</b></td><td><b>Affects</b> </td><td><b>Status</b></td></tr>
107 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=3805">3805</a></td><td >ccc ignores -x assembler-with-cpp</td><td>build of locore.s</td><td >Fixed</td></tr>
108 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=3812">3812</a></td><td >assembler doesn't properly process clobber,input and output register lists</td><td>atomic_intr_cond_try in atomic.h</td><td >Closed</td></tr>
109 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=3822">3822</a></td><td >failed assertion with -O2</td><td>build of GENERIC with -O2</td><td >Fixed</td></tr>
110 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=3853">3853</a></td><td >__thread keyword not supported</td><td>build of all userland base tools</td><td >Fixed</td></tr>
111 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=4007">4007</a></td><td > clang doesn't know  -Werror-foo is the same as -Werror=foo</td><td>barrage of warnings during make depend</td><td >Fixed</td></tr>
112 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=4020">4020</a></td><td >clang doesn't allow zero-sized arrays</td><td>build of lib/libc</td><td >Closed (won't fix)</td></tr>
113 <tr><td ><a href="http://llvm.org/bugs/show_bug.cgi?id=4022">4022</a></td><td >incorrect handling of __inline</td><td>build of LINT</td><td >Closed</td></tr>
114 </tbody>
115  
116 </table>
117  
118  <h2>atomic_intr_cond_try</h2>
119 The long standing atomic_intr_cond_try issue has been solved in commit <a href="http://gitweb.dragonflybsd.org/dragonfly.git/commit/caae4d604234d17dff3080f60624a583965c2cf4">caae4d604234d17dff3080f60624a583965c2cf4</a>.
120  
121  
122 <h2>llvm/clang oddities</h2>
123 <h3>zero-size arrays</h3>
124 llvm/clang doesn't support zero sized arrays and automatically generates arrays with a size 1 when a zero-size array is specified.
125
126 <h3>__i386__ vs i386</h3>
127 NOTE: This issue has been fixed in <a href="http://llvm.org/viewvc/llvm-project?view=rev&revision=67378">this commit</a>.
128  
129  
130 </div>
131
132  
133  
134