| = OpenCL^(TM)^ Specification Build Instructions and Notes |
| :toc2: |
| :toclevels: 1 |
| |
| [NOTE] |
| .Note |
| ==== |
| The most useful parts of this document are the <<intro, Introduction>>, |
| <<building, Building The Spec>>, and notes on installing <<depends, Software |
| Dependencies>>. |
| ==== |
| |
| [NOTE] |
| .Note |
| ==== |
| The default branch of this repository has changed from `master` to `main`. |
| ==== |
| |
| [[intro]] |
| == Introduction |
| |
| This repository contains the source and tool chain used to generate the |
| formal OpenCL API, OpenCL C, OpenCL Extensions, OpenCL SPIR-V Environment, |
| OpenCL C++ Specifications, as well as the OpenCL Reference Pages |
| and documentation for the C++ for OpenCL kernel language. |
| |
| This file describes the repository structure, tools, and build instructions |
| needed. |
| |
| |
| [[source]] |
| == Source Code |
| |
| The OpenCL specifications are maintained by members of the Khronos Group's |
| OpenCL Working Group, in the |
| https://github.com/KhronosGroup/OpenCL-Docs[OpenCL-Docs Github repository]. |
| The documents are all in https://asciidoctor.org/[Asciidoctor] format. |
| |
| Contributions via pull requests on Github are welcome. Pull requests must be |
| provided under the same <<license, Creative Commons license>> as the |
| specification source. |
| You'll be prompted with a one-time "`click-through`" Contributor's License |
| Agreement (CLA) dialog as part of submitting your pull request or other |
| contribution to GitHub. |
| |
| We intend to maintain a linear history on the GitHub `main` branch. |
| |
| |
| [[repo]] |
| == Repository Structure |
| |
| |==== |
| | *File* | *Description* |
| | `README.adoc` | This file |
| | `Makefile` | GNU Makefile used to build HTML and PDF spec targets |
| | `config/` | Support files for asciidoctor build, HTML CSS / Javascript, etc. |
| | `katex/` | KaTeX math renderer for HTML outputs |
| | `OpenCL_API.txt` | Main source file for the OpenCL API Specification |
| | `api/` | Individual sections of the API Specification |
| | `OpenCL_C.txt` | Main source file for the OpenCL C Specification |
| | `c/` | Individual sections of the C Specification |
| | `OpenCL_Cxx.txt` | Main source file for the OpenCL C++ Specification |
| | `cxx/` | Individual sections of the C++ Specification |
| | `OpenCL_Env.txt` | Main source file for the OpenCL SPIR-V Environment Specification |
| | `env/` | Individual sections of the Environment Specification |
| | `OpenCL_Ext.txt` | Main source file for the OpenCL Extensions Specification |
| | `ext/` | Individual sections of the Extensions Specification |
| | `CXX_for_OpenCL.txt` | Main source file for the C++ for OpenCL Documentation |
| | `cxx4opencl/` | Individual sections of the C++ for OpenCL Documentation |
| | `images/` | Shared images, used by all specs |
| | `man/` | Static reference page sources |
| |==== |
| |
| |
| [[building]] |
| == Building The Specifications and Reference Pages |
| |
| If you have installed all <<depends,required toolchain components>>, you |
| should be able to build both HTML and PDF outputs for all specifications by: |
| |
| $ make |
| |
| Other Makefile targets are available for building the different outputs |
| for each Specification: |
| |
| |==== |
| | *Target* | *Builds* |
| | html | HTML outputs for all specifications |
| | pdf | PDF outputs for all specifications |
| | | |
| | api | HTML and PDF outputs for API Specification |
| | apihtml | HTML outputs for API Specification |
| | apipdf | PDF outputs for API Specification |
| | | |
| | c | HTML and PDF outputs for C Specification |
| | chtml | HTML outputs for C Specification |
| | cpdf | PDF outputs for C Specification |
| | | |
| | cxx | HTML and PDF outputs for C++ Specification |
| | cxxhtml | HTML outputs for C++ Specification |
| | cxxpdf | PDF outputs for C++ Specification |
| | | |
| | env | HTML and PDF outputs for SPIR-V Environment Specification |
| | envhtml | HTML outputs for Environment Specification |
| | envpdf | PDF outputs for Environment Specification |
| | | |
| | ext | HTML and PDF outputs for Extensions Specification |
| | exthtml | HTML outputs for Extensions Specification |
| | extpdf | PDF outputs for Extensions Specification |
| | | |
| | cxx4opencl | HTML and PDF outputs for C++ for OpenCL Documentation |
| | cxx4openclhtml | HTML outputs for C++ for OpenCL Documentation |
| | cxx4openclpdf | PDF outputs for C++ for OpenCL Documentation |
| | | |
| | manhtmlpages | HTML outputs for Reference Pages |
| |==== |
| |
| The specification targets are generated in `out/html/` for HTML targets, |
| and `out/pdf/` for PDF targets. |
| The reference page target is generated in `out/man/html/`. |
| If a different output directory is desired, set the Makefile variable |
| OUTDIR on the command line. For example, |
| |
| ---- |
| make OUTDIR=/tmp apihtml |
| ---- |
| |
| will create `/tmp/html/OpenCL_API.html`. |
| |
| These targets generate a variety of output documents in the directory |
| specified by the Makefile variable `$(OUTDIR)` (by default, `out`). |
| |
| Once you have the basic build working, an appropriate parallelization option |
| to make, such as |
| |
| ---- |
| make -j 6 |
| ---- |
| |
| may significantly speed up building multiple specs. The asciidoctor HTML |
| build is very fast, even for the whole Specification, but PDF builds may |
| take several minutes. |
| |
| |
| [[building-extensions]] |
| == Building With Extensions Included |
| |
| Invoking 'make' with no extra arguments will build the OpenCL API and OpenCL |
| C Language specifications with only the core APIs and functionality |
| included. |
| To build versions of these specifications with extension language included, |
| you should use the `makeSpec` script. |
| `makeSpec` is a Python script accepting the following arguments: |
| |
| * -spec _variant_ - _variant_ is `core`, `khr`, or `all`, building |
| specifications with only core, core + all khr extensions and core + all |
| extensions, respectively. |
| At present, `all` is equivalent to `khr` as only `khr` extensions are |
| included in the specification source. |
| * -ext _name_ - add the specified extension _name_ and its dependencies to |
| the build. |
| * -clean - clean generated files before building. |
| * -registry _path_ - use specified API XML instead of the default |
| `xml/cl.xml`. |
| * -v - verbose, print actions before executing them. |
| * -n - dry-run, print actions instead of executing them. |
| * Unrecognized options are passed on to `make`, so must be valid Makefile |
| targets or `make` options such as `-j`. |
| |
| Any other options reported by `makeSpec --help` are not yet functional, and |
| should not be used. |
| |
| For example, to build with all `khr` extensions, you could use |
| |
| [source,sh] |
| ---- |
| $ makeSpec -clean -spec khr -j html refpages |
| ---- |
| |
| `makeSpec` is a wrapper which constructs options and invokes `make` |
| when building with extensions included, which only affects building the API |
| (including reference pages) and C language specifications. |
| `makeSpec` determines extension dependencies from the metadata in the |
| specified registry XML path. |
| |
| |
| [[refpage-install]] |
| == Reference Page Installation |
| |
| Most of the reference pages are extracted from the OpenCL API and OpenCL |
| C Specifications, although some are static. |
| While anyone can generate reference page sets for themselves, Khronos |
| publishes them via the `main` branch of the |
| https://www.khronos.org/registry/OpenCL/sdk/3.0/docs/man/[OpenCL Registry]. |
| |
| When the OpenCL Specification Editor is updating the published reference |
| pages, it is easiest to have local repository clones of this repository |
| (OpenCL-Docs) as well as OpenCL-Registry. Update the pages in the local |
| registry clone via |
| |
| ---- |
| make -j 6 OUTDIR=path-to-registry-repo/sdk/3.0/docs manhtmlpages |
| ---- |
| |
| This creates the HTML output pages under `sdk/3.0/docs/man/html`, and copies |
| the KaTeX package to `sdk/3.0/docs/katex`. |
| To publish, commit those changes to the registry repository and push it to |
| github. |
| |
| |
| [[styles]] |
| == Our stylesheets |
| |
| We use a modified version of the Asciidoctor 'colony' theme. This theme is |
| maintained internally to Khronos and the resulting CSS is under |
| `config/khronos.css`. |
| |
| |
| [[equations]] |
| == Imbedding Equations |
| |
| Where possible, equations should be written using straight asciidoc markup |
| using the _eq_ role. |
| This covers many common equations and is faster than the alternatives. |
| |
| For more complex equations, such as multi-case statements, matrices, and |
| complex fractions, equations should be written using the latexmath: inline |
| and block macros. |
| The contents of the latexmath: blocks should be LaTeX math notation. |
| LaTeX math markup delimiters are now inserted by the asciidoctor toolchain. |
| |
| LaTeX math is passed through unmodified to all HTML output forms, which is |
| subsequently rendered with the KaTeX engine when the html is loaded. |
| A local copy of the KaTeX release is kept in `katex/` and copied to the HTML |
| output directory during spec generation. |
| Math is processed into SVGs via `asciidoctor-mathematical` for PDF output. |
| |
| The following caveats apply: |
| |
| * The special characters `<` , `>` , and `&` can currently be used only in |
| +++[latexmath]+++ block macros, not in +++latexmath:[]+++ inline macros. |
| Instead use `\lt`, `\leq`, `\gt`, and `\geq` for `<`, `<=`, `>`, and |
| `>=` respectively. |
| `&` is an alignment construct for multiline equations, and should only |
| appear in block macros anyway. |
| * AMSmath environments (e.g. pass:[\begin{equation*}], pass:[{align*}], |
| etc.) cannot be used in KaTeX at present, and have been replaced with |
| constructs supported by KaTeX such as pass:[{aligned}]. |
| * Arbitrary LaTeX constructs cannot be used. |
| KaTeX and asciidoctor-mathematical are only equation renderers, not full |
| LaTeX engines. |
| Imbedding LaTeX like \Large or pass:[\hbox{\tt\small VK\_FOO}] may not |
| work in any of the backends, and should be avoided. |
| |
| See the "`Vulkan Documentation and Extensions`" document in the |
| https://www.khronos.org/registry/vulkan/specs/1.0/styleguide.html[Khronos |
| Vulkan Registry] for more details of supported LaTeX math constructs in our |
| toolchain. |
| |
| |
| [[anchors]] |
| == Asciidoc Anchors And Xrefs |
| |
| In asciidoctor, sections can have anchors (labels) applied with the |
| following syntax: |
| |
| ---- |
| [[spirv-il]] |
| == SPIR-V Intermediate language |
| ---- |
| |
| In general the anchor should immediately precede the chapter or section |
| title and should use the form '+++[[chapter-section-label]]+++'. |
| |
| Cross-references to those anchors can then be generated with, for example, |
| |
| ---- |
| See the <<spirv-il>> section for discussion of the SPIR-V intermediate |
| language. |
| ---- |
| |
| You can also add anchors on arbitrary paragraphs, using a similar naming |
| scheme. |
| |
| |
| [[depends]] |
| == Software Dependencies |
| |
| This section describes the software components used by the OpenCL spec |
| toolchain. |
| The specified versions are known to work. |
| Later compatible versions will probably work as well. |
| |
| Before building the OpenCL specs, you must install the following tools: |
| |
| * GNU make (make version: 4.0.8-1; older versions probably OK) |
| * Python 3 (python, version: 3.4.2) |
| * Ruby (ruby, version: 2.3.3) |
| ** The Ruby development package (ruby-dev) may also be required in some |
| environments. |
| * Git command-line client (git, version: 2.1.4). |
| The build can progress without a git client, but branch/commit |
| information will be omitted from the build. |
| Any version supporting the following operations should work: |
| ** `git symbolic-ref --short HEAD` |
| ** `git log -1 --format="%H"` |
| * ttf Fonts. |
| These are needed the PDF build for latexmath rendering. |
| See https://github.com/asciidoctor/asciidoctor-mathematical/blob/master/README.md#dependencies[Font Dependencies for asciidoctor-mathematical]. |
| |
| The following Ruby Gems and platform package dependencies must also be |
| installed. |
| This process is described in more detail for individual platforms and |
| environment managers below. |
| Please read the remainder of this document (other than platform-specific |
| parts you don't use) completely before trying to install. |
| |
| * Asciidoctor (asciidoctor, version: 2.0.16) |
| * Coderay (coderay, version: 1.1.1) |
| * hexapdf (version: 0.27.0) |
| * rouge (rouge, version 3.19.0) |
| * ttfunk (ttfunk, version: 1.5.1) |
| * Asciidoctor PDF (asciidoctor-pdf, version: 1.5.0) |
| * Asciidoctor Mathematical (asciidoctor-mathematical, version 0.3.5) |
| * https://github.com/asciidoctor/asciidoctor-mathematical#dependencies[Dependencies |
| for asciidoctor-mathematical] (There are a lot of these!) |
| * KaTeX distribution (version 0.7.0 from https://github.com/Khan/KaTeX . |
| This is cached under `katex/`, and need not be |
| installed from github. |
| |
| Only the `asciidoctor`, `coderay`, and `rouge` gems are needed if you don't |
| intend to build PDF versions of the spec and supporting documents. |
| |
| [NOTE] |
| .Note |
| ==== |
| While it's easier to install just the toolchain components for HTML builds, |
| people submitting MRs with substantial changes to the Specifications are |
| responsible for verifying that their branches build *both* `html` and `pdf` |
| targets. |
| ==== |
| |
| Platform-specific toolchain instructions follow: |
| |
| * <<depends-windows, Microsoft Windows>> |
| ** <<depends-ubuntu, Ubuntu / Windows 10>>. The Windows 10 Ubuntu |
| subsystem is recommended over MinGW and Cygwin for Windows builds, if |
| possible, due to speed, similarity to the Linux toolchain, and the |
| required packages being more likely to be up-to-date. |
| ** <<depends-mingw,MinGW>> (PDF builds not tested) |
| ** <<depends-cygwin, Cygwin>> |
| * <<depends-osx,Mac OS X>> |
| * <<depends-linux,Linux (Debian, Ubuntu, etc.)>> |
| |
| |
| [[depends-windows]] |
| === Windows (General) |
| |
| Most of the dependencies on Linux packages are light enough that it's |
| possible to build the spec natively in Windows, but it means bypassing the |
| makefile and calling functions directly. |
| This might be solved in future. |
| For now, there are three options for Windows users: Ubuntu / Windows 10, |
| MinGW, or Cygwin. |
| |
| |
| [[depends-ubuntu]] |
| ==== Ubuntu / Windows 10 |
| |
| When using the "`Ubuntu Subsystem`" for Windows 10, most dependencies can be |
| installed via apt-get: |
| |
| ---- |
| sudo apt-get -qq -y install build-essential python3 git cmake bison flex \ |
| libffi-dev libgmp-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev \ |
| libpango1.0-dev fonts-lyx gtk-doc-tools ghostscript |
| ---- |
| |
| The default ruby packages on Ubuntu are fairly out of date. |
| Ubuntu only provides `ruby` and `ruby2.0` - the latter is multiple revisions |
| behind the current stable branch, and would require wrangling to get the |
| makefile working with it. |
| |
| Luckily, there are better options; either https://rvm.io[rvm] or |
| https://github.com/rbenv/rbenv[rbenv] is recommended to install a more |
| recent version. |
| |
| [NOTE] |
| .Note |
| ==== |
| * If you are new to Ruby, you should *completely remove* (through the |
| package manager, e.g. `sudo apt-get remove *packagename*`) all existing |
| Ruby and asciidoctor infrastructure on your machine before trying to use |
| rvm or rbenv for the first time. |
| `dpkg -l | egrep 'asciidoctor|ruby|rbenv|rvm'` will give you a list of |
| candidate package names to remove. |
| ** If you already have a favorite Ruby package manager, ignore this |
| advice, and just install the required OS packages and gems. |
| * In addition, `rvm` and `rbenv` are *mutually incompatible*. |
| They both rely on inserting shims and `$PATH` modifications in your bash |
| shell. |
| If you already have one of these installed and are familiar with it, |
| it's best to stay with that one. |
| One of the editors, who is new to Ruby, found `rbenv` far more |
| comprehensible than `rvm`. |
| The other editor likes `rvm` better. |
| ** Neither `rvm` nor `rbenv` work, out of the box, when invoked from |
| non-Bash shells like tcsh. |
| This can be hacked up by setting the right environment variables and |
| PATH additions based on a bash environment. |
| * Most of the tools on Bash for Windows are quite happy with Windows line |
| endings (CR LF), but bash scripts expect Unix line endings (LF). |
| The file `.gitattributes` at the top of the vulkan tree in the 1.0 |
| branch forces such scripts to be checked out with the proper line |
| endings on non-Linux platforms. |
| If you add new scripts whose names don't end in `.sh`, they should be |
| included in .gitattributes as well. |
| ==== |
| |
| |
| [[depends-ubuntu-rbenv]] |
| ===== Ubuntu/Windows 10 Using Rbenv |
| |
| Rbenv is a lighter-weight Ruby environment manager with less functionality |
| than rvm. |
| Its primary task is to manage different Ruby versions, while rvm has |
| additional functionality such as managing "`gemsets`" that is irrelevant to |
| our needs. |
| |
| A complete installation script for the toolchain on Ubuntu for Windows, |
| developed on an essentially out-of-the-box environment, follows. |
| If you try this, don't try to execute the entire thing at once. |
| Do each step separately in case of errors we didn't encounter. |
| |
| ---- |
| # Install packages needed by `ruby_build` and by toolchain components. |
| # See https://github.com/rbenv/ruby-build/wiki and |
| # https://github.com/asciidoctor/asciidoctor-mathematical#dependencies |
| |
| sudo apt-get install autoconf bison build-essential libssl-dev \ |
| libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev \ |
| libffi-dev libgdbm3 libgdbm-dev cmake libgmp-dev libxml2 \ |
| libxml2-dev flex pkg-config libglib2.0-dev \ |
| libcairo-dev libpango1.0-dev libgdk-pixbuf2.0-dev \ |
| libpangocairo-1.0 |
| |
| # Install rbenv from https://github.com/rbenv/rbenv |
| git clone https://github.com/rbenv/rbenv.git ~/.rbenv |
| |
| # Set path to shim layers in .bashrc |
| echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bashrc |
| |
| ~/.rbenv/bin/rbenv init |
| |
| # Set .rbenv environment variables in .bashrc |
| echo 'eval "$(rbenv init -)"' >> .bashrc |
| |
| # Restart your shell (e.g. open a new terminal window). Note that |
| # you do not need to use the `-l` option, since the modifications |
| # were made to .bashrc rather than .bash_profile. If successful, |
| # `type rbenv` should print 'rbenv is a function' followed by code. |
| |
| # Install `ruby_build` plugin from https://github.com/rbenv/ruby-build |
| |
| git clone https://github.com/rbenv/ruby-build.git |
| ~/.rbenv/plugins/ruby-build |
| |
| # Install Ruby 2.3.3 |
| # This takes in excess of 20 min. to build! |
| # https://github.com/rbenv/ruby-build/issues/1054#issuecomment-276934761 |
| # suggests: |
| # "You can speed up Ruby installs by avoiding generating ri/RDoc |
| # documentation for them: |
| # RUBY_CONFIGURE_OPTS=--disable-install-doc rbenv install 2.3.3 |
| # We have not tried this. |
| |
| rbenv install 2.3.3 |
| |
| # Configure rbenv globally to always use Ruby 2.3.3. |
| echo "2.3.3" > ~/.rbenv/version |
| |
| # Finally, install toolchain components. |
| # asciidoctor-mathematical also takes in excess of 20 min. to build! |
| # The same RUBY_CONFIGURE_OPTS advice above may apply here as well. |
| |
| gem install asciidoctor -v 2.0.16 |
| gem install coderay -v 1.1.1 |
| gem install hexapdf -v 0.27.0 |
| gem install rouge -v 3.19.0 |
| gem install ttfunk -v 1.5.1 |
| gem install asciidoctor-pdf -v 1.5.0 |
| gem install asciidoctor-mathematical -v 0.3.5 |
| ---- |
| |
| |
| [[depends-ubuntu-rvm]] |
| ===== Ubuntu/Windows 10 Using RVM |
| |
| Here are (sparser) instructions for using rvm to setup version 2.3.x: |
| |
| ---- |
| gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 |
| \curl -sSL https://get.rvm.io | bash -s stable --ruby |
| source ~/.rvm/scripts/rvm |
| rvm install ruby-2.3 |
| rvm use ruby-2.3 |
| ---- |
| |
| NOTE: Windows 10 Bash will need to be launched with the "-l" option |
| appended, so that it runs a login shell; otherwise RVM won't function |
| correctly on future launches. |
| |
| |
| [[depends-ubuntu-sys]] |
| ===== Ubuntu 16.04 using system Ruby |
| |
| The Ubuntu 16.04.1 default Ruby install (version 2.3.1) seems to be |
| up-to-date enough to run all the required gems, but also needs the |
| `ruby-dev` package installed through the package manager. |
| |
| In addition, the library |
| `/var/lib/gems/2.3.0/gems/mathematical-1.6.7/ext/mathematical/lib/liblasem.so` |
| has to be copied or linked into a directory where the loader can find it. |
| This requirement appears to be due to a problem with the |
| asciidoctor-mathematical build process. |
| |
| |
| [[depends-mingw]] |
| ==== MinGW |
| |
| MinGW can be obtained here: http://www.mingw.org/ |
| |
| Once the installer has run its initial setup, following the |
| http://www.mingw.org/wiki/Getting_Started[instructions on the website], you |
| should install the `mingw-developer-tools`, `mingw-base` and `msys-base` |
| packages. |
| The `msys-base` package allows you to use a bash terminal from windows with |
| whatever is normally in your path on Windows, as well as the unix tools |
| installed by MinGW. |
| |
| In the native Windows environment, you should also install the following |
| native packages: |
| |
| * Python 3.x (https://www.python.org/downloads/) |
| * Ruby 2.x (https://rubyinstaller.org/) |
| * Git command-line client (https://git-scm.com/download) |
| |
| Once this is setup, and the necessary <<depends-gems,Ruby Gems>> are |
| installed, launch the `msys` bash shell, and navigate to the spec Makefile. |
| From there, you'll need to set `PYTHON=` to the location of your python |
| executable for version 3.x before your make command - but otherwise |
| everything other than pdf builds should just work. |
| |
| NOTE: Building the PDF spec via this path has not yet been tested but *may* |
| be possible - liblasem is the main issue and it looks like there is now a |
| mingw32 build of it available. |
| |
| |
| [[depends-cygwin]] |
| ==== Cygwin |
| |
| When installing Cygwin, you should install the following packages via |
| `setup`: |
| |
| ---- |
| // "curl" is only used to download fonts, can be done in another way |
| autoconf |
| bison |
| cmake |
| curl |
| flex |
| gcc-core |
| gcc-g++ |
| ghostscript |
| git |
| libbz2-devel |
| libcairo-devel |
| libcairo2 |
| libffi-devel |
| libgdk_pixbuf2.0-devel |
| libgmp-devel |
| libiconv |
| libiconv-devel |
| liblasem0.4-devel |
| libpango1.0-devel |
| libpango1.0_0 |
| libxml2 |
| libxml2-devel |
| make |
| python3 |
| ruby |
| ruby-devel |
| ---- |
| |
| NOTE: Native versions of some of these packages are usable, but care should |
| be taken for incompatibilities with various parts of cygwin - e.g. paths. |
| Ruby in particular is unable to resolve Windows paths correctly via the |
| native version. |
| Python and Git for Windows can be used, though for Python you'll need to set |
| the path to it via the PYTHON environment variable, before calling make. |
| |
| When it comes to installing the mathematical ruby gem, there are two things |
| that will require tweaking to get it working. |
| Firstly, instead of: |
| |
| ---- |
| gem install asciidoctor-mathematical |
| ---- |
| |
| You should use |
| |
| ---- |
| MATHEMATICAL_USE_SYSTEM_LASEM=1 gem install asciidoctor-mathematical |
| ---- |
| |
| The latter causes it to use the lasem package already installed, rather than |
| trying to build a fresh one. |
| |
| The mathematical gem also looks for "liblasem" rather than "liblasem0.4" as |
| installed by the lasem0.4-devel package, so it is necessary to add a symlink |
| to your /lib directory using: |
| |
| ---- |
| ln -s /lib/liblasem-0.4.dll.a /lib/liblasem.dll.a |
| ---- |
| |
| <<Ruby Gems>> are not installed to a location that is in your path normally. |
| Gems are installed to `~/bin/` - you should add this to your path before |
| calling make: |
| |
| export PATH=~/bin:$PATH |
| |
| Finally, you'll need to manually install fonts for lasem via the following |
| commands: |
| |
| ---- |
| mkdir /usr/share/fonts/truetype cd /usr/share/fonts/truetype |
| curl -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmex10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmmi10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmr10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmsy10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/esint10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/eufm10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msam10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msbm10.ttf |
| ---- |
| |
| |
| [[depends-osx]] |
| === Mac OS X |
| |
| Mac OS X should work in the same way as for ubuntu by using the Homebrew |
| package manager, with the exception that you can simply install the ruby |
| package via `brew` rather than using a ruby-specific version manager. |
| |
| You'll likely also need to install additional fonts for the PDF build via |
| mathematical, which you can do with: |
| |
| ---- |
| cd ~/Library/Fonts |
| curl -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmex10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmmi10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmr10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmsy10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/esint10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/eufm10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msam10.ttf \ |
| -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msbm10.ttf |
| ---- |
| |
| Then install the required <<depends-gems,Ruby Gems>>. |
| |
| |
| [[depends-linux]] |
| === Linux (Debian, Ubuntu, etc.) |
| |
| The instructions for the <<depends-ubuntu,Ubuntu / Windows 10>> installation |
| are generally applicable to native Linux environments using Debian packages, |
| such as Debian and Ubuntu, although the exact list of packages to install |
| may differ. |
| |
| Other distributions using different package managers, such as RPM (Fedora) |
| and Yum (SuSE) will have different requirements. |
| |
| Using `rbenv` or `rvm` is neccessary, since the system Ruby packages are |
| often well out of date. |
| |
| Once the environment manager, Ruby, and `ruby_build` have been installed, |
| install the required <<depends-gems,Ruby Gems>>. |
| |
| |
| [[depends-gems]] |
| === Ruby Gems |
| |
| The following ruby gems can be installed directly via the `gem install` |
| command, once the platform is set up: |
| |
| ---- |
| gem install asciidoctor -v 2.0.16 |
| gem install coderay -v 1.1.1 |
| gem install hexapdf -v 0.27.0 |
| gen install rouge -v 3.19.0 |
| gem install ttfunk -v 1.5.1 |
| |
| # Required only for pdf builds |
| gem install asciidoctor-pdf -v 1.5.0 |
| gem install asciidoctor-mathematical -v 0.3.5 |
| ---- |
| |
| |
| [[license]] |
| == License |
| |
| The specification Asciidoctor source files are licensed under the Creative |
| Commons Attribution 4.0 International License; see |
| https://creativecommons.org/licenses/by/4.0/ |
| |
| Additional source files used to build the specification are under a mixture of |
| Apache 2.0 and MIT licenses. See the LICENSE file for details. |
| |
| The official Specification HTML and PDF *output* documents are posted in the |
| https://www.khronos.org/registry/OpenCL[OpenCL Registry]. These |
| Specifications are placed under the proprietary Khronos specification |
| copyright and license. |
| |
| OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission |
| by Khronos. |
| |
| |
| [[history]] |
| == Revision History |
| |
| * 2024-04-07 - Add `makeSpec` instructions. |
| * 2023-11-05 - Add hexapdf, remove ghostscript |
| * 2020-03-13 - Updated package versions to match Travis build. |
| * 2019-06-20 - Add directions for publishing OpenCL 2.2 reference pages, |
| generated from the spec sources in this repository, in the |
| OpenCL-Registry repository. |
| * 2018-02-15 - Retarget document from Vulkan repository for OpenCL |
| asciidoctor spec builds. |