
* Replace URL computation in base IntelOneApiPackage class with defining URLs in component packages (this is expected to be simpler for now) * Add component_dir property that all oneAPI component packages must define. This property names a directory that should exist after installation completes (useful for making sure the install was successful) and also defines the search location for the component's environment update script. * Add needed dependencies for components (e.g. intel-oneapi-dnn requires intel-oneapi-tbb). The compilers provided by intel-oneapi-compilers need some components under certain circumstances (e.g. when enabling SYCL support) but these were omitted since the libraries should only be linked when a dependent package requests that feature * Remove individual setup_run_environment implementations and use IntelOneApiPackage superclass method which sources vars.sh (located in a subdirectory of component_dir) * Add documentation for IntelOneApiPackge build system Co-authored-by: Vasily Danilin <vasily.danilin@yandex.ru>
95 lines
2.6 KiB
ReStructuredText
95 lines
2.6 KiB
ReStructuredText
.. Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
|
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
|
|
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
|
|
.. _build-systems:
|
|
|
|
=============
|
|
Build Systems
|
|
=============
|
|
|
|
Spack defines a number of classes which understand how to use common
|
|
`build systems <https://en.wikipedia.org/wiki/List_of_build_automation_software>`_
|
|
(Makefiles, CMake, etc.). Spack package definitions can inherit these
|
|
classes in order to streamline their builds.
|
|
|
|
This guide provides information specific to each particular build system.
|
|
It assumes that you've read the :ref:`packaging-guide` and expands
|
|
on these ideas for each distinct build system that Spack supports:
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:caption: Make-based
|
|
|
|
build_systems/makefilepackage
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:caption: Make-incompatible
|
|
|
|
build_systems/mavenpackage
|
|
build_systems/sconspackage
|
|
build_systems/wafpackage
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:caption: Build-script generation
|
|
|
|
build_systems/autotoolspackage
|
|
build_systems/cmakepackage
|
|
build_systems/mesonpackage
|
|
build_systems/qmakepackage
|
|
build_systems/sippackage
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:caption: Language-specific
|
|
|
|
build_systems/octavepackage
|
|
build_systems/perlpackage
|
|
build_systems/pythonpackage
|
|
build_systems/rpackage
|
|
build_systems/rubypackage
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:caption: Other
|
|
|
|
build_systems/bundlepackage
|
|
build_systems/cudapackage
|
|
build_systems/inteloneapipackage
|
|
build_systems/intelpackage
|
|
build_systems/rocmpackage
|
|
build_systems/custompackage
|
|
|
|
For reference, the :py:mod:`Build System API docs <spack.build_systems>`
|
|
provide a list of build systems and methods/attributes that can be
|
|
overridden. If you are curious about the implementation of a particular
|
|
build system, you can view the source code by running:
|
|
|
|
.. code-block:: console
|
|
|
|
$ spack edit --build-system autotools
|
|
|
|
|
|
This will open up the ``AutotoolsPackage`` definition in your favorite
|
|
editor. In addition, if you are working with a less common build system
|
|
like QMake, SCons, or Waf, it may be useful to see examples of other
|
|
packages. You can quickly find examples by running:
|
|
|
|
.. code-block:: console
|
|
|
|
$ cd var/spack/repos/builtin/packages
|
|
$ grep -l QMakePackage */package.py
|
|
|
|
|
|
You can then view these packages with ``spack edit``.
|
|
|
|
This guide is intended to supplement the
|
|
:py:mod:`Build System API docs <spack.build_systems>` with examples of
|
|
how to override commonly used methods. It also provides rules of thumb
|
|
and suggestions for package developers who are unfamiliar with a
|
|
particular build system.
|