Changeset ae0673a for general/prog/gcc-ada.xml
- Timestamp:
- 05/24/2015 05:43:45 PM (9 years ago)
- Branches:
- 10.0, 10.1, 11.0, 11.1, 11.2, 11.3, 12.0, 12.1, 7.10, 7.8, 7.9, 8.0, 8.1, 8.2, 8.3, 8.4, 9.0, 9.1, basic, bdubbs/svn, elogind, kea, ken/TL2024, ken/inkscape-core-mods, ken/tuningfonts, lazarus, lxqt, nosym, perl-modules, plabs/newcss, plabs/python-mods, python3.11, qt5new, rahul/power-profiles-daemon, renodr/vulkan-addition, trunk, upgradedb, xry111/intltool, xry111/llvm18, xry111/soup3, xry111/test-20220226, xry111/xf86-video-removal
- Children:
- 64eb9189
- Parents:
- b39a80c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
general/prog/gcc-ada.xml
rb39a80c rae0673a 5 5 %general-entities; 6 6 7 <!ENTITY gcc-download-http "http ://ftp.gnu.org/gnu/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.bz2">7 <!ENTITY gcc-download-http "https://ftp.gnu.org/gnu/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.bz2"> 8 8 <!ENTITY gcc-download-ftp "ftp://ftp.gnu.org/gnu/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.bz2"> 9 <!ENTITY gcc-md5sum " 4df8ee253b7f3863ad0b86359cd39c43">10 <!ENTITY gcc-size " 86MB">11 <!ENTITY gcc-ada-buildsize " 5.1GB (0.7 GB added if GNAT install dir is not removed)">12 <!ENTITY gcc-ada-time "1 14 SBU (including 72SBU for tests)">9 <!ENTITY gcc-md5sum "d5525b1127d07d215960e6051c5da35e"> 10 <!ENTITY gcc-size "91 MB"> 11 <!ENTITY gcc-ada-buildsize "6.4 GB (0.7 GB added if GNAT install dir is not removed)"> 12 <!ENTITY gcc-ada-time "125 SBU (including 73 SBU for tests)"> 13 13 14 14 <!ENTITY gnat-download-http "https://libre.adacore.com/download/"> … … 38 38 <title>Introduction to the GCC Ada compiler</title> 39 39 40 <para>Ada is a modern programming language designed for large, long-lived 41 applications — and embedded systems in particular — where 42 reliability and efficiency are essential. It has a set of unique technical 43 features that make it highly effective for use in large, complex and 44 safety-critical projects.</para> 45 46 <para>The compiler and associated tools on this page are known as the 47 <application>GNAT</application> technology, developed by the Adacore 48 company, using the <application>GCC</application> backend. Since 49 parts of the Ada compiler are written in Ada, there is a circular 50 dependency on an Ada compiler. The instructions below first install 51 a binary compiler.</para> 40 <para> 41 Ada is a modern programming language designed for large, long-lived 42 applications — and embedded systems in particular — where 43 reliability and efficiency are essential. It has a set of unique technical 44 features that make it highly effective for use in large, complex and 45 safety-critical projects. 46 </para> 47 48 <para> 49 The compiler and associated tools on this page are known as the 50 <application>GNAT</application> technology, developed by the Adacore 51 company, using the <application>GCC</application> backend. Since 52 parts of the Ada compiler are written in Ada, there is a circular 53 dependency on an Ada compiler. The instructions below first install 54 a binary compiler. You do not need to do that if you already have built 55 <application>GNAT</application> tools. 56 </para> 52 57 53 58 &lfs77_checked; 54 59 55 60 <caution> 56 <para>Using the instructions on this page will have the effect that 57 the C and C++ compiler and libraries will be reinstalled, overwriting 58 the ones on your system. This may lead to some issues. Please read the 59 notes and caution on the <xref linkend="gcc"/> page.</para> 61 <para> 62 Using the instructions on this page will have the effect that 63 the C and C++ compiler and libraries will be reinstalled, overwriting 64 the ones on your system. This may lead to some issues. Please read the 65 notes and caution on the <xref linkend="gcc"/> page. 66 </para> 60 67 </caution> 68 69 <note> 70 <para> 71 If you want to install other compilers in the <application>GCC 72 </application> collection, do that first, or specify ada in the 73 <parameter>--enable-languages</parameter> switch to <command> 74 configure</command>. If you rebuild <application>GCC</application> 75 without enabling ada after running the instructions on this page, 76 the new compiler will not be able to compile ADA anymore. 77 </para> 78 </note> 61 79 62 80 <bridgehead renderas="sect3">Package Information</bridgehead> 63 81 <itemizedlist spacing="compact"> 64 82 <listitem> 65 <para>Download (HTTP): <ulink url="&gcc-download-http;"/></para> 66 </listitem> 67 <listitem> 68 <para>Download (FTP): <ulink url="&gcc-download-ftp;"/></para> 69 </listitem> 70 <listitem> 71 <para>Download MD5 sum: &gcc-md5sum;</para> 72 </listitem> 73 <listitem> 74 <para>Download size: &gcc-size;</para> 75 </listitem> 76 <listitem> 77 <para>Estimated disk space required: &gcc-ada-buildsize;</para> 78 </listitem> 79 <listitem> 80 <para>Estimated build time: &gcc-ada-time;</para> 83 <para> 84 Download (HTTP): <ulink url="&gcc-download-http;"/> 85 </para> 86 </listitem> 87 <listitem> 88 <para> 89 Download (FTP): <ulink url="&gcc-download-ftp;"/> 90 </para> 91 </listitem> 92 <listitem> 93 <para> 94 Download MD5 sum: &gcc-md5sum; 95 </para> 96 </listitem> 97 <listitem> 98 <para> 99 Download size: &gcc-size; 100 </para> 101 </listitem> 102 <listitem> 103 <para> 104 Estimated disk space required: &gcc-ada-buildsize; 105 </para> 106 </listitem> 107 <listitem> 108 <para> 109 Estimated build time: &gcc-ada-time; 110 </para> 81 111 </listitem> 82 112 </itemizedlist> … … 84 114 <bridgehead renderas="sect3">Additional Downloads</bridgehead> 85 115 <note> 86 <para>You will need to install <application>GNAT</application> 87 temporarily to satisfy the circular dependency. You may point your 88 browser to the <ulink url="&gnat-download-http;">AdaCore download 89 page</ulink>, choose your platform and 2014, then select the file 90 to download. Alternatively, direct links to the 64 bit and 32 bit 91 linux versions are given below.</para> 116 <para> 117 You will need to install <application>GNAT</application> 118 temporarily to satisfy the circular dependency. You may point your 119 browser to the <ulink url="&gnat-download-http;">AdaCore download 120 page</ulink>, choose your platform and 2014, then select the file 121 to download. Alternatively, direct links to the 64 bit and 32 bit 122 linux versions are given below. 123 </para> 92 124 </note> 93 125 … … 123 155 </para> 124 156 </listitem> 125 <!--<listitem>157 <listitem> 126 158 <para> 127 159 Required patch: 128 <ulink url="&patch-root;/gcc-&gcc-version;-upstream_ fixes-1.patch"/>129 </para> 130 </listitem> -->160 <ulink url="&patch-root;/gcc-&gcc-version;-upstream_libgomp_fix-1.patch"/> 161 </para> 162 </listitem> 131 163 </itemizedlist> 132 164 … … 146 178 <title>Installation of the GNAT binary</title> 147 179 148 <para>Before unpacking and changing into the GCC source directory, first 149 unpack the <application>GNAT</application> tarball, and change to the 150 GNAT directory. Then, install the <application>GNAT</application> binary 151 by running the following command as the 152 <systemitem class="username">root</systemitem> user:</para> 180 <para> 181 Before unpacking and changing into the GCC source directory, first 182 unpack the <application>GNAT</application> tarball, and change to the 183 GNAT directory. Then, install the <application>GNAT</application> binary 184 by running the following command as the 185 <systemitem class="username">root</systemitem> user: 186 </para> 153 187 154 188 <screen role="root"><userinput>make ins-all prefix=/opt/gnat</userinput></screen> 155 189 156 <para>The <application>GNAT</application> compiler can be invoked by 157 executing the <command>gcc</command> binary installed in <filename 158 class="directory">/opt/gnat/bin</filename>.</para> 159 160 <para>You may now remove the <application>GNAT</application> 161 source directory if desired.</para> 162 163 <para>Prepare to compile <application>GCC</application> by placing the 164 <application>GNAT</application> version of <command>gcc</command> at the 165 beginning of the <envar>PATH</envar> variable by using the following 166 commands:</para> 190 <para> 191 The <application>GNAT</application> compiler can be invoked by 192 executing the <command>gcc</command> binary installed in <filename 193 class="directory">/opt/gnat/bin</filename>. 194 </para> 195 196 <para> 197 You may now remove the <application>GNAT</application> 198 source directory if desired. 199 </para> 200 201 <para> 202 Prepare to compile <application>GCC</application> by placing the 203 <application>GNAT</application> version of <command>gcc</command> at the 204 beginning of the <envar>PATH</envar> variable by using the following 205 commands: 206 </para> 167 207 168 208 <screen><userinput>PATH_HOLD=$PATH && 169 209 export PATH=/opt/gnat/bin:$PATH_HOLD</userinput></screen> 170 210 171 <para>Doing so has the drawback that the <application>GCC</application> 172 and <application>Binutils</application> executables are taken 173 from the just installed <application>GNAT</application> package, but the 174 versions of those executables are outdated compared to those installed in 175 LFS. This is not important for the <application>GCC</application> compilers, 176 since they recompile themselves during the bootstrap process. On the other 177 hand, the outdated <command>ld</command> and <command>as</command> tools 178 are used all along. In order to use the LFS tools, issue as the 179 <systemitem class="username">root</systemitem> user:</para> 211 <para> 212 Doing so has the drawback that the <application>GCC</application> 213 and <application>Binutils</application> executables are taken 214 from the just installed <application>GNAT</application> package, but the 215 versions of those executables are outdated compared to those installed in 216 LFS. This is not important for the <application>GCC</application> compilers, 217 since they recompile themselves during the bootstrap process. On the other 218 hand, the outdated <command>ld</command> and <command>as</command> tools 219 are used all along. In order to use the LFS tools, issue as the 220 <systemitem class="username">root</systemitem> user: 221 </para> 180 222 181 223 <screen role="root"><userinput>find /opt/gnat -name ld -exec mv -v {} {}.old \; … … 186 228 <sect2 role="installation"> 187 229 <title>Installation of GCC Ada</title> 188 <!-- 189 <para>As in LFS, fix a problem identified upstream:</para> 190 191 <screen><userinput>sed -i 's/if \((code.*))\)/if (\1 \&\& \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c</userinput></screen> 192 --> 193 194 <para>Install <application>GCC Ada</application> by running the 195 following commands:</para> 196 197 <screen><userinput><!-- 198 patch -Np1 -i ../gcc-&gcc-version;-upstream_fixes-1.patch && 199 -->mkdir ../gcc-build && 230 231 <para> 232 As in LFS, fix a problem identified upstream with the libgomp library: 233 </para> 234 235 <screen><userinput>patch -Np1 -i ../gcc-&gcc-version;-upstream_libgomp_fix-1.patch</userinput></screen> 236 237 <para> 238 Install <application>GCC Ada</application> by running the 239 following commands: 240 </para> 241 242 <screen><userinput>mkdir ../gcc-build && 200 243 cd ../gcc-build && 201 244 202 245 ../gcc-&gcc-version;/configure \ 203 246 --prefix=/usr \ 204 --libdir=/usr/lib \205 --enable-shared \206 --enable-threads=posix \207 --enable-__cxa_atexit \208 --enable-clocale=gnu \209 247 --disable-multilib \ 210 248 --with-system-zlib \ … … 212 250 make</userinput></screen> 213 251 214 <para>If you have installed additional packages such as 215 <application>Valgrind</application> and <application>GDB</application>, 216 the <application>GCC</application> part of the testsuite will run more 217 tests than in LFS. Some of those will report FAIL and others XPASS 218 (pass when expected to FAIL). To run the tests, issue:</para> 252 <para> 253 If you have installed additional packages such as 254 <application>Valgrind</application> and <application>GDB</application>, 255 the <application>GCC</application> part of the testsuite will run more 256 tests than in LFS. Some of those will report FAIL and others XPASS 257 (pass when expected to FAIL). To run the tests, issue: 258 </para> 219 259 220 260 <screen><userinput>ulimit -s 32768 && … … 223 263 to be run. --> 224 264 225 <para>The tests are very long, and the results may be hard to find in the 226 logs, specially if you use parallel jobs with make. You can get a summary 227 of the tests with:</para> 265 <para> 266 The tests are very long, and the results may be hard to find in the 267 logs, specially if you use parallel jobs with make. You can get a summary 268 of the tests with: 269 </para> 228 270 229 271 <screen><userinput>../gcc-&gcc-version;/contrib/test_summary</userinput></screen> 230 272 231 <para>Now, as the <systemitem class="username">root</systemitem> user:</para> 273 <para> 274 Now, as the <systemitem class="username">root</systemitem> user: 275 </para> 232 276 233 277 <screen role="root"><userinput>make install && … … 240 284 /usr/lib/gcc/*linux-gnu/&gcc-version;/ada{lib,include}</userinput></screen> 241 285 242 <para>You should now remove the <application>GNAT</application> 243 installation and perform other cleanups:</para> 244 245 <screen><userinput>rm -rf /opt/gnat && 246 export PATH=$PATH_HOLD && 286 <para> 287 You should now remove the <application>GNAT</application> 288 installation and perform other cleanups. First, as the <systemitem 289 class="username">root</systemitem> user: 290 </para> 291 292 <screen role="root"><userinput>rm -rf /opt/gnat</userinput></screen> 293 294 <para> 295 Then, as a normal user: 296 </para> 297 298 <screen><userinput>export PATH=$PATH_HOLD && 247 299 unset PATH_HOLD</userinput></screen> 248 300 … … 251 303 <sect2 role="commands"> 252 304 <title>Command Explanations</title> 253 <!-- 254 <para> 255 <command>patch ... gcc-&gcc-version;-upstream_fixes-1.patch</command>: 256 This patch corrects bugs in the C++ compiler, which lead to 257 segmentation faults in some cases. 258 </para> 259 --> 260 261 <para><command>mkdir ../gcc-build; cd ../gcc-build</command>: The 262 <application>GCC</application> documentation recommends 263 building the package in a dedicated build directory.</para> 264 265 <para><parameter>--enable-shared --enable-threads=posix 266 --enable-__cxa_atexit</parameter>: These parameters are required to build 267 the <application>C++</application> libraries to published standards.</para> 268 269 <para><parameter>--enable-clocale=gnu</parameter>: This parameter is a 270 failsafe for incomplete locale data.</para> 271 272 <para><parameter>--disable-multilib</parameter>: This parameter ensures 273 that files are created for the specific architecture of your computer.</para> 305 306 <para> 307 <command>mkdir ../gcc-build; cd ../gcc-build</command>: The 308 <application>GCC</application> documentation recommends 309 building the package in a dedicated build directory. 310 </para> 311 312 <para> 313 <parameter>--disable-multilib</parameter>: This parameter ensures 314 that files are created for the specific architecture of your computer. 315 </para> 274 316 275 317 <para> … … 288 330 </para> 289 331 290 <para><command>ulimit -s 32768</command>: This command prevents several 291 tests from running out of stack space.</para> 292 293 <para><command>make -k check</command>: This command runs the test suite 294 without stopping if any errors are encountered.</para> 295 296 <para><command>../gcc-&gcc-version;/contrib/test_summary</command>: This 297 command will produce a summary of the test suite results. You can append 298 <command>| grep -A7 Summ</command> to the command to produce an even more 299 condensed version of the summary. You may also wish to redirect the output 300 to a file for review and comparison later on.</para> 301 302 <para><command>chown -v -R root:root /usr/lib/gcc/*linux-gnu/...</command>: 303 If the package is built by a user other than root, the ownership of the 304 installed <filename class="directory">include</filename> and 305 <filename class="directory">adalib</filename> directories (and their 306 contents) will be incorrect. These commands change the ownership to the 307 <systemitem class="username">root</systemitem> user and group.</para> 332 <para> 333 <option>--with-default-libstdcxx-abi=c++98</option>: Use this switch if you 334 are building <application>GNAT</application> tools using a 335 <application>GCC</application> version prior to 5.1.0, 336 and you do not want to recompile all the libraries written in C++. 337 </para> 338 339 <para> 340 <command>ulimit -s 32768</command>: This command prevents several 341 tests from running out of stack space. 342 </para> 343 344 <para> 345 <command>make -k check</command>: This command runs the test suite 346 without stopping if any errors are encountered. 347 </para> 348 349 <para> 350 <command>../gcc-&gcc-version;/contrib/test_summary</command>: This 351 command will produce a summary of the test suite results. You can append 352 <command>| grep -A7 Summ</command> to the command to produce an even more 353 condensed version of the summary. You may also wish to redirect the output 354 to a file for review and comparison later on. 355 </para> 356 357 <para> 358 <command>chown -v -R root:root /usr/lib/gcc/*linux-gnu/...</command>: 359 If the package is built by a user other than root, the ownership of the 360 installed <filename class="directory">include</filename> and 361 <filename class="directory">adalib</filename> directories (and their 362 contents) will be incorrect. These commands change the ownership to the 363 <systemitem class="username">root</systemitem> user and group. 364 </para> 308 365 309 366 </sect2> … … 320 377 <seg> 321 378 gnat, gnatbind, gnatchop, gnatclean, gnatfind, gnatkr, 322 gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, 323 and a run-time executable, gnat1, in <filename class="directory"> 324 /usr/libexec/<arch-triplet>/&gcc-version;</filename> 379 gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref 325 380 </seg> 326 381 <seg> … … 334 389 </segmentedlist> 335 390 336 <para>Only the Ada specific files are listed here. Others can be found at 337 <ulink url="&lfs-root;/chapter06/gcc.html#contents-gcc"/> as they were 338 initially installed during the building of LFS.</para> 391 <para> 392 Only the Ada specific files are listed here. Others can be found at 393 <ulink url="&lfs-root;/chapter06/gcc.html#contents-gcc"/> as they were 394 initially installed during the building of LFS. 395 </para> 339 396 340 397 <variablelist> … … 346 403 <term><command>gnat</command></term> 347 404 <listitem> 348 <para>is a wrapper that accepts a number of commands and calls 349 the corresponding tool from the list below.</para> 405 <para> 406 is a wrapper that accepts a number of commands and calls 407 the corresponding tool from the list below. 408 </para> 350 409 <indexterm zone="gcc-ada gnat"> 351 410 <primary sortas="b-gnat">gnat</primary> … … 357 416 <term><command>gnatbind</command></term> 358 417 <listitem> 359 <para>is used to bind compiled objects.</para> 418 <para> 419 is used to bind compiled objects. 420 </para> 360 421 <indexterm zone="gcc-ada gnatbind"> 361 422 <primary sortas="b-gnatbind">gnatbind</primary> … … 367 428 <term><command>gnatchop</command></term> 368 429 <listitem> 369 <para>is useful for renaming files to meet the standard 370 <application>Ada</application> default file naming conventions.</para> 430 <para> 431 is useful for renaming files to meet the standard 432 <application>Ada</application> default file naming conventions. 433 </para> 371 434 <indexterm zone="gcc-ada gnatchop"> 372 435 <primary sortas="b-gnatchop">gnatchop</primary> … … 378 441 <term><command>gnatclean</command></term> 379 442 <listitem> 380 <para>is used to remove files associated with a 381 <application>GNAT</application> project.</para> 443 <para> 444 is used to remove files associated with a 445 <application>GNAT</application> project. 446 </para> 382 447 <indexterm zone="gcc-ada gnatclean"> 383 448 <primary sortas="b-gnatclean">gnatclean</primary> … … 389 454 <term><command>gnatfind</command></term> 390 455 <listitem> 391 <para> is intended for locating definition and/or references to 392 specified entities in a <application>GNAT</application> project.</para> 456 <para> 457 is intended for locating definition and/or references to 458 specified entities in a <application>GNAT</application> project. 459 </para> 393 460 <indexterm zone="gcc-ada gnatfind"> 394 461 <primary sortas="b-gnatfind">gnatfind</primary> … … 400 467 <term><command>gnatkr</command></term> 401 468 <listitem> 402 <para>is used to determine the crunched name for a given file, when 403 crunched to a specified maximum length.</para> 469 <para> 470 is used to determine the crunched name for a given file, when 471 crunched to a specified maximum length. 472 </para> 404 473 <indexterm zone="gcc-ada gnatkr"> 405 474 <primary sortas="b-gnatkr">gnatkr</primary> … … 411 480 <term><command>gnatlink</command></term> 412 481 <listitem> 413 <para>is used to link programs and build an executable file.</para> 482 <para> 483 is used to link programs and build an executable file. 484 </para> 414 485 <indexterm zone="gcc-ada gnatlink"> 415 486 <primary sortas="b-gnatlink">gnatlink</primary> … … 421 492 <term><command>gnatls</command></term> 422 493 <listitem> 423 <para>is the compiled unit browser.</para> 494 <para> 495 is the compiled unit browser. 496 </para> 424 497 <indexterm zone="gcc-ada gnatls"> 425 498 <primary sortas="b-gnatls">gnatls</primary> … … 431 504 <term><command>gnatmake</command></term> 432 505 <listitem> 433 <para>is the <application>Ada</application> compiler, which performs 434 compilaton, binding and linking.</para> 506 <para> 507 is the <application>Ada</application> compiler, which performs 508 compilaton, binding and linking. 509 </para> 435 510 <indexterm zone="gcc-ada gnatmake"> 436 511 <primary sortas="b-gnatmake">gnatmake</primary> … … 442 517 <term><command>gnatname</command></term> 443 518 <listitem> 444 <para>will list the files associated with a 445 <application>GNAT</application> project.</para> 519 <para> 520 will list the files associated with a 521 <application>GNAT</application> project. 522 </para> 446 523 <indexterm zone="gcc-ada gnatname"> 447 524 <primary sortas="b-gnatname">gnatname</primary> … … 453 530 <term><command>gnatprep</command></term> 454 531 <listitem> 455 <para>is the <application>GNAT</application> external 456 preprocessor.</para> 532 <para> 533 is the <application>GNAT</application> external preprocessor. 534 </para> 457 535 <indexterm zone="gcc-ada gnatprep"> 458 536 <primary sortas="b-gnatprep">gnatprep</primary> … … 464 542 <term><command>gnatxref</command></term> 465 543 <listitem> 466 <para>is similar to <command>gnatfind</command>, but generates 467 a full report of all cross-references.</para> 544 <para> 545 is similar to <command>gnatfind</command>, but generates 546 a full report of all cross-references. 547 </para> 468 548 <indexterm zone="gcc-ada gnatxref"> 469 549 <primary sortas="b-gnatxref">gnatxref</primary>
Note:
See TracChangeset
for help on using the changeset viewer.