aboutsummaryrefslogtreecommitdiffhomepage
path: root/BUILD.md
blob: 118813486cbfc1cf6bc6cd02890387453055f3b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
# Build Instructions

Instructions for building this repository on Windows, Linux, and MacOS.

## Index

1. [Contributing](#contributing-to-the-repository)
1. [Repository Content](#repository-content)
1. [Repository Set-up](#repository-set-up)
1. [Windows Build](#building-on-windows)
1. [Linux Build](#building-on-linux)
1. [MacOS Build](#building-on-macos)

## Contributing to the Repository

The contents of this repository are sourced primarily from the Khronos Vulkan
API specification [repository](https://github.com/KhronosGroup/Vulkan-Docs).
Please visit that repository for information on contributing.

## Repository Content

This repository contains the Vulkan header files and the Vulkan API definition
(registry) with its related files. This repository does not create libraries
or executables.

However, this repository contains CMake build configuration files to "install"
the files from this repository to a specific install directory. For example,
you can install the files to a system directory such as `/usr/local` on Linux.

If you are building other Vulkan-related repositories such as
[Vulkan-Loader](https://github.com/KhronosGroup/Vulkan-Loader),
you need to build the install target of this repository and provide the
resulting install directory to those repositories.

### Installed Files

The `install` target installs the following files under the directory
indicated by *install_dir*:

- *install_dir*`/include/vulkan` : The header files found in the
 `include/vulkan` directory of this repository
- *install_dir*`/share/vulkan/registry` : The registry files found in the
  `registry` directory of this repository

The `uninstall` target can be used to remove the above files from the install
directory.

## Repository Set-Up

### Download the Repository

To create your local git repository:

    git clone https://github.com/KhronosGroup/Vulkan-Headers.git

### Repository Dependencies

This repository does not depend on any other repositories.

### Build and Install Directories

A common convention is to place the build directory in the top directory of
the repository with a name of `build` and place the install directory as a
child of the build directory with the name `install`. The remainder of these
instructions follow this convention, although you can use any name for these
directories and place them in any location.

## Building On Windows

### Windows Development Environment Requirements

- Windows
  - Any Personal Computer version supported by Microsoft
- Microsoft [Visual Studio](https://www.visualstudio.com/)
  - Versions
    - [2015](https://www.visualstudio.com/vs/older-downloads/)
    - [2017](https://www.visualstudio.com/vs/older-downloads/)
    - [2019](https://www.visualstudio.com/vs/downloads/)
  - The Community Edition of each of the above versions is sufficient, as
    well as any more capable edition.
- [CMake 3.10.2](https://cmake.org/files/v3.10/cmake-3.10.2-win64-x64.zip) is recommended.
  - Use the installer option to add CMake to the system PATH
- Git Client Support
  - [Git for Windows](http://git-scm.com/download/win) is a popular solution
    for Windows
  - Some IDEs (e.g., [Visual Studio](https://www.visualstudio.com/),
    [GitHub Desktop](https://desktop.github.com/)) have integrated
    Git client support

### Windows Build - Microsoft Visual Studio

The general approach is to run CMake to generate the Visual Studio project
files. Then either run CMake with the `--build` option to build from the
command line or use the Visual Studio IDE to open the generated solution and
work with the solution interactively.

#### Windows Quick Start

From a "Developer Command Prompt for VS 201x" console:

    cd Vulkan-Headers
    mkdir build
    cd build
    cmake ..
    cmake --build . --target install

See below for the details.

#### Use `CMake` to Create the Visual Studio Project Files

From within a "Developer Command Prompt for VS 201x" console, change your
current directory to the top of the cloned repository directory, create a
build directory and generate the Visual Studio project files:

    cd Vulkan-Headers
    mkdir build
    cd build
    cmake ..

> Note: The `..` parameter tells `cmake` the location of the top of the
> repository. If you place your build directory someplace else, you'll need to
> specify the location of the repository top differently.

The CMake configuration files set the default install directory location to
`$CMAKE_BINARY_DIR\install`, which is a child of your build directory. In this
example, the install directory becomes the `Vulkan-Headers\build\install`
directory.

The project installs the header files to

    Vulkan-Headers\build\install\include\vulkan

and installs the registry files to

    Vulkan-Headers\build\install\share\vulkan\registry

You can change the install directory with the `CMAKE_INSTALL_PREFIX` CMake
variable.

For example:

    cd Vulkan-Headers
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=/c/Users/dev/install ..  # MINGW64 shell

As it starts generating the project files, `cmake` responds with something
like:

    -- Building for: Visual Studio 14 2015

which is a 32-bit generator.

Since this repository does not compile anything, there is no need to specify a
specific generator such as "Visual Studio 14 2015 Win64", so the default
generator should suffice.

The above steps create a Windows solution file named `Vulkan-Headers.sln` in
the build directory.

At this point, you can build the solution from the command line or open the
generated solution with Visual Studio.

#### Build the Solution From the Command Line

While still in the build directory:

    cmake --build . --target install

to build the install target.

Build the `uninstall` target to remove the files from the install directory.

    cmake --build . --target uninstall

#### Build the Solution With Visual Studio

Launch Visual Studio and open the "Vulkan-Headers.sln" solution file in the
build directory. Build the `INSTALL` target from the Visual Studio solution
explorer.

Build the `uninstall` target to remove the files from the install directory.

> Note: Since there are only the `INSTALL` and `uninstall` projects in the
> solution, building the solution from the command line may be more efficient
> than starting Visual Studio for these simple operations.

## Building On Linux

### Linux Development Environment Requirements

There are no specific Linux distribution or compiler version requirements for
building this repository. The required tools are

- [CMake 3.10.2](https://cmake.org/files/v3.10/cmake-3.10.2-Linux-x86_64.tar.gz) is recommended.
- git

### Linux Build

The general approach is to run CMake to generate make files. Then either run
CMake with the `--build` option or `make` to build from the command line.

#### Linux Quick Start

    cd Vulkan-Headers
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=install ..
    make install

See below for the details.

#### Use CMake to Create the Make Files

Change your current directory to the top of the cloned repository directory,
create a build directory and generate the make files:

    cd Vulkan-Headers
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=install ..

> Note: The `..` parameter tells `cmake` the location of the top of the
> repository. If you place your `build` directory someplace else, you'll need
> to specify the location of the repository top differently.

Set the `CMAKE_INSTALL_PREFIX` variable to the directory to serve as the
destination directory for the `install` target.

The above `cmake` command sets the install directory to
`$CMAKE_BINARY_DIR/install`, which is a child of your `build` directory. In
this example, the install directory becomes the `Vulkan-Headers/build/install`
directory.

The make file install target installs the header files to

    Vulkan-Headers/build/install/include/vulkan

and installs the registry files to

    Vulkan-Headers/build/install/share/vulkan/registry

> Note: For Linux, the default value for `CMAKE_INSTALL_PREFIX` is
> `/usr/local`, which would be used if you do not specify
> `CMAKE_INSTALL_PREFIX`. In this case, you may need to use `sudo` to install
> to system directories later when you run `make install`.

Note that after generating the make files, running `make`:

    make

does nothing, since there are no libraries or executables to build.

To install the header files:

    make install

or

    cmake --build . --target install

To uninstall the files from the install directories, you can execute:

    make uninstall

or

    cmake --build . --target uninstall

## Building on MacOS

The instructions for building this repository on MacOS are similar to those for Linux.

[CMake 3.10.2](https://cmake.org/files/v3.10/cmake-3.10.2-Darwin-x86_64.tar.gz) is recommended.