aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKarl Schultz <[email protected]>2018-05-30 16:43:14 -0600
committerKarl Schultz <[email protected]>2018-05-30 17:38:30 -0600
commitafd12b7bdcd63bf4d8d669d6e06a368a0954b6e3 (patch)
tree35221eb40c4fb4e97e6980df634f3ab1e43bb4a1
parenta901a3edf256c1a1441433e77feac919fb8e5ed6 (diff)
downloadVulkan-Headers-afd12b7bdcd63bf4d8d669d6e06a368a0954b6e3.tar.gz
Vulkan-Headers-afd12b7bdcd63bf4d8d669d6e06a368a0954b6e3.zip
build: Add CMake files for install target
-rw-r--r--.gitignore2
-rw-r--r--BUILD.md184
-rw-r--r--CMakeLists.txt20
-rw-r--r--README.md1
-rw-r--r--cmake/cmake_uninstall.cmake.in21
5 files changed, 227 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index c4e1519..cc044d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
# Python cache
__pycache__
*.pyc
-
+build
diff --git a/BUILD.md b/BUILD.md
new file mode 100644
index 0000000..e4d2821
--- /dev/null
+++ b/BUILD.md
@@ -0,0 +1,184 @@
+# Build Instructions
+
+Instructions for building this repository on Windows, Linux, and MacOS.
+
+Since this repository doesn't contain any build targets for libraries
+or executables, there usually isn't any need to "build" this repository.
+However, `install` and `uninstall` targets are provided if you have a need to
+install the Vulkan headers and registry files to system directories
+or other location for use by other repositories.
+
+## Index
+
+1. [Contributing](#contributing-to-the-repository)
+2. [Repository Set-Up](#repository-set-up)
+3. [Installed Files](#installed-files)
+4. [Windows Build](#building-on-windows)
+5. [Linux Build](#building-on-linux)
+6. [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 Set-Up
+
+### Download the Repository
+
+To create your local git repository:
+
+ git clone https://github.com/KhronosGroup/Vulkan-Headers.git
+
+## 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
+
+## Building On Windows
+
+### Windows Build Requirements
+
+Windows 7+ with the following software packages:
+
+- Microsoft Visual Studio 2013 Update 4 Professional, VS2015 (any version), or VS2017 (any version).
+- [CMake](http://www.cmake.org/download/)
+ - Tell the installer to "Add CMake to the system PATH" environment variable.
+- [Git](http://git-scm.com/download/win)
+ - Tell the installer to allow it to be used for "Developer Prompt" as well as "Git Bash".
+ - Tell the installer to treat line endings "as is" (i.e. both DOS and Unix-style line endings).
+ - Install both the 32-bit and 64-bit versions, as the 64-bit installer does not install the
+ 32-bit libraries and tools.
+
+### Windows Build - Microsoft Visual Studio
+
+The general approach is to run `cmake` to generate the VS project files.
+Then either run `cmake` again to build from the command line or use the
+Visual Studio IDE to open the generated solution and work with the solution
+interactively.
+
+It should be possible to perform these `cmake` invocations from any one of the Windows
+"terminal programs", including the standard Windows Command Prompt, MSBuild Command Prompt,
+PowerShell, MINGW, CygWin, etc.
+
+#### Use `cmake` to create the VS project files
+
+Switch to the top of the cloned repository directory,
+create a build directory and generate the VS project files:
+
+ cd Vulkan-Headers
+ mkdir build
+ cd build
+ cmake ..
+
+The default install directory location is `$CMAKE_BINARY_DIR\install`,
+which is your `Vulkan-Headers\build\install` directory.
+
+This default setting sets the install destination to
+`Vulkan-Headers\build\install`
+and causes the header files to be installed to
+`Vulkan-Headers\build\install\include/vulkan`
+and the registry files to be installed to
+`Vulkan-Headers\build\install\share\vulkan\registry`.
+
+The install location can be changed with the `CMAKE_INSTALL_PREFIX` 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.
+
+This creates 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 location.
+
+ cmake --build . --target uninstall
+
+#### Build the solution with Visual Studio
+
+Launch Visual Studio and open the "Vulkan-Headers.sln" solution file in the build folder.
+Build the `INSTALL` target from the Visual Studio solution explorer.
+
+Build the `uninstall` target to remove the files from the install location.
+
+ cmake --build . --target uninstall
+
+## Building On Linux
+
+### Linux Build Requirements
+
+There are no specific Linux distribution or compiler
+verison requirements for building this repository.
+
+### Linux Build
+
+Switch 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 ..
+
+Set the `CMAKE_INSTALL_PREFIX` variable to the directory to serve as the
+destination directory for the `install` target.
+The above setting sets the install destination to
+`Vulkan-Headers/build/install`
+which causes the header files to be installed to
+`Vulkan-Headers/build/install/include/vulkan`
+and the registry files to be installed to
+`Vulkan-Headers/build/install/share/vulkan/registry`
+
+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
+
+To uninstall the files from the install directories, you can execute:
+
+ make uninstall
+
+## Building on MacOS
+
+The instructions for installing the headers for MacOS are the
+same as those for Linux.
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..4cd8911
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,20 @@
+cmake_minimum_required(VERSION 2.8.11)
+
+project(Vulkan-Headers NONE)
+
+include(GNUInstallDirs)
+# Set a better default install location for Windows only if the user did not provide one.
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32)
+ set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "default install path" FORCE)
+endif()
+
+install(DIRECTORY "${CMAKE_SOURCE_DIR}/include/vulkan" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+install(DIRECTORY "${CMAKE_SOURCE_DIR}/registry" DESTINATION ${CMAKE_INSTALL_DATADIR}/vulkan)
+
+# uninstall target
+configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+ IMMEDIATE @ONLY)
+add_custom_target(uninstall
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
diff --git a/README.md b/README.md
index c828666..e9661fe 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
# Vulkan-Headers
+
Vulkan Header files and API registry
diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in
new file mode 100644
index 0000000..2037e36
--- /dev/null
+++ b/cmake/cmake_uninstall.cmake.in
@@ -0,0 +1,21 @@
+if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+ message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+
+file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+foreach(file ${files})
+ message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
+ if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ exec_program(
+ "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+ OUTPUT_VARIABLE rm_out
+ RETURN_VALUE rm_retval
+ )
+ if(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
+ endif(NOT "${rm_retval}" STREQUAL 0)
+ else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
+ endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+endforeach(file)