Source: llvm-toolchain-rocm
Section: devel
Priority: optional
Rules-Requires-Root: no
Maintainer: AMD ROCm InBox Packagers <gpudriverdevsupport@amd.com>
Uploaders: Sylvestre Ledru <sylvestre@debian.org>,
           Gianfranco Costamagna <locutusofborg@debian.org>,
           Tim Flink <tflink@tirfa.com>,
           LLVM Packaging Team <pkg-llvm-team@lists.alioth.debian.org>,
           Debian ROCm Team <debian-ai@lists.debian.org>
Build-Depends: binutils-dev,
               chrpath,
               cmake,
               debhelper-compat (= 13),
               dh-exec,
               diffstat,
               help2man,
               lcov,
               libedit-dev,
               libelf-dev,
               libffi-dev,
               libjsoncpp-dev,
               libncurses-dev,
               libxml2-dev,
               libzstd-dev,
               lsb-release,
               ninja-build,
               patchutils,
               pkg-config,
               procps,
               python3 (>= 3.8),
               sharutils,
               texinfo,
               xz-utils,
               zlib1g-dev
Standards-Version: 4.7.0
Homepage: https://www.llvm.org/
Vcs-Git: https://salsa.debian.org/pkg-llvm-team/llvm-toolchain.git -b @BRANCH_NAME@
Vcs-Browser: https://salsa.debian.org/pkg-llvm-team/llvm-toolchain/tree/@BRANCH_NAME@

# ------------- clang -------------

Package: clang-rocm
Architecture: amd64
Depends: binutils,
         libc6-dev,
         libclang-common-rocm-dev (= ${binary:Version}),
         libclang1-rocm (= ${binary:Version}),
         libllvm-rocm (= ${binary:Version}),
         llvm-rocm-linker-tools (= ${binary:Version}),
         ${dep:devlibs},
         ${misc:Depends},
         ${shlibs:Depends}
Provides: c++-compiler, c-compiler, objc++-compiler, objc-compiler
Recommends: clang-tools-rocm, llvm-rocm-dev, python3
# libomp-rocm-dev
Suggests: clang-rocm-doc, wasi-libc
Description: C, C++ and Objective-C compiler
 Clang project is a C, C++, Objective C and Objective C++ front-end
 based on the LLVM compiler. Its goal is to offer a replacement to the
 GNU Compiler Collection (GCC).
 .
 Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also
 provides most of the support of C++20.

Package: clang-tools-rocm
Architecture: amd64
Depends: clang-rocm (= ${binary:Version}),
         python3,
         ${misc:Depends},
         ${shlibs:Depends}
Description: clang-based tools for C/C++ developments
 Clang project is a C, C++, Objective C and Objective C++ front-end
 based on the LLVM compiler. Its goal is to offer a replacement to the
 GNU Compiler Collection (GCC).
 .
 Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also
 provides most of the support of C++20.
 .
 This package contains some clang-based tools like scan-build, clang-cl, etc.

Package: clang-format-rocm
Architecture: amd64
Depends: libllvm-rocm (= ${binary:Version}),
         python3,
         ${misc:Depends},
         ${shlibs:Depends}
Description: Tool to format C/C++/Obj-C code
 Clang-format is both a library and a stand-alone tool with the goal of
 automatically reformatting C++ sources files according to configurable
 style guides. To do so, clang-format uses Clang's Lexer to transform an
 input file into a token stream and then changes all the whitespace around
 those tokens. The goal is for clang-format to both serve both as a user
 tool (ideally with powerful IDE integrations) and part of other
 refactoring tools, e.g. to do a reformatting of all the lines changed
 during a renaming.
 .
 This package also provides vim and emacs plugins.

Package: clang-tidy-rocm
Architecture: amd64
Depends: clang-tools-rocm,
         libclang-common-rocm-dev (= ${binary:Version}),
         libllvm-rocm (= ${binary:Version}),
         python3,
         python3-yaml,
         ${misc:Depends},
         ${shlibs:Depends}
