264 <blockquote> |
265 <blockquote> |
265 <h4>Fedora 9</h4> |
266 <h4>Fedora 9</h4> |
266 <p> |
267 <p> |
267 <blockquote> |
268 <blockquote> |
268 After installing <a href="http://fedoraproject.org">Fedora</a> 9 |
269 After installing <a href="http://fedoraproject.org">Fedora</a> 9 |
269 you need to install several build dependencies. The simplest |
270 you need to install several build dependencies. The simplest |
270 way to do it is to execute the following commands as user |
271 way to do it is to execute the following commands as user |
271 <tt>root</tt>: |
272 <tt>root</tt>: |
272 <p/> |
273 <p/> |
273 <code>yum-builddep java-1.6.0-openjdk</code> |
274 <code>yum-builddep java-1.6.0-openjdk</code> |
274 <p/> |
275 <p/> |
275 <code>yum install gcc gcc-c++</code> |
276 <code>yum install gcc gcc-c++</code> |
276 <p/> |
277 <p/> |
277 In addition, it's necessary to set a few environment variables for the build: |
278 In addition, it's necessary to set a few environment variables for the build: |
278 |
279 |
279 <p/> |
280 <p/> |
280 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code> |
281 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code> |
281 </blockquote> |
282 </blockquote> |
282 <h4>Fedora 10</h4> |
283 <h4>Fedora 10</h4> |
283 <p> |
284 <p> |
284 <blockquote> |
285 <blockquote> |
285 After installing <a href="http://fedoraproject.org">Fedora</a> 10 |
286 After installing <a href="http://fedoraproject.org">Fedora</a> 10 |
286 you need to install several build dependencies. The simplest |
287 you need to install several build dependencies. The simplest |
287 way to do it is to execute the following commands as user |
288 way to do it is to execute the following commands as user |
288 <tt>root</tt>: |
289 <tt>root</tt>: |
289 <p/> |
290 <p/> |
290 <code>yum-builddep java-1.6.0-openjdk</code> |
291 <code>yum-builddep java-1.6.0-openjdk</code> |
291 <p/> |
292 <p/> |
292 <code>yum install gcc gcc-c++</code> |
293 <code>yum install gcc gcc-c++</code> |
293 <p/> |
294 <p/> |
294 In addition, it's necessary to set a few environment variables for the build: |
295 In addition, it's necessary to set a few environment variables for the build: |
295 |
296 |
296 <p/> |
297 <p/> |
297 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code> |
298 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code> |
298 </blockquote> |
299 </blockquote> |
299 <h4>Fedora 11</h4> |
300 <h4>Fedora 11</h4> |
300 <p> |
301 <p> |
301 <blockquote> |
302 <blockquote> |
302 After installing <a href="http://fedoraproject.org">Fedora</a> 11 |
303 After installing <a href="http://fedoraproject.org">Fedora</a> 11 |
303 you need to install several build dependencies. The simplest |
304 you need to install several build dependencies. The simplest |
304 way to do it is to execute the following commands as user |
305 way to do it is to execute the following commands as user |
305 <tt>root</tt>: |
306 <tt>root</tt>: |
306 <p/> |
307 <p/> |
307 <code>yum-builddep java-1.6.0-openjdk</code> |
308 <code>yum-builddep java-1.6.0-openjdk</code> |
308 <p/> |
309 <p/> |
309 <code>yum install gcc gcc-c++</code> |
310 <code>yum install gcc gcc-c++</code> |
310 <p/> |
311 <p/> |
311 In addition, it's necessary to set a few environment variables for the build: |
312 In addition, it's necessary to set a few environment variables for the build: |
312 |
313 |
313 <p/> |
314 <p/> |
314 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code> |
315 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code> |
315 </blockquote> |
316 </blockquote> |
316 </blockquote> |
317 </blockquote> |
358 <h3><a name="debian">Debian</a></h3> |
359 <h3><a name="debian">Debian</a></h3> |
359 <blockquote> |
360 <blockquote> |
360 <h4>Debian 5.0 (Lenny)</h4> |
361 <h4>Debian 5.0 (Lenny)</h4> |
361 <p> |
362 <p> |
362 <blockquote> |
363 <blockquote> |
363 After installing <a href="http://debian.org">Debian</a> 5 |
364 After installing <a href="http://debian.org">Debian</a> 5 |
364 you need to install several build dependencies. |
365 you need to install several build dependencies. |
365 The simplest way to install the build dependencies is to |
366 The simplest way to install the build dependencies is to |
366 execute the following commands as user <tt>root</tt>: |
367 execute the following commands as user <tt>root</tt>: |
367 <p/> |
368 <p/> |
368 <code>aptitude build-dep openjdk-6</code> |
369 <code>aptitude build-dep openjdk-6</code> |
369 <p/> |
370 <p/> |
370 <code>aptitude install openjdk-6-jdk libmotif-dev</code> |
371 <code>aptitude install openjdk-6-jdk libmotif-dev</code> |
371 <p/> |
372 <p/> |
372 In addition, it's necessary to set a few environment variables for the build: |
373 In addition, it's necessary to set a few environment variables for the build: |
373 <p/> |
374 <p/> |
374 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> |
375 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> |
375 </blockquote> |
376 </blockquote> |
376 </blockquote> |
377 </blockquote> |
377 <!-- ====================================================== --> |
378 <!-- ====================================================== --> |
378 <h3><a name="ubuntu">Ubuntu</a></h3> |
379 <h3><a name="ubuntu">Ubuntu</a></h3> |
379 <blockquote> |
380 <blockquote> |
380 <h4>Ubuntu 8.04</h4> |
381 <h4>Ubuntu 8.04</h4> |
381 <p> |
382 <p> |
382 <blockquote> |
383 <blockquote> |
383 After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04 |
384 After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04 |
384 you need to install several build dependencies. |
385 you need to install several build dependencies. |
385 <p/> |
386 <p/> |
386 First, you need to enable the universe repository in the |
387 First, you need to enable the universe repository in the |
387 Software Sources application and reload the repository |
388 Software Sources application and reload the repository |
388 information. The Software Sources application is available |
389 information. The Software Sources application is available |
389 under the System/Administration menu. |
390 under the System/Administration menu. |
390 <p/> |
391 <p/> |
391 The simplest way to install the build dependencies is to |
392 The simplest way to install the build dependencies is to |
392 execute the following commands: |
393 execute the following commands: |
393 <p/> |
394 <p/> |
394 <code>sudo aptitude build-dep openjdk-6</code> |
395 <code>sudo aptitude build-dep openjdk-6</code> |
395 <p/> |
396 <p/> |
396 <code>sudo aptitude install openjdk-6-jdk</code> |
397 <code>sudo aptitude install openjdk-6-jdk</code> |
397 <p/> |
398 <p/> |
398 In addition, it's necessary to set a few environment variables for the build: |
399 In addition, it's necessary to set a few environment variables for the build: |
399 <p/> |
400 <p/> |
400 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> |
401 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> |
401 </blockquote> |
402 </blockquote> |
402 <h4>Ubuntu 8.10</h4> |
403 <h4>Ubuntu 8.10</h4> |
403 <p> |
404 <p> |
404 <blockquote> |
405 <blockquote> |
405 After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10 |
406 After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10 |
406 you need to install several build dependencies. The simplest |
407 you need to install several build dependencies. The simplest |
407 way to do it is to execute the following commands: |
408 way to do it is to execute the following commands: |
408 <p/> |
409 <p/> |
409 <code>sudo aptitude build-dep openjdk-6</code> |
410 <code>sudo aptitude build-dep openjdk-6</code> |
410 <p/> |
411 <p/> |
411 <code>sudo aptitude install openjdk-6-jdk</code> |
412 <code>sudo aptitude install openjdk-6-jdk</code> |
412 <p/> |
413 <p/> |
413 In addition, it's necessary to set a few environment variables for the build: |
414 In addition, it's necessary to set a few environment variables for the build: |
414 <p/> |
415 <p/> |
415 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> |
416 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> |
416 </blockquote> |
417 </blockquote> |
417 <h4>Ubuntu 9.04</h4> |
418 <h4>Ubuntu 9.04</h4> |
418 <p> |
419 <p> |
419 <blockquote> |
420 <blockquote> |
420 After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04 |
421 After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04 |
421 you need to install several build dependencies. The simplest |
422 you need to install several build dependencies. The simplest |
422 way to do it is to execute the following commands: |
423 way to do it is to execute the following commands: |
423 <p/> |
424 <p/> |
424 <code>sudo aptitude build-dep openjdk-6</code> |
425 <code>sudo aptitude build-dep openjdk-6</code> |
425 <p/> |
426 <p/> |
426 <code>sudo aptitude install openjdk-6-jdk</code> |
427 <code>sudo aptitude install openjdk-6-jdk</code> |
427 <p/> |
428 <p/> |
428 In addition, it's necessary to set a few environment variables for the build: |
429 In addition, it's necessary to set a few environment variables for the build: |
429 <p/> |
430 <p/> |
430 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> |
431 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code> |
431 </blockquote> |
432 </blockquote> |
432 </blockquote> |
433 </blockquote> |
433 <!-- ====================================================== --> |
434 <!-- ====================================================== --> |
434 <h3><a name="opensuse">OpenSUSE</a></h3> |
435 <h3><a name="opensuse">OpenSUSE</a></h3> |
435 <blockquote> |
436 <blockquote> |
436 <h4>OpenSUSE 11.1</h4> |
437 <h4>OpenSUSE 11.1</h4> |
437 <p> |
438 <p> |
438 <blockquote> |
439 <blockquote> |
439 After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 |
440 After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 |
440 you need to install several build dependencies. |
441 you need to install several build dependencies. |
441 The simplest way to install the build dependencies is to |
442 The simplest way to install the build dependencies is to |
442 execute the following commands: |
443 execute the following commands: |
443 <p/> |
444 <p/> |
444 <code>sudo zypper source-install -d java-1_6_0-openjdk</code> |
445 <code>sudo zypper source-install -d java-1_6_0-openjdk</code> |
445 <p/> |
446 <p/> |
446 <code>sudo zypper install make</code> |
447 <code>sudo zypper install make</code> |
447 <p/> |
448 <p/> |
448 In addition, it is necessary to set a few environment variables for the build: |
449 In addition, it is necessary to set a few environment variables for the build: |
449 <p/> |
450 <p/> |
450 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code> |
451 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code> |
451 <p/> |
452 <p/> |
452 Finally, you need to unset the <code>JAVA_HOME</code> environment variable: |
453 Finally, you need to unset the <code>JAVA_HOME</code> environment variable: |
453 <p/> |
454 <p/> |
454 <code>export -n JAVA_HOME</code> |
455 <code>export -n JAVA_HOME</code> |
455 </blockquote> |
456 </blockquote> |
456 </blockquote> |
457 </blockquote> |
457 <!-- ====================================================== --> |
458 <!-- ====================================================== --> |
458 <h3><a name="mandriva">Mandriva</a></h3> |
459 <h3><a name="mandriva">Mandriva</a></h3> |
459 <blockquote> |
460 <blockquote> |
460 <h4>Mandriva Linux One 2009 Spring</h4> |
461 <h4>Mandriva Linux One 2009 Spring</h4> |
461 <p> |
462 <p> |
462 <blockquote> |
463 <blockquote> |
463 After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring |
464 After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring |
464 you need to install several build dependencies. |
465 you need to install several build dependencies. |
465 The simplest way to install the build dependencies is to |
466 The simplest way to install the build dependencies is to |
466 execute the following commands as user <tt>root</tt>: |
467 execute the following commands as user <tt>root</tt>: |
467 <p/> |
468 <p/> |
468 <code>urpmi java-1.6.0-openjdk-devel ant make gcc gcc-c++ freetype-devel zip unzip libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel libxtst6-devel libxi-devel</code> |
469 <code>urpmi java-1.6.0-openjdk-devel ant make gcc gcc-c++ freetype-devel zip unzip libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel libxtst6-devel libxi-devel</code> |
469 <p/> |
470 <p/> |
470 In addition, it is necessary to set a few environment variables for the build: |
471 In addition, it is necessary to set a few environment variables for the build: |
471 <p/> |
472 <p/> |
472 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code> |
473 <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code> |
473 </blockquote> |
474 </blockquote> |
474 </blockquote> |
475 </blockquote> |
475 <!-- ====================================================== --> |
476 <!-- ====================================================== --> |
476 <h3><a name="opensolaris">OpenSolaris</a></h3> |
477 <h3><a name="opensolaris">OpenSolaris</a></h3> |
477 <blockquote> |
478 <blockquote> |
478 <h4>OpenSolaris 2009.06</h4> |
479 <h4>OpenSolaris 2009.06</h4> |
479 <p> |
480 <p> |
480 <blockquote> |
481 <blockquote> |
481 After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 |
482 After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 |
482 you need to install several build dependencies. |
483 you need to install several build dependencies. |
483 The simplest way to install the build dependencies is to |
484 The simplest way to install the build dependencies is to |
484 execute the following commands: |
485 execute the following commands: |
485 <p/> |
486 <p/> |
486 <code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code> |
487 <code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code> |
487 <p/> |
488 <p/> |
488 In addition, it is necessary to set a few environment variables for the build: |
489 In addition, it is necessary to set a few environment variables for the build: |
489 <p/> |
490 <p/> |
490 <code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code> |
491 <code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code> |
491 <p/> |
492 <p/> |
492 Finally, you need to make sure that the build process can find the Sun Studio compilers: |
493 Finally, you need to make sure that the build process can find the Sun Studio compilers: |
493 <p/> |
494 <p/> |
494 <code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code> |
495 <code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code> |
495 </blockquote> |
496 </blockquote> |
496 </blockquote> |
497 </blockquote> |
497 <!-- ------------------------------------------------------ --> |
498 <!-- ------------------------------------------------------ --> |
685 could be 3.80, you need 3.81, in which case, |
686 could be 3.80, you need 3.81, in which case, |
686 see the <a href="#buildgmake">"Building GNU make"</a> section. |
687 see the <a href="#buildgmake">"Building GNU make"</a> section. |
687 </li> |
688 </li> |
688 <li> |
689 <li> |
689 <strong>Windows:</strong> |
690 <strong>Windows:</strong> |
690 Make sure you start your build inside a bash/sh/ksh shell |
691 Make sure you start your build inside a bash/sh/ksh shell and are |
691 and are using a <tt>make.exe</tt> utility built for that |
692 using a <tt>make.exe</tt> utility built for that environment.<br/> |
692 environment (a cygwin <tt>make.exe</tt> is not the same |
693 <strong>MKS</strong> builds need a native Windows version of GNU make |
693 as a <tt>make.exe</tt> built for something like |
694 (see <a href="#buildgmake">Building GNU make</a>).<br/> |
694 <a href="http://www.mkssoftware.com/">MKS</a>). |
695 <strong>Cygwin</strong> builds need |
695 <br> |
696 a make version which was specially compiled for the Cygwin environment |
696 <b>WARNING:</b> Watch out on some make 3.81 versions, it may |
697 (see <a href="#buildgmake">Building GNU make</a>). <strong>WARNING:</strong> |
697 not work due to a lack of support for MS-DOS drive letter paths |
698 the OpenJDK build with the make utility provided by Cygwin will <strong>not</strong> |
698 like <tt>C:/</tt> or <tt>C:\</tt>. |
699 work because it does not support drive letters in paths. Make sure that |
699 <br> |
700 your version of make will be found before the Cygwins default make by |
700 You may be able to use the information at the |
701 setting an appropriate <tt>PATH</tt> environment variable or by removing |
701 <a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank"> |
702 Cygwin's make after you built your own make version.<br/> |
702 mozilla developer center</a> |
703 <strong>MinGW/MSYS</strong> builds can use the default make which |
703 on this topic. |
704 comes with the environment. |
704 <br> |
|
705 It's hoped that when make 3.82 starts shipping in a future cygwin |
|
706 release that this MS-DOS path issue will be fixed. |
|
707 <br> |
|
708 It may be possible to download the version at |
|
709 <a href="http://www.cmake.org/files/cygwin/make.exe"> |
|
710 www.cmake.org make.exe</a>. |
|
711 <br> |
|
712 It might be necessary for you to build your own GNU make 3.81, |
|
713 see the <a href="#buildgmake">"Building GNU make"</a> section |
|
714 in that case. |
|
715 </li> |
705 </li> |
716 </ul> |
706 </ul> |
717 <p> |
707 <p> |
718 Information on GNU make, and access to ftp download sites, are |
708 Information on GNU make, and access to ftp download sites, are |
719 available on the |
709 available on the |
892 </blockquote> |
894 </blockquote> |
893 <!-- ------------------------------------------------------ --> |
895 <!-- ------------------------------------------------------ --> |
894 <h4><a name="paths">Windows Paths</a></h4> |
896 <h4><a name="paths">Windows Paths</a></h4> |
895 <blockquote> |
897 <blockquote> |
896 <strong>Windows:</strong> |
898 <strong>Windows:</strong> |
897 Note that GNU make is a historic utility and is based very |
899 Note that GNU make, the shell and other Unix-tools required during the build |
898 heavily on shell scripting, so it does not tolerate the Windows habit |
900 do not tolerate the Windows habit |
899 of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames. |
901 of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames. |
900 Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and |
902 Luckily on most Windows systems, you can use <tt>/</tt>instead of <tt>\</tt>, and |
901 there is always a 'short' pathname without spaces for any path that |
903 there is always a short <a href="http://en.wikipedia.org/wiki/8.3_filename"> |
902 contains spaces. |
904 "8.3" pathname</a> without spaces for any path that contains spaces. |
903 Unfortunately, this short pathname can be somewhat dynamic and the |
905 Unfortunately, this short pathname is somewhat dynamic (i.e. dependant on the |
904 formula is difficult to explain. |
906 other files and directories inside a given directory) and can not be |
905 You can use <tt>cygpath</tt> utility to map pathnames with spaces |
907 algorithmicly calculated by only looking at a specific path name. |
906 or the <tt>\</tt>character into the <tt>C:/</tt> style of pathname |
|
907 (called 'mixed'), e.g. |
|
908 <tt>cygpath -s -m "<i>path</i>"</tt>. |
|
909 <p> |
908 <p> |
910 The makefiles will try to translate any pathnames supplied |
909 The makefiles will try to translate any pathnames supplied |
911 to it into the <tt>C:/</tt> style automatically. |
910 to it into the <tt>C:/</tt> style automatically. |
912 <p> |
911 </p> |
913 Note that use of CYGWIN creates a unique problem with regards to |
912 <p> |
|
913 Special care has to be taken if native Windows applications |
|
914 like <tt>nmake</tt> or <tt>cl</tt> are called with file arguments processed |
|
915 by Unix-tools like <tt>make</tt> or <tt>sh</tt>! |
|
916 </p> |
|
917 </blockquote> |
|
918 <!-- ------------------------------------------------------ --> |
|
919 <h4><a name="paths">Windows build environments</a></h4> |
|
920 <blockquote> |
|
921 Building on Windows requires a Unix-like environment, notably a Unix-like shell. |
|
922 There are several such environments available of which |
|
923 <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a>, |
|
924 <a href="http://www.cygwin.com/">Cygwin</a> and |
|
925 <a href="http://www.mingw.org/wiki/MSYS">MinGW/MSYS</a> are currently supported for |
|
926 the OpenJDK build. One of the differences of these three systems is the way |
|
927 they handle Windows path names, particularly path names which contain |
|
928 spaces, backslashes as path separators and possibly drive letters. Depending |
|
929 on the use case and the specifics of each environment these path problems can |
|
930 be solved by a combination of quoting whole paths, translating backslashes to |
|
931 forward slashes, escaping backslashes with additional backslashes and |
|
932 translating the path names to their <a href="http://en.wikipedia.org/wiki/8.3_filename"> |
|
933 "8.3" version</a>. |
|
934 <p> |
|
935 As of this writing (MKS ver. 9.4, Cygwin ver. 1.7.9, MinGW/MSYS 1.0.17), |
|
936 MKS builds are known to be the fastest Windows builds while MingGW/MSYS |
|
937 builds are slightly slower (about 10%) than MKS builds and Cygwin builds |
|
938 require nearly twice the time (about 180%) of MKS builds (e.g. on a |
|
939 DualCore i7 notebook with 8GB of RAM, HDD and 64-bit Windows 7 operating system |
|
940 the complete OpenJDK 8 product build takes about 49min with MKS, 54min with |
|
941 MinGW/MSYS and 88min with Cygwin). |
|
942 </p> |
|
943 <p> |
|
944 Mixing tools from the different Unix emulation environments is not a good |
|
945 idea and will probably not work! |
|
946 </p> |
|
947 <p> |
|
948 <strong>MKS:</strong> is a commercial product which includes |
|
949 all the Unix utilities which are required to build the OpenJDK except GNU |
|
950 make. In pre-OpenJDK times it was the only supported build environment on |
|
951 Windows. The MKS tools support Windows paths with drive letters and |
|
952 forward slashes as path separator. Paths in environment variables like (for |
|
953 example) <tt>PATH</tt> are separated by semicolon '<tt>;</tt>'. |
|
954 </p> |
|
955 <p> |
|
956 Recent versions of MKS provide the <tt>dosname</tt> utility to convert paths |
|
957 with spaces to short (8.3) path names,e .g. |
|
958 <tt>dosname -s "<i>path</i>"</tt>. |
|
959 </p> |
|
960 <p> |
|
961 If you are using the MKS environment, you need a native Windows version |
|
962 of Gnu make <a href="#buildgmake">which you can easily build yourself</a>. |
|
963 </p> |
|
964 <p> |
|
965 <strong>Cygwin:</strong> |
|
966 is an open source, Linux-like environment which tries to emulate |
|
967 a complete POSIX layer on Windows. It tries to be smart about path names |
|
968 and can usually handle all kinds of paths if they are correctly quoted |
|
969 or escaped although internally it maps drive letters <tt><drive>:</tt> |
|
970 to a virtual directory <tt>/cygdrive/<drive></tt>. |
|
971 </p> |
|
972 <p> |
|
973 You can always use the <tt>cygpath</tt> utility to map pathnames with spaces |
|
974 or the backslash character into the <tt>C:/</tt> style of pathname |
|
975 (called 'mixed'), e.g. <tt>cygpath -s -m "<i>path</i>"</tt>. |
|
976 </p> |
|
977 <p> |
|
978 Note that the use of CYGWIN creates a unique problem with regards to |
914 setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows |
979 setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows |
915 the <tt>PATH</tt> variable contains directories |
980 the <tt>PATH</tt> variable contains directories |
916 separated with the ";" character (Solaris and Linux uses ":"). |
981 separated with the ";" character (Solaris and Linux use ":"). |
917 With CYGWIN, it uses ":", but that means that paths like "C:/path" |
982 With CYGWIN, it uses ":", but that means that paths like "C:/path" |
918 cannot be placed in the CYGWIN version of <tt>PATH</tt> and |
983 cannot be placed in the CYGWIN version of <tt>PATH</tt> and |
919 instead CYGWIN uses something like <tt>/cygdrive/c/path</tt> |
984 instead CYGWIN uses something like <tt>/cygdrive/c/path</tt> |
920 which CYGWIN understands, but only CYGWIN understands. |
985 which CYGWIN understands, but only CYGWIN understands. |
921 So be careful with paths on Windows. |
986 </p> |
|
987 <p> |
|
988 If you are using the Cygwin environment, you need to |
|
989 <a href="#buildgmake">compile your own version</a> |
|
990 of GNU make because the default Cygwin make can not handle drive letters in paths. |
|
991 </p> |
|
992 <p> |
|
993 <strong>MinGW/MSYS:</strong> |
|
994 MinGW ("Minimalist GNU for Windows") is a collection of free Windows |
|
995 specific header files and import libraries combined with GNU toolsets that |
|
996 allow one to produce native Windows programs that do not rely on any |
|
997 3rd-party C runtime DLLs. MSYS is a supplement to MinGW which allows building |
|
998 applications and programs which rely on traditional UNIX tools to |
|
999 be present. Among others this includes tools like <tt>bash</tt> and <tt>make</tt>. |
|
1000 </p> |
|
1001 <p> |
|
1002 Like Cygwin, MinGW/MSYS can handle different types of path formats. They |
|
1003 are internally converted to paths with forward slashes and drive letters |
|
1004 <tt><drive>:</tt> replaced by a virtual |
|
1005 directory <tt>/<drive></tt>. Additionally, MSYS automatically |
|
1006 detects binaries compiled for the MSYS environment and feeds them with the |
|
1007 internal, Unix-style path names. If native Windows applications are called |
|
1008 from within MSYS programs their path arguments are automatically converted |
|
1009 back to Windows style path names with drive letters and backslashes as |
|
1010 path separators. This may cause problems for Windows applications which |
|
1011 use forward slashes as parameter separator (e.g. <tt>cl /nologo /I</tt>) |
|
1012 because MSYS may wrongly <a href="http://mingw.org/wiki/Posix_path_conversion"> |
|
1013 replace such parameters by drive letters</a>. |
|
1014 </p> |
|
1015 <p> |
|
1016 If you are using the MinGW/MSYS system you can use the default make |
|
1017 version supplied by the environment. |
|
1018 </p> |
922 </blockquote> |
1019 </blockquote> |
923 <!-- ------------------------------------------------------ --> |
1020 <!-- ------------------------------------------------------ --> |
924 <h4><a name="windows_checklist">Basic Windows Check List</a></h4> |
1021 <h4><a name="windows_checklist">Basic Windows Check List</a></h4> |
925 <blockquote> |
1022 <blockquote> |
926 <ol> |
1023 <ol> |
927 <li> |
1024 <li> |
928 Install the |
1025 Install one of the |
929 <a href="#cygwin">CYGWIN product</a>. |
1026 <a href="#cygwin">CYGWIN</a>, <a href="#msys">MinGW/MSYS</a> or |
|
1027 <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a> environments. |
930 </li> |
1028 </li> |
931 <li> |
1029 <li> |
932 Install the |
1030 Install the |
933 <a href="#bootjdk">Bootstrap JDK</a>, set |
1031 <a href="#bootjdk">Bootstrap JDK</a>, set |
934 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>. |
1032 <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>. |
1821 Set to the target architecture of a cross-compilation build. If set, this |
1937 Set to the target architecture of a cross-compilation build. If set, this |
1822 variable is used to signify that we are cross-compiling. The expectation |
1938 variable is used to signify that we are cross-compiling. The expectation |
1823 is that <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> is set |
1939 is that <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> is set |
1824 to point to the cross-compiler and that any cross-compilation specific flags |
1940 to point to the cross-compiler and that any cross-compilation specific flags |
1825 are passed using <a href="#EXTRA_CFLAGS"><tt>EXTRA_CFLAGS</tt></a>. |
1941 are passed using <a href="#EXTRA_CFLAGS"><tt>EXTRA_CFLAGS</tt></a>. |
1826 The <a href="#ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a> variable should |
1942 The <a href="#ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a> variable should |
1827 also be set to point to the graphical header files (e.g. X11) provided with |
1943 also be set to point to the graphical header files (e.g. X11) provided with |
1828 the cross-compiler. |
1944 the cross-compiler. |
1829 When cross-compiling we skip execution of any demos etc that may be built, and |
1945 When cross-compiling we skip execution of any demos etc that may be built, and |
1830 also skip binary-file verification. |
1946 also skip binary-file verification. |
1831 </dd> |
1947 </dd> |
1832 <dt><tt><a name="EXTRA_CFLAGS">EXTRA_CFLAGS</a></tt> </dt> |
1948 <dt><tt><a name="EXTRA_CFLAGS">EXTRA_CFLAGS</a></tt> </dt> |
1833 <dd> |
1949 <dd> |
1834 Used to pass cross-compilation options to the cross-compiler. |
1950 Used to pass cross-compilation options to the cross-compiler. |
1835 These are added to the <tt>CFLAGS</tt> and <tt>CXXFLAGS</tt> variables. |
1951 These are added to the <tt>CFLAGS</tt> and <tt>CXXFLAGS</tt> variables. |
1836 </dd> |
1952 </dd> |
1837 <dt><tt><a name="USE_ONLY_BOOTDIR_TOOLS">USE_ONLY_BOOTDIR_TOOLS</a></tt> </dt> |
1953 <dt><tt><a name="USE_ONLY_BOOTDIR_TOOLS">USE_ONLY_BOOTDIR_TOOLS</a></tt> </dt> |
1838 <dd> |
1954 <dd> |
1839 Used primarily for cross-compilation builds (and always set in that case) |
1955 Used primarily for cross-compilation builds (and always set in that case) |
1840 this variable indicates that tools from the boot JDK should be used during |
1956 this variable indicates that tools from the boot JDK should be used during |
1841 the build process, not the tools (<tt>javac</tt>, <tt>javah</tt>, <tt>jar</tt>) |
1957 the build process, not the tools (<tt>javac</tt>, <tt>javah</tt>, <tt>jar</tt>) |