doc/ide.md
author chegar
Thu, 17 Oct 2019 20:53:35 +0100
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
permissions -rw-r--r--
datagramsocketimpl-branch: update to default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
     1
% IDE support in the JDK
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
     2
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
     3
## Introduction
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
     4
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
     5
When you are familiar with building and testing the JDK, you may want to
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
     6
configure an IDE to work with the source code. The instructions differ a bit
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
     7
depending on whether you are interested in working with the native (C/C++) or
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
     8
the Java code.
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
     9
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    10
### IDE support for native code
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    11
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    12
There are a few ways to generate IDE configuration for the native sources,
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    13
depending on which IDE to use.
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    14
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    15
#### Visual Studio Code
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    16
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    17
The make system can generate a [Visual Studio Code](https://code.visualstudio.com)
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    18
workspace that has C/C++ source indexing configured correctly, as well as
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    19
launcher targets for tests and the Java launcher. After configuring, a workspace
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    20
for the configuration can be generated using:
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    21
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    22
```shell
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    23
make vscode-project
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    24
```
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    25
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    26
This creates a file called `jdk.code-workspace` in the build output folder. The
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    27
full location will be printed after the workspace has been generated. To use it,
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    28
choose `File -> Open Workspace...` in Visual Studio Code.
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    29
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    30
##### Alternative indexers
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    31
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    32
The main `vscode-project` target configures the default C++ support in Visual
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    33
Studio Code. There are also other source indexers that can be installed, that
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    34
may provide additional features. It's currently possible to generate
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    35
configuration for two such indexers, [clangd](https://clang.llvm.org/extra/clangd/)
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    36
and [rtags](https://github.com/Andersbakken/rtags). These can be configured by
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    37
appending the name of the indexer to the make target, such as:
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    38
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    39
```shell
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    40
make vscode-project-clangd
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    41
```
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    42
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    43
Additional instructions for configuring the given indexer will be displayed
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    44
after the workspace has been generated.
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    45
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    46
#### Visual Studio
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    47
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    48
This section is a work in progress.
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    49
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    50
```shell
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    51
make ide-project
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    52
```
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    53
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    54
#### Compilation Database
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    55
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    56
The make system can generate generic native code indexing support in the form of
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    57
a [Compilation Database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    58
that can be used by many different IDEs and source code indexers.
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    59
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    60
```shell
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    61
make compile-commands
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    62
```
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    63
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    64
It's also possible to generate the Compilation Database for the HotSpot source
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    65
code only, which is a bit faster as it includes less information.
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    66
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    67
```shell
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    68
make compile-commands-hotspot
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    69
```
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    70
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    71
### IDE support for Java code
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    72
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents:
diff changeset
    73
This section is a work in progress.