Description: clang-based C++ linter tool
 Provide an extensible framework for diagnosing and fixing typical programming
 errors, like style violations, interface misuse, or bugs that can be deduced
 via static analysis. clang-tidy is modular and provides a convenient interface
 for writing new checks.

Package: libclang1-rocm
Provides: ${t64:Provides}
Section: libs
Architecture: amd64
Depends: ${misc:Depends}, ${shlibs:Depends}
Pre-Depends: ${misc:Pre-Depends}
Description: C interface to the Clang library
 Clang project is a C, C++, Objective C and Objective C++ front-end
 based on the LLVM compiler. Its goal is to offer a replacement to the
 GNU Compiler Collection (GCC).
 .
 Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also
 provides most of the support of C++20.
 .
 This package contains the Clang library.
 .
 The C Interface to Clang provides a relatively small API that exposes
 facilities for parsing source code into an abstract syntax tree (AST),
 loading already-parsed ASTs, traversing the AST, associating physical source
 locations with elements within the AST, and other facilities that support
 Clang-based development tools.

Package: libclang-rocm-dev
Architecture: amd64
Section: libdevel
Depends: libclang-common-rocm-dev (= ${binary:Version}),
         libclang1-rocm (= ${binary:Version}),
         ${dep:devlibs},
         ${misc:Depends},
         ${shlibs:Depends}
Description: Clang library - Development package
 Clang project is a C, C++, Objective C and Objective C++ front-end
 based on the LLVM compiler. Its goal is to offer a replacement to the
 GNU Compiler Collection (GCC).
 .
 Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also
 provides most of the support of C++20.
 .
 This package contains the Clang headers to develop extensions over
 libclang1-rocm.

Package: libclang-common-rocm-dev
Architecture: amd64
Multi-Arch: same
Section: libdevel
Depends: ${misc:Depends}, ${shlibs:Depends}
Recommends: libclang-rt-rocm-dev
Description: Clang library - Common development package
 Clang project is a C, C++, Objective C and Objective C++ front-end
 based on the LLVM compiler. Its goal is to offer a replacement to the
 GNU Compiler Collection (GCC).
 .
 Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also
 provides most of the support of C++20.
 .
 This package contains the Clang generic headers.

# ------------- compiler-rt -------------

Package: libclang-rt-rocm-dev
Architecture: amd64
Section: libdevel
Depends: ${misc:Depends}, ${shlibs:Depends}
Description: Compiler-rt - development package
 This package provides various libraries:
 .
   * builtins - Simple libraries that provide implementation of the
     low-level target-specific hooks required by code generation
     and other runtime components.
   * sanitizer runtimes - AddressSanitizer, ThreadSanitizer,
     UndefinedBehaviorSanitizer, MemorySanitizer, LeakSanitizer
     DataFlowSanitizer, etc
   * profile - Library which is used to collect coverage information.

# ------------- clang libraries -------------

Package: libclang-cpp-rocm
Provides: ${t64:Provides}
Section: libs
Architecture: amd64
Depends: libllvm-rocm (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
Pre-Depends: ${misc:Pre-Depends}
Description: C++ interface to the Clang library
 Clang project is a C, C++, Objective C and Objective C++ front-end
 based on the LLVM compiler. Its goal is to offer a replacement to the
 GNU Compiler Collection (GCC).
 .
 Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also
 provides most of the support of C++20.
 .
 This package contains the Clang C++ library.
 .
 The C++ Interface to Clang provides an API that exposes
 facilities for parsing source code into an abstract syntax tree (AST),
 loading already-parsed ASTs, traversing the AST, associating physical source
 locations with elements within the AST, and other facilities that support
 Clang-based development tools.

Package: libclang-cpp-rocm-dev
Architecture: amd64
Section: libdevel
Depends: libclang-cpp-rocm (= ${binary:Version}),
         ${dep:devlibs},
         ${misc:Depends},
         ${shlibs:Depends}
# Move of libclang-cpp.so into libclang-cpprocm.dev
Description: C++ interface to the Clang library
 Clang project is a C, C++, Objective C and Objective C++ front-end
 based on the LLVM compiler. Its goal is to offer a replacement to the
 GNU Compiler Collection (GCC).
 .
 Clang implements all of the ISO C++ 1998, 11, 14 and 17 standards and also
 provides most of the support of C++20.
 .
 This package contains the Clang C++ library.
 .
 The C++ Interface to Clang provides an API that exposes
 facilities for parsing source code into an abstract syntax tree (AST),
 loading already-parsed ASTs, traversing the AST, associating physical source
 locations with elements within the AST, and other facilities that support
 Clang-based development tools.
 .
 This package contains symlinks without a version number, which needed by
 linker at build time.

# ------------- LLVM -------------

Package: libllvm-rocm
Provides: ${t64:Provides}
Architecture: amd64
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
Pre-Depends: ${misc:Pre-Depends}
Description: Modular compiler and toolchain technologies, runtime library
 LLVM is a collection of libraries and tools that make it easy to build
 compilers, optimizers, just-in-time code generators, and many other
 compiler-related programs.
 .
 This package contains the LLVM runtime library.

Package: llvm-rocm-linker-tools
Architecture: amd64
Depends: ${misc:Depends}, ${shlibs:Depends}
Description: Modular compiler and toolchain technologies - Plugins
 LLVM is a collection of libraries and tools that make it easy to build
 compilers, optimizers, just-in-time code generators, and many other
 compiler-related programs.
 .
 This package contains the LLVMgold and LLVMPolly linker plugins.

Package: llvm-rocm
Architecture: amd64
Suggests: llvm-rocm-doc
Depends: llvm-rocm-linker-tools (= ${binary:Version}),
         llvm-rocm-runtime (= ${binary:Version}),
         ${misc:Depends},
         ${shlibs:Depends}
Recommends: llvm-rocm-dev
Description: Modular compiler and toolchain technologies
 LLVM is a collection of libraries and tools that make it easy to build
 compilers, optimizers, just-in-time code generators, and many other
 compiler-related programs.
 .
 LLVM uses a single, language-independent virtual instruction set both
 as an offline code representation (to communicate code between
 compiler phases and to run-time systems) and as the compiler internal
 representation (to analyze and transform programs). This persistent
 code representation allows a common set of sophisticated compiler
 techniques to be applied at compile-time, link-time, install-time,
 run-time, or "idle-time" (between program runs).
 .
 The strengths of the LLVM infrastructure are its extremely
 simple design (which makes it easy to understand and use),
 source-language independence, powerful mid-level optimizer, automated
 compiler debugging support, extensibility, and its stability and
 reliability. LLVM is currently being used to host a wide variety of
 academic research projects and commercial projects. LLVM includes C
 and C++ front-ends, a front-end for a Forth-like language (Stacker),
 a young scheme front-end, and Java support is in development. LLVM can
 generate code for X96, SparcV10, PowerPC or many other architectures.

Package: llvm-rocm-runtime
Architecture: amd64
Depends: ${misc:Depends}, ${shlibs:Depends}
Recommends: binfmt-support | systemd
Description: Modular compiler and toolchain technologies, IR interpreter
 LLVM is a collection of libraries and tools that make it easy to build
 compilers, optimizers, just-in-time code generators, and many other
 compiler-related programs.
 .
 LLVM uses a single, language-independent virtual instruction set both
 as an offline code representation (to communicate code between
 compiler phases and to run-time systems) and as the compiler internal
 representation (to analyze and transform programs). This persistent
 code representation allows a common set of sophisticated compiler
 techniques to be applied at compile-time, link-time, install-time,
 run-time, or "idle-time" (between program runs).
 .
 This package provides the minimal required to execute programs in LLVM
 format.

Package: llvm-rocm-dev
Architecture: amd64
Depends: libclang-cpp-rocm (= ${binary:Version}),
         libffi-dev,
         libllvm-rocm (= ${binary:Version}),
         libncurses-dev,
         libxml2-dev,
         llvm-rocm (= ${binary:Version}),
         llvm-rocm-tools (= ${binary:Version}),
         ${misc:Depends},
         ${shlibs:Depends}
Description: Modular compiler and toolchain technologies, libraries and headers
 LLVM is a collection of libraries and tools that make it easy to build
 compilers, optimizers, just-in-time code generators, and many other
 compiler-related programs.
 .
 LLVM uses a single, language-independent virtual instruction set both
 as an offline code representation (to communicate code between
 compiler phases and to run-time systems) and as the compiler internal
 representation (to analyze and transform programs). This persistent
 code representation allows a common set of sophisticated compiler
 techniques to be applied at compile-time, link-time, install-time,
 run-time, or "idle-time" (between program runs).
 .
 This package provides the libraries and headers to develop applications
 using llvm.

Package: llvm-rocm-tools
Architecture: amd64
Depends: python3,
         python3-pygments,
         python3-yaml,
         ${misc:Depends},
         ${shlibs:Depends}
# Because of yaml-bench
Description: Modular compiler and toolchain technologies, tools
 LLVM is a collection of libraries and tools that make it easy to build
 compilers, optimizers, just-in-time code generators, and many other
 compiler-related programs.
 .
 LLVM uses a single, language-independent virtual instruction set both
 as an offline code representation (to communicate code between
 compiler phases and to run-time systems) and as the compiler internal
 representation (to analyze and transform programs). This persistent
 code representation allows a common set of sophisticated compiler
 techniques to be applied at compile-time, link-time, install-time,
 run-time, or "idle-time" (between program runs).
 .
 This package provides tools for testing.

# ------------- lld -------------

Package: lld-rocm
Architecture: amd64
Depends: libllvm-rocm (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
Pre-Depends: ${misc:Pre-Depends}
Description: LLVM-based linker
 LLD is a new, high-performance linker. It is built as a set of reusable
 components which highly leverage existing libraries in the larger LLVM
 Project.

# we're not building lld libraries, just the binary
#Package: liblld-rocm
#Architecture: amd64
#Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm-rocm (= ${binary:Version})
#Pre-Depends: ${misc:Pre-Depends}
#Section: libs
#Description: LLVM-based linker, library
# LLD is a new, high-performance linker. It is built as a set of reusable
# components which highly leverage existing libraries in the larger LLVM
# Project.
# .
# This package contains the LLD runtime library.
#
#Package: liblld-rocm-dev
#Section: libdevel
#Architecture: amd64
#Depends: ${shlibs:Depends}, ${misc:Depends}, lld-rocm (= ${binary:Version}),
# liblld-rocm (= ${binary:Version}), libzstd-dev, zlib1g-dev
#Pre-Depends: ${misc:Pre-Depends}
#Description: LLVM-based linker, header files
# LLD is a new, high-performance linker. It is built as a set of reusable
# components which highly leverage existing libraries in the larger LLVM
# Project.
# .
# This package provides the header files to build extension over lld.

# ------------- lldb -------------

Package: lldb-rocm
Architecture: amd64
Depends: libllvm-rocm (= ${binary:Version}),
         python3-lldb-rocm,
         ${misc:Depends},
         ${shlibs:Depends}
Pre-Depends: ${misc:Pre-Depends}
Description: Next generation, high-performance debugger
 LLDB is a next generation, high-performance debugger. It is built as a set of
 reusable components which highly leverage existing libraries in the larger LLVM
 Project, such as the Clang expression parser and LLVM disassembler.

Package: liblldb-rocm
Provides: ${t64:Provides}
Architecture: amd64
Depends: libllvm-rocm (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
Pre-Depends: ${misc:Pre-Depends}
Section: libs
Description: Next generation, high-performance debugger, library
 LLDB is a next generation, high-performance debugger. It is built as a set of
 reusable components which highly leverage existing libraries in the larger LLVM
 Project, such as the Clang expression parser and LLVM disassembler.
 .
 This package contains the LLDB runtime library.

Package: liblldb-rocm-dev
Section: libdevel
Architecture: amd64
Depends: lldb-rocm (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
Pre-Depends: ${misc:Pre-Depends}
Description: Next generation, high-performance debugger, header files
 LLDB is a next generation, high-performance debugger. It is built as a set of
 reusable components which highly leverage existing libraries in the larger LLVM
 Project, such as the Clang expression parser and LLVM disassembler.
 .
 This package provides the header files to build extension over lldb.

# ------------- openmp -------------
# 44 because it was the first version in which openmp & libc++ have been
# managed in llvm-defaults

# not building openmp with the rocm fork
#Package: libomp-rocm-dev
#Section: libdevel
#Architecture: amd64
#Depends: libomp5-rocm (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
#Suggests: libomp-rocm-doc
#Breaks: libiomp-dev (<< 3.7-1)
#Provides: libomp-x.y-dev
#Conflicts: libomp-x.y-dev
#Replaces: libomp-x.y-dev
#Description: LLVM OpenMP runtime - dev package
# The runtime is the part of the OpenMP implementation that your code is
# linked against, and that manages the multiple threads in an OpenMP program
# while it is executing.
#
#Package: libomp5-rocm
#Architecture: amd64
#Depends: ${shlibs:Depends}, ${misc:Depends}
#Provides: ${t64:Provides}, libomp-x.y
#Conflicts: libomp-x.y
#Replaces: libomp-x.y
#Description: LLVM OpenMP runtime
# The runtime is the part of the OpenMP implementation that your code is
# linked against, and that manages the multiple threads in an OpenMP program
# while it is executing.

# ------------- libcxx -------------

Package: libc++1-rocm
Section: libs
Architecture: amd64
Pre-Depends: ${misc:Pre-Depends}
Depends: ${misc:Depends}, ${shlibs:Depends}
Suggests: clang
Provides: libc++-x.y, ${t64:Provides}
Conflicts: libc++-x.y
Replaces: libc++-x.y
Description: LLVM C++ Standard library
 libc++ is another implementation of the C++ standard library.
 .
 Features and Goals
 .
   * Correctness as defined by the C++ standards.
   * Fast execution.
   * Minimal memory use.
   * Fast compile times.
   * ABI compatibility with gcc's libstdc++ for some low-level features such
     as exception objects, rtti and memory allocation.
   * Extensive unit tests.

Package: libc++-rocm-dev
Section: libdevel
Architecture: amd64
Depends: libc++1-rocm (= ${binary:Version}),
         libc++abi-rocm-dev (= ${binary:Version}),
         libunwind-rocm-dev [amd64 arm64 armhf i386 loong64 ppc64el ppc64 riscv64],
         ${misc:Depends}
Provides: libc++-x.y-dev
Conflicts: libc++-x.y-dev
Replaces: libc++-x.y-dev
Description: LLVM C++ Standard library (development files)
 libc++ is another implementation of the C++ standard library
 .
 Features and Goals
 .
   * Correctness as defined by the C++ standards.
   * Fast execution.
   * Minimal memory use.
   * Fast compile times.
   * ABI compatibility with gcc's libstdc++ for some low-level features such
     as exception objects, rtti and memory allocation.
   * Extensive unit tests.

# ------------- libcxxabi -------------

Package: libc++abi1-rocm
Section: libs
Architecture: amd64
Pre-Depends: ${misc:Pre-Depends}
Depends: ${misc:Depends}, ${shlibs:Depends}
Provides: libc++abi-x.y, ${t64:Provides}
Conflicts: libc++abi-x.y
Replaces: libc++abi-x.y
Description: LLVM low level support for a standard C++ library
 libc++abi is another implementation of low level support for a standard C++
 library.
 .
 Features and Goals
 .
   * Correctness as defined by the C++ standards.
   * Provide a portable sublayer to ease the porting of libc++

Package: libc++abi-rocm-dev
Section: libdevel
Architecture: amd64
Depends: libc++abi1-rocm (= ${binary:Version}), ${misc:Depends}
Breaks: libc++abi-dev (<= 44)
Provides: libc++abi-x.y-dev
Conflicts: libc++abi-x.y-dev
Replaces: libc++abi-x.y-dev
Description: LLVM low level support for a standard C++ library (development files)
 libc++abi is another implementation of low level support for a standard C++
 library.
 .
 Features and Goals
 .
   * Correctness as defined by the C++ standards.
   * Provide a portable sublayer to ease the porting of libc++

# ------------- rocm-specific packages -------------
Package: hipcc-libomp-devel
Section: libdevel
Architecture: amd64
Depends: libomp-19-dev
Description: OpenMP header files compatible with hipcc
 This package is meant to pull libomp in from system llvm in a way that is compatible with hipcc

Package: hipcc-rocm
Section: libdevel
Architecture: amd64
Depends: clang-rocm,
         clang-tools-rocm,
         file,
         libamdhip64-dev,
         libclang-rt-rocm-dev,
         lld-rocm,
         llvm-rocm,
         rocm-device-libs (= ${binary:Version}),
         rocminfo (>= 6.1.2~),
         ${misc:Depends}
Conflicts: hipcc
Description: C++ Runtime API and Kernel Language for AMD and NVIDIA GPUs
 HIP (Heterogeneous Interface for Portability) is a C++ Runtime API and Kernel
 Language that allows developers to create portable applications for AMD and
 NVIDIA GPUs from single source code.
 .
 Key features include:
 .
  * HIP is very thin and has little or no performance impact over coding
    directly in CUDA mode;
  * HIP allows coding in a single-source C++ programming language including
    features such as templates, C++11 lambdas, classes, namespaces, and more;
  * HIP allows developers to use the "best" development environment and tools
    on each target platform;
  * the HIPify tools automatically convert source from CUDA to HIP;
  * developers can specialize for the platform (CUDA or AMD) to tune for
    performance or handle tricky cases.
 .
 New projects can be developed directly in the portable HIP C++ language and
 can run on either NVIDIA or AMD platforms.  Additionally, HIP provides porting
 tools which make it easy to port existing CUDA codes to the HIP layer, with no
 loss of performance as compared to the original CUDA application.  HIP is not
 intended to be a drop-in replacement for CUDA, and developers should expect to
 do some manual coding and performance tuning work to complete the port.
 .
 This package provides the compiler to compile the HIP source programs.

Package: rocm-device-libs
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
Description: AMD specific device-side language runtime libraries
 Set of AMD specific device-side language runtime libraries, specifically: the
 Open Compute library controls, the Open Compute Math library, the Open Compute
 Kernel library, the OpenCL built-in library, the HIP built-in library, and the
 Heterogeneous Compute built-in library.

Package: libamd-comgr3-rocm
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
Conflicts: libamd-comgr3
Multi-Arch: same
Description: ROCm code object manager
 The Code Object Manager is a shared library which provides operations for
 creating and inspecting LLVM code objects. See the documentation in the
 header file /usr/include/amd_comgr/amd_comgr.h .

Package: libamd-comgr-rocm-dev
Architecture: any
Section: libdevel
Depends: libamd-comgr3-rocm (= ${binary:Version}),
         ${misc:Depends},
         ${shlibs:Depends}
Conflicts: libamd-comgr-dev
Description: ROCm code object manager - development package
 The Code Object Manager is a shared library which provides operations for
 creating and inspecting LLVM code objects. See the documentation in the
 header file /usr/include/amd_comgr/amd_comgr.h .
 .
 This package contains the development files.
