common/doc/building.md
author lana
Tue, 23 May 2017 21:11:50 +0000
changeset 45172 d3abea22bab3
parent 44078 673240c54c2e
child 45763 2a2e56f4c03b
permissions -rw-r--r--
Added tag jdk-10+7 for changeset f5053ff33fd4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
     1
% OpenJDK Build README
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
     2
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
     3
![OpenJDK](http://openjdk.java.net/images/openjdk.png)
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
     4
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
     5
--------------------------------------------------------------------------------
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
     6
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
     7
## Introduction
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
     8
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
     9
This README file contains build instructions for the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    10
[OpenJDK](http://openjdk.java.net). Building the source code for the OpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    11
requires a certain degree of technical expertise.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    12
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    13
### !!!!!!!!!!!!!!! THIS IS A MAJOR RE-WRITE of this document. !!!!!!!!!!!!!
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    14
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    15
Some Headlines:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    16
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    17
 * The build is now a "`configure && make`" style build
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    18
 * Any GNU make 3.81 or newer should work, except on Windows where 4.0 or newer
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    19
   is recommended.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    20
 * The build should scale, i.e. more processors should cause the build to be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    21
   done in less wall-clock time
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    22
 * Nested or recursive make invocations have been significantly reduced, as
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    23
   has the total fork/exec or spawning of sub processes during the build
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    24
 * Windows MKS usage is no longer supported
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    25
 * Windows Visual Studio `vsvars*.bat` and `vcvars*.bat` files are run
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    26
   automatically
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    27
 * Ant is no longer used when building the OpenJDK
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    28
 * Use of ALT\_\* environment variables for configuring the build is no longer
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    29
   supported
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    30
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    31
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    32
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    33
## Contents
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    34
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    35
  * [Introduction](#introduction)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    36
  * [Use of Mercurial](#hg)
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    37
      * [Getting the Source](#get_source)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    38
      * [Repositories](#repositories)
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    39
  * [Building](#building)
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    40
      * [System Setup](#setup)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    41
          * [Linux](#linux)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    42
          * [Solaris](#solaris)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    43
          * [Mac OS X](#macosx)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    44
          * [Windows](#windows)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    45
      * [Configure](#configure)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    46
      * [Make](#make)
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    47
  * [Testing](#testing)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    48
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    49
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    50
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    51
  * [Appendix A: Hints and Tips](#hints)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    52
    * [FAQ](#faq)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    53
    * [Build Performance Tips](#performance)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    54
    * [Troubleshooting](#troubleshooting)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    55
  * [Appendix B: GNU Make Information](#gmake)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    56
  * [Appendix C: Build Environments](#buildenvironments)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    57
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    58
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    59
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    60
## Use of Mercurial
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    61
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    62
The OpenJDK sources are maintained with the revision control system
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    63
[Mercurial](http://mercurial.selenic.com/wiki/Mercurial). If you are new to
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    64
Mercurial, please see the [Beginner
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    65
Guides](http://mercurial.selenic.com/wiki/BeginnersGuides) or refer to the
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    66
[Mercurial Book](http://hgbook.red-bean.com/). The first few chapters of the
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    67
book provide an excellent overview of Mercurial, what it is and how it works.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    68
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    69
For using Mercurial with the OpenJDK refer to the [Developer Guide: Installing
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    70
and Configuring
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    71
Mercurial](http://openjdk.java.net/guide/repositories.html#installConfig)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    72
section for more information.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    73
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    74
### Getting the Source
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    75
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    76
To get the entire set of OpenJDK Mercurial repositories use the script
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    77
`get_source.sh` located in the root repository:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    78
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    79
      hg clone http://hg.openjdk.java.net/jdk9/jdk9 YourOpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    80
      cd YourOpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    81
      bash ./get_source.sh
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    82
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    83
Once you have all the repositories, keep in mind that each repository is its
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    84
own independent repository. You can also re-run `./get_source.sh` anytime to
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    85
pull over all the latest changesets in all the repositories. This set of nested
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    86
repositories has been given the term "forest" and there are various ways to
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    87
apply the same `hg` command to each of the repositories. For example, the
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    88
script `make/scripts/hgforest.sh` can be used to repeat the same `hg` command
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
    89
on every repository, e.g.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    90
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    91
      cd YourOpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    92
      bash ./make/scripts/hgforest.sh status
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    93
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    94
### Repositories
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    95
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    96
The set of repositories and what they contain:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    97
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    98
 * **. (root)** contains common configure and makefile logic
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
    99
 * **hotspot** contains source code and make files for building the OpenJDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   100
   Hotspot Virtual Machine
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   101
 * **langtools** contains source code for the OpenJDK javac and language tools
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   102
 * **jdk** contains source code and make files for building the OpenJDK runtime
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   103
   libraries and misc files
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   104
 * **jaxp** contains source code for the OpenJDK JAXP functionality
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   105
 * **jaxws** contains source code for the OpenJDK JAX-WS functionality
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   106
 * **corba** contains source code for the OpenJDK Corba functionality
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   107
 * **nashorn** contains source code for the OpenJDK JavaScript implementation
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   108
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   109
### Repository Source Guidelines
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   110
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   111
There are some very basic guidelines:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   112
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   113
 * Use of whitespace in source files (.java, .c, .h, .cpp, and .hpp files) is
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   114
   restricted. No TABs, no trailing whitespace on lines, and files should not
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   115
   terminate in more than one blank line.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   116
 * Files with execute permissions should not be added to the source
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   117
   repositories.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   118
 * All generated files need to be kept isolated from the files maintained or
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   119
   managed by the source control system. The standard area for generated files
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   120
   is the top level `build/` directory.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   121
 * The default build process should be to build the product and nothing else,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   122
   in one form, e.g. a product (optimized), debug (non-optimized, -g plus
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   123
   assert logic), or fastdebug (optimized, -g plus assert logic).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   124
 * The `.hgignore` file in each repository must exist and should include
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   125
   `^build/`, `^dist/` and optionally any `nbproject/private` directories. **It
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   126
   should NEVER** include anything in the `src/` or `test/` or any managed
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   127
   directory area of a repository.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   128
 * Directory names and file names should never contain blanks or non-printing
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   129
   characters.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   130
 * Generated source or binary files should NEVER be added to the repository
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   131
   (that includes `javah` output). There are some exceptions to this rule, in
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   132
   particular with some of the generated configure scripts.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   133
 * Files not needed for typical building or testing of the repository should
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   134
   not be added to the repository.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   135
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   136
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   137
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   138
## Building
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   139
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   140
The very first step in building the OpenJDK is making sure the system itself
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   141
has everything it needs to do OpenJDK builds. Once a system is setup, it
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   142
generally doesn't need to be done again.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   143
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   144
Building the OpenJDK is now done with running a `configure` script which will
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   145
try and find and verify you have everything you need, followed by running
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   146
`make`, e.g.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   147
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   148
>  **`bash ./configure`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   149
>  **`make all`**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   150
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   151
Where possible the `configure` script will attempt to located the various
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   152
components in the default locations or via component specific variable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   153
settings. When the normal defaults fail or components cannot be found,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   154
additional `configure` options may be necessary to help `configure` find the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   155
necessary tools for the build, or you may need to re-visit the setup of your
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   156
system due to missing software packages.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   157
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   158
**NOTE:** The `configure` script file does not have execute permissions and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   159
will need to be explicitly run with `bash`, see the source guidelines.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   160
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   161
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   162
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   163
### System Setup
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   164
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   165
Before even attempting to use a system to build the OpenJDK there are some very
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   166
basic system setups needed. For all systems:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   167
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   168
 * Be sure the GNU make utility is version 3.81 (4.0 on windows) or newer, e.g.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   169
   run "`make -version`"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   170
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   171
   <a name="bootjdk"></a>
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   172
 * Install a Bootstrap JDK. All OpenJDK builds require access to a previously
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   173
   released JDK called the *bootstrap JDK* or *boot JDK.* The general rule is
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   174
   that the bootstrap JDK must be an instance of the previous major release of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   175
   the JDK. In addition, there may be a requirement to use a release at or
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   176
   beyond a particular update level.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   177
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   178
   ***Building JDK 9 requires JDK 8. JDK 9 developers should not use JDK 9 as
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   179
   the boot JDK, to ensure that JDK 9 dependencies are not introduced into the
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   180
   parts of the system that are built with JDK 8.***
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   181
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   182
   The JDK 8 binaries can be downloaded from Oracle's [JDK 8 download
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   183
   site](http://www.oracle.com/technetwork/java/javase/downloads/index.html).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   184
   For build performance reasons it is very important that this bootstrap JDK
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   185
   be made available on the local disk of the machine doing the build. You
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   186
   should add its `bin` directory to the `PATH` environment variable. If
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   187
   `configure` has any issues finding this JDK, you may need to use the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   188
   `configure` option `--with-boot-jdk`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   189
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   190
 * Ensure that GNU make, the Bootstrap JDK, and the compilers are all in your
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   191
   PATH environment variable.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   192
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   193
And for specific systems:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   194
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   195
 * **Linux**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   196
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   197
   Install all the software development packages needed including
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   198
   [alsa](#alsa), [freetype](#freetype), [cups](#cups), and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   199
   [xrender](#xrender). See [specific system packages](#SDBE).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   200
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   201
 * **Solaris**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   202
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   203
   Install all the software development packages needed including [Studio
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   204
   Compilers](#studio), [freetype](#freetype), [cups](#cups), and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   205
   [xrender](#xrender). See [specific system packages](#SDBE).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   206
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   207
 * **Windows**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   208
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   209
   * Install one of [CYGWIN](#cygwin) or [MinGW/MSYS](#msys)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   210
   * Install [Visual Studio 2013](#vs2013)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   211
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   212
 * **Mac OS X**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   213
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   214
   Install [XCode 6.3](https://developer.apple.com/xcode/)
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   215
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   216
#### Linux
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   217
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   218
With Linux, try and favor the system packages over building your own or getting
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   219
packages from other areas. Most Linux builds should be possible with the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   220
system's available packages.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   221
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   222
Note that some Linux systems have a habit of pre-populating your environment
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   223
variables for you, for example `JAVA_HOME` might get pre-defined for you to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   224
refer to the JDK installed on your Linux system. You will need to unset
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   225
`JAVA_HOME`. It's a good idea to run `env` and verify the environment variables
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   226
you are getting from the default system settings make sense for building the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   227
OpenJDK.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   228
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   229
#### Solaris
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   230
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   231
##### Studio Compilers
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   232
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   233
At a minimum, the [Studio 12 Update 4
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   234
Compilers](http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   235
(containing version 5.13 of the C and C++ compilers) is required, including
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   236
specific patches.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   237
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   238
The Solaris Studio installation should contain at least these packages:
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   239
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   240
  Package                                            Version
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   241
  -------------------------------------------------- ---------------
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   242
  developer/solarisstudio-124/backend                12.4-1.0.6.0
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   243
  developer/solarisstudio-124/c++                    12.4-1.0.10.0
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   244
  developer/solarisstudio-124/cc                     12.4-1.0.4.0
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   245
  developer/solarisstudio-124/library/c++-libs       12.4-1.0.10.0
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   246
  developer/solarisstudio-124/library/math-libs      12.4-1.0.0.1
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   247
  developer/solarisstudio-124/library/studio-gccrt   12.4-1.0.0.1
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   248
  developer/solarisstudio-124/studio-common          12.4-1.0.0.1
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   249
  developer/solarisstudio-124/studio-ja              12.4-1.0.0.1
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   250
  developer/solarisstudio-124/studio-legal           12.4-1.0.0.1
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   251
  developer/solarisstudio-124/studio-zhCN            12.4-1.0.0.1
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   252
34595
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   253
In particular backend 12.4-1.0.6.0 contains a critical patch for the sparc
09596fe63e2d 8145391: Updated jprt.properties, devtools, jib and readme with SS12u4
erikj
parents: 33030
diff changeset
   254
version.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   255
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   256
Place the `bin` directory in `PATH`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   257
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   258
The Oracle Solaris Studio Express compilers at: [Oracle Solaris Studio Express
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   259
Download
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   260
site](http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index-jsp-142582.html)
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   261
are also an option, although these compilers have not been extensively used
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   262
yet.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   263
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   264
#### Windows
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   265
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   266
##### Windows Unix Toolkit
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   267
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   268
Building on Windows requires a Unix-like environment, notably a Unix-like
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   269
shell. There are several such environments available of which
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   270
[Cygwin](http://www.cygwin.com/) and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   271
[MinGW/MSYS](http://www.mingw.org/wiki/MSYS) are currently supported for the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   272
OpenJDK build. One of the differences of these systems from standard Windows
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   273
tools is the way they handle Windows path names, particularly path names which
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   274
contain spaces, backslashes as path separators and possibly drive letters.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   275
Depending on the use case and the specifics of each environment these path
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   276
problems can be solved by a combination of quoting whole paths, translating
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   277
backslashes to forward slashes, escaping backslashes with additional
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   278
backslashes and translating the path names to their ["8.3"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   279
version](http://en.wikipedia.org/wiki/8.3_filename).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   280
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   281
###### CYGWIN
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   282
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   283
CYGWIN is an open source, Linux-like environment which tries to emulate a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   284
complete POSIX layer on Windows. It tries to be smart about path names and can
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   285
usually handle all kinds of paths if they are correctly quoted or escaped
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   286
although internally it maps drive letters `<drive>:` to a virtual directory
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   287
`/cygdrive/<drive>`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   288
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   289
You can always use the `cygpath` utility to map pathnames with spaces or the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   290
backslash character into the `C:/` style of pathname (called 'mixed'), e.g.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   291
`cygpath -s -m "<path>"`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   292
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   293
Note that the use of CYGWIN creates a unique problem with regards to setting
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   294
[`PATH`](#path). Normally on Windows the `PATH` variable contains directories
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   295
separated with the ";" character (Solaris and Linux use ":"). With CYGWIN, it
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   296
uses ":", but that means that paths like "C:/path" cannot be placed in the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   297
CYGWIN version of `PATH` and instead CYGWIN uses something like
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   298
`/cygdrive/c/path` which CYGWIN understands, but only CYGWIN understands.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   299
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   300
The OpenJDK build requires CYGWIN version 1.7.16 or newer. Information about
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   301
CYGWIN can be obtained from the CYGWIN website at
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   302
[www.cygwin.com](http://www.cygwin.com).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   303
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   304
By default CYGWIN doesn't install all the tools required for building the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   305
OpenJDK. Along with the default installation, you need to install the following
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   306
tools.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   307
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   308
  Binary Name   Category       Package    Description
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   309
  ------------- -------------- ---------- ------------------------------------------------------------
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   310
  ar.exe        Devel          binutils   The GNU assembler, linker and binary utilities
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   311
  make.exe      Devel          make       The GNU version of the 'make' utility built for CYGWIN
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   312
  m4.exe        Interpreters   m4         GNU implementation of the traditional Unix macro processor
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   313
  cpio.exe      Utils          cpio       A program to manage archives of files
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   314
  gawk.exe      Utils          awk        Pattern-directed scanning and processing language
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   315
  file.exe      Utils          file       Determines file type using 'magic' numbers
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   316
  zip.exe       Archive        zip        Package and compress (archive) files
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   317
  unzip.exe     Archive        unzip      Extract compressed files in a ZIP archive
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   318
  free.exe      System         procps     Display amount of free and used memory in the system
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   319
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   320
Note that the CYGWIN software can conflict with other non-CYGWIN software on
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   321
your Windows system. CYGWIN provides a
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   322
[FAQ](http://cygwin.com/faq/faq.using.html) for known issues and problems,
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   323
of particular interest is the section on [BLODA (applications that interfere
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   324
with CYGWIN)](http://cygwin.com/faq/faq.using.html#faq.using.bloda).
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   325
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   326
###### MinGW/MSYS
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   327
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   328
MinGW ("Minimalist GNU for Windows") is a collection of free Windows specific
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   329
header files and import libraries combined with GNU toolsets that allow one to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   330
produce native Windows programs that do not rely on any 3rd-party C runtime
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   331
DLLs. MSYS is a supplement to MinGW which allows building applications and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   332
programs which rely on traditional UNIX tools to be present. Among others this
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   333
includes tools like `bash` and `make`. See
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   334
[MinGW/MSYS](http://www.mingw.org/wiki/MSYS) for more information.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   335
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   336
Like Cygwin, MinGW/MSYS can handle different types of path formats. They are
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   337
internally converted to paths with forward slashes and drive letters `<drive>:`
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   338
replaced by a virtual directory `/<drive>`. Additionally, MSYS automatically
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   339
detects binaries compiled for the MSYS environment and feeds them with the
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   340
internal, Unix-style path names. If native Windows applications are called from
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   341
within MSYS programs their path arguments are automatically converted back to
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   342
Windows style path names with drive letters and backslashes as path separators.
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   343
This may cause problems for Windows applications which use forward slashes as
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   344
parameter separator (e.g. `cl /nologo /I`) because MSYS may wrongly [replace
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   345
such parameters by drive
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   346
letters](http://mingw.org/wiki/Posix_path_conversion).
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   347
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   348
In addition to the tools which will be installed by default, you have to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   349
manually install the `msys-zip` and `msys-unzip` packages. This can be easily
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   350
done with the MinGW command line installer:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   351
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   352
      mingw-get.exe install msys-zip
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   353
      mingw-get.exe install msys-unzip
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   354
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   355
##### Visual Studio 2013 Compilers
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   356
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   357
The 32-bit and 64-bit OpenJDK Windows build requires Microsoft Visual Studio
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   358
C++ 2013 (VS2013) Professional Edition or Express compiler. The compiler and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   359
other tools are expected to reside in the location defined by the variable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   360
`VS120COMNTOOLS` which is set by the Microsoft Visual Studio installer.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   361
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   362
Only the C++ part of VS2013 is needed. Try to let the installation go to the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   363
default install directory. Always reboot your system after installing VS2013.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   364
The system environment variable VS120COMNTOOLS should be set in your
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   365
environment.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   366
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   367
Make sure that TMP and TEMP are also set in the environment and refer to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   368
Windows paths that exist, like `C:\temp`, not `/tmp`, not `/cygdrive/c/temp`,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   369
and not `C:/temp`. `C:\temp` is just an example, it is assumed that this area
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   370
is private to the user, so by default after installs you should see a unique
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   371
user path in these variables.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   372
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   373
#### Mac OS X
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   374
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   375
Make sure you get the right XCode version.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   376
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   377
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   378
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   379
### Configure
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   380
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   381
The basic invocation of the `configure` script looks like:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   382
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   383
>  **`bash ./configure [options]`**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   384
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   385
This will create an output directory containing the "configuration" and setup
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   386
an area for the build result. This directory typically looks like:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   387
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   388
>  **`build/linux-x64-normal-server-release`**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   389
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   390
`configure` will try to figure out what system you are running on and where all
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   391
necessary build components are. If you have all prerequisites for building
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   392
installed, it should find everything. If it fails to detect any component
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   393
automatically, it will exit and inform you about the problem. When this
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   394
happens, read more below in [the `configure` options](#configureoptions).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   395
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   396
Some examples:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   397
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   398
>  **Windows 32bit build with freetype specified:** \
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   399
>  `bash ./configure --with-freetype=/cygdrive/c/freetype-i586 --with-target-bits=32`
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   400
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   401
>  **Debug 64bit Build:** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   402
>  `bash ./configure --enable-debug --with-target-bits=64`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   403
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   404
#### Configure Options
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   405
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   406
Complete details on all the OpenJDK `configure` options can be seen with:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   407
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   408
>  **`bash ./configure --help=short`**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   409
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   410
Use `-help` to see all the `configure` options available. You can generate any
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   411
number of different configurations, e.g. debug, release, 32, 64, etc.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   412
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   413
Some of the more commonly used `configure` options are:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   414
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   415
>  **`--enable-debug`** \
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   416
>  set the debug level to fastdebug (this is a shorthand for 
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   417
>  `--with-debug-level=fastdebug`)
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   418
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   419
<a name="alsa"></a>
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   420
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   421
>  **`--with-alsa=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   422
>  select the location of the Advanced Linux Sound Architecture (ALSA)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   423
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   424
>  Version 0.9.1 or newer of the ALSA files are required for building the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   425
   OpenJDK on Linux. These Linux files are usually available from an "alsa" of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   426
   "libasound" development package, and it's highly recommended that you try
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   427
   and use the package provided by the particular version of Linux that you are
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   428
   using.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   429
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   430
>  **`--with-boot-jdk=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   431
>  select the [Bootstrap JDK](#bootjdk)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   432
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   433
>  **`--with-boot-jdk-jvmargs=`**"_args_" \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   434
>  provide the JVM options to be used to run the [Bootstrap JDK](#bootjdk)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   435
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   436
>  **`--with-cacerts=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   437
>  select the path to the cacerts file.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   438
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   439
>  See [Certificate Authority on
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   440
   Wikipedia](http://en.wikipedia.org/wiki/Certificate_Authority) for a
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   441
   better understanding of the Certificate Authority (CA). A certificates file
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   442
   named "cacerts" represents a system-wide keystore with CA certificates. In
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   443
   JDK and JRE binary bundles, the "cacerts" file contains root CA certificates
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   444
   from several public CAs (e.g., VeriSign, Thawte, and Baltimore). The source
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   445
   contain a cacerts file without CA root certificates. Formal JDK builders will
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   446
   need to secure permission from each public CA and include the certificates
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   447
   into their own custom cacerts file. Failure to provide a populated cacerts
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   448
   file will result in verification errors of a certificate chain during
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   449
   runtime. By default an empty cacerts file is provided and that should be fine
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   450
   for most JDK developers.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   451
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   452
<a name="cups"></a>
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   453
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   454
>  **`--with-cups=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   455
>  select the CUPS install location
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   456
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   457
>  The Common UNIX Printing System (CUPS) Headers are required for building the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   458
   OpenJDK on Solaris and Linux. The Solaris header files can be obtained by
41039
54596b00162b 8165163: Solaris11 and onwards provide CUPS by default, references to csw and sfw versions should be removed
alanbur
parents: 34595
diff changeset
   459
   installing the package **print/cups**.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   460
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   461
>  The CUPS header files can always be downloaded from
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   462
   [www.cups.org](http://www.cups.org).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   463
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   464
>  **`--with-cups-include=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   465
>  select the CUPS include directory location
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   466
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   467
>  **`--with-debug-level=`**_level_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   468
>  select the debug information level of release, fastdebug, or slowdebug
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   469
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   470
>  **`--with-dev-kit=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   471
>  select location of the compiler install or developer install location
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   472
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   473
<a name="freetype"></a>
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   474
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   475
>  **`--with-freetype=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   476
>  select the freetype files to use.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   477
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   478
>  Expecting the freetype libraries under `lib/` and the headers under
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   479
   `include/`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   480
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   481
>  Version 2.3 or newer of FreeType is required. On Unix systems required files
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   482
   can be available as part of your distribution (while you still may need to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   483
   upgrade them). Note that you need development version of package that
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   484
   includes both the FreeType library and header files.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   485
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   486
>  You can always download latest FreeType version from the [FreeType
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   487
   website](http://www.freetype.org). Building the freetype 2 libraries from
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   488
   scratch is also possible, however on Windows refer to the [Windows FreeType
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   489
   DLL build instructions](http://freetype.freedesktop.org/wiki/FreeType_DLL).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   490
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   491
>  Note that by default FreeType is built with byte code hinting support
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   492
   disabled due to licensing restrictions. In this case, text appearance and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   493
   metrics are expected to differ from Sun's official JDK build. See the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   494
   [SourceForge FreeType2 Home Page](http://freetype.sourceforge.net/freetype2)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   495
   for more information.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   496
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   497
>  **`--with-import-hotspot=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   498
>  select the location to find hotspot binaries from a previous build to avoid
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   499
   building hotspot
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   500
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   501
>  **`--with-target-bits=`**_arg_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   502
>  select 32 or 64 bit build
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   503
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   504
>  **`--with-jvm-variants=`**_variants_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   505
>  select the JVM variants to build from, comma separated list that can
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   506
   include: server, client, kernel, zero and zeroshark
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   507
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   508
>  **`--with-memory-size=`**_size_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   509
>  select the RAM size that GNU make will think this system has
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   510
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   511
>  **`--with-msvcr-dll=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   512
>  select the `msvcr100.dll` file to include in the Windows builds (C/C++
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   513
   runtime library for Visual Studio).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   514
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   515
>  This is usually picked up automatically from the redist directories of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   516
   Visual Studio 2013.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   517
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   518
>  **`--with-num-cores=`**_cores_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   519
>  select the number of cores to use (processor count or CPU count)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   520
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   521
<a name="xrender"></a>
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   522
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   523
>  **`--with-x=`**_path_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   524
>  select the location of the X11 and xrender files.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   525
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   526
>  The XRender Extension Headers are required for building the OpenJDK on
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   527
   Solaris and Linux. The Linux header files are usually available from a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   528
   "Xrender" development package, it's recommended that you try and use the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   529
   package provided by the particular distribution of Linux that you are using.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   530
   The Solaris XRender header files is included with the other X11 header files
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   531
   in the package **SFWxwinc** on new enough versions of Solaris and will be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   532
   installed in `/usr/X11/include/X11/extensions/Xrender.h` or
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   533
   `/usr/openwin/share/include/X11/extensions/Xrender.h`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   534
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   535
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   536
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   537
### Make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   538
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   539
The basic invocation of the `make` utility looks like:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   540
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   541
>  **`make all`**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   542
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   543
This will start the build to the output directory containing the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   544
"configuration" that was created by the `configure` script. Run `make help` for
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   545
more information on the available targets.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   546
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   547
There are some of the make targets that are of general interest:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   548
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   549
>  _empty_ \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   550
>  build everything but no images
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   551
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   552
>  **`all`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   553
>  build everything including images
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   554
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   555
>  **`all-conf`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   556
>  build all configurations
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   557
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   558
>  **`images`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   559
>  create complete j2sdk and j2re images
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   560
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   561
>  **`install`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   562
>  install the generated images locally, typically in `/usr/local`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   563
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   564
>  **`clean`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   565
>  remove all files generated by make, but not those generated by `configure`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   566
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   567
>  **`dist-clean`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   568
>  remove all files generated by both and `configure` (basically killing the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   569
   configuration)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   570
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   571
>  **`help`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   572
>  give some help on using `make`, including some interesting make targets
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   573
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   574
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   575
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   576
## Testing
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   577
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   578
When the build is completed, you should see the generated binaries and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   579
associated files in the `j2sdk-image` directory in the output directory. In
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   580
particular, the `build/*/images/j2sdk-image/bin` directory should contain
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   581
executables for the OpenJDK tools and utilities for that configuration. The
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   582
testing tool `jtreg` will be needed and can be found at: [the jtreg
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   583
site](http://openjdk.java.net/jtreg/). The provided regression tests in the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   584
repositories can be run with the command:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   585
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   586
>  **``cd test && make PRODUCT_HOME=`pwd`/../build/*/images/j2sdk-image all``**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   587
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   588
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   589
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   590
## Appendix A: Hints and Tips
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   591
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   592
### FAQ
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   593
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   594
**Q:** The `generated-configure.sh` file looks horrible! How are you going to
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   595
edit it? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   596
**A:** The `generated-configure.sh` file is generated (think "compiled") by the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   597
autoconf tools. The source code is in `configure.ac` and various .m4 files in
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   598
common/autoconf, which are much more readable.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   599
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   600
**Q:** Why is the `generated-configure.sh` file checked in, if it is
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   601
generated? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   602
**A:** If it was not generated, every user would need to have the autoconf
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   603
tools installed, and re-generate the `configure` file as the first step. Our
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   604
goal is to minimize the work needed to be done by the user to start building
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   605
OpenJDK, and to minimize the number of external dependencies required.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   606
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   607
**Q:** Do you require a specific version of autoconf for regenerating
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   608
`generated-configure.sh`? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   609
**A:** Yes, version 2.69 is required and should be easy enough to aquire on all
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   610
supported operating systems. The reason for this is to avoid large spurious
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   611
changes in `generated-configure.sh`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   612
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   613
**Q:** How do you regenerate `generated-configure.sh` after making changes to
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   614
the input files? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   615
**A:** Regnerating `generated-configure.sh` should always be done using the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   616
script `common/autoconf/autogen.sh` to ensure that the correct files get
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   617
updated. This script should also be run after mercurial tries to merge
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   618
`generated-configure.sh` as a merge of the generated file is not guaranteed to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   619
be correct.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   620
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   621
**Q:** What are the files in `common/makefiles/support/*` for? They look like
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   622
gibberish. \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   623
**A:** They are a somewhat ugly hack to compensate for command line length
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   624
limitations on certain platforms (Windows, Solaris). Due to a combination of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   625
limitations in make and the shell, command lines containing too many files will
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   626
not work properly. These helper files are part of an elaborate hack that will
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   627
compress the command line in the makefile and then uncompress it safely. We're
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   628
not proud of it, but it does fix the problem. If you have any better
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   629
suggestions, we're all ears! :-)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   630
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   631
**Q:** I want to see the output of the commands that make runs, like in the old
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   632
build. How do I do that? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   633
**A:** You specify the `LOG` variable to make. There are several log levels:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   634
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   635
 * **`warn`** -- Default and very quiet.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   636
 * **`info`** -- Shows more progress information than warn.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   637
 * **`debug`** -- Echos all command lines and prints all macro calls for
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   638
   compilation definitions.
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   639
 * **`trace`** -- Echos all \$(shell) command lines as well.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   640
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   641
**Q:** When do I have to re-run `configure`? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   642
**A:** Normally you will run `configure` only once for creating a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   643
configuration. You need to re-run configuration only if you want to change any
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   644
configuration options, or if you pull down changes to the `configure` script.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   645
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   646
**Q:** I have added a new source file. Do I need to modify the makefiles? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   647
**A:** Normally, no. If you want to create e.g. a new native library, you will
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   648
need to modify the makefiles. But for normal file additions or removals, no
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   649
changes are needed. There are certan exceptions for some native libraries where
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   650
the source files are spread over many directories which also contain sources
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   651
for other libraries. In these cases it was simply easier to create include
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   652
lists rather than excludes.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   653
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   654
**Q:** When I run `configure --help`, I see many strange options, like
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   655
`--dvidir`. What is this? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   656
**A:** Configure provides a slew of options by default, to all projects that
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   657
use autoconf. Most of them are not used in OpenJDK, so you can safely ignore
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   658
them. To list only OpenJDK specific features, use `configure --help=short`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   659
instead.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   660
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   661
**Q:** `configure` provides OpenJDK-specific features such as
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   662
`--with-builddeps-server` that are not described in this document. What about
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   663
those? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   664
**A:** Try them out if you like! But be aware that most of these are
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   665
experimental features. Many of them don't do anything at all at the moment; the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   666
option is just a placeholder. Others depend on pieces of code or infrastructure
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   667
that is currently not ready for prime time.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   668
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   669
**Q:** How will you make sure you don't break anything? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   670
**A:** We have a script that compares the result of the new build system with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   671
the result of the old. For most part, we aim for (and achieve) byte-by-byte
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   672
identical output. There are however technical issues with e.g. native binaries,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   673
which might differ in a byte-by-byte comparison, even when building twice with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   674
the old build system. For these, we compare relevant aspects (e.g. the symbol
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   675
table and file size). Note that we still don't have 100% equivalence, but we're
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   676
close.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   677
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   678
**Q:** I noticed this thing X in the build that looks very broken by design.
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   679
Why don't you fix it? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   680
**A:** Our goal is to produce a build output that is as close as technically
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   681
possible to the old build output. If things were weird in the old build, they
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   682
will be weird in the new build. Often, things were weird before due to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   683
obscurity, but in the new build system the weird stuff comes up to the surface.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   684
The plan is to attack these things at a later stage, after the new build system
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   685
is established.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   686
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   687
**Q:** The code in the new build system is not that well-structured. Will you
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   688
fix this? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   689
**A:** Yes! The new build system has grown bit by bit as we converted the old
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   690
system. When all of the old build system is converted, we can take a step back
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   691
and clean up the structure of the new build system. Some of this we plan to do
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   692
before replacing the old build system and some will need to wait until after.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   693
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   694
**Q:** Is anything able to use the results of the new build's default make
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   695
target? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   696
**A:** Yes, this is the minimal (or roughly minimal) set of compiled output
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   697
needed for a developer to actually execute the newly built JDK. The idea is
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   698
that in an incremental development fashion, when doing a normal make, you
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   699
should only spend time recompiling what's changed (making it purely
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   700
incremental) and only do the work that's needed to actually run and test your
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   701
code. The packaging stuff that is part of the `images` target is not needed for
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   702
a normal developer who wants to test his new code. Even if it's quite fast,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   703
it's still unnecessary. We're targeting sub-second incremental rebuilds! ;-)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   704
(Or, well, at least single-digit seconds...)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   705
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   706
**Q:** I usually set a specific environment variable when building, but I can't
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   707
find the equivalent in the new build. What should I do? \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   708
**A:** It might very well be that we have neglected to add support for an
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   709
option that was actually used from outside the build system. Email us and we
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   710
will add support for it!
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   711
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   712
### Build Performance Tips
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   713
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   714
Building OpenJDK requires a lot of horsepower. Some of the build tools can be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   715
adjusted to utilize more or less of resources such as parallel threads and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   716
memory. The `configure` script analyzes your system and selects reasonable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   717
values for such options based on your hardware. If you encounter resource
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   718
problems, such as out of memory conditions, you can modify the detected values
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   719
with:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   720
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   721
 * **`--with-num-cores`** -- number of cores in the build system, e.g.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   722
   `--with-num-cores=8`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   723
 * **`--with-memory-size`** -- memory (in MB) available in the build system,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   724
    e.g. `--with-memory-size=1024`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   725
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   726
It might also be necessary to specify the JVM arguments passed to the Bootstrap
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   727
JDK, using e.g. `--with-boot-jdk-jvmargs="-Xmx8G -enableassertions"`. Doing
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   728
this will override the default JVM arguments passed to the Bootstrap JDK.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   729
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   730
One of the top goals of the new build system is to improve the build
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   731
performance and decrease the time needed to build. This will soon also apply to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   732
the java compilation when the Smart Javac wrapper is fully supported.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   733
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   734
At the end of a successful execution of `configure`, you will get a performance
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   735
summary, indicating how well the build will perform. Here you will also get
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   736
performance hints. If you want to build fast, pay attention to those!
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   737
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   738
#### Building with ccache
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   739
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   740
The OpenJDK build supports building with ccache when using gcc or clang. Using
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   741
ccache can radically speed up compilation of native code if you often rebuild
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   742
the same sources. Your milage may vary however so we recommend evaluating it
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   743
for yourself. To enable it, make sure it's on the path and configure with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   744
`--enable-ccache`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   745
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   746
#### Building on local disk
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   747
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   748
If you are using network shares, e.g. via NFS, for your source code, make sure
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   749
the build directory is situated on local disk. The performance penalty is
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   750
extremely high for building on a network share, close to unusable.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   751
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   752
#### Building only one JVM
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   753
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   754
The old build builds multiple JVMs on 32-bit systems (client and server; and on
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   755
Windows kernel as well). In the new build we have changed this default to only
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   756
build server when it's available. This improves build times for those not
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   757
interested in multiple JVMs. To mimic the old behavior on platforms that
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   758
support it, use `--with-jvm-variants=client,server`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   759
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   760
#### Selecting the number of cores to build on
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   761
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   762
By default, `configure` will analyze your machine and run the make process in
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   763
parallel with as many threads as you have cores. This behavior can be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   764
overridden, either "permanently" (on a `configure` basis) using
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   765
`--with-num-cores=N` or for a single build only (on a make basis), using
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   766
`make JOBS=N`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   767
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   768
If you want to make a slower build just this time, to save some CPU power for
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   769
other processes, you can run e.g. `make JOBS=2`. This will force the makefiles
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   770
to only run 2 parallel processes, or even `make JOBS=1` which will disable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   771
parallelism.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   772
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   773
If you want to have it the other way round, namely having slow builds default
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   774
and override with fast if you're impatient, you should call `configure` with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   775
`--with-num-cores=2`, making 2 the default. If you want to run with more cores,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   776
run `make JOBS=8`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   777
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   778
### Troubleshooting
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   779
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   780
#### Solving build problems
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   781
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   782
If the build fails (and it's not due to a compilation error in a source file
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   783
you've changed), the first thing you should do is to re-run the build with more
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   784
verbosity. Do this by adding `LOG=debug` to your make command line.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   785
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   786
The build log (with both stdout and stderr intermingled, basically the same as
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   787
you see on your console) can be found as `build.log` in your build directory.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   788
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   789
You can ask for help on build problems with the new build system on either the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   790
[build-dev](http://mail.openjdk.java.net/mailman/listinfo/build-dev) or the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   791
[build-infra-dev](http://mail.openjdk.java.net/mailman/listinfo/build-infra-dev)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   792
mailing lists. Please include the relevant parts of the build log.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   793
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   794
A build can fail for any number of reasons. Most failures are a result of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   795
trying to build in an environment in which all the pre-build requirements have
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   796
not been met. The first step in troubleshooting a build failure is to recheck
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   797
that you have satisfied all the pre-build requirements for your platform.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   798
Scanning the `configure` log is a good first step, making sure that what it
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   799
found makes sense for your system. Look for strange error messages or any
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   800
difficulties that `configure` had in finding things.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   801
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   802
Some of the more common problems with builds are briefly described below, with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   803
suggestions for remedies.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   804
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   805
 * **Corrupted Bundles on Windows:** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   806
   Some virus scanning software has been known to corrupt the downloading of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   807
   zip bundles. It may be necessary to disable the 'on access' or 'real time'
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   808
   virus scanning features to prevent this corruption. This type of 'real time'
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   809
   virus scanning can also slow down the build process significantly.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   810
   Temporarily disabling the feature, or excluding the build output directory
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   811
   may be necessary to get correct and faster builds.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   812
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   813
 * **Slow Builds:** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   814
   If your build machine seems to be overloaded from too many simultaneous C++
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   815
   compiles, try setting the `JOBS=1` on the `make` command line. Then try
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   816
   increasing the count slowly to an acceptable level for your system. Also:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   817
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   818
   Creating the javadocs can be very slow, if you are running javadoc, consider
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   819
   skipping that step.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   820
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   821
   Faster CPUs, more RAM, and a faster DISK usually helps. The VM build tends
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   822
   to be CPU intensive (many C++ compiles), and the rest of the JDK will often
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   823
   be disk intensive.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   824
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   825
   Faster compiles are possible using a tool called
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   826
   [ccache](http://ccache.samba.org/).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   827
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   828
 * **File time issues:** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   829
   If you see warnings that refer to file time stamps, e.g.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   830
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   831
   > _Warning message:_ ` File 'xxx' has modification time in the future.` \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   832
   > _Warning message:_ ` Clock skew detected. Your build may be incomplete.`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   833
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   834
   These warnings can occur when the clock on the build machine is out of sync
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   835
   with the timestamps on the source files. Other errors, apparently unrelated
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   836
   but in fact caused by the clock skew, can occur along with the clock skew
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   837
   warnings. These secondary errors may tend to obscure the fact that the true
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   838
   root cause of the problem is an out-of-sync clock.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   839
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   840
   If you see these warnings, reset the clock on the build machine, run
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   841
   "`gmake clobber`" or delete the directory containing the build output, and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   842
   restart the build from the beginning.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   843
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   844
 * **Error message: `Trouble writing out table to disk`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   845
   Increase the amount of swap space on your build machine. This could be
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   846
   caused by overloading the system and it may be necessary to use:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   847
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   848
   > `make JOBS=1`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   849
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   850
   to reduce the load on the system.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   851
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   852
 * **Error Message: `libstdc++ not found`:** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   853
   This is caused by a missing libstdc++.a library. This is installed as part
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   854
   of a specific package (e.g. libstdc++.so.devel.386). By default some 64-bit
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   855
   Linux versions (e.g. Fedora) only install the 64-bit version of the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   856
   libstdc++ package. Various parts of the JDK build require a static link of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   857
   the C++ runtime libraries to allow for maximum portability of the built
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   858
   images.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   859
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   860
 * **Linux Error Message: `cannot restore segment prot after reloc`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   861
   This is probably an issue with SELinux (See [SELinux on
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   862
   Wikipedia](http://en.wikipedia.org/wiki/SELinux)). Parts of the VM is built
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   863
   without the `-fPIC` for performance reasons.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   864
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   865
   To completely disable SELinux:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   866
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   867
   1. `$ su root`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   868
   2. `# system-config-securitylevel`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   869
   3. `In the window that appears, select the SELinux tab`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   870
   4. `Disable SELinux`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   871
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   872
   Alternatively, instead of completely disabling it you could disable just
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   873
   this one check.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   874
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   875
   1. Select System-&gt;Administration-&gt;SELinux Management
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   876
   2. In the SELinux Management Tool which appears, select "Boolean" from the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   877
      menu on the left
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   878
   3. Expand the "Memory Protection" group
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   879
   4. Check the first item, labeled "Allow all unconfined executables to use
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   880
      libraries requiring text relocation ..."
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   881
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   882
 * **Windows Error Messages:** \
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   883
   `*** fatal error - couldn't allocate heap, ... ` \
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   884
   `rm fails with "Directory not empty"` \
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   885
   `unzip fails with "cannot create ... Permission denied"` \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   886
   `unzip fails with "cannot create ... Error 50"`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   887
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   888
   The CYGWIN software can conflict with other non-CYGWIN software. See the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   889
   CYGWIN FAQ section on [BLODA (applications that interfere with
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   890
   CYGWIN)](http://cygwin.com/faq/faq.using.html#faq.using.bloda).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   891
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   892
 * **Windows Error Message: `spawn failed`** \
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   893
   Try rebooting the system, or there could be some kind of issue with the disk
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   894
   or disk partition being used. Sometimes it comes with a "Permission Denied"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   895
   message.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   896
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   897
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   898
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   899
## Appendix B: GNU make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   900
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   901
The Makefiles in the OpenJDK are only valid when used with the GNU version of
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   902
the utility command `make` (usually called `gmake` on Solaris). A few notes
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   903
about using GNU make:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   904
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   905
 * You need GNU make version 3.81 or newer. On Windows 4.0 or newer is
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   906
   recommended. If the GNU make utility on your systems is not of a suitable
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   907
   version, see "[Building GNU make](#buildgmake)".
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   908
 * Place the location of the GNU make binary in the `PATH`.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   909
 * **Solaris:** Do NOT use `/usr/bin/make` on Solaris. If your Solaris system
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   910
   has the software from the Solaris Developer Companion CD installed, you
41040
7b919a4497ff 8165161: Solaris: /usr/ccs /opt/sfw and /opt/csw are dead, references should be expunged
alanbur
parents: 41039
diff changeset
   911
   should try and use `/usr/bin/gmake` or `/usr/gnu/bin/make`.
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   912
 * **Windows:** Make sure you start your build inside a bash shell.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   913
 * **Mac OS X:** The XCode "command line tools" must be installed on your Mac.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   914
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   915
Information on GNU make, and access to ftp download sites, are available on the
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   916
[GNU make web site](http://www.gnu.org/software/make/make.html). The latest
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   917
source to GNU make is available at
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   918
[ftp.gnu.org/pub/gnu/make/](http://ftp.gnu.org/pub/gnu/make/).
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   919
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   920
### Building GNU make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   921
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   922
First step is to get the GNU make 3.81 or newer source from
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   923
[ftp.gnu.org/pub/gnu/make/](http://ftp.gnu.org/pub/gnu/make/). Building is a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   924
little different depending on the OS but is basically done with:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   925
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   926
      bash ./configure
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   927
      make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   928
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   929
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   930
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   931
## Appendix C: Build Environments
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   932
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   933
### Minimum Build Environments
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   934
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   935
This file often describes specific requirements for what we call the "minimum
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   936
build environments" (MBE) for this specific release of the JDK. What is listed
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   937
below is what the Oracle Release Engineering Team will use to build the Oracle
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   938
JDK product. Building with the MBE will hopefully generate the most compatible
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   939
bits that install on, and run correctly on, the most variations of the same
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   940
base OS and hardware architecture. In some cases, these represent what is often
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   941
called the least common denominator, but each Operating System has different
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   942
aspects to it.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   943
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   944
In all cases, the Bootstrap JDK version minimum is critical, we cannot
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   945
guarantee builds will work with older Bootstrap JDK's. Also in all cases, more
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   946
RAM and more processors is better, the minimums listed below are simply
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   947
recommendations.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   948
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   949
With Solaris and Mac OS X, the version listed below is the oldest release we
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   950
can guarantee builds and works, and the specific version of the compilers used
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   951
could be critical.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   952
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   953
With Windows the critical aspect is the Visual Studio compiler used, which due
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   954
to it's runtime, generally dictates what Windows systems can do the builds and
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   955
where the resulting bits can be used.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   956
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   957
**NOTE: We expect a change here off these older Windows OS releases and to a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   958
'less older' one, probably Windows 2008R2 X64.**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   959
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   960
With Linux, it was just a matter of picking a stable distribution that is a
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   961
good representative for Linux in general.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   962
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   963
It is understood that most developers will NOT be using these specific
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   964
versions, and in fact creating these specific versions may be difficult due to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   965
the age of some of this software. It is expected that developers are more often
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   966
using the more recent releases and distributions of these operating systems.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   967
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   968
Compilation problems with newer or different C/C++ compilers is a common
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   969
problem. Similarly, compilation problems related to changes to the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   970
`/usr/include` or system header files is also a common problem with older,
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   971
newer, or unreleased OS versions. Please report these types of problems as bugs
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   972
so that they can be dealt with accordingly.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   973
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   974
Bootstrap JDK: JDK 8
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   975
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   976
  Base OS and Architecture              OS                            C/C++ Compiler                                          Processors   RAM Minimum   DISK Needs
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   977
  ------------------------------------- ----------------------------- ------------------------------------------------------- ------------ ------------- ------------
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   978
  Linux X86 (32-bit) and X64 (64-bit)   Oracle Enterprise Linux 6.4   gcc 4.9.2                                               2 or more    1 GB          6 GB
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   979
  Solaris SPARCV9 (64-bit)              Solaris 11 Update 1           Studio 12 Update 4 + patches                            4 or more    4 GB          8 GB
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   980
  Solaris X64 (64-bit)                  Solaris 11 Update 1           Studio 12 Update 4 + patches                            4 or more    4 GB          8 GB
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   981
  Windows X86 (32-bit)                  Windows Server 2012 R2 x64    Microsoft Visual Studio C++ 2013 Professional Edition   2 or more    2 GB          6 GB
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   982
  Windows X64 (64-bit)                  Windows Server 2012 R2 x64    Microsoft Visual Studio C++ 2013 Professional Edition   2 or more    2 GB          6 GB
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   983
  Mac OS X X64 (64-bit)                 Mac OS X 10.9 "Mavericks"     Xcode 6.3 or newer                                      2 or more    4 GB          6 GB
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   984
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   985
-------------------------------------------------------------------------------
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
   986
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   987
### Specific Developer Build Environments
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   988
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   989
We won't be listing all the possible environments, but we will try to provide
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   990
what information we have available to us.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   991
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   992
**NOTE: The community can help out by updating this part of the document.**
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   993
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   994
#### Fedora
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   995
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   996
After installing the latest [Fedora](http://fedoraproject.org) you need to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   997
install several build dependencies. The simplest way to do it is to execute the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   998
following commands as user `root`:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
   999
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1000
      yum-builddep java-1.7.0-openjdk
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1001
      yum install gcc gcc-c++
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1002
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1003
In addition, it's necessary to set a few environment variables for the build:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1004
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1005
      export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1006
      export PATH="/usr/lib/jvm/java-openjdk/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1007
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1008
#### CentOS 5.5
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1009
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1010
After installing [CentOS 5.5](http://www.centos.org/) you need to make sure you
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1011
have the following Development bundles installed:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1012
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1013
 * Development Libraries
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1014
 * Development Tools
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1015
 * Java Development
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1016
 * X Software Development (Including XFree86-devel)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1017
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1018
Plus the following packages:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1019
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1020
 * cups devel: Cups Development Package
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1021
 * alsa devel: Alsa Development Package
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1022
 * Xi devel: libXi.so Development Package
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1023
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1024
The freetype 2.3 packages don't seem to be available, but the freetype 2.3
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1025
sources can be downloaded, built, and installed easily enough from [the
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1026
freetype site](http://downloads.sourceforge.net/freetype). Build and install
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1027
with something like:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1028
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1029
      bash ./configure
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1030
      make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1031
      sudo -u root make install
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1032
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1033
Mercurial packages could not be found easily, but a Google search should find
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1034
ones, and they usually include Python if it's needed.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1035
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1036
#### Debian 5.0 (Lenny)
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1037
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1038
After installing [Debian](http://debian.org) 5 you need to install several
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1039
build dependencies. The simplest way to install the build dependencies is to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1040
execute the following commands as user `root`:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1041
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1042
      aptitude build-dep openjdk-7
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1043
      aptitude install openjdk-7-jdk libmotif-dev
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1044
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1045
In addition, it's necessary to set a few environment variables for the build:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1046
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1047
      export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1048
      export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1049
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1050
#### Ubuntu 12.04
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1051
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1052
After installing [Ubuntu](http://ubuntu.org) 12.04 you need to install several
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1053
build dependencies. The simplest way to do it is to execute the following
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1054
commands:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1055
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1056
      sudo aptitude build-dep openjdk-7
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1057
      sudo aptitude install openjdk-7-jdk
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1058
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1059
In addition, it's necessary to set a few environment variables for the build:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1060
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1061
      export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1062
      export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1063
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1064
#### OpenSUSE 11.1
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1065
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1066
After installing [OpenSUSE](http://opensuse.org) 11.1 you need to install
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1067
several build dependencies. The simplest way to install the build dependencies
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1068
is to execute the following commands:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1069
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1070
      sudo zypper source-install -d java-1_7_0-openjdk
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1071
      sudo zypper install make
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1072
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1073
In addition, it is necessary to set a few environment variables for the build:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1074
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1075
      export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1076
      export PATH="/usr/lib/jvm/java-1.7.0-openjdk/bin:$[PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1077
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1078
Finally, you need to unset the `JAVA_HOME` environment variable:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1079
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1080
      export -n JAVA_HOME`
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1081
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1082
#### Mandriva Linux One 2009 Spring
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1083
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1084
After installing [Mandriva](http://mandriva.org) Linux One 2009 Spring you need
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1085
to install several build dependencies. The simplest way to install the build
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1086
dependencies is to execute the following commands as user `root`:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1087
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1088
      urpmi java-1.7.0-openjdk-devel make gcc gcc-c++ freetype-devel zip unzip
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1089
        libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1090
        libxtst6-devel libxi-devel
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1091
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1092
In addition, it is necessary to set a few environment variables for the build:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1093
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1094
      export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1095
      export PATH="/usr/lib/jvm/java-1.7.0-openjdk/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1096
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1097
#### OpenSolaris 2009.06
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1098
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1099
After installing [OpenSolaris](http://opensolaris.org) 2009.06 you need to
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1100
install several build dependencies. The simplest way to install the build
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1101
dependencies is to execute the following commands:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1102
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1103
      pfexec pkg install SUNWgmake SUNWj7dev sunstudioexpress SUNWcups SUNWzip
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1104
        SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1105
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1106
In addition, it is necessary to set a few environment variables for the build:
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1107
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1108
      export LANG=C
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1109
      export PATH="/opt/SunStudioExpress/bin:${PATH}"
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1110
44078
673240c54c2e 8176509: Use pandoc for converting build readme to html
ihse
parents: 41040
diff changeset
  1111
-------------------------------------------------------------------------------
33030
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1112
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1113
End of the OpenJDK build README document.
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1114
de12d9a875ed 8139668: Generate README-build.html from markdown
ihse
parents:
diff changeset
  1115
Please come again!