#
# spec file for package llvm14
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%define _relver 14.0.6
%define _version %_relver%{?_rc:rc%_rc}
%define _tagver %_relver%{?_rc:-rc%_rc}
%define _minor  14.0
%define _sonum  14
%define _itsme14 1
# Integer version used by update-alternatives
%define _uaver  1406
%define _soclang 13
%define _socxx  1

%ifarch x86_64 aarch64 %arm
%bcond_without libcxx
%else
%bcond_with libcxx
%endif

%ifarch aarch64 ppc64 ppc64le %{ix86} x86_64
%bcond_without openmp
%else
%bcond_with openmp
%endif

%ifarch s390x
%bcond_with use_lld
%else
%bcond_without use_lld
%endif

%ifarch x86_64
%bcond_without lldb
%bcond_without lldb_python
%else
%bcond_with lldb
%bcond_with lldb_python
%endif

# Disabled on ARM because it's awfully slow and often times out. (boo#1178070)
%ifarch %{ix86} ppc64le s390x x86_64
%bcond_without thin_lto
%else
%bcond_with thin_lto
%endif

%bcond_with ffi
%bcond_with oprofile
%bcond_with valgrind
%bcond_without polly
%bcond_without lld

# Figure out the host triple.
%ifarch armv6hl
# See https://build.opensuse.org/request/show/968066.
%define host_cpu armv6kz
%else
%define host_cpu %{_host_cpu}
%endif

%ifarch %{arm}
%define host_triple %{host_cpu}-%{_host_vendor}-%{_host_os}-gnueabihf
%else
%define host_triple %{host_cpu}-%{_host_vendor}-%{_host_os}
%endif

# By default, build everything.
%global llvm_targets "all"
%global llvm_experimental_targets "M68k"
%ifarch %arm ppc64 ppc64le
# No cross-compilation, but GPU targets.
%global llvm_targets "host;AMDGPU;BPF;NVPTX;WebAssembly"
%global llvm_experimental_targets ""
%endif
%ifarch ppc s390x
# No graphics cards on System Z; turned off for ppc because of relocation overflows.
%global llvm_targets "host;BPF;WebAssembly"
%global llvm_experimental_targets ""
%endif

%define _plv %{!?product_libs_llvm_ver:%{_sonum}}%{?product_libs_llvm_ver}

# Expands to -n if we're providing the distribution default for the given package.
%define multisource() %{expand:%%{?_itsme%{expand:%%{!?product_libs_llvm_ver_%{1}:%%{_plv}}%%{?product_libs_llvm_ver_%{1}}}:-n}}

# set_jobs type memory
# Set max_<type>_jobs so that every job of the given type has at least the
# given amount of memory.
%define set_jobs() \
    max_%{1}_jobs="%{?jobs:%{jobs}}" \
    if test -n "$max_%{1}_jobs" -a "$max_%{1}_jobs" -gt 1 ; then \
        max_jobs="$(($avail_mem / %2))" \
        test "$max_%{1}_jobs" -gt "$max_jobs" && max_%{1}_jobs="$max_jobs" && echo "Warning: Reducing number of %{1} jobs to $max_jobs because of memory limits" \
        test "$max_%{1}_jobs" -le 0 && max_%{1}_jobs=1 && echo "Warning: Not %{1}ing in parallel at all because of memory limits" \
    fi

# Recursion utils.
%global _stop0 1
%define _lapply_rec(p:f:) %{expand:%{%{-p*} %{-f*}} %%{?!_stop%#:%%{_lapply_rec -p %{-p*} -f %*}}}

# Usage:
#   %%global pattern foo_%%1
#   %%{lapply -p pattern a b c}
# produces foo_a foo_b foo_c.
%define lapply(p:) %{_lapply_rec -p %{-p*} -f %{shrink:%*}}

%define comment() %{nil}

# Due to RPMs recursion limit, we have to split the lists into portions of ≤ 20.
%global llvm_ua_anchor llvm-ar
%global llvm_tools \
%{comment Optimizer, compiler, interpreter, linker} \
    llc \
    lli \
    llvm-jitlink \
    llvm-link \
    llvm-lto \
    llvm-lto2 \
    llvm-rtdyld \
    opt \
%{comment LLVM IR tools} \
    llvm-as \
    llvm-bcanalyzer \
    llvm-bitcode-strip \
    llvm-cat \
    llvm-diff \
    llvm-dis \
    llvm-extract \
    llvm-modextract \
    llvm-sim \
    llvm-split
%global llvm_elf_dwarf_tools \
%{comment ELF tools} \
    llvm-cfi-verify \
    llvm-nm \
    llvm-objcopy \
    llvm-objdump \
    llvm-ranlib \
    llvm-readelf \
    llvm-readobj \
    llvm-size \
    llvm-strip \
%{comment Debug info tools} \
    dsymutil \
    llvm-addr2line \
    llvm-debuginfod-find \
    llvm-dwarfdump \
    llvm-dwp \
    llvm-gsymutil
%global llvm_abi_coff_macho_tools \
%{comment ABI tools} \
    llvm-cxxdump \
    llvm-cxxfilt \
    llvm-cxxmap \
    llvm-ifs \
%{comment Windows/COFF} \
    llvm-cvtres \
    llvm-dlltool \
    llvm-lib \
    llvm-ml \
    llvm-mt \
    llvm-pdbutil \
    llvm-rc \
    llvm-undname \
    llvm-windres \
%{comment Apple/Mach-O} \
    llvm-install-name-tool \
    llvm-libtool-darwin \
    llvm-lipo \
    llvm-otool \
    llvm-tapi-diff
%global llvm_instr_devel_tools \
%{comment Instrumentation and introspection} \
    llvm-cov \
    llvm-opt-report \
    llvm-profdata \
    llvm-profgen \
    llvm-symbolizer \
    llvm-xray \
    sancov \
    sanstats \
%{comment Development utilities} \
    bugpoint \
    llvm-c-test \
    llvm-mc \
    llvm-mca \
    llvm-reduce \
    llvm-stress \
    llvm-strings \
    llvm-tblgen \
    llvm-tli-checker \
    split-file \
    verify-uselistorder

%global clang_ua_anchor clang
%global clang_binfiles \
    c-index-test \
    clang++ \
    clang-check \
    clang-cl \
    clang-extdef-mapping \
    clang-format \
    clang-linker-wrapper \
    clang-nvlink-wrapper \
    clang-offload-bundler \
    clang-offload-wrapper \
    clang-refactor \
    clang-rename \
    clang-repl \
    clang-scan-deps \
    diagtool
%global clang_tools_extra_binfiles \
    clang-apply-replacements \
    clang-change-namespace \
    clang-include-fixer \
    clang-move \
    clang-query \
    clang-reorder-fields \
    clang-tidy \
    clangd \
    find-all-symbols \
    modularize \
    pp-trace
%if %{with lld}
%global lld_ua_anchor lld
%global lld_binfiles \
    ld.lld \
    lld-link \
    ld64.lld \
    wasm-ld
%endif
%if %{with lldb}
%global lldb_ua_anchor lldb
%global lldb_binfiles \
    lldb-argdumper \
    lldb-instr \
    lldb-server \
    lldb-vscode
%endif
%global binfiles \
    %{llvm_ua_anchor} %{llvm_tools} %{llvm_elf_dwarf_tools} \
    %{llvm_abi_coff_macho_tools} %{llvm_instr_devel_tools} \
    %{clang_ua_anchor} %{clang_binfiles} %{clang_tools_extra_binfiles} \
    %{?lld_ua_anchor} %{?lld_binfiles} %{?lldb_ua_anchor} %{?lldb_binfiles}

%global llvm_man \
%{comment Optimizer, compiler, interpreter, linker} \
    llc \
    lli \
    llvm-link \
    opt \
%{comment LLVM IR tools} \
    llvm-as \
    llvm-bcanalyzer \
    llvm-dis \
    llvm-extract \
%{comment Instrumentation and introspection} \
    llvm-cov \
    llvm-profdata \
    llvm-profgen \
    llvm-symbolizer
%global llvm_bin_utils_man \
%{comment ELF tools} \
    llvm-ar \
    llvm-nm \
    llvm-objcopy \
    llvm-objdump \
    llvm-ranlib \
    llvm-readelf \
    llvm-readobj \
    llvm-size \
    llvm-strip \
%{comment Debug info tools} \
    dsymutil \
    llvm-addr2line \
    llvm-dwarfdump \
%{comment Windows/COFF} \
    llvm-lib \
    llvm-pdbutil \
%{comment Apple/Mach-O} \
    llvm-install-name-tool \
    llvm-libtool-darwin \
    llvm-lipo \
    llvm-otool
%global llvm_devel_utils_man \
%{comment ABI tools} \
    llvm-cxxfilt \
    llvm-cxxmap \
%{comment Development utilities} \
    bugpoint \
    llvm-diff \
    llvm-mca \
    llvm-stress \
    llvm-strings \
    llvm-tblgen \
    llvm-tli-checker

%global clang_manfiles clang diagtool
%global manfiles %{llvm_man} %{llvm_bin_utils_man} %{llvm_devel_utils_man} %{clang_manfiles}

%define _dwz_low_mem_die_limit  40000000
%define _dwz_max_die_limit     200000000

Name:           llvm14
Version:        %_relver%{?_rc:~rc%_rc}
Release:        7.2
Summary:        Low Level Virtual Machine
License:        Apache-2.0 WITH LLVM-exception AND NCSA
Group:          Development/Languages/Other
URL:            https://www.llvm.org/
# NOTE: please see README.packaging in the llvm package for details on how to update this package
Source0:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/llvm-%{_version}.src.tar.xz
Source1:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/clang-%{_version}.src.tar.xz
Source2:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/clang-tools-extra-%{_version}.src.tar.xz
Source3:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/compiler-rt-%{_version}.src.tar.xz
Source4:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/libcxx-%{_version}.src.tar.xz
Source5:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/libcxxabi-%{_version}.src.tar.xz
Source6:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/openmp-%{_version}.src.tar.xz
Source7:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/lld-%{_version}.src.tar.xz
Source8:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/lldb-%{_version}.src.tar.xz
Source9:        https://github.com/llvm/llvm-project/releases/download/llvmorg-%{_tagver}/polly-%{_version}.src.tar.xz
Source10:       https://github.com/llvm/llvm-project/raw/llvmorg-%{_tagver}/libunwind/include/mach-o/compact_unwind_encoding.h
# Docs are created manually, see below
Source50:       llvm-docs-%{_version}.src.tar.xz
Source51:       clang-docs-%{_version}.src.tar.xz
Source100:      %{name}-rpmlintrc
Source101:      baselibs.conf
# PATCH-FIX-OPENSUSE lto-disable-cache.patch -- Disable ThinLTO cache
Patch0:         lto-disable-cache.patch
# PATCH-FIX-OPENSUSE -- Consider Rust memory management functions as lifetime markers. (From https://github.com/rust-lang/llvm-project.)
Patch1:         llvm-lifetime-for-rust.patch
# PATCH-FIX-OPENSUSE assume-opensuse.patch idoenmez@suse.de -- Always enable openSUSE/SUSE features
Patch2:         assume-opensuse.patch
# PATCH-FIX-OPENSUSE default-to-i586.patch -- Use i586 as default target for 32bit
Patch3:         default-to-i586.patch
Patch4:         clang-resourcedirs.patch
Patch5:         llvm-remove-clang-only-flags.patch
Patch6:         llvm-fix-find-gcc5-install.patch
Patch9:         link-clang-shared.patch
Patch10:        link-clang-tools-extra-shared.patch
# PATCH-FIX-OPENSUSE lldb-cmake.patch -- Fix ncurses include path.
Patch11:        lldb-cmake.patch
Patch13:        llvm-normally-versioned-libllvm.patch
Patch14:        llvm-do-not-install-static-libraries.patch
Patch20:        llvm_build_tablegen_component_as_shared_library.patch
Patch21:        tests-use-python3.patch
Patch22:        llvm-better-detect-64bit-atomics-support.patch
Patch24:        opt-viewer-Find-style-css-in-usr-share.patch
# PATCH-FIX-OPENSUSE check-no-llvm-exegesis.patch -- Don't let tests depend on llvm-exegesis.
# We don't build this because it's not useful without libpfm and can't link with libLLVM.so.
Patch25:        check-no-llvm-exegesis.patch
# PATCH-FIX-OPENSUSE lld-default-sha1.patch
Patch26:        lld-default-sha1.patch
# Fix for https://github.com/llvm/llvm-project/issues/56242.
Patch27:        llvm-scev-fix-isImpliedViaMerge.patch
# Fix lookup of targets in installed CMake files. (boo#1180748, https://reviews.llvm.org/D96670)
Patch33:        CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch
# Make link dependencies of clang-repl private (https://reviews.llvm.org/D122546).
Patch34:        clang-repl-private-deps.patch
# Cherry pick patch from LLVM 15: https://github.com/llvm/llvm-project/issues/56421
Patch35:        llvm-glibc-2-36.patch
# Let test match for linux instead of -linux-.
Patch36:        clang-test-xfail-gnuless-triple.patch
# Cherry pick from rust llvm project (https://reviews.llvm.org/D127751)
Patch37:        llvm-preserve-symbols-used.patch
# Fix build with Swig 4.1.0: backport of upstream commits 81fc5f7909a4, f0a25fe0b746. (gh#llvm/llvm-project#58018)
Patch38:        lldb-swig-4.1.0-build-fix.patch

# eisfair patch i586-pc-linux-gnu
Patch1000:      llvm-target-i586-pc-linux-gnu.patch


BuildRequires:  binutils-devel >= 2.21.90
BuildRequires:  cmake >= 3.13.4
BuildRequires:  fdupes
BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  libstdc++-devel
BuildRequires:  ninja
BuildRequires:  pkgconfig
BuildRequires:  python-rpm-macros
BuildRequires:  python3-base
BuildRequires:  pkgconfig(libedit)
BuildRequires:  pkgconfig(zlib)
Requires(post): update-alternatives
Requires(postun):update-alternatives
# llvm does not work on s390
ExcludeArch:    s390
%if %{with ffi}
BuildRequires:  pkgconfig(libffi)
%endif
%if %{with valgrind}
BuildRequires:  pkgconfig(valgrind)
%endif
%if %{with oprofile}
BuildRequires:  oprofile-devel
%endif
Suggests:       %{name}-doc

%description
LLVM is a compiler infrastructure designed for compile-time,
link-time, runtime, and idle-time optimization of programs from
arbitrary programming languages.

The compiler infrastructure includes mirror sets of programming
tools as well as libraries with equivalent functionality.

%package -n libLLVM%{_sonum}
Summary:        Libraries for LLVM
Group:          System/Libraries

%description -n libLLVM%{_sonum}
This package contains the shared libraries needed for LLVM.

%package devel
Summary:        Header Files for LLVM
Group:          Development/Libraries/C and C++
Requires:       %{name} = %{version}
%if %{with openmp}
# Referenced by LLVMExports.cmake
Requires:       libomp%{_sonum}-devel
%endif
Requires:       libLLVM%{_sonum} = %{version}
Requires:       libLTO%{_sonum} = %{version}
Requires:       libstdc++-devel
Requires:       libtool
Requires:       llvm%{_sonum}-gold
%if %{with polly}
# Referenced by LLVMExports.cmake
Requires:       llvm%{_sonum}-polly-devel
%endif
Requires:       pkgconfig
Conflicts:      llvm-devel-provider < %{version}
%if %{suse_version} <= 1500
# llvm{5,7} in SLE/Leap 15.x used to have the man page for FileCheck.
Conflicts:      llvm5
Conflicts:      llvm7
%endif
Conflicts:      cmake(LLVM)
# libLTO.so used to be a separate package.
Conflicts:      libLTO.so < %{version}
Provides:       libLTO.so = %{version}
Provides:       llvm-devel-provider = %{version}
%if %{with ffi}
Requires:       pkgconfig(libffi)
%endif
%if %{with valgrind}
Requires:       pkgconfig(valgrind)
%endif
%if %{with oprofile}
Requires:       oprofile-devel
%endif

%description devel
This package contains library and header files needed to develop
new native programs that use the LLVM infrastructure.

%package doc
Summary:        Documentation for LLVM
Group:          Documentation/HTML
Requires:       %{name} = %{version}
# The docs used to be contained in the devel package.
Conflicts:      llvm-devel-provider < 9.0.0
Conflicts:      llvm-doc-provider < %{version}
Provides:       llvm-doc-provider = %{version}
BuildArch:      noarch

%description doc
This package contains documentation for the LLVM infrastructure.

%package -n clang%{_sonum}
Summary:        CLANG frontend for LLVM
Group:          Development/Languages/C and C++
URL:            https://clang.llvm.org/
Requires(post): update-alternatives
Requires(postun):update-alternatives
Recommends:     clang-tools
Recommends:     gcc
Recommends:     glibc-devel
Recommends:     libstdc++-devel
Suggests:       clang%{_sonum}-doc
Suggests:       libc++-devel

%description -n clang%{_sonum}
This package contains the clang (C language) frontend for LLVM.

%package -n clang-tools
Summary:        Tools for Clang
Group:          Development/Languages/C and C++
URL:            https://clang-analyzer.llvm.org/
# Avoid multiple provider errors
Requires:       clang%{_sonum}
# Some binaries used to be in the clang package.
Conflicts:      clang5
Conflicts:      clang6
# hmaptool used to be contained in the llvm package.
Conflicts:      llvm5
Conflicts:      llvm6
%if %{suse_version} <= 1500
# llvm9 in SLE/Leap 15.x is still affected.
Conflicts:      llvm9
%endif
Conflicts:      scan-build < %{version}
Conflicts:      scan-view < %{version}
Provides:       scan-build = %{version}
Provides:       scan-view = %{version}
Conflicts:      emacs-llvm < %{version}
Provides:       emacs-llvm = %{version}
Conflicts:      vim-plugin-llvm < %{version}

%description -n clang-tools
This package contains tools and scripts for using Clang, including:
* bash completions for clang,
* the clang-doc tool,
* plugins for using clang-format, clang-rename, clang-include-fixer
  in vim and emacs.
* scripts for using clang-format: git-clang-format and clang-format-diff,
* scripts for using clang-tidy: run-clang-tidy and clang-tidy-diff,
* scripts for using the Clang static analyzer: scan-build and scan-view,
* a script for using find-all-symbols: run-find-all-symbols.

%package %{multisource libclang%{_soclang}} libclang%{_soclang}
Summary:        Clang stable C API for indexing and code completion
Group:          System/Libraries
Provides:       libclang%{_soclang} = %{version}
Conflicts:      libclang%{_soclang} < %{version}

%description %{multisource libclang%{_soclang}} libclang%{_soclang}
This library exposes a limited C API for indexing and code completion for
code written in languages of the C family.
It is designed to be stable across major versions of LLVM.

It corresponds to the header files in %{_includedir}/clang-c.

%package -n libclang-cpp%{_sonum}
Summary:        Clang full C++ API
Group:          System/Libraries

%description -n libclang-cpp%{_sonum}
This library exposes the full C++ API to Clang that is used to implement
all Clang tools. It is not stable across major LLVM versions.

It corresponds to the header files in %{_includedir}/clang.

%package -n clang%{_sonum}-devel
Summary:        CLANG frontend for LLVM (devel package)
Group:          Development/Libraries/C and C++
Requires:       %{name}-devel = %{version}
Requires:       clang%{_sonum} = %{version}
Requires:       clang-tools >= %{version}
Requires:       libclang%{_soclang} >= %{version}
Requires:       libclang-cpp%{_sonum} = %{version}
Conflicts:      cmake(Clang)

%description -n clang%{_sonum}-devel
This package contains the clang (C language) frontend for LLVM.
(development files)

%package -n clang%{_sonum}-doc
Summary:        Documentation for Clang
Group:          Documentation/HTML
Conflicts:      clang-doc-provider < %{version}
# The docs used to be contained in the devel package.
Conflicts:      clang5-devel
Conflicts:      clang6-devel
Conflicts:      clang7-devel
Conflicts:      clang8-devel
Provides:       clang-doc-provider = %{version}
BuildArch:      noarch

%description -n clang%{_sonum}-doc
This package contains documentation for the Clang compiler.

%package -n libLTO%{_sonum}
Summary:        Link-time optimizer for LLVM
Group:          System/Libraries

%description -n libLTO%{_sonum}
This package contains the link-time optimizer for LLVM.

%package gold
Summary:        LLVM LTO plugin for ld.bfd and ld.gold
Group:          Development/Tools/Building
Conflicts:      llvm-gold-provider < %{version}
Provides:       llvm-gold-provider = %{version}
Supplements:    packageand(clang%{_sonum}:binutils)
Supplements:    packageand(clang%{_sonum}:binutils-gold)

%description gold
This package contains a plugin for link-time optimization in binutils linkers.

Despite the name, it can also be used with ld.bfd. It is required for using
Clang with -flto=full or -flto=thin when linking with one of those linkers.

%package -n libomp%{_sonum}-devel
Summary:        MPI plugin for LLVM
Group:          Development/Libraries/C and C++
Conflicts:      libomp-devel < %{version}
Provides:       libomp-devel = %{version}

%description -n libomp%{_sonum}-devel
This package contains the OpenMP MPI plugin for LLVM.

%package %{multisource libcxx%{_socxx}} libc++%{_socxx}
Summary:        C++ standard library implementation
Group:          System/Libraries
URL:            https://libcxx.llvm.org/
Requires:       libc++abi%{_socxx} = %{version}
Conflicts:      libc++%{_socxx} < %{version}
Provides:       libc++%{_socxx} = %{version}

%description %{multisource libcxx%{_socxx}} libc++%{_socxx}
This package contains libc++, a new implementation of the C++
standard library, targeting C++11.

%package %{multisource libcxx_devel} libc++-devel
Summary:        C++ standard library implementation (devel package)
Group:          Development/Libraries/C and C++
Requires:       libc++%{_socxx} >= %{version}
Requires:       libc++abi.so >= %{version}
Conflicts:      libc++.so < %{version}
Provides:       libc++.so = %{version}

%description %{multisource libcxx_devel} libc++-devel
This package contains libc++, a new implementation of the C++
standard library, targeting C++11. (development files)

%package %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx}
Summary:        C++ standard library ABI
Group:          System/Libraries
URL:            https://libcxxabi.llvm.org/
Conflicts:      libc++abi%{_socxx} < %{version}
Provides:       libc++abi%{_socxx} = %{version}

%description %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx}
This package contains the ABI for libc++, a new implementation
of the C++ standard library, targeting C++11.

%package %{multisource libcxx_devel} libc++abi-devel
Summary:        C++ standard library ABI (devel package)
Group:          Development/Libraries/C and C++
Requires:       libc++abi%{_socxx} >= %{version}
Conflicts:      libc++abi.so < %{version}
Provides:       libc++abi.so = %{version}

%description %{multisource libcxx_devel} libc++abi-devel
This package contains the ABI for libc++, a new implementation
of the C++ standard library, targeting C++11.
(development files)

%package        vim-plugins
Summary:        Vim plugins for LLVM
Group:          Productivity/Text/Editors
Supplements:    packageand(llvm%{_sonum}:vim)
Conflicts:      vim-plugin-llvm < %{version}
Provides:       vim-plugin-llvm = %{version}
BuildArch:      noarch

%description    vim-plugins
This package contains vim plugins for LLVM like syntax highlighting.

%package -n python3-clang%{_sonum}
Summary:        Python bindings for libclang
Group:          Development/Libraries/Python
Requires:       libclang%{_soclang} >= %{version}
Requires:       python3-base
Conflicts:      %{python3_sitearch}/clang/
Provides:       %{python3_sitearch}/clang/

%description -n python3-clang%{_sonum}
This package contains the Python bindings to clang (C language)
frontend for LLVM.

%package -n lld%{_sonum}
Summary:        Linker for Clang/LLVM
Group:          Development/Tools/Building
URL:            https://lld.llvm.org/
Requires(post): update-alternatives
Requires(postun):update-alternatives

%description -n lld%{_sonum}
LLD is a linker from the LLVM project. That is a drop-in replacement for system linkers and runs much faster than them. It also provides features that are useful for toolchain developers.

%package opt-viewer
Summary:        Tools for visualising the LLVM optimization records
Group:          Development/Languages/Other
BuildRequires:  python3-base
Requires:       python3-PyYAML
Requires:       python3-Pygments
Conflicts:      opt-viewer < %{version}
Provides:       opt-viewer = %{version}
BuildArch:      noarch

%description opt-viewer
Set of tools for visualising the LLVM optimization records generated with -fsave-optimization-record. Used for compiler-assisted performance analysis.

%if %{with lldb}
%package -n lldb%{_sonum}
Summary:        Software debugger built using LLVM libraries
Group:          Development/Tools/Debuggers
URL:            https://lldb.llvm.org/
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(libedit)
BuildRequires:  pkgconfig(libffi)
BuildRequires:  pkgconfig(libxml-2.0)
BuildRequires:  pkgconfig(ncurses)
BuildRequires:  pkgconfig(panel)
BuildRequires:  pkgconfig(python3)
BuildRequires:  pkgconfig(zlib)
Requires(post): update-alternatives
Requires(postun):update-alternatives
Recommends:     python3-lldb%{_sonum}
ExclusiveArch:  x86_64

%description -n lldb%{_sonum}
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 -n liblldb%{_sonum}
Summary:        LLDB software debugger runtime library
Group:          System/Libraries

%description -n liblldb%{_sonum}
This subpackage contains the main LLDB component.

%package -n lldb%{_sonum}-devel
Summary:        Development files for LLDB
Group:          Development/Libraries/C and C++
Requires:       clang%{_sonum}-devel = %{version}
Requires:       liblldb%{_sonum} = %{version}
Requires:       llvm%{_sonum}-devel = %{version}
Requires:       pkgconfig(libedit)
Requires:       pkgconfig(libxml-2.0)
Conflicts:      lldb-devel-provider < %{version}
Provides:       lldb-devel-provider = %{version}

%description -n lldb%{_sonum}-devel
This package contains the development files for LLDB.

%if %{with lldb_python}
%package -n python3-lldb%{_sonum}
Summary:        Python bindings for liblldb
Group:          Development/Libraries/Python
BuildRequires:  swig >= 3.0.11
Requires:       liblldb%{_sonum} = %{version}
Requires:       python3-base
Requires:       python3-six
Conflicts:      %{python3_sitearch}/lldb/
Provides:       %{python3_sitearch}/lldb/

%description -n python3-lldb%{_sonum}
This package contains the Python bindings for LLDB. It also contains
pretty printers for the C++ standard library.
%endif

%endif

%if %{with polly}
%package polly
Summary:        LLVM Framework for High-Level Loop and Data-Locality Optimizations
Group:          Development/Languages/Other
URL:            https://polly.llvm.org/
Conflicts:      llvm-polly-provider < %{version}
Provides:       llvm-polly-provider = %{version}

%description polly
Polly is a high-level loop and data-locality optimizer and optimization
infrastructure for LLVM. It uses an abstract mathematical representation based
on integer polyhedra to analyze and optimize the memory access pattern of a
program. Polly can currently perform classical loop transformations, especially
tiling and loop fusion to improve data-locality. It can also exploit OpenMP
level parallelism and expose SIMDization opportunities.

%package polly-devel
Summary:        Development files for Polly
Group:          Development/Libraries/C and C++
Requires:       llvm%{_sonum}-devel = %{version}
Requires:       llvm%{_sonum}-polly = %{version}
Conflicts:      llvm-polly-devel-provider < %{version}
Provides:       llvm-polly-devel-provider = %{version}

%description polly-devel
This package contains the development files for Polly.
%endif

%prep
%setup -q -a 1 -a 2 -a 3 -a 4 -a 5 -a 6 -a 7 -a 8 -a 9 -b 50 -b 51 -n llvm-%{_version}.src
%patch0 -p2
%patch1 -p2
%patch5 -p1
%patch13 -p1
%patch14 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch24 -p1
%patch25 -p2
%patch27 -p2
%patch33 -p2
%patch37 -p2

pushd clang-%{_version}.src
#%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch6 -p1
%patch9 -p2
%patch34 -p2
%patch36 -p2

# eisfair
%patch1000 -p1


# We hardcode openSUSE
#rm unittests/Driver/DistroTest.cpp

# We hardcode i586
rm test/Driver/x86_features.c
rm test/Driver/nacl-direct.c
popd

pushd clang-tools-extra-%{_version}.src
%patch10 -p2
popd

pushd lld-%{_version}.src
%patch26 -p1
# lld got a compile-time dependency on libunwind that we don't want. (https://reviews.llvm.org/D86805)
mkdir include/mach-o
cp %{SOURCE10} include/mach-o
popd

pushd compiler-rt-%{_version}.src
%patch35 -p2
popd

%if %{with lldb}
pushd lldb-%{_version}.src
%patch11 -p1
%patch38 -p2
popd
%endif

%if %{with libcxx}
pushd libcxx-%{_version}.src
rm test/libcxx/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
rm test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp
rm test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp

# These tests often verify timing and can randomly fail if the system is under heavy load. It happens sometimes on our build machines.
rm -rf test/std/thread/
popd
%endif

# Move into right place
mv clang-%{_version}.src tools/clang
mv compiler-rt-%{_version}.src projects/compiler-rt
mv clang-tools-extra-%{_version}.src tools/clang/tools/extra
%if %{with lld}
mv lld-%{_version}.src tools/lld
%endif
%if %{with polly}
mv polly-%{_version}.src tools/polly
%endif

%if %{with lldb}
mv lldb-%{_version}.src tools/lldb
%endif

%if %{with openmp}
mv openmp-%{_version}.src  projects/openmp
%endif

%if %{with libcxx}
mv libcxx-%{_version}.src projects/libcxx
mv libcxxabi-%{_version}.src projects/libcxxabi
%endif

%build
%global sourcedir %{_builddir}/%{buildsubdir}

%define _lto_cflags %{nil}

# Use optflags, but:
# 1) Remove the -D_FORTIFY_SOURCE=2 because llvm does not build correctly with
#    hardening. The problem is in sanitizers from compiler-rt.
# 2) Remove the -g. We don't want it in stage1 and it will be added by cmake in
#    the following stage.
%global cleaned_flags %(echo %{optflags} | sed 's/-D_FORTIFY_SOURCE=./-D_FORTIFY_SOURCE=0/;s/\\B-g\\b//g')

%global flags %{cleaned_flags}
%ifarch armv6hl
%global flags %{cleaned_flags} -mfloat-abi=hard -mcpu=arm1176jzf-s -mfpu=vfpv2
%endif
%ifarch armv7hl
%global flags %{cleaned_flags} -mfloat-abi=hard -march=armv7-a -mtune=cortex-a17 -mfpu=vfpv3-d16
%endif

CFLAGS="%flags"
CXXFLAGS="%flags"

mem_per_compile_job=1200000
%ifarch i586 ppc armv6hl armv7hl
# 32-bit arches need less memory than 64-bit arches.
mem_per_compile_job=700000
%endif

mem_per_link_job=3000000
%ifarch riscv64
# Give RISCV link jobs more memory.
mem_per_link_job=4000000
%endif

echo "Available memory:"
cat /proc/meminfo
echo "System limits:"
ulimit -a
avail_mem=$(awk '/MemAvailable/ { print $2 }' /proc/meminfo)
%set_jobs link $mem_per_link_job
%set_jobs compile $mem_per_compile_job

%define __builder ninja
%define __builddir stage1
%define build_ldflags -Wl,--no-keep-memory
%cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DBUILD_SHARED_LIBS:BOOL=OFF \
    -DLLVM_HOST_TRIPLE=%{host_triple} \
    -DLLVM_BUILD_LLVM_DYLIB:BOOL=OFF \
    -DLLVM_LINK_LLVM_DYLIB:BOOL=OFF \
    -DLLVM_PARALLEL_COMPILE_JOBS="$max_compile_jobs" \
    -DLLVM_PARALLEL_LINK_JOBS="$max_link_jobs" \
    -DENABLE_LINKER_BUILD_ID=ON \
    -DLLVM_BINUTILS_INCDIR=%{_includedir} \
    -DLLVM_BUILD_TOOLS:BOOL=OFF \
    -DLLVM_BUILD_UTILS:BOOL=OFF \
    -DLLVM_BUILD_EXAMPLES:BOOL=OFF \
    -DLLVM_BUILD_RUNTIME:BOOL=OFF \
    -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD:BOOL=OFF \
    -DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \
    -DLLVM_INCLUDE_TESTS:BOOL=OFF \
    -DLLVM_TARGETS_TO_BUILD=Native \
    -DCLANG_ENABLE_ARCMT:BOOL=OFF \
    -DCLANG_ENABLE_STATIC_ANALYZER:BOOL=OFF \
    -DCOMPILER_RT_BUILD_SANITIZERS:BOOL=OFF \
    -DCOMPILER_RT_BUILD_XRAY:BOOL=OFF \
    -DCOMPILER_RT_USE_LIBCXX:BOOL=OFF \
    -DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF
ninja -v %{?_smp_mflags} clang llvm-tblgen clang-tblgen \
%if %{with thin_lto}
    llvm-ar llvm-ranlib \
%if %{with use_lld}
    lld
%else
    LLVMgold
%endif
%endif

cd ..

# Remove files that won't be needed anymore.
# This reduces the total amount of disk space used during build. (bnc#1074625)
find ./stage1 \( -name '*.o' -or -name '*.a' \) -delete

# 3) Remove -fstack-clash-protection on architectures where it isn't supported.
#    Using it just prints a warning, but that warning prevents the configuration
#    step, which uses -Werror, from recognizing the availability of other flags.
if ! ./stage1/bin/clang -c -xc -Werror -fstack-clash-protection -o /dev/null /dev/null;
then
    flags=$(echo %flags | sed 's/-fstack-clash-protection//');
fi
CFLAGS=$flags
CXXFLAGS=$flags

# Clang uses a bit less memory.
mem_per_compile_job=700000
%ifarch i586 ppc armv6hl armv7hl
# 32-bit arches need less memory than 64-bit arches.
mem_per_compile_job=500000
%endif

%set_jobs compile $mem_per_compile_job
%if %{with thin_lto}
# A single ThinLTO job is fully parallel already.
max_link_jobs=1
%endif

%define __builddir build
%define build_ldflags -Wl,--build-id=sha1
# The build occasionally uses tools linking against previously built
# libraries (mostly libLLVM.so), but we don't want to set RUNPATHs.
export LD_LIBRARY_PATH=%{sourcedir}/build/%{_lib}
%cmake \
    -DCMAKE_C_COMPILER="%{sourcedir}/stage1/bin/clang" \
    -DCMAKE_CXX_COMPILER="%{sourcedir}/stage1/bin/clang++" \
    -DBUILD_SHARED_LIBS:BOOL=OFF \
    -DLLVM_HOST_TRIPLE=%{host_triple} \
    -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \
    -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
    -DCLANG_LINK_CLANG_DYLIB:BOOL=ON \
    -DLLVM_PARALLEL_COMPILE_JOBS="$max_compile_jobs" \
    -DLLVM_PARALLEL_LINK_JOBS="$max_link_jobs" \
%if %{with thin_lto}
    -DLLVM_ENABLE_LTO=Thin \
    -DCMAKE_AR="%{sourcedir}/stage1/bin/llvm-ar" \
    -DCMAKE_RANLIB="%{sourcedir}/stage1/bin/llvm-ranlib" \
%if %{with use_lld}
    -DCMAKE_LINKER="%{sourcedir}/stage1/bin/ld.lld" \
    -DLLVM_USE_LINKER="%{sourcedir}/stage1/bin/ld.lld" \
%endif
%endif
%ifarch %arm ppc s390 %{ix86}
    -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O2 -g1 -DNDEBUG" \
    -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O2 -g1 -DNDEBUG" \
%endif
    -DENABLE_LINKER_BUILD_ID=ON \
    -DLLVM_TABLEGEN="%{sourcedir}/stage1/bin/llvm-tblgen" \
    -DCLANG_TABLEGEN="%{sourcedir}/stage1/bin/clang-tblgen" \
    -DLLVM_ENABLE_RTTI:BOOL=ON \
    -DLLVM_ENABLE_PIC=ON \
    -DLLVM_BINUTILS_INCDIR=%{_includedir} \
    -DLLVM_TARGETS_TO_BUILD=%{llvm_targets} \
    -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=%{llvm_experimental_targets} \
    -DLLVM_TOOL_LLVM_EXEGESIS_BUILD:BOOL=OFF \
    -DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \
    -DCOMPILER_RT_USE_LIBCXX:BOOL=OFF \
    -DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \
%if %{with libcxx}
    -DLIBCXX_ENABLE_SHARED=YES \
    -DLIBCXX_ENABLE_STATIC=NO \
    -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO \
    -DLIBCXXABI_ENABLE_SHARED=YES \
    -DLIBCXXABI_ENABLE_STATIC=NO \
%endif
%if "%{_lib}" == "lib64"
    -DLLVM_LIBDIR_SUFFIX=64 \
%endif
%if %{with ffi}
    -DLLVM_ENABLE_FFI=ON \
%endif
%if %{with oprofile}
    -DLLVM_USE_OPROFILE=ON \
%endif
%if %{without lldb_python}
    -DLLDB_DISABLE_PYTHON=ON \
%else
    -DLLDB_USE_SYSTEM_SIX:BOOL=ON \
%endif
    -DCMAKE_SKIP_RPATH:BOOL=ON \
    -DLLVM_POLLY_LINK_INTO_TOOLS=OFF \
    -DPOLLY_BUNDLED_ISL:BOOL=ON

# ThinLTO uses multiple threads from the linker process for optimizations, which
# causes an extremely high lock contention on allocations due to MALLOC_CHECK_,
# so we deactivate it for compilation. The tests will have it activated again.
%if %{with thin_lto}
MALLOC_CHECK_BACK=$MALLOC_CHECK_
unset MALLOC_CHECK_
%endif

ninja -v %{?_smp_mflags}

%if %{with thin_lto}
MALLOC_CHECK_=$MALLOC_CHECK_BACK
%endif

cd ..

%install
# Installation seems to build some files not contained in "all".
export LD_LIBRARY_PATH=%{sourcedir}/build/%{_lib}
%cmake_install

# Install FileCheck needed for testing Rust boo#1192629
install -m 0755 build/bin/FileCheck %{buildroot}%{_bindir}/FileCheck

# Remove files that won't be needed anymore.
# This reduces the total amount of disk space used during build. (bnc#1074625)
find ./build \( -name '*.o' -or -name '*.a' \)  -delete

# Docs are prebuilt due to sphinx dependency
#
# tar xf llvm-%{_version}.src.tar.xz
# pushd llvm-%{_version}.src/tools
# tar xf ../../clang-%{_version}.src.tar.xz
# mv clang-%{_version}.src clang
# cd ..
# ln -s ../../../build/tools/clang/docs/{Attribute,Diagnostics}Reference.rst tools/clang/docs
# mkdir build; cd build
# cmake -G Ninja -DLLVM_ENABLE_SPHINX:BOOL=ON -DLLVM_BUILD_DOCS:BOOL=ON \
#     -DSPHINX_WARNINGS_AS_ERRORS:BOOL=OFF -DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF ..
# ninja gen-{Attribute,Diagnostics}Reference.rst
# ninja -j1 docs-{llvm,clang}-{html,man}
# popd
# tar --sort=name --owner=0 --group=0 --mtime="@${SOURCE_DATE_EPOCH}" \
#     --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \
#     -cJf llvm-docs-%{_version}.src.tar.xz llvm-%{_version}.src/build/docs/{man,html}
# tar --sort=name --owner=0 --group=0 --mtime="@${SOURCE_DATE_EPOCH}" \
#     --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \
#     -cJf clang-docs-%{_version}.src.tar.xz llvm-%{_version}.src/build/tools/clang/docs/{man,html}

# Build man/html pages
pushd build/docs
rm -rf %{buildroot}%{_prefix}/docs
mkdir -p %{buildroot}%{_docdir}/llvm
mkdir -p %{buildroot}%{_mandir}/man1
cp -r man/* %{buildroot}%{_mandir}/man1
cp -r html/* %{buildroot}%{_docdir}/llvm
rm -r %{buildroot}%{_docdir}/llvm/_sources
popd

pushd build/tools/clang/docs
mkdir -p %{buildroot}%{_docdir}/llvm-clang
cp -r man/* %{buildroot}%{_mandir}/man1
cp -r html/* %{buildroot}%{_docdir}/llvm-clang
rm -r %{buildroot}%{_docdir}/llvm-clang/_sources
popd

# install python bindings
install -d %{buildroot}%{python3_sitelib}/clang
pushd tools/clang/bindings/python
cp clang/*.py %{buildroot}%{python3_sitelib}/clang
# Make the bindings use the current so number, so that we don't need an unversioned libclang.so.
sed -i "s/file = 'libclang\.so'/file = 'libclang.so.%{_soclang}'/" %{buildroot}%{python3_sitelib}/clang/cindex.py
install -d %{buildroot}%{_docdir}/python-clang/examples/cindex
cp -r examples %{buildroot}%{_docdir}/python-clang
install -d %{buildroot}%{_docdir}/python-clang/tests/cindex/INPUTS
cp -r tests %{buildroot}%{_docdir}/python-clang
popd

# Scripts for clang use unversioned executables, so it doesn't make sense to
# have multiple versions of them. We package them only for the default version.
%if %{_plv} == %{_sonum}
mv %{buildroot}%{_datadir}/clang/clang-format-diff.py %{buildroot}%{_bindir}/clang-format-diff
mv %{buildroot}%{_datadir}/clang/clang-tidy-diff.py %{buildroot}%{_bindir}/clang-tidy-diff
mv %{buildroot}%{_datadir}/clang/run-find-all-symbols.py %{buildroot}%{_bindir}/run-find-all-symbols

# Fix paths to internal binaries.
sed -i "s|COMPILER_WRAPPER_\([A-Z]*\) = 'intercept-\([^']*\)'|COMPILER_WRAPPER_\1 = '%{_libexecdir}/intercept-\2'|" \
    %{buildroot}%{_prefix}/lib/libscanbuild/intercept.py
%if "%{_libexecdir}" != "%{_prefix}/libexec"
LIBEXEC=%{_libexecdir}
RELATIVE_LIBEXEC=${LIBEXEC#%{_prefix}/}
sed -i "s|\$AbsRealBin/../libexec/\([^-]*\)-analyzer|\$AbsRealBin/../$RELATIVE_LIBEXEC/\1-analyzer|" \
    %{buildroot}%{_bindir}/scan-build
RELATIVE_LIBEXEC_COMMA=${RELATIVE_LIBEXEC//\//\', \'}
sed -i "s|os.path.join(scanbuild_dir, '..', 'libexec', 'analyze-\([^']*\)')|os.path.join(scanbuild_dir, '..', '$RELATIVE_LIBEXEC_COMMA', 'analyze-\1')|" \
    %{buildroot}%{_prefix}/lib/libscanbuild/analyze.py
%endif

mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
mv %{buildroot}%{_datadir}/clang/bash-autocomplete.sh %{buildroot}%{_datadir}/bash-completion/completions/clang

# We don't care about applescript or sublime text
rm %{buildroot}%{_datadir}/clang/*.applescript
rm %{buildroot}%{_datadir}/clang/clang-format-sublime.py
%else
rm %{buildroot}%{_bindir}/{analyze,intercept}-build
rm %{buildroot}%{_bindir}/clang-doc
rm %{buildroot}%{_bindir}/git-clang-format
rm %{buildroot}%{_bindir}/hmaptool
rm %{buildroot}%{_bindir}/run-clang-tidy
rm %{buildroot}%{_bindir}/scan-{build,build-py,view}
rm -r %{buildroot}%{_prefix}/lib/lib{ear,scanbuild}
rm %{buildroot}%{_libexecdir}/{c++,ccc}-analyzer
rm %{buildroot}%{_libexecdir}/{analyze,intercept}-{cc,c++}
rm -r %{buildroot}%{_datadir}/{clang,scan-build,scan-view}/
rm %{buildroot}%{_mandir}/man1/scan-build.1
%endif

# Note that bfd-plugins is in /usr/lib/bfd-plugins before binutils 2.33.1
mkdir -p %{buildroot}%{_libdir}/bfd-plugins
ln -s %{_libdir}/LLVMgold.so %{buildroot}%{_libdir}/bfd-plugins/

install -m 755 -d %{buildroot}%{_datadir}/vim/site/
for i in ftdetect ftplugin indent syntax; do
    cp -r utils/vim/$i %{buildroot}%{_datadir}/vim/site/
done
mv utils/vim/README utils/vim/README.vim

install -d %{buildroot}%{python3_sitelib}
mv %{buildroot}%{_datadir}/opt-viewer/opt-diff.py %{buildroot}%{_bindir}/opt-diff
mv %{buildroot}%{_datadir}/opt-viewer/opt-stats.py %{buildroot}%{_bindir}/opt-stats
mv %{buildroot}%{_datadir}/opt-viewer/opt-viewer.py %{buildroot}%{_bindir}/opt-viewer
mv %{buildroot}%{_datadir}/opt-viewer/optpmap.py %{buildroot}%{python3_sitelib}/optpmap.py
mv %{buildroot}%{_datadir}/opt-viewer/optrecord.py %{buildroot}%{python3_sitelib}/optrecord.py

rm %{buildroot}%{_mandir}/man1/{,clang-,lldb-,mlir-}tblgen.1
rm %{buildroot}%{_mandir}/man1/llvm-{exegesis,locstats}.1

%if %{with lldb_python}
# Python: fix binary libraries location.
rm %{buildroot}%{python3_sitearch}/lldb/_lldb.%{cpython3_soabi}.so
liblldb=$(basename $(readlink -e %{buildroot}%{_libdir}/liblldb.so))
ln -vsf "../../../${liblldb}" %{buildroot}%{python3_sitearch}/lldb/_lldb.%{cpython3_soabi}.so
%endif

# Stuff we don't want to include
rm %{buildroot}%{_includedir}/mach-o/compact_unwind_encoding.h
rm %{buildroot}%{_mandir}/man1/lit.1

# These are only available as static libraries, which we don't ship.
rm -rf %{buildroot}%{_includedir}/{clang-tidy,lld}
rm -rf %{buildroot}%{_libdir}/cmake/lld/

%if %{with openmp}
rm %{buildroot}%{_libdir}/libgomp.so
rm %{buildroot}%{_libdir}/libiomp*.so
rm %{buildroot}%{_libdir}/libarcher_static.a
%endif

# Prepare for update-alternatives usage
mkdir -p %{buildroot}%{_sysconfdir}/alternatives

# Fix the clang -> clang-X.Y symlink to work with update-alternatives
mv %{buildroot}%{_bindir}/clang-%{_sonum} %{buildroot}%{_bindir}/clang
ln -s %{_bindir}/clang-%{_relver} %{buildroot}%{_bindir}/clang-%{_sonum}
ln -s %{_bindir}/clang-%{_relver} %{buildroot}%{_bindir}/clang-%{_minor}

# Add clang++-X.Y symbolic link as well - it seems to be expected by some
# software. https://bugzilla.opensuse.org/show_bug.cgi?id=1012260
ln -s %{_bindir}/clang++-%{_relver} %{buildroot}%{_bindir}/clang++-%{_sonum}
ln -s %{_bindir}/clang++-%{_relver} %{buildroot}%{_bindir}/clang++-%{_minor}

# Rewrite symlinks to point to new location
for p in %{shrink:%binfiles} ; do
    if [ -h "%{buildroot}%{_bindir}/$p" ] ; then
        ln -f -s %{_bindir}/$(readlink %{buildroot}%{_bindir}/$p)-%{_relver} %{buildroot}%{_bindir}/$p
    fi
done
for p in %{shrink:%binfiles} ; do
    mv %{buildroot}%{_bindir}/$p %{buildroot}%{_bindir}/$p-%{_relver}
    ln -s -f %{_sysconfdir}/alternatives/$p %{buildroot}%{_bindir}/$p
done
for p in %{shrink:%manfiles} ; do
    mv %{buildroot}%{_mandir}/man1/$p.1 %{buildroot}%{_mandir}/man1/$p-%{_relver}.1
    ln -s -f %{_sysconfdir}/alternatives/$p.1%{ext_man} %{buildroot}%{_mandir}/man1/$p.1%{ext_man}
done

# Also rewrite the CMake files referring to the binaries.
sed -i "$(
    for p in %{shrink:%binfiles}; do
        echo "s|\"\${_IMPORT_PREFIX}/bin/$p\"|\"\${_IMPORT_PREFIX}/bin/$p-%{_relver}\"|g"
    done
)" %{buildroot}%{_libdir}/cmake/{llvm/LLVMExports,clang/ClangTargets}-relwithdebinfo.cmake

# For libclang, have the CMake export list refer to the library via soname.
# The original library might not be available. (We might have a newer version.)
sed -i "s|\"\${_IMPORT_PREFIX}/%{_lib}/libclang.so.%{_relver}\"|\"\${_IMPORT_PREFIX}/%{_lib}/libclang.so.%{_soclang}\"|g" \
    %{buildroot}%{_libdir}/cmake/clang/ClangTargets-relwithdebinfo.cmake

# rpm macro for version checking
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/
cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.llvm <<EOF
#
# RPM macros for LLVM/Clang packaging
#

# Version information
%_llvm_version %{version}
%_llvm_relver %{_relver}
%_llvm_minorver %{_minor}
%_llvm_sonum  %{_sonum}
%_libclang_sonum %{_soclang}
%_libcxx_sonum %{_socxx}

# Build information
%_llvm_with_libcxx %{with libcxx}
%_llvm_with_openmp %{with openmp}
%_llvm_with_ffi %{with ffi}
%_llvm_with_oprofile %{with oprofile}
%_llvm_with_valgrind %{with valgrind}
%_llvm_with_lldb %{with lldb}
EOF

# Don't use env in shebangs, and prefer python3. (https://www.python.org/dev/peps/pep-0394/#for-python-runtime-distributors)
for script in %{buildroot}%{_bindir}/opt-{diff,stats,viewer} \
%if %{_plv} == %{_sonum}
        %{buildroot}%{_bindir}/{{analyze,intercept}-build,clang-{format,tidy}-diff,git-clang-format,hmaptool,run-{clang-tidy,find-all-symbols},scan-{build,build-py,view}} \
        %{buildroot}%{_libexecdir}/{{analyze,intercept}-{c++,cc},{c++,ccc}-analyzer} \
%endif
%ifarch aarch64 x86_64
        %{buildroot}%{_libdir}/clang/%{_relver}/bin/hwasan_symbolize \
%endif
        %{buildroot}%{python3_sitelib}/optrecord.py; do
    sed -i '1s|/usr/bin/env *|%{_bindir}/|;1s|/usr/bin/python$|%{_bindir}/python3|' $script
done

# Remove executable bit where not needed.
chmod -x \
  %{buildroot}%{python3_sitelib}/optpmap.py \
  %{buildroot}%{_datadir}/opt-viewer/style.css \
%if %{_plv} == %{_sonum}
  %{buildroot}%{_datadir}/bash-completion/completions/clang \
  %{buildroot}%{_datadir}/clang/clang-{format,include-fixer,rename}.{el,py} \
  %{buildroot}%{_mandir}/man1/scan-build.1
find %{buildroot}%{_prefix}/lib/{libear,libscanbuild} -type f -executable -exec chmod -x {} +
%endif

%fdupes -s %{buildroot}%{_docdir}/llvm
%fdupes -s %{buildroot}%{_docdir}/llvm-clang
%fdupes %{_includedir}/%{name}/Host/

%check
# We don't want to set RUNPATHs, and running tests against installed libraries
# should be more representative of the actual behavior of the installed packages.
export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
# LLVM test suite is written in python and has troubles with encoding if
# python 3 is used because it is written with assumption that python will
# default to UTF-8 encoding. However, it only does if the current locale is
# UTF-8.
export LANG=C.UTF-8

# NOTE: We're not running the tests via ninja, because we've removed object
# files and static libraries already.
pushd build
%if !0%{?qemu_user_space_build:1}
# we just do not have enough memory with qemu emulation

# On armv6l, fpext frem(12.0f, 5.0f) to double = inf for some reason. On ppc relocation errors.
sed -i '1i; XFAIL: armv6, powerpc-' ../test/ExecutionEngine/frem.ll
# Disable tests that seem to hang (armv6) or fail with relocation errors (ppc).
sed -i '1i; UNSUPPORTED: armv6' ../test/CodeGen/Generic/PBQP.ll
sed -i '1i; UNSUPPORTED: armv6\n; XFAIL: powerpc-' \
  ../test/ExecutionEngine/{mov64zext32,test-interp-vec-{arithm_{float,int},logical,setcond-{fp,int}}}.ll
%ifarch ppc64le
# Sporadic failures, possibly races?
rm ../test/tools/llvm-cov/{multithreaded-report,sources-specified}.test
%endif
python3 bin/llvm-lit -sv test/

# On s390x, this test complains that a required pass couldn't be found and then crashes. (FIXME)
sed -i '/XFAIL/i// XFAIL: s390x' ../tools/clang/test/CodeGen/sanitize-coverage-old-pm.c
%if 0%{?suse_version} > 1500
# We're not getting the exact crash dump that was expected. Not sure why, input is cut off.
sed -i '1i// XFAIL: s390x' ../tools/clang/test/Driver/{crash-{diagnostics-dir.c,report-header.h,report-spaces.c},rewrite-map-in-diagnostics.c}
%endif
# On ppc, this test fails with "fatal error: error in backend: Relocation type not implemented yet!"
sed -i '/UNSUPPORTED/i// XFAIL: powerpc-' ../tools/clang/test/Interpreter/execute.cpp
# Tests hang on armv6l.
sed -i '1i// UNSUPPORTED: armv6' \
  ../tools/clang/test/{Interpreter/execute.cpp,Modules/{preprocess-{build-diamond.m,decluse.cpp,module.cpp},string_names.cpp}}
%ifarch ppc64le
# Sporadic failures, possibly races?
rm -r ../tools/clang/test/ClangScanDeps
%endif
python3 bin/llvm-lit -sv --param clang_site_config=tools/clang/test/lit.site.cfg \
	--param USE_Z3_SOLVER=0 tools/clang/test/

%if %{with libcxx}
# libcxx tests run too long for what they're worth to us.
# So let's just run them for new versions only.
%if 0
# FIXME: investigate those
sed -i '1i# XFAIL: *' ../projects/libcxx/test/libcxx/selftest/dsl/dsl.sh.py
# Several tests seem to hang on armv6l.
sed -i '1i// UNSUPPORTED: armv6' \
  ../projects/libcxx/test/libcxx/utilities/memory/util.smartptr/race_condition.pass.cpp \
  ../projects/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.{enab/enable_shared_from_this,shared/util.smartptr.shared.const/{deduction,weak_ptr},weak/util.smartptr.weak.{const/shared_ptr_deduction,mod/swap,obs/lock,spec/swap}}.pass.cpp
python3 bin/llvm-lit -sv projects/libcxx/test/
%endif

# There are undefined references to __cxa_* functions and "typeinfo for int".
sed -i '1i@ XFAIL: arm' ../projects/libcxxabi/test/native/arm-linux-eabi/ttype-encoding-{0,9}0.pass.sh.s
# Compiler error: typedef '_Unwind_Exception' cannot be referenced with a struct specifier
sed -i '1i// XFAIL: armv6, armv7' ../projects/libcxxabi/test/forced_unwind{1,2}.pass.cpp
python3 bin/llvm-lit -sv projects/libcxxabi/test/
%endif
%endif
popd

# Remove files that won't be needed anymore.
# This reduces the total amount of disk space used during build. (bnc#1074625)
# This is meant to happen after build, install and check, but before
# creating the final RPMs.
rm -rf ./stage1 ./build

%post -n libLLVM%{_sonum} -p /sbin/ldconfig
%postun -n libLLVM%{_sonum} -p /sbin/ldconfig
%post %{multisource libclang%{_soclang}} libclang%{_soclang} -p /sbin/ldconfig
%postun %{multisource libclang%{_soclang}} libclang%{_soclang} -p /sbin/ldconfig
%post -n libclang-cpp%{_sonum} -p /sbin/ldconfig
%postun -n libclang-cpp%{_sonum} -p /sbin/ldconfig
%post -n libLTO%{_sonum} -p /sbin/ldconfig
%postun -n libLTO%{_sonum} -p /sbin/ldconfig
%post -n clang%{_sonum}-devel -p /sbin/ldconfig
%postun -n clang%{_sonum}-devel -p /sbin/ldconfig

%if %{with lldb}
%post -n liblldb%{_sonum} -p /sbin/ldconfig
%postun -n liblldb%{_sonum} -p /sbin/ldconfig
%endif

%post gold -p /sbin/ldconfig
%postun gold -p /sbin/ldconfig
%post devel -p /sbin/ldconfig
%postun devel -p /sbin/ldconfig

%if %{with openmp}
%post -n libomp%{_sonum}-devel -p /sbin/ldconfig
%postun -n libomp%{_sonum}-devel -p /sbin/ldconfig
%endif

%if %{with libcxx}
%post %{multisource libcxx%{_socxx}} libc++%{_socxx} -p /sbin/ldconfig
%postun %{multisource libcxx%{_socxx}} libc++%{_socxx} -p /sbin/ldconfig
%post %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx} -p /sbin/ldconfig
%postun %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx} -p /sbin/ldconfig
%post %{multisource libcxx_devel} libc++-devel -p /sbin/ldconfig
%postun %{multisource libcxx_devel} libc++-devel -p /sbin/ldconfig
%post %{multisource libcxx_devel} libc++abi-devel -p /sbin/ldconfig
%postun %{multisource libcxx_devel} libc++abi-devel -p /sbin/ldconfig
%endif

%if %{with polly}
%post polly -p /sbin/ldconfig
%postun polly -p /sbin/ldconfig
%post polly-devel -p /sbin/ldconfig
%postun polly-devel -p /sbin/ldconfig
%endif

%global ua_install() %{_sbindir}/update-alternatives \\\
    --install %{_bindir}/%1 %1 %{_bindir}/%1-%{_relver} %{_uaver}
%global ua_bin_slave() \\\
    --slave %{_bindir}/%1 %1 %{_bindir}/%1-%{_relver}
%global ua_man_slave() \\\
    --slave %{_mandir}/man1/%1.1%{ext_man} %1.1%{ext_man} %{_mandir}/man1/%1-%{_relver}.1%{ext_man}
%global ua_remove() \
if [ ! -f %{_bindir}/%1-%{_relver} ] ; then \
    %{_sbindir}/update-alternatives --remove %1 %{_bindir}/%1-%{_relver} \
fi

%post
%{ua_install %llvm_ua_anchor} \
    %{lapply -p ua_bin_slave %llvm_tools} \
    %{lapply -p ua_bin_slave %llvm_elf_dwarf_tools} \
    %{lapply -p ua_bin_slave %llvm_abi_coff_macho_tools} \
    %{lapply -p ua_bin_slave %llvm_instr_devel_tools} \
    %{lapply -p ua_man_slave %llvm_man} \
    %{lapply -p ua_man_slave %llvm_bin_utils_man} \
    %{lapply -p ua_man_slave %llvm_devel_utils_man}

%postun
%{ua_remove %llvm_ua_anchor}

%post -n clang%{_sonum}
%{ua_install %clang_ua_anchor} \
    %{lapply -p ua_bin_slave %clang_binfiles} \
    %{lapply -p ua_bin_slave %clang_tools_extra_binfiles} \
    %{lapply -p ua_man_slave %clang_manfiles}

%postun -n clang%{_sonum}
%{ua_remove %clang_ua_anchor}

%if %{with lld}
%post -n lld%{_sonum}
%{ua_install %lld_ua_anchor} \
    %{lapply -p ua_bin_slave %lld_binfiles}
%{_sbindir}/update-alternatives --install %{_bindir}/ld ld %{_bindir}/ld.lld 1

%postun -n lld%{_sonum}
%{ua_remove %lld_ua_anchor}
if [ ! -f %{_bindir}/lld ] ; then
    %{_sbindir}/update-alternatives --remove ld %{_bindir}/ld.lld
fi
%endif

%if %{with lldb}
%post -n lldb%{_sonum}
%{ua_install %lldb_ua_anchor} \
    %{lapply -p ua_bin_slave %lldb_binfiles}

%postun -n lldb%{_sonum}
%{ua_remove %lldb_ua_anchor}
%endif

%global bin_path() \
%{_bindir}/%1
%global bin_relver_path() \
%{_bindir}/%1-%{_relver}
%global ghost_ua_bin_link() \
%ghost %{_sysconfdir}/alternatives/%1
%global man_path() \
%{_mandir}/man1/%1.1%{ext_man}
%global man_relver_path() \
%{_mandir}/man1/%1-%{_relver}.1%{ext_man}
%global ghost_ua_man_link() \
%ghost %{_sysconfdir}/alternatives/%1.1%{ext_man}

%files
%license CREDITS.TXT LICENSE.TXT
%{lapply -p bin_path %llvm_ua_anchor %llvm_tools}
%{lapply -p bin_path %llvm_elf_dwarf_tools}
%{lapply -p bin_path %llvm_abi_coff_macho_tools}
%{lapply -p bin_path %llvm_instr_devel_tools}
%{lapply -p bin_relver_path %llvm_ua_anchor %llvm_tools}
%{lapply -p bin_relver_path %llvm_elf_dwarf_tools}
%{lapply -p bin_relver_path %llvm_abi_coff_macho_tools}
%{lapply -p bin_relver_path %llvm_instr_devel_tools}
%{lapply -p ghost_ua_bin_link %llvm_ua_anchor %llvm_tools}
%{lapply -p ghost_ua_bin_link %llvm_elf_dwarf_tools}
%{lapply -p ghost_ua_bin_link %llvm_abi_coff_macho_tools}
%{lapply -p ghost_ua_bin_link %llvm_instr_devel_tools}

%{lapply -p man_path %llvm_man}
%{lapply -p man_path %llvm_bin_utils_man}
%{lapply -p man_path %llvm_devel_utils_man}
%{lapply -p man_relver_path %llvm_man}
%{lapply -p man_relver_path %llvm_bin_utils_man}
%{lapply -p man_relver_path %llvm_devel_utils_man}
%{lapply -p ghost_ua_man_link %llvm_man}
%{lapply -p ghost_ua_man_link %llvm_bin_utils_man}
%{lapply -p ghost_ua_man_link %llvm_devel_utils_man}

%files -n clang%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{_bindir}/clang-%{_minor}
%{_bindir}/clang-%{_sonum}
%{_bindir}/clang++-%{_minor}
%{_bindir}/clang++-%{_sonum}
%{_bindir}/clang-cpp
%{lapply -p bin_path %clang_ua_anchor %clang_binfiles}
%{lapply -p bin_path %clang_tools_extra_binfiles}
%{lapply -p bin_relver_path %clang_ua_anchor %clang_binfiles}
%{lapply -p bin_relver_path %clang_tools_extra_binfiles}
%{lapply -p ghost_ua_bin_link %clang_ua_anchor %clang_binfiles}
%{lapply -p ghost_ua_bin_link %clang_tools_extra_binfiles}

%{lapply -p man_path %clang_manfiles}
%{lapply -p man_relver_path %clang_manfiles}
%{lapply -p ghost_ua_man_link %clang_manfiles}

%dir %{_libdir}/clang/
%dir %{_libdir}/clang/%{_relver}/
%ifarch aarch64 x86_64
%{_libdir}/clang/%{_relver}/bin
%endif
%{_libdir}/clang/%{_relver}/lib
# The sanitizer runtime is not available for ppc.
%ifnarch ppc
%{_libdir}/clang/%{_relver}/share
%endif

%if %{_plv} == %{_sonum}
%files -n clang-tools
%license CREDITS.TXT LICENSE.TXT
%{_bindir}/analyze-build
%{_bindir}/clang-doc
%{_bindir}/clang-format-diff
%{_bindir}/clang-tidy-diff
%{_bindir}/git-clang-format
%{_bindir}/hmaptool
%{_bindir}/intercept-build
%{_bindir}/run-clang-tidy
%{_bindir}/run-find-all-symbols
%{_bindir}/scan-build
%{_bindir}/scan-build-py
%{_bindir}/scan-view
%{_libexecdir}/analyze-c++
%{_libexecdir}/analyze-cc
%{_libexecdir}/c++-analyzer
%{_libexecdir}/ccc-analyzer
%{_libexecdir}/intercept-c++
%{_libexecdir}/intercept-cc
%{_prefix}/lib/libear
%{_prefix}/lib/libscanbuild
%{_datadir}/bash-completion/completions/clang
%{_datadir}/clang/
%{_datadir}/scan-build/
%{_datadir}/scan-view/
%{_mandir}/man1/scan-build.1%{ext_man}
%endif

%files opt-viewer
%license CREDITS.TXT LICENSE.TXT
%{_bindir}/opt-diff
%{_bindir}/opt-stats
%{_bindir}/opt-viewer
%{python3_sitelib}/optpmap.py
%{python3_sitelib}/optrecord.py
%{_datadir}/opt-viewer/

%files -n libLLVM%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libLLVM*.so.*
%{_libdir}/libRemarks.so.*

%files %{multisource libclang%{_soclang}} libclang%{_soclang}
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libclang.so.%{_soclang}
%{_libdir}/libclang.so.%{_relver}

%files -n libclang-cpp%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libclang-cpp.so.%{_sonum}
%dir %{_libdir}/clang/
%dir %{_libdir}/clang/%{_relver}/
%{_libdir}/clang/%{_relver}/include

%files -n libLTO%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libLTO.so.*

%files gold
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/LLVMgold.so
# Note that bfd-plugins is in /usr/lib/bfd-plugins before binutils 2.33.1
%dir %{_libdir}/bfd-plugins/
%{_libdir}/bfd-plugins/LLVMgold.so

%if %{with openmp}
%files -n libomp%{_sonum}-devel
%license CREDITS.TXT LICENSE.TXT
%{_bindir}/llvm-omp-device-info
%{_includedir}/ompt-multiplex.h
%{_libdir}/libarcher.so
%{_libdir}/libomp.so
%{_libdir}/libompd.so
%{_libdir}/libomptarget.so
%{_libdir}/cmake/openmp
# added by eisfair
%ifarch x86_64
%{_libdir}/libomptarget.rtl.x86_64.so
%{_libdir}/libomptarget.rtl.cuda.so
/usr/lib/libomptarget.rtl.amdgpu.so
%endif
%endif

%if %{with libcxx}
%files %{multisource libcxx%{_socxx}} libc++%{_socxx}
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libc++.so.*

%files %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx}
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libc++abi.so.*

%files %{multisource libcxx_devel} libc++-devel
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libc++.so
%dir %{_includedir}/c++/
%{_includedir}/c++/v%{_socxx}

%files %{multisource libcxx_devel} libc++abi-devel
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libc++abi.so
%endif

%files devel
%license CREDITS.TXT LICENSE.TXT
%{_bindir}/FileCheck
%{_bindir}/llvm-config
%{_libdir}/libLLVM.so
%{_libdir}/libLLVMTableGen.so
%{_libdir}/libLTO.so
%{_libdir}/libRemarks.so
%{_includedir}/llvm/
%{_includedir}/llvm-c/
%{_libdir}/cmake/llvm
%{_mandir}/man1/FileCheck.1%{ext_man}
%{_mandir}/man1/llvm-config.1%{ext_man}
%{_rpmconfigdir}/macros.d/macros.llvm

%files doc
%{_docdir}/llvm/

%files -n clang%{_sonum}-devel
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libclang*.so
%{_includedir}/clang/
%{_includedir}/clang-c/
%{_libdir}/cmake/clang

%files -n clang%{_sonum}-doc
%{_docdir}/llvm-clang/

%files vim-plugins
%license CREDITS.TXT LICENSE.TXT
%doc utils/vim/README.vim
%{_datadir}/vim/

%files -n python3-clang%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{python3_sitelib}/clang/
%{_docdir}/python-clang/

%if %{with lld}
%files -n lld%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{lapply -p bin_path %lld_ua_anchor %lld_binfiles}
%{lapply -p bin_relver_path %lld_ua_anchor %lld_binfiles}
%{lapply -p ghost_ua_bin_link %lld_ua_anchor %lld_binfiles}
%endif

%if %{with lldb}
%files -n lldb%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{lapply -p bin_path %lldb_ua_anchor %lldb_binfiles}
%{lapply -p bin_relver_path %lldb_ua_anchor %lldb_binfiles}
%{lapply -p ghost_ua_bin_link %lldb_ua_anchor %lldb_binfiles}

%if %{with lldb_python}
%files -n python3-lldb%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{python3_sitearch}/lldb/
%endif

%files -n liblldb%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/liblldb.so.*
%{_libdir}/liblldbIntelFeatures.so.*

%files -n lldb%{_sonum}-devel
%license CREDITS.TXT LICENSE.TXT
%{_includedir}/lldb/
%{_libdir}/liblldb.so
%{_libdir}/liblldbIntelFeatures.so
%endif

%if %{with polly}
%files polly
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/LLVMPolly.so

%files polly-devel
%license CREDITS.TXT LICENSE.TXT
%{_includedir}/polly
%{_libdir}/cmake/polly
%endif

%changelog
* Sun Oct 30 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add lldb-swig-4.1.0-build-fix.patch: Fix build with Swig 4.1.0.
* Tue Sep 27 2022 William Brown <william.brown@suse.com>
- Add llvm-preserve-symbols-used.patch to resolve some symbols preserving
  with asm in Rust.
* Wed Sep 21 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Always drop -gnu from triple for consistency. Patch a test that
  was looking for -linux- in clang-test-xfail-gnuless-triple.patch.
* Mon Sep 19 2022 Andreas Schwab <schwab@suse.de>
- Use correct LLVM_HOST_TRIPLE for riscv64
* Sat Sep  3 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Make sure we keep -DNDEBUG. At some point %%{optflags} must have
  lost it, perhaps because CMake usually adds it on top. So when
  overriding CMAKE_{C,CXX}_FLAGS_RELWITHDEBINFO, we make sure to
  take over the other flags. We drop LLVM_ENABLE_ASSERTIONS=OFF,
  because that's the default anyway and hasn't helped here.
- Add llvm-scev-fix-isImpliedViaMerge.patch: fixes a miscompilation
  caused by mixing up values of the current and previous iteration.
  (See gh#llvm/llvm-project#56242.)
* Fri Aug 26 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add llvm-lifetime-for-rust.patch to have Rust memory management
  functions considered as lifetime markers. This should aid dead
  store elimination to dynamically allocated memory in Rust code.
* Tue Aug 23 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Don't declare python3-clang as noarch: Python packages are
  installed into %%{_libdir}.
* Sat Aug 13 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Use black RPM macro magic to deduplicate binary lists. This
  should have no effect on the generated RPM but shaves ~400 lines
  off the specfile and hopefully makes future maintenance easier.
* Wed Aug 10 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add WebAssembly support for all architectures.
* Tue Aug  9 2022 Martin Liška <mliska@suse.cz>
- Add llvm-glibc-2-36.patch in order to address boo#1202215.
* Mon Jul  4 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 14.0.6.
  * This release contains bug-fixes for the LLVM 14.0.0 release.
    This release is API and ABI compatible with 14.0.0.
- Rebase llvm-do-not-install-static-libraries.patch.
* Thu Jun 16 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 14.0.5.
  * This release contains bug-fixes for the LLVM 14.0.0 release.
    This release is API and ABI compatible with 14.0.0.
- Rebase llvm-do-not-install-static-libraries.patch.
* Sat May 28 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 14.0.4.
  * This release contains bug-fixes for the LLVM 14.0.0 release.
    This release is API and ABI compatible with 14.0.0.
- Don't use gold for linking anymore: on s390x we use ld.bfd with
  LLVMgold.so, on ppc64 we disable ThinLTO for now.
- Using ld.bfd on s390x exposed an issue with the existing
  llvm_build_tablegen_component_as_shared_library.patch: linking
  llvm-tblgen with libLLVM.so means we also have to link libraries
  used for that (like LLVMTableGenGlobalISel) with libLLVM.so.
- Rewrite summary and description for llvm-gold to point out that
  it can also be used with ld.bfd, recommend with binutils.
- Prefer RPM macros over shell scripting, so that we can better
  inspect the build script with substitutions in place.
- More memory for stage 1 build jobs due to recent OOMs.
- Add %%_libclang_sonum RPM macro to llvm-devel, since that might
  now diverge from %%_llvm_sonum.
- Rebase llvm-do-not-install-static-libraries.patch.
* Sat Apr 30 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 14.0.3.
  * This release contains bug-fixes for the LLVM 14.0.0 release.
    This release is API and ABI compatible with 14.0.0.
- Rebase llvm-do-not-install-static-libraries.patch.
- Use ThinLTO with lld on i586.
* Sun Apr 24 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 14.0.1.
  * This release contains bug-fixes for the LLVM 14.0.0 release.
    This release is API and ABI compatible with 14.0.0.
- Rebase llvm-do-not-install-static-libraries.patch.
- Drop obsolete patches:
  * PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch
- Don't override default linker flags. (We were losing -Wl,-z,now.)
* Sun Apr  3 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 14.0.0.
  * For details, see the release notes:
  - https://releases.llvm.org/14.0.0/docs/ReleaseNotes.html
  - https://releases.llvm.org/14.0.0/tools/clang/docs/ReleaseNotes.html
  - https://releases.llvm.org/14.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
  - https://releases.llvm.org/14.0.0/projects/libcxx/docs/ReleaseNotes.html
  - https://releases.llvm.org/14.0.0/tools/lld/docs/ReleaseNotes.html
  * New LLVM tools:
  - llvm-debuginfod-find: Tool to fetch debuginfod artifacts.
  - llvm-tli-checker: LLVM TargetLibraryInfo versus SDK checker.
  * New Clang tools:
  - clang-linker-wrapper: A wrapper utility over the host linker.
  - clang-nvlink-wrapper: A wrapper tool over nvlink program.
- Add clang-repl-private-deps.patch to make link dependencies of
  clang-repl private, otherwise CMake can't install.
- Add PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch to
  fix build on PowerPC (32-bit).
- Drop llvm-exegesis-link-dylib.patch, instead we don't build
  llvm-exegesis anymore and add check-no-llvm-exegesis.patch to
  disable the corresponding tests.
- Rebase patches:
  * lldb-cmake.patch
  * llvm-do-not-install-static-libraries.patch
  * llvm-normally-versioned-libllvm.patch
- Drop patches that have landed upstream:
  * llvm-update-extract-section-script.patch
* Sun Apr  3 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Split up Clang libraries: libclang.so is no longer so-versioned
  alongside LLVM but will stay at libclang.so.13 for now. So we
  put it into a separate package from libclang-cpp.so. Since we
  can't have multiple LLVM versions generate the same package, we
  prefix it for the non-default LLVM with a mechanism inspired by
  the GCC packaging.
- Patch exported clang/ClangTargets-relwithdebinfo.cmake to refer
  to libclang only by soname, because the installed library might
  be newer than the one originally build with the package.
- Use the same mechanism to for libc++ and package Clang scripts
  only for the default version. This means we'll no longer have to
  touch the package when a new major version comes out.
- Make sure we properly clean up the clang scripts if we're not
  packaging them.
- Let python3-clang use libclang.so.XX, which means we can always
  build it and makes it depend on libclang instead of clang-devel.
- Fix some rpmlint issues: we don't need explicit library
  dependencies that are detected automatically, and we add proper
  library dependencies to the *-devel packages.
- Merge llvm-LTO-devel into llvm-devel. That's where the header
  files already are, and they are hard to separate.
- Let llvm-polly-devel depend on llvm-devel.
- Remove libLTO and *-devel packages from baselibs, they don't
  seem to be needed. We mostly need libLLVM and maybe libclang-cpp.
- Consistently set host triple as *-suse-linux-gnu*.
- Only suggest documentation packages.
* Sun Mar  6 2022 Dirk Müller <dmueller@suse.com>
- Fix armv6hl cpu architecture typo.
* Sat Feb 19 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Let clang-devel accept a newer version of clang-tools:
  we don't keep multiple versions of the latter.
* Tue Feb 15 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- AND instead of OR in License tag after sr#954337.
* Mon Feb 14 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- More conflicts for addition to Leap: clang-tools conflicts with
  llvm9 because that doesn't have the move of hmaptool yet, and
  llvm13-devel with llvm{5,7} as they used to have FileCheck.1.gz.
* Tue Feb  8 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add SUSE_Backports_policy-SLE_conflict to rpmlintrc, we're
  deliberately conflicting with SLE here to offer a newer version
  than what SUSE wants to support.
  (https://code.opensuse.org/leap/features/issue/55)
* Thu Feb  3 2022 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 13.0.1.
  * This release contains bug-fixes for the LLVM 13.0.0 release.
    This release is API and ABI compatible with 13.0.0.
- Rebase llvm-do-not-install-static-libraries.patch.
- Drop obsolete patches:
  * llvm-fix-building-with-GCC-12.patch
- Drop RUNPATH from packaged binaries, instead set LD_LIBRARY_PATH
  for building and testing to simulate behavior of actual package.
* Mon Jan 31 2022 Andreas Schwab <schwab@suse.de>
- Update constraints for riscv64
* Thu Jan 20 2022 John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Add support for experimental targets and enable the M68k backend
- Add patch to fix testsuite after enabling the M68k backend
  + llvm-update-extract-section-script.patch
* Sat Dec 18 2021 Aaron Puchert <aaronpuchert@alice-dsl.net>
- BuildRequires: python-rpm-macros to fix Leap 15.3 build.
- More memory for GCC compile jobs.
* Fri Nov 12 2021 Alberto Planas Dominguez <aplanas@suse.com>
- Add FileCheck into the devel package, as is required for testing
  Rust (boo#1192629)
* Tue Nov  2 2021 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Let clang recommend gcc and glibc-devel as we need both for
  building executables. No hard requirement because Clang can be
  used as a frontend only. (boo#1191587)
- Set minimal CMake version required.
* Tue Nov  2 2021 Martin Liška <mliska@suse.cz>
- Backport llvm-fix-building-with-GCC-12.patch in order to fix building
  with GCC 12.
* Sat Oct  2 2021 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 13.0.0.
  * For details, see the release notes:
  - https://releases.llvm.org/13.0.0/docs/ReleaseNotes.html
  - https://releases.llvm.org/13.0.0/tools/clang/docs/ReleaseNotes.html
  - https://releases.llvm.org/13.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
  - https://releases.llvm.org/13.0.0/projects/libcxx/docs/ReleaseNotes.html
  - https://releases.llvm.org/13.0.0/tools/lld/docs/ReleaseNotes.html
  * New LLVM tools:
  - llvm-otool: Mach-O object file displaying tool.
  - llvm-sim: LLVM IR Similarity Visualizer.
  - llvm-tapi-diff: Diff tool for tbd files.
  - llvm-windres: Tool to manipulate Windows resources.
  * llvm-elfabi was removed.
  * New Clang tools:
  - clang-repl, an interactive interpreter for C/C++.
  - intercept-build, analyze-build: the former intercepts build
    commands to build a compilation database, the latter runs
    the static analyzer over all translation units.
  - scan-build-py: Python reimplementation of scan-build.
- Rebase patches:
  * link-clang-shared.patch
  * llvm-do-not-install-static-libraries.patch
  * llvm-exegesis-link-dylib.patch
- Drop patches that have landed upstream:
  * tablegen-test-link-static.patch
- Run tests on more architectures, disable those that seem to hang.
  Don't run libcxx tests at all anymore because they take so long.
- Relax constraints so that we can build on more machines.
* Sat Sep 18 2021 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Set CMAKE_LINKER to workaround CMake wanting to use lld just
  because we're using clang as compiler. Fixes build on aarch64.
  (https://bugs.llvm.org/show_bug.cgi?id=51115)
* Sat Jul 10 2021 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 12.0.1.
  * This release contains bug-fixes for the LLVM 12.0.0 release.
    This release is API and ABI compatible with 12.0.0.
- Rebase llvm-do-not-install-static-libraries.patch.
- Drop obsolete patches:
  * clangd-cmake-non-standard-layout.patch
  * compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch
  * lld-no-version-on-undefined-weak-lazy-symbols.patch
* Fri Jul  2 2021 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch:
  Fix build with linux-glibc-devel 5.13.
* Thu May 13 2021 Martin Liška <mliska@suse.cz>
- Set memory limits for DWZ to 4x.
* Fri Apr 16 2021 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 12.0.0.
  * For details, see the release notes:
  - https://releases.llvm.org/12.0.0/docs/ReleaseNotes.html
  - https://releases.llvm.org/12.0.0/tools/clang/docs/ReleaseNotes.html
  - https://releases.llvm.org/12.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
  - https://releases.llvm.org/12.0.0/projects/libcxx/docs/ReleaseNotes.html
  - https://releases.llvm.org/12.0.0/tools/lld/docs/ReleaseNotes.html
- Rebase patches:
  * assume-opensuse.patch
  * lldb-cmake.patch
  * llvm-better-detect-64bit-atomics-support.patch
  * llvm-do-not-install-static-libraries.patch
  * llvm_build_tablegen_component_as_shared_library.patch
- Drop patches that have landed upstream:
  * Fix-missing-include.patch
- Always use ld.bfd for stage 1, use lld for stage 2 where we use
  ThinLTO and where it's supported, gold where lld doesn't work,
  and ld.bfd where we don't use ThinLTO. (boo#1181621)
- Add lld-no-version-on-undefined-weak-lazy-symbols.patch to fix a
  bug in lld that made libLLVM.so contain a corrupt symbol version.
- Add clangd-cmake-non-standard-layout.patch to fix build in our
  non-monorepo layout.
* Sun Feb 14 2021 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Don't use gold and ThinLTO on ppc64le because of boo#1181621.
- Fix-missing-include.patch: fix build with GCC 11. (boo#1181875)
- CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch:
  Fix target component lookup. (boo#1180748)
* Sat Jan  9 2021 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 11.0.1.
  * This release contains bug-fixes for the LLVM 11.0.0 release.
    This release is API and ABI compatible with 11.0.0.
- Rebase llvm-do-not-install-static-libraries.patch.
- Drop obsolete compiler-rt-dont-compile-assembly-files-as-c.patch.
- Make documentation tarballs more reproducible.
* Wed Jan  6 2021 Guillaume GARDET <guillaume.gardet@opensuse.org>
- Increase required RAM for aarch64
* Fri Jan  1 2021 Callum Farmer <gmbr3@opensuse.org>
- Move BFD plugins to %%{_libdir}
* Mon Dec 14 2020 Andreas Schwab <schwab@suse.de>
- polly-pthread.patch: Remove, std::call_once no longer needs libpthread
* Mon Nov 23 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add compiler-rt-dont-compile-assembly-files-as-c.patch to fix
  build failure with newer CMake versions.
* Sat Nov 14 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Let CMake files in {llvm,clang}X-devel refer to the versioned
  binaries that come with the package instead of the symlink
  managed by update-alternatives. (boo#1178513)
* Sat Oct 24 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Disable ThinLTO on aarch64 because of hangs. (boo#1178070)
- Enable ThinLTO on ppc64 and ppc64le, the internal error is gone.
* Mon Oct 19 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 11.0.0.
  * For details, see the release notes:
  - https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html
  - https://releases.llvm.org/11.0.0/tools/clang/docs/ReleaseNotes.html
  - https://releases.llvm.org/11.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
  - https://releases.llvm.org/11.0.0/projects/libcxx/docs/ReleaseNotes.html
  - https://releases.llvm.org/11.0.0/tools/lld/docs/ReleaseNotes.html
  * New LLVM tools: llvm-gsymutil, llvm-ml.
  * clang-import-test was removed.
- Drop obsolete patches:
  * clang-ignore-stack-clash-protector.patch
  * fix-atomics-test.patch
  * restore-llvm10-abi.patch
- Rebase patches:
  * clang-resourcedirs.patch
  * default-to-i586.patch
  * link-clang-shared.patch
  * link-clang-tools-extra-shared.patch
  * lldb-cmake.patch
  * llvm-do-not-install-static-libraries.patch
  * lto-disable-cache.patch
- Add llvm-exegesis-link-dylib.patch: link llvm-exegesis with
  libLLVM.so, the advanced functionality is not available anyway.
- Remove -fstack-clash-protection on architectures where it isn't
  actually supported, because that prevents feature detection.
- Make sure we also build AttributeReference for the documentation.
  This requires building via CMake. Also shorten the paths.
* Thu Jul 30 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add ld.lld as an alternative for ld. (boo#1174656)
* Wed Jul 22 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 10.0.1.
  * This release contains bug-fixes for the LLVM 10.0.0 release.
    This release is API and ABI compatible with 10.0.0.
- Rebase llvm-do-not-install-static-libraries.patch.
- Replace ValueLattice-Add-new-state-for-undef-constants.patch,
  which landed upstream in a modified version, by
  restore-llvm10-abi.patch that resets the ABI to our 10.0.0.
- Rewrite lld-default-sha1.patch to be version-independent.
- Set flags consistently, so that we don't lose -DNDEBUG on 32-bit
  architectures. Also we don't need the opt flags twice. This leads
  to a significant reduction in binary sizes on 32-bit arches.
- Make it easier to package release candidates.
- Enable most tests on 32-bit ARM, but not for libcxx.
- Add fix-atomics-test.patch for architectures where native atomics
  are not available.
- Lower build constraints for riscv64 a bit to allow building on
  more workers.
- Allow more compile jobs in stage 2.
* Sun Jul 12 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Factor out computation of the number of jobs into a macro.
- Choose mem_per_compile_job dependent on build stage, let stage 1
  on x86_64 use more memory.
- More generous memory allocation on riscv64.
* Tue Jun 23 2020 Ismail Dönmez <idonmez@suse.com>
- Add lld-default-sha1.patch to make lld generate SHA1 build-ids by
  default, otherwise our tools cannot process the debuginfo.
* Tue Mar 24 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 10.0.0.
  * For details, see the release notes:
  - https://releases.llvm.org/10.0.0/docs/ReleaseNotes.html
  - https://releases.llvm.org/10.0.0/tools/clang/docs/ReleaseNotes.html
  - https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
  - https://releases.llvm.org/10.0.0/projects/libcxx/docs/ReleaseNotes.html
  - https://releases.llvm.org/10.0.0/tools/lld/docs/ReleaseNotes.html
  * New LLVM tools: llvm-ifs, llvm-install-name-tool, llvm-reduce.
  * New Clang tools: clang-move, clang-offload-wrapper, pp-trace.
  * lldb-mi moved to a separate project and is no longer available.
- Dropped obsolete patches:
  * clang-fix-powerpc-triplet.patch
  * clang-riscv64-rv64gc.diff
  * compiler-rt-move-fdp.patch
  * compiler-rt-sanitizer-ipc-perm.patch
  * D60657-riscv-pcrel_lo.diff
  * gwp-asan-lto.patch
  * libcxx-tests-linux-distribution.patch
  * link-lldb-shared.patch
  * llvm-riscv64-fix-cffi.diff
  * openmp-export-fini.patch
  * riscv-eh-frame-fixup.patch
  * riscv64-suse-linux.patch
- Rebased patches:
  * assume-opensuse.patch
  * link-clang-tools-extra-shared.patch
  * lldb-cmake.patch
  * llvm_build_tablegen_component_as_shared_library.patch
  * llvm-do-not-install-static-libraries.patch
  * llvm-remove-clang-only-flags.patch
  * lto-disable-cache.patch
  * polly-pthread.patch
  * tests-use-python3.patch
- Add tablegen-test-link-static.patch: fix TableGenTests.
- Add ValueLattice-Add-new-state-for-undef-constants.patch: fix
  miscompilation on ppc64/s390x that was leading to test crashes.
- Enable ThinLTO on aarch64.
- Disable ThinLTO on ppc64le due to internal error in gold.
- Delete object files and static libraries from build tree in
  %%install already, because debuginfo extraction happens after
  that. If we do it after %%check, we run out of disk space.
- Run tests "manually", because we've already removed many targets.
- Don't build unit tests, because some of them are now statically
  linked, which is very expensive with LTO. Also unit tests are
  probably not very interesting on the distribution level, we don't
  expect them to perform different than in upstream. The relevant
  upstream change for this is https://reviews.llvm.org/D54439.
- Drop %%if for openSUSE 13.2.
* Mon Mar 23 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Remove conflicts of clang-tools with {clang,llvm}{7,8}: the
  relevant binaries have been removed from those packages. This
  allows having clang-tools together with older versions of llvm.
  For a smooth installation we add OrderWithRequires dependencies.
- Fix typos in (still inactive) !%%{with clang_scripts} part.
* Wed Mar 11 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Require clang-tools for clangX-devel.
* Sat Mar  7 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Move all clang-related scripts (including those originally in
  clangX-checker), hmaptool and clang-doc into a common
  unversioned subpackage clang-tools, like python3-clang.
  The scripts reference the unversioned executables, so allowing
  multiple versions via update-alternatives would be misleading.
  The clang-doc executable will come with assets in Clang 10, so
  we have to take it out of update-alternatives as well.
  This should be the proper solution to boo#1161873.
- Include run-find-all-symbols script in clang-tools.
- Remove metadata for clangX-include-fixer subpackage that never
  had any files and thus wasn't released as rpm. There are so many
  clang binaries that packaging them separately doesn't scale.
- Fix lldb version string, adapt lldb-cmake.patch (boo#1165517).
- Remove unneccesary libtool dependency.
- Don't let clang depend on libc++, we link it with libstdc++.
- Recommend gold plugin if clang and gold are installed.
* Fri Feb  7 2020 Richard Biener <rguenther@suse.com>
- Add vim-plugin-llvm Conflicts to clang subpackage which now
  contains files formerly in llvmN-vim-plugins, conflicting with
  packages from older llvm releases.
* Thu Feb  6 2020 Richard Biener <rguenther@suse.com>
- Add back emacs-llvm Provides and Conflicts to clang subpackage
  originally in llvm-emacs-plugins to properly conflict with
  llvm-emacs-plugins from older llvm releases.
* Tue Feb  4 2020 Richard Biener <rguenther@suse.com>
- Add clang5-devel to clang9-doc conflicts.
* Mon Feb  3 2020 Andreas Schwab <schwab@suse.de>
- Add compiler-rt-sanitizer-ipc-perm.patch: Fix sanitizer-common
  build with glibc 2.31.
* Wed Jan 29 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Move clang-{format,include-fixer,rename}.{el,py} files from
  llvm-*-plugins to clang package. (boo#1161873)
- Drop the now empty llvm-emacs-plugins package.
* Mon Jan 27 2020 Richard Biener <rguenther@suse.com>
- Add polly and lld build conditionals, remove excessive Requires
  to clang from docs.  Fix conditional for libc++ use.
  [jsc#SLE-7400, jsc#SLE-7614, jsc#SLE-7452, jsc#SLE-8920, jsc#SLE-7390,
  jsc#SLE-7587]
* Wed Jan 15 2020 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Undo spec-cleaner changes that we don't want.
  * Reintroduce blank lines in configuration.
  * Use packageand syntax that works for older versions of RPM.
  * Don't use %%{_bindir} on left-hand side of sed replacements.
* Sat Jan 11 2020 Andreas Schwab <schwab@suse.de>
- riscv-eh-frame-fixup.patch: Remove changesets that alter the libLLVM ABI
* Wed Jan  8 2020 Jaime Caamaño Ruiz <jcaamano@suse.com>
- Add upstream patch to export compiler-rt FuzzedDataProvider header,
  required by Envoy 1.12.2:
  * compiler-rt-move-fdp.patch
* Mon Jan  6 2020 Andreas Schwab <schwab@suse.de>
- riscv-eh-frame-fixup.patch: Fix handling of .eh_frame on RISC-V
- polly-pthread.patch: Add missing -lpthread
* Fri Jan  3 2020 Andreas Schwab <schwab@suse.de>
- Enable support for riscv64
- clang-riscv64-rv64gc.diff, riscv64-suse-linux.patch,
  llvm-riscv64-fix-cffi.diff, D60657-riscv-pcrel_lo.diff: Backports from
  master
* Fri Dec 20 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 9.0.1.
  * This release contains bug-fixes for the LLVM 9.0.0 release.
    This release is API and ABI compatible with 9.0.0.
- Drop patches that have landed upstream:
  * dont-install-example-analyzer-plugins.patch
  * fix-module-test.patch
  * llvm-add-missing-include.patch
- Drop set-revision.patch, don't provide revision number in clang.
  The upstream repository has moved from Subversion to git, so the
  revision number is just a hash, which limits its usefulness.
- Rebase llvm-do-not-install-static-libraries.patch.
* Thu Dec  5 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Modify libcxx-tests-linux-distribution.patch to remove dependency
  on python-distro again: we don't have expected failures.
* Thu Dec  5 2019 Martin Liška <mliska@suse.cz>
- Add llvm-add-missing-include.patch in order to fix
  boo#1158367.
* Tue Dec  3 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add gwp-asan-lto.patch: Make sure there are no LLVM IR files in
  static libraries that we package.
- Add libcxx-tests-linux-distribution.patch (boo#1158293):
  Replace platform.linux_distribution by distro.linux_distribution.
- Make documentation packages noarch.
* Mon Nov  4 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add openmp-export-fini.patch: Export termination function for
  libomp.so, solves boo#1155108.
- Remove flaky test case in libcxx.
* Wed Oct 30 2019 Fabian Vogt <fvogt@suse.com>
- Fix typo, BOLL -> BOOL
* Sat Oct 19 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Let new {llvm,clang}*-doc packages "Conflict" with older devel
  packages, which they were split from.
- Let doc packages conflict with older versions of themselves.
* Mon Oct 14 2019 Stefan Brüns <stefan.bruens@rwth-aachen.de>
- (Build)Require only python3-base instead of full python3 package,
  the additional modules are not required. Helps shortening the
  build dependency chain.
- Remove python3-* requires from lldb9 subpackage, and add it to
  the bindings/pretty-printer subpackage (python3-lldb9).
- Add python3-base Requires to python3-clang subpackage
* Sat Sep 28 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Add dont-install-example-analyzer-plugins.patch: Remove example
  analyzer plugins from install targets instead of deleting them.
- Add fix-module-test.patch: fix test instead of deleting it.
- Don't build static libc++ (with ThinLTO that's not useful anyway).
- Don't build libc++experimental.
- Don't package libc++abi.so with libc++-devel, it's already contained
  in the (required) libc++abi-devel.
- Be more specific about files in libc++-devel.
* Sun Sep 22 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 9.0.0.
  * For details, see the release notes:
  - https://releases.llvm.org/9.0.0/docs/ReleaseNotes.html
  - https://releases.llvm.org/9.0.0/tools/clang/docs/ReleaseNotes.html
  - https://releases.llvm.org/9.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
  - https://releases.llvm.org/9.0.0/projects/libcxx/docs/ReleaseNotes.html
  - https://releases.llvm.org/9.0.0/tools/lld/docs/ReleaseNotes.html
- Change License to "Apache-2.0 WITH LLVM-exception OR NCSA".
  (https://llvm.org/foundation/relicensing/)
- Allow building with ThinLTO and enable it on some architectures.
- Disable LTO cache in lto-disable-cache.patch.
- Unset MALLOC_CHECK_ for compilation to mitigate lock contention.
- No debug info for ppc like for the other 32-bit targets.
- Clean up _constraints: same constraints for 32-bit targets.
- Don't use BUILD_SHARED_LIBS for Clang anymore, since the newly
  available libclang-cpp.so should expose the full C++ API.
- Link tools with libclang-cpp.so by using CLANG_LINK_CLANG_DYLIB,
  similar to LLVM_BUILD_LLVM_DYLIB for libLLVM.so.
- Remove obsolete n_clang_allow_BUILD_SHARED_LIBRARY.patch.
- Add link-clang-shared.patch to link more clang targets with
  libclang-cpp.so, especially libclang.so.
- Add link-clang-tools-extra-shared.patch, link-lldb-shared.patch:
  link targets in clang-tools-extra and lldb with libclang-cpp.so.
- Simplify llvm-do-not-install-static-libraries.patch, also handle
  Clang, for which we now get static libraries.
- Package documentation for llvm and clang separately, recommend
  them for the main package: they are not required for development,
  but actually useful for working with the non-devel packages.
- Recommend editor plugins not just for llvm-devel.
- Recommend libstdc++ for Clang again.
- Move diagtool from llvm to clang subpackage.
- Properly distinguish between %%{_relver} and %%{version}.
- Drop aarch64-disable-memorytest.patch and reactivate test.
- Rebase clang-resourcedirs.patch.
- Rebase llvm-normally-versioned-libllvm.patch.
- Rebase llvm-remove-clang-only-flags.patch.
- Rebase llvm_build_tablegen_component_as_shared_library.patch.
- Rebase set-revision.patch.
- Increase disk space for build.
* Sun Sep 22 2019 Lubos Lunak <l.lunak@centrum.cz>
- Make lldb recommend python3-lldb (it contains pretty printers).
* Wed Aug 21 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Use python3 shebangs everywhere (boo#1146533).
- Drop obsolete opt-viewer-Do-not-require-python-2.patch.
* Fri Aug 16 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Remove unneccesary dependencies:
  * groff, bison and flex don't seem to be used.
  * jsoncpp is no longer used since r338461.
  * Move some BuildRequires to subpackages.
  * Don't recommend scan-{build,view} in clang (boo#1145444).
  * Devel packages are only required in other devel packages,
    when their headers are included in the installed headers.
- Add versions to Provides/Conflicts except for files.
- Remove unused (since r268685) CMake flags LLVM_ENABLE_TIMESTAMPS.
- Fix installation of opt-viewer files when python3-clang is no
  longer built.
* Sat Jul 20 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Update to version 8.0.1.
  * This release contains bug-fixes for the LLVM 8.0.0 release.
    This release is API and ABI compatible with 8.0.0.
- Don't run LLVM tests on ppc at all because of sporadic hangs.
* Fri Jun 28 2019 Guillaume GARDET <guillaume.gardet@opensuse.org>
- Increase RAM for armv6/7 to avoid OOM and be scheduled on fast
  worker
* Thu Jun 27 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Use the documented LLVM_ENABLE_RTTI to enable RTTI instead of
  LLVM_REQUIRES_RTTI, which "is an internal flag that individual
  targets can use to force RTTI". (boo#1139584)
- Drop obsolete llvm-build-tests-with-rtti.patch.
* Tue Jun 18 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Exclude riscv64 for now since it fails to build.
* Sat Jun 15 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Change some groups:
  * put libraries in System/Libraries,
  * devel packages in Development/Libraries,
  * clang in Development/Languages/C and C++,
  * the gold plugin in Development/Tools/Building.
- Add some URLs, use https:// when possible.
- Remove unneeded devel dependencies.
- Only suggest a C++ standard library for clang. It's also a
  C compiler and needs no C++ library when only used as such.
- Fix Supplements for editor plugins.
- Fix some rpmlint issues:
  * Reword summary and description for Polly.
  * Fix /usr/bin/env shebangs.
  * Remove executable bit where not needed.
  * Move bash completion to /usr.
  * Remove hard dependency of libclang8 to libstdc++-devel.
- Make rpm macros work properly.
- Remove sources from documentation.
- Run %%fdupes on the right directories.
- Enable tests for libcxx.
- Reduce memory requirements for compile jobs depending on arch.
* Sun May 12 2019 Aaron Puchert <aaronpuchert@alice-dsl.net>
- Avoid relocation overflow on ppc by not building GPU backends.
- Update baselibs.conf.
* Wed Apr 24 2019 Martin Liška <mliska@suse.cz>
- Disable LTO (boo#1133254).
* Sat Mar 23 2019 aaronpuchert@alice-dsl.net
- Fix packaging on ppc: the sanitizers aren't available there, so
  the directories /usr/lib/clang/*/{lib,share} are missing.
- Package LLVMgold even when we don't use gold for linking.
  It's promised in /usr/lib/cmake/llvm/LLVMExports.cmake.
- Unignore test failures on PowerPC64 architectures. The failures
  in ppc are unrelated to AMDGPU, so we remove that remark.
- Fix dependencies: the gold plugin shouldn't depend on llvm-devel.
  libc++abi-devel should depend on libc++abi.
- Fix typo.
* Tue Mar 19 2019 Adrian Schröter <adrian@suse.de>
- Enable libc++ on ARM (Needed for tensorflow)
* Mon Mar 11 2019 msrb@suse.com
- Update to 8.0.0
  * For details, see the release notes:
    https://llvm.org/releases/8.0.0/docs/ReleaseNotes.html
    https://llvm.org/releases/8.0.0/tools/clang/docs/ReleaseNotes.html
    https://llvm.org/releases/8.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
    https://llvm.org/releases/8.0.0/tools/lld/docs/ReleaseNotes.html
- Drop llvm-unittests-Don-t-install-TestPlugin.so.patch,
  llvm-drop-llvm-optional-clang-specific-optimization.patch,
  llvm-D51108.patch,
  llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch,
  llvm-test-Fix-Assembler-debug-info.ll.patch
  * Already included upstream
- Add 0001-CMake-Add-install-targets-for-utilities-to-LLVM-expo.patch
* Sun Mar 10 2019 aaronpuchert@alice-dsl.net
- Remove -fno-strict-aliasing, which upstream doesn't use any more
  since r245304 in 2015. (http://reviews.llvm.org/D12036)
  It's probably also not needed for modern versions of GCC.
  It was enabled in r105644 because of some bugs there.
- Add a clang-%%{_sonum} symlink, which is referenced by
  /usr/lib64/cmake/clang/ClangTargets.cmake (boo#1120098)
- Package clang builtin headers with libclang. The library is
  basically unusable without the builtin headers. Currently
  consumers of libclang have to require clang as well, although
  only the headers are needed.
* Tue Feb 26 2019 msrb@suse.com
- llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch,
  llvm-test-Fix-Assembler-debug-info.ll.patch
  * Fix crash in rustc (boo#1126907)
* Sun Feb 17 2019 John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Allow use of Gold linker to be conditional
- Disable Gold linker on ppc
  + LLVM currently doesn't build with Gold on ppc
* Tue Jan 15 2019 msrb@suse.com
- Readd clang-7 and clang++-7 symlinks
  * Fixes uses of clang-devel (boo#1120098)
* Mon Jan 14 2019 msrb@suse.com
- Update to llvm 7.0.1
  * This release contains bug-fixes for the LLVM 7.0.0 release.
    This release is API and ABI compatible with 7.0.0.
* Sun Dec 30 2018 Dirk Mueller <dmueller@suse.com>
- enable gold unconditionally like with llvm6 and older
- reenable openmp support again for aarch64 (like it was already in llvm6)
* Wed Dec 19 2018 Todd R <toddrme2178@gmail.com>
- Use %%license macro
- Use upstream-recommended %%{_rpmconfigdir}/macros.d directory
  for the rpm macros.
* Fri Dec 14 2018 John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Remove ppc from Exclude field in spec file
- Allow use of Gold linker to be conditional
- Disable Gold linker on ppc
- Add patch to fix SUSE GNU triplet on ppc
  * clang-fix-powerpc-triplet.patch
- Add patch from upstream to fix ABI issue on ppc
  * llvm-D51108.patch
- Limit list of enabled targets on ppc
  * PowerPC;AMDGPU;BPF;NVPTX
- Ignore testsuite failures on ppc
* Tue Dec 11 2018 msrb@suse.com
- llvm-drop-llvm-optional-clang-specific-optimization.patch
  * Fix ABI incompatibility when libLLVM (built with clang) is
    linked to a program build with gcc. (boo#1119092)
* Tue Oct 23 2018 msrb@suse.com
- opt-viewer-Find-style-css-in-usr-share.patch
  * Make sure opt-viewer installed in /usr/bin can find resources
    from /usr/share/opt-viewer. (boo#1112730)
* Fri Oct 19 2018 msrb@suse.com
- llvm-unittests-Don-t-install-TestPlugin.so.patch
  * It is only used for testing and is causing failures when
    processing LLVMExports.cmake.
* Tue Aug 28 2018 msrb@suse.com
- Update to llvm 7.0.0
  * For details, see the release notes:
    https://llvm.org/releases/7.0.0/docs/ReleaseNotes.html
    https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html
    https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
    https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html
- Remove no longer needed patches:
  * llvm6-fix-gdb-index-crash.patch
  * lldb-fix-build-with-python-3.7.patch
  * lldb-add-pthread-dl-libs.patch
  * polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch
- Add tests-use-python3.patch
  * Prevents tests from failing because of missing python 2.
- Add llvm-better-detect-64bit-atomics-support.patch
  * Fixes build on i586.
* Mon Aug 27 2018 msrb@suse.com
- Updated llvm-remove-clang-only-flags.patch
  - Exclude also "-Werror=unguarded-availability-new" (bsc#1106000)
* Wed Jul 25 2018 msrb@suse.com
- Update to llvm 6.0.1
  * This release contains bug-fixes for the LLVM 6.0.0 release. It
    is API and ABI compatible with 6.0.0.
- Remove no longer needed llvm6-fix-InstCombine.patch
- Add lldb-fix-build-with-python-3.7.patch
  * Fix build with python 3.7
* Fri Jun 29 2018 l.lunak@centrum.cz
- llvm6-fix-gdb-index-crash.patch
  * From upstream, fix lld --gdb-index crash.
* Thu Jun 14 2018 msrb@suse.com
- Do not requires gcc6 for older sle versions.
  * llvm6 is not built on <= 12 SP3 and this was preventing build
    on 12 SP4.
* Thu May 17 2018 msrb@suse.com
- llvm_build_tablegen_component_as_shared_library.patch
  * Build TableGen component as its own shared library because it
    is not included in the libLLVM library and is needed for ldc.
    (bsc#1086445)
* Thu May 17 2018 tchvatal@suse.com
- Add patch llvm6-fix-InstCombine.patch to fix InstCombine init
  * Will be fixed in 6.0.1 release
* Wed May  9 2018 msrb@suse.com
- Do not build stage1 with debug info. It was accidentally added
  with the use of %%optflags. This should fix out of memory errors
  on 32bit architectures and speed up build everywhere else.
  (bsc#1092697)
* Wed Apr 11 2018 msrb@suse.com
- llvm-build-tests-with-rtti.patch
  * Fixes build failure with gcc 8. (bnc#1087136)
* Thu Apr  5 2018 msrb@suse.com
- Do not export Polly static libraries which we do not distribute.
  * Updated llvm-do-not-install-static-libraries.patch
- Use external jsoncpp instead of the bundled one.
  * Added polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch
- llvm6-devel must require llvm6-polly-devel
  * Files in llvm6-devel reference Polly.
* Mon Mar 19 2018 msrb@suse.com
- Update to llvm 6.0.0
  * Added polly
  * Notable changes:
  - Retpoline Spectre variant 2 mitigation
  - GlobalISel by default for AArch64 at -O0
  - improved scheduling on several x86 micro-architectures
  - Clang defaults to -std=gnu++14 instead of -std=gnu++98
  - support for some upcoming C++2a features
  - improved optimizations, new compiler warnings, many bug
    fixes, and more.
- Use alternatives for clang's bash autocomplete to prevent
  conflicts with other versions.
* Thu Feb 15 2018 msrb@suse.com
- Remove liblldb5 and lldb5-devel from baselibs.conf. They are only
  build for x86_64, so no point having them in baselibs.conf.
* Wed Feb  7 2018 msrb@suse.com
- Use %%optflags, except for FORTIFY_SOURCE which is not compatible
  with compiler-rt.
- Exclude static libraries differently.
  * Drop llvm-split-static-library-exports-into-their-own-export-file.diff
  * Drop clang-split-static-library-exports-into-their-own-export-file.diff
  * Update llvm-do-not-install-static-libraries.patch to not use
    EXCLUDE_FROM_ALL which is not available in cmake 3.5.
  - This fixes build on SLE12.
- Do not force gcc6 on OpenSUSE - fixes build.
- Reduce the amount of concurent link jobs by increasing their
  memory requirement - to reduce stalls in OBS.
* Wed Jan 31 2018 msrb@suse.com
- Cleanup %%ifarch conditions, remove targets unintentionally added
  to s390/s390x. (bnc#1078436)
* Tue Jan 30 2018 msrb@suse.com
- Limit the amount of parallel link jobs, but no longer limit
  compile jobs. This should prevent running out of memory during
  linking while not longer slowing down compilation.
- Remove build dependency on procps
* Mon Jan 29 2018 msrb@suse.com
- Reduce disk size requirement to 30GB in _constraints. We no
  longer need that much since we stopped building static libraries.
* Thu Jan 18 2018 msrb@suse.com
- n_clang_allow_BUILD_SHARED_LIBRARY.patch
  * Allow buildling clang with BUILD_SHARED_LIBRARY while the rest
    is built with LLVM_LINK_LLVM_DYLIB. (bnc#1065464)
- Remove clang-devel-static.
* Wed Jan 10 2018 msrb@suse.com
- Place gold plugin to the right directory. (bnc#1073210)
  * It must be in /usr/lib/bfd-plugins on all architectures.
  * Remove llvm5-gold from baselibs.conf - nothing needs a 32bit
    version of it and it would now conflict with the 64bit one.
- Reduce _constraints requirements on 32bit architectures.
  * Since we had to disable debuginfo on them, they require much
    less.
* Wed Jan 10 2018 normand@linux.vnet.ibm.com
- ignore make check error for PowerPC as bypass
  https://bugs.llvm.org/show_bug.cgi?id=35871
* Mon Jan  8 2018 dmueller@suse.com
- disable debuginfo build for ARM as well
* Fri Jan  5 2018 msrb@suse.com
- Delete intermediate files during build to reduce total disk usage
  (bnc#1074625)
* Thu Jan  4 2018 msrb@suse.com
- Update to llvm 5.0.1
  * This release contains bug-fixes for the LLVM 5.0.0 release.
  * This release is API and ABI compatible with 5.0.0.
- llvm-do-not-install-static-libraries.patch
  * Updated.
* Fri Dec 22 2017 fcrozat@suse.com
- Increase minimum memory and disk sizes required for building in
  _constraints.
* Wed Dec 13 2017 msrb@suse.com
- Rename python3-lldb to python3-lldb5 so it can work with llvm
  meta package.
* Mon Dec 11 2017 msrb@suse.com
- Rename python packages to follow naming conventions.
- Remove unnecessary dependencies on python3.
- Make opt-viewer not require python2.
  * opt-viewer-Do-not-require-python-2.patch
* Mon Dec  4 2017 msrb@suse.com
- Switch to python3.
- Fix %%check tests when used with python3.
  * Define LANG=C.UTF-8 when running the tests.
- Add explicit Provides/Conflicts to llvm5-devel,
  clang5-devel-static and lldb5-devel.
  * These are required to be validated by obs repo-checker.
* Fri Dec  1 2017 msrb@suse.com
- Use LLVM_OPTIMIZED_TABLEGEN to speed up build. (bnc#1064786)
- Fix files of lldb4 to work correctly with update-alternatives.
- Remove Conflicts clang(LLDB) from lldb4-devel - it does not
  exist. It would be provided automatically, but no such cmake file
  is installed.
- llvm-do-not-install-static-libraries.patch
  * Do not install static libraries instead of installing them and
    deleting after.
  * Reduces disk usage during build. (bnc#1064786)
- Do not build unnecessary parts during stage1.
  * Speeds up build a bit. (bnc#1064786)
* Mon Nov 20 2017 msrb@suse.com
- Updated baselibs.conf to reference version 5 packages.
- Deleted rogue llvm5.spec.r29 file.
- Deleted arm_suse_support.diff, llvm-add_a_LLVM_USE_LINKER.patch,
  libsanitizer.patch.
  - No longer used, applied already in the source.
* Tue Oct 17 2017 msrb@suse.com
- llvm-normally-versioned-libllvm.patch
  * Change libLLVM naming scheme to match our naming guidelines.
  * The reasons for the original naming scheme are no longer valid,
    more details in the patch.
* Fri Oct 13 2017 msrb@suse.com
- Disable all thread related tests in libcxx. Many of them use
  timeouts to detect failure. They can fail randomly if the machine
  is under heavy load (happens often in OBS).
* Tue Oct 10 2017 msrb@suse.com
- Drop llvm5-devel-static. llvm5-devel contains shared library with
  the same content.
* Mon Oct  9 2017 msrb@suse.com
- Increase disk space requirement in _constraints to 45GB.
  Otherwise the build gets stuck in random places.
- Skip build of lldb5 python on distributions with swig < 3.0.11
* Wed Aug 30 2017 msrb@suse.com
- Copy from llvm4.
- Update to llvm 5.0.0.
* Wed Aug 30 2017 msrb@suse.com
- Use LLVM_BUILD_LLVM_DYLIB instead of BUILD_SHARED_LIBS to build
  single libLLVM library. This is the recommended way. The old way
  was causing various issues.
  * llvm-split-static-library-exports-into-their-own-export-file.diff
  * clang-split-static-library-exports-into-their-own-export-file.diff
  (bnc#1049703)
- Add lld, linker for Clang/LLVM
  (sr#517692)
- Include clang++-MAJOR.MINOR symbolic link
  (bnc#1012260)
- Remove unnecessary dependency on flex and bison.
- Make sure all binaries are managed by update-alternatives
- Add llvm-add_a_LLVM_USE_LINKER.patch and link using gold to
  prevent memory exhaustion on some build machines.
- Reduce debuginfo on x86 architecture. LLVM libraries are so big that they
  exhaust all memory on 32 bit machine if linked with full debuginfo.
- Speed up build by skipping parts that are not required in stage1.
- Build lldb in-tree as one of the llvm tools.
* Tue Aug 29 2017 meissner@suse.com
- clang-ignore-stack-clash-protector.patch: ignore -fstack-clash-protection
  for now.
* Tue Aug  8 2017 schwab@suse.de
- xlocale.patch: don't use obsolete <xlocale.h>
- libsanitizer.patch: fix use of undocumented types
* Sun Jul 16 2017 dmueller@suse.com
- build fixes for armv6 (skip testsuite as it requires 64bit,
  set the list of targets to include ARM and remove triplet hack)
* Sat Jul  1 2017 jimmy@boombatower.com
- Include provides and conflics in baselibs.conf for llvm4-devel,
  clang4-devel, llvm4-LTO-devel, and llvm4-gold.
* Mon Jun 26 2017 idonmez@suse.com
- Update to version 4.0.1
  * Minor bugfixes
* Fri Jun  2 2017 idonmez@suse.com
- Use gcc6 only for SLE boo#1041469
* Tue May  9 2017 idonmez@suse.com
- Package libLLVMFuzzer
* Wed Apr 19 2017 dmueller@suse.com
- readd arm_suse_support.diff which was accidentally removed
  in the 4.0.0 update
* Wed Apr  5 2017 afaerber@suse.de
- Enable AMDGPU and NVPTX targets everywhere except for S/390.
  The AMDGPU target is needed for Mesa Clover (sr#485802).
* Tue Apr  4 2017 idonmez@suse.com
- Use gcc6 on SLE12
* Thu Mar 30 2017 idonmez@suse.com
- Package license & credits
* Mon Mar 27 2017 idonmez@suse.com
- Update to version 4.0.0
  * See
    + http://releases.llvm.org/4.0.0/docs/ReleaseNotes.html and
    + http://releases.llvm.org/4.0.0/tools/clang/docs/ReleaseNotes.html
    + http://releases.llvm.org/4.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html
- Drop the following patches, fixed upstream:
  amdgpu_revert_r280589.patch
  arm_suse_support.diff
  clang-fix-substitutions-abi_tag.patch
  clang-incomplete-field-types.patch
  glibc-2.24-libcxx.patch
  llvm-install-CheckAtomic.patch
  revert-cmake-soname.patch
* Fri Feb 24 2017 idonmez@suse.com
- Enable BPF for all arches bsc#1026191
* Wed Jan 25 2017 idonmez@suse.com
- libc++ must depend on libc++abi
* Wed Jan 25 2017 idonmez@suse.com
- Stop using otherproviders() due to an rpm parser bug, use
  self-conflicts instead as suggested by mls.
* Tue Jan 24 2017 idonmez@suse.com
- Add amdgpu_revert_r280589.patch to fix an amdgpu regression
  bsc#1021577
* Tue Jan 17 2017 jslaby@suse.com
- Require LLVMgold and libLTO in llvm-devel, otherwise we get in CMake:
  The imported target "LLVMgold" references the file
  "/usr/lib64/LLVMgold.so" but this file does not exist.
  This happens when requiring llvm3_9-devel directly, not llvm-devel.
* Wed Dec 21 2016 idonmez@suse.com
- Update to version 3.9.1
  * See:
    + http://llvm.org/releases/3.9.1/docs/ReleaseNotes.html
    + http://llvm.org/releases/3.9.1/tools/clang/docs/ReleaseNotes.html
    + http://llvm.org/releases/3.9.1/tools/clang/tools/extra/docs/ReleaseNotes.html
* Wed Sep 28 2016 toddrme2178@gmail.com
- Update to version 3.9.0
  * Clang now supports the G++ abi_tag attribute.
  * Clang will no longer pass --build-id by default to the linker.
  * Improved C++1z support in Clang.
  * Clang now has support for all OpenCL 2.0 features.
  * Added support for all non-offloading features from OpenMP 4.5,
  * The static analyzer now checks for incorrect usage of MPI APIs in C and C++.
  * LLVM no longer does inter-procedural analysis and optimization
    (except inlining) on functions with comdat linkage.
  * LLVM now supports the Intel CPUs Skylake Server with AVX512
    (-march=skylake-avx512) and Knights Landing (-march=knl).
  * More at:
    + http://llvm.org/releases/3.9.0/docs/ReleaseNotes.html
    + http://llvm.org/releases/3.9.0/tools/clang/docs/ReleaseNotes.html
    + http://llvm.org/releases/3.9.0/tools/clang/tools/extra/docs/ReleaseNotes.html
  * Fix the following patches:
    + arm_suse_support.diff
    + assume-opensuse.patch
    + clang-resourcedirs.patch
    + default-to-i586.patch
    + glibc-2.23-libcxx.patch
    + glibc-2.24-libcxx.patch
    + lldb-add-pthread-dl-libs.patch
    + lldb-cmake.patch
    + llvm-fix-find-gcc5-install.patch
    + llvm-remove-clang-only-flags.patch
    + revert-cmake-soname.patch
    + set-revision.patch
  * Remove upstream-included patch:
    + llvm-nonvoid-return.patch
  * Remove patch for removed files:
    + glibc-2.23-libcxx.patch
- Backport upstream patches:
  * clang-fix-substitutions-abi_tag.patch
  * clang-incomplete-field-types.patch
  * llvm-install-CheckAtomic.patch
- Add clang%%{_sonum}-include-fixer subpackage and associated
  libfindAllSymbols%%{_sonum} and libfindAllSymbols%%{_sonum}-devel
  subpackages.
- Add sanstats to llvm binary list.
* Fri Sep 23 2016 toddrme2178@gmail.com
- Change update-alternatives to use %%postun instead of %%preun,
  which is now what Factory maintainers are requesting.
- Use the minor version to set the update-alternatives priority so
  the most recent version of the LLVM, Clang, and LLDB are used by
  default.
- Add LLVM rpm macros so downstream packages can have some idea how
  LLVM was built.
* Tue Sep 20 2016 toddrme2178@gmail.com
- Rename libomp to make it possible to have multiple versions available.
* Fri Sep  9 2016 toddrme2178@gmail.com
- Split the old llvm package into this version-specific package
  and a wrapper package.
- Implement update-alternatives to allow parallel installation
  of many of the subpackages.
- Rename subpackages that can be parallel-installed to a
  version-specific name based on the associated shared library's
  current .so number.
- Various fixes to support the above changes.
* Wed Sep  7 2016 tchvatal@suse.com
- Sort a bit with spec-cleaner
- Remove the latest switch for now, things should be either coinstallable
  or not, we don't need to bother around with compilation like this
* Wed Aug 31 2016 toddrme2178@gmail.com
- Update to llvm 3.8.1
  * See http://llvm.org/releases/3.8.1/docs/ReleaseNotes.html and
    http://llvm.org/releases/3.8.1/tools/docs/ReleaseNotes.html
- Use versioned libLLVM (to libLLVM3_8) and libclang (to libclang3_8)
- Change versioning of liblldb3_8 to liblldb-3_8 and use a variable
  to control the name instead of hard-coding it.
- Use bcond_with and bcond_without to enable/disable build options
  instead of hard-coding them.
- Put buildrequires as requires in -devel packages to avoid linker errors
  when building packages against the -devel packages.
- Add ffi support (disabled by default).
- Add oprofile support (disabled by default).
- Add valgrind support (disabled by default).
- Link cmake files to the normal cmake file directory to allow autodetection
  of cmake interfaces.
- Remove unused lldb components from main spec file.
- Split llvm python bindings into own subpackage.
- Split emacs plugin into own subpackage
- Move additional vim plugins into vim plugins package
- Split libc++, libLTO, LLVMgold, libomp, clang-chekers into own subpackages
- Make python-clang, llvm-vim-plugins, and llvm-emacs-plugins noarch since
  they aren't architecture-specific.
- Make packages besides llvm, llvm-clang, and the shared libraries conflict
  with other versions.  This will be important when multiple LLVM versions
  are supported.
- Various spec file cleanups
- Rebase patches:
  * arm_suse_support.diff
  * assume-opensuse.patch
  * clang-resourcedirs.patch
  * default-to-i586.patch
  * glibc-2.23-libcxx.patch
  * glibc-2.24-libcxx.patch
  * lldb-add-pthread-dl-libs.patch
  * lldb-cmake.patch
  * llvm-fix-find-gcc5-install.patch
  * llvm-nonvoid-return.patch
  * llvm-remove-clang-only-flags.patch
  * revert-cmake-soname.patch
  * set-revision.patch
* Fri Aug 26 2016 tchvatal@suse.com
- Start conversion to use cmake macros with now introduced
  compatibility for ninja
- Reduce number of threads if we don't have enough memory
- Add patch for the nonvoid returns:
  * llvm-nonvoid-return.patch
* Thu Jul 28 2016 normand@linux.vnet.ibm.com
- for ppc64le set memory to 4GB in _constraints file
  (failure in Factory:PowerPC)
* Wed Jul 13 2016 schwab@suse.de
- glibc-2.24-libcxx.patch: fix libcxx testsuite for glibc 2.24
* Wed May 18 2016 ronisbr@gmail.com
- Build LLDB separated from LLVM.
- Re-enable python bindings for the LLDB API.
* Wed May 18 2016 idonmez@suse.com
- Disable libcxx/lldb/openmp for SLE fate#319582
* Mon Apr 25 2016 idonmez@suse.com
- Update rpmlintrc to whitelist libLTO.so
* Mon Apr 11 2016 idonmez@suse.com
- Re-enable glibc-2.23 patch for Tumbleweed
* Sun Apr 10 2016 dmueller@suse.com
- fix arm_suse_support.diff for armv6hl
- adjust compile flags for llvm on armv6hl (fixes Mesa build)
* Mon Apr  4 2016 idonmez@suse.com
- Update llvm-remove-clang-only-flags.patch to remove
  - Wcovered-switch-default flag for gcc compatibility.
* Wed Mar 16 2016 idonmez@suse.com
- Use gcc for stage1 bootstrap
- Add back libstdc++-devel dependency for clang since libc++ is
  only available for x86-64 atm.
* Thu Mar 10 2016 idonmez@suse.com
- Comment out glibc-2.23-libcxx.patch until glibc 2.23 actually
  hits the Factory.
* Tue Mar  8 2016 idonmez@suse.com
- Update to llvm 3.8.0
  * See http://llvm.org/releases/3.8.0/docs/ReleaseNotes.html and
    http://llvm.org/releases/3.8.0/tools/clang/docs/ReleaseNotes.html
- Fold lldb build into llvm and disable python support
- Drop clang-disable-ada-extension.patch, libcxxabi-exceptions.patch
  and cmake-host-triple.patch
- Add revert-cmake-soname.patch to fix soname handling
* Wed Mar  2 2016 idonmez@suse.com
- Add glibc-2.23-libcxx.patch to fix test failures with glibc 2.23
* Sat Oct  3 2015 mimi.vx@gmail.com
-  Remove FFI support because its fragile
* Sun Sep 27 2015 idonmez@suse.com
- Enable OpenMP for x86, x86_64, ppc64 and ppc64le
* Mon Sep 14 2015 idonmez@suse.com
- Enable all targets on x86, x86_64
* Wed Sep  2 2015 idonmez@suse.com
- Update to version 3.7.0
  * See http://llvm.org/releases/3.7.0/docs/ReleaseNotes.html
- Merge aarch64-suse-support.patch into arm_suse_support.diff
- Refresh arm_suse_support.diff, llvm-fix-find-gcc5-install.patch
- Remove llvm-fix-parsearmarch.patch, upstream.
* Tue May 26 2015 ro@suse.de
- fix build on s390x (one typo in ifarch and one change in filelist)
* Mon May 25 2015 idonmez@suse.com
- Update to version 3.6.1
  * No changelog upstream
* Fri Apr 24 2015 idonmez@suse.com
- Add llvm-fix-parsearmarch.patch to fix parsing armv{6,7}hl archs.
* Mon Mar  2 2015 idonmez@suse.com
- Update to version 3.6.0
  * See http://llvm.org/releases/3.6.0/docs/ReleaseNotes.html
- Add python-xml dependency for regression tests
- Removed the following patches, fixed upstream:
  * arm-remove-xfails.diff
  * libcxx-libdir.patch
  * llvm-config-lib64.patch
  * llvm-fix-intrusiverefcntptr.patch
* Fri Feb 20 2015 rguenther@suse.com
- Add llvm-fix-intrusiverefcntptr.patch to fix build of LLVM tools
  with GCC 5.
- Add llvm-fix-find-gcc5-install.patch to properly find installed GCC 5.
* Wed Jan 28 2015 idonmez@suse.com
- Add a gcc dependency for clang, this is heavyweight but we need
  libgcc_s which comes with the gcc package (bnc#893359)
* Fri Dec 12 2014 idonmez@suse.com
- Conditionalize libcxx{abi} build on build_libcxx variable
- Turn libc++.so into an ldscript so it links to libc++abi
  automatically.
* Tue Oct 21 2014 dmueller@suse.com
- fix constraints for armv6l/armv7l (there is no 4GB RAM on 32bit)
* Mon Sep 29 2014 idonmez@suse.com
- Rename llvm-remove-werror-date-time.patch to
  llvm-remove-clang-only-flags.patch and remove more clang only
  flags.
* Fri Sep 26 2014 idonmez@suse.com
- Enable shared libs on PPC64
* Thu Sep 25 2014 idonmez@suse.com
- Require llvm-clang not just clang
* Wed Sep 17 2014 idonmez@suse.com
- Add llvm-remove-werror-date-time.patch to remove -Werror=date-time
  for CXXFLAGS, gcc does not support it and it creeps into
  llvm-config --cflags
* Wed Sep 17 2014 idonmez@suse.com
- Remove wrong Requires from the llvm-devel package
* Wed Sep 17 2014 idonmez@suse.com
- Add default target triple form ARM, fixes bnc#893359
* Fri Sep  5 2014 idonmez@suse.com
- Use ninja for building
* Thu Sep  4 2014 idonmez@suse.com
- Update to llvm 3.5.0
  * Major update, see http://llvm.org/releases/3.5.0/docs/ReleaseNotes.html
- Use upstream pristine tarballs
- Add libc++/libc++abi support clang (only on x86_64)
- Add libcxxabi-exceptions.patch to fix libcxxabi exception handling
- Add libcxx-libdir.patch to fix libdir on 64bit arches
- Remove asan-disable-hugemalloctest.patch and
  cmake-patchversion.patch, fixed upstream.
* Fri Aug 15 2014 idonmez@suse.com
- Fix the sed line for minimal damage.
* Wed Jul 23 2014 idonmez@suse.com
- Add baselibs.conf to source files
* Wed Jul 23 2014 idonmez@suse.com
- Add cmake-patchversion.patch to sync config.h.in
  with config.h.cmake
* Tue Jul 22 2014 idonmez@suse.com
- Update to llvm 3.4.2
  * Minor bugfix release
- Drop clang-max_align_t.patch, applied upstream.
* Sat Jun 21 2014 arnaud@versini.eu
- Add clang-max_align_t.patch to resolve issue with libstdc++ 4.9
  max_align_t missing declaration
* Tue May 13 2014 peter.trommler@ohm-hochschule.de
- build compiler-rt on ppc64 (don't delete it)
* Thu Apr  3 2014 idonmez@suse.com
- Fix resource dir for libclang case (clang-resourcedirs.patch)
- Always build tests
* Sat Feb 22 2014 ro@suse.de
- complete ifarchs for s390
* Fri Jan 24 2014 idonmez@suse.com
- Remove non-existing doc subpackage
* Fri Jan 24 2014 idonmez@suse.com
- Add a dependency on ncurses-devel since libLLVM now links to
  tinfo.
* Tue Jan 14 2014 idonmez@suse.com
- Add 32bit libclang bnc#857131
* Tue Jan  7 2014 idonmez@suse.com
- Update to final llvm 3.4 release
  * See http://llvm.org/releases/3.4/docs/ReleaseNotes.html for
    complete changelog.
* Tue Dec 24 2013 idonmez@suse.com
- Update to final release candidate (r197980)
* Sat Dec 21 2013 idonmez@suse.com
- Update to r197866 from release_34 branch
* Tue Dec 17 2013 idonmez@suse.com
- Update to r197490 from release_34 branch
* Thu Dec 12 2013 idonmez@suse.com
- Update to r197142 from release_34 branch
- Disable assertions again now that PPC64 backend is fixed
* Tue Dec 10 2013 idonmez@suse.com
- Update to r196899 from release_34 branch
- Remove compiler_rt-r196612.patch, merged upstream
* Mon Dec  9 2013 idonmez@suse.com
- Add compiler_rt-r196612.patch to fix ubsan failures on i586
* Mon Dec  9 2013 idonmez@suse.com
- Update to r196762 from release_34 branch
* Mon Dec  9 2013 dvaleev@suse.com
- enable ppc64le
* Thu Dec  5 2013 idonmez@suse.com
- Update to r196503 from release_34 branch to get compiler_rt fixes
* Thu Dec  5 2013 idonmez@suse.com
- Update to r196487 from release_34 branch to get compiler_rt fixes
* Wed Dec  4 2013 idonmez@suse.com
- Ship cmake files for llvm (needed for lldb and such)
* Wed Dec  4 2013 idonmez@suse.com
- Update to r196371 from release_34 branch
* Wed Dec  4 2013 termim@gmail.com
- install python binding to libclang
* Sun Dec  1 2013 idonmez@suse.com
- Update to r196358 from llvm 3.4 branch
- Add asan-disable-hugemalloctest.patch to disable
  ASAN HugeMallocTest, it requires 4.1+ GB of RAM.
- Refresh patches
  * aarch64-suse-support.patch
  * arm_suse_support.diff
  * assume-opensuse.patch
  * default-to-i586.patch
- Drop upstream patches
  * llvm-disable-pretty-stack-trace.patch
  * r189852.diff
  * unreachable-code.patch
  * llvm-no-visibility.patch
* Tue Oct 22 2013 dmueller@suse.com
- add r189852.diff: Remove vtables optimisation that breaks ARM
  and PowerPC
- Disable testsuite on ARMv7, takes forever to run
* Thu Oct 17 2013 schwab@suse.de
- Fix file list for %%arm
* Wed Oct  9 2013 dmueller@suse.com
- use %%arm, not arm in arch conditions
- add arm-remove-xfails.diff: remove XFAILs in testsuite
  that pass and thereby make check fail
* Fri Sep 27 2013 idonmez@suse.com
- Set DisablePrettyStackTrace to true since it messes up signal
  handling. bnc#839074 and fdo#60929 implemented with
  llvm-disable-pretty-stack-trace.patch)
* Wed Aug 28 2013 schwab@suse.de
- Fix filelist for aarch64
* Wed Aug 28 2013 schwab@suse.de
- aarch64-suse-support.patch: Enable AArch64 suse toolchain support
* Wed Aug 28 2013 idonmez@suse.com
- Add s390x support
* Wed Aug 28 2013 idonmez@suse.com
- Remove unused chrpath dependency
- Re-enable ARCMT since libclang depends on it
* Mon Aug 26 2013 schwab@suse.de
- Define host_triple for aarch64
* Thu Aug 22 2013 idonmez@suse.com
- Fix ARMv6 build
* Wed Aug 21 2013 idonmez@suse.com
- Only enable PowerPC on ppc64
* Mon Aug 12 2013 idonmez@suse.com
- Disable shared libs on PowerPC
- Disable ARCMT, it only makes sense for iOS/OSX
* Tue Aug  6 2013 idonmez@suse.com
- Fix build
* Wed Jul 17 2013 idonmez@suse.com
- Disable building unit-tests, should fix undefined reference
  problem on ARM & PowerPC
* Tue Jul 16 2013 coolo@suse.com
- do not build on slow or low memory workers
* Thu Jul  4 2013 idonmez@suse.com
- Drop disable_neon_in_armv7.diff, neon seems to be working fine
- Add cmake-host-triple.patch to pass a host triple argument
* Wed Jul  3 2013 idonmez@suse.com
- Create libLLVM and libclang subpackages.
* Wed Jun 19 2013 llunak@suse.com
- Fix finding internal headers on x86_64
* Wed Jun 19 2013 idonmez@suse.com
- Fix ARM v5/v7 builds
* Tue Jun 18 2013 tobias.johannes.klausmann@mni.thm.de
- Create a baselibs.conf
  Provide *-32 Bit Packages for x86_64
* Thu Jun 13 2013 tobias.johannes.klausmann@mni.thm.de
- Initial version of a cmake based buildscript
  + Updated arm_suse_support.diff (patch6) to work with llvm 3.3
  + Set version in spec to 3.3
* Thu Jun 13 2013 idonmez@suse.com
- Update to final 3.3 release (r183898)
* Fri May 24 2013 idonmez@suse.com
- Disable debug symbols on PPC64
* Tue May 21 2013 idonmez@suse.com
- Update to version 3.3 RC2
  * Small bugfixes
* Tue May 14 2013 idonmez@suse.com
- Enable ARM64 support
* Thu May  9 2013 idonmez@suse.com
- Add unreachable-code.patch to fix unreachable code warnings on SLE
* Wed May  8 2013 idonmez@suse.com
- Update to version 3.3 RC1
  * Added support for AArch64, ARM’s 64-bit architecture.
  * LLVM now has a new SLP vectorizer.
  * LLVM and clang now support IBM’s z/Architecture.
  * The R600 backend was added in this release, it supports
    AMD GPUs (HD2XXX - HD7XXX).
  * See http://llvm.org/releases/3.3/docs/ReleaseNotes.html for
    complete changelog.
- Drop upstream patches:
  * pr13303.patch
  * pr14795.patch
  * pr14831.patch
  * python-ulimit.patch
* Wed Jan 16 2013 llunak@suse.com
- pr13303.patch: reapply, was temporarily reverted upstream
* Fri Jan 11 2013 idonmez@suse.com
- Add pre-generated doc files, remove sphinx dependency
* Tue Jan  8 2013 llunak@suse.com
- pr14795.patch: Fix incorrect line numbers after -frewrite-includes
  (PR#14795)
- pr14831.patch: Do not incorrectly warn about pragmas in -frewrite-includes
  (PR#14831)
* Mon Dec 31 2012 dmueller@suse.com
- disable cross-compile mode in stage2 for armv5/v7
* Thu Dec 20 2012 idonmez@suse.com
- Update to final 3.2 release
  * No code changes since rc3
* Sun Dec 16 2012 idonmez@suse.com
- Update to r170281 from release_32 branch
  * SROA fixes
* Fri Dec 14 2012 idonmez@suse.com
- Disable compilation on PPC, only PPC64 is supported.
* Fri Dec 14 2012 idonmez@suse.com
- Add python-ulimit.patch: Don't set a limit on address space.
  This enables us running tests on PowerPC.
* Wed Dec 12 2012 idonmez@suse.com
- Unbreak PowerPC support
* Sat Dec  8 2012 idonmez@suse.com
- Update to r169678 from release_32 branch
  * This is 3.2rc3
* Wed Dec  5 2012 idonmez@suse.com
- Update to r169391 from release_32 branch
  * SROA fixes
* Tue Dec  4 2012 guillaume@opensuse.org
- Fix ARM build
* Mon Dec  3 2012 schuetzm@gmx.net
- Fix llvm-config --libdir to return /usr/lib64 where appropriate.
  The old method of using sed on the executable does no longer
  work, because llvm-config is now a binary.
* Fri Nov 30 2012 idonmez@suse.com
- Update to r168987 from release_32 branch
  * Crash fixes
  * Miscompilation fixes
* Tue Nov 20 2012 idonmez@suse.com
- Stop excluding ppc64 architecture
* Tue Nov 20 2012 idonmez@suse.com
- Update to r168357 from release_32 branch
  * Fixes a miscompilation with gcc 4.7
* Sun Nov 18 2012 idonmez@suse.com
- Update to r168286 from release_32 branch
  * Fixes llvm PR14309
* Thu Nov 15 2012 idonmez@suse.com
- Update to r168031 from release_32 branch
  * This is 3.2rc1
* Mon Nov 12 2012 idonmez@suse.com
- Update to r167720 from release_32 branch
  * Thread local variables may have a specified TLS model.
  * LLVM now has a loop optimizer.
  * SROA has been rewritten to be more powerful.
  * A new optimization pass added to merge stack objects
    which are used in disjoint areas of the code.
  * LLVM now merge consecutive loads and stores.
  * New TableGen infrastructure to support bundling for
    Very Long Instruction Word (VLIW) architectures.
  * Added a new target independent VLIW packetizer.
  * A probability based block placement and code layout algorithm
    was added to LLVM's code generator.
  * The ARM target now includes a full featured macro assembler,
    including direct-to-object module support for clang.
  * A new IR-level pass, called "TargetTransformInfo" provides
    a number of low-level interfaces.
- Refresh default-to-i586.patch to apply again
- Drop following patches (fixed upstream)
  * arm-suse-support.patch
  * pr12463.patch
  * pr13141.patch
  * pr13303.patch
  * rewrite-includes.patch
  * clang-fix-mips-test.patch (fixed differently in spec file)
* Sat Oct 27 2012 coolo@suse.com
- add explicit buildrequire groff for man pages
* Mon Sep 10 2012 idonmez@suse.com
- Fix debuginfo generation
* Thu Jul 19 2012 llunak@suse.com
- make link time optimization plugin accessible to ar/nm/ranlib
- build the plugin properly
* Sat Jul 14 2012 adrian@suse.de
- fix arm build
* Fri Jul 13 2012 llunak@suse.com
- change rewrite-includes patch to use options to match upstream
  changed option names
* Fri Jul 13 2012 llunak@suse.com
- fix debuginfo generation (PR#13303)
* Mon Jun 18 2012 llunak@suse.com
- Do not reject PCH because of -DFOO duplication (PR#13141)
* Tue May 15 2012 idonmez@suse.com
- Update to final 3.1 release
* Thu May 10 2012 idonmez@suse.com
- Depend on python-base so we don't pull whole Mesa
* Tue May  8 2012 llunak@suse.com
- make -rewrite-includes support -C and -CC
* Thu May  3 2012 llunak@suse.com
- patch for -rewrite-includes feature
* Mon Apr 30 2012 idonmez@suse.com
- Update to svn revision 155819 from 3.1 branch
  * C++11 fixes
* Fri Apr 27 2012 idonmez@suse.com
- Update to svn revision 155700 from 3.1 branch
  * Crash fixes
  * C++11 fixes
* Thu Apr 26 2012 idonmez@suse.com
- Update to svn revision 155574 from 3.1 branch
  * Crash fixes
  * Correctly enable compiler-rt
  * Remove unneeded runtime python dependencies
* Thu Apr 26 2012 idonmez@suse.com
- Switch to 2-stage bootstrap because we don't do build-compare
  anyway.
* Wed Apr 25 2012 idonmez@suse.com
- More fixes to llvm-config
* Tue Apr 24 2012 idonmez@suse.com
- Fix llvm-config --libs output
* Sun Apr 22 2012 idonmez@suse.com
- Update to svn revision 155320 from 3.1 branch
  * AVX fixes
* Tue Apr 17 2012 idonmez@suse.com
- Update to svn revision 154914 from 3.1 branch
  Major new features:
  * AddressSanitizer, a fast memory error detector.
  * MachineInstr Bundles, Support to model instruction
    bundling / packing.
  * ARM Integrated Assembler, A full featured assembler
    and direct-to-object support for ARM.
  * Basic Block Placement Probability driven basic block placement.
  LLVM IR and Core Improvements
  * IR support for half float
  * IR support for vectors of pointers, including vector GEPs.
  * Module flags have been introduced.
  * Loads can now have range metadata attached to them to
    describe the possible values being loaded.
  * Inline cost heuristics have been completely overhauled
    and now closely model constant propagation through call sites,
    disregard trivially dead code costs, and
    can model C++ STL iterator patterns.
  Optimizer Improvements
  * The loop unroll pass now is able to unroll loops with
    run-time trip counts. This feature is turned off by default,
    and is enabled with the -unroll-runtime flag.
  * A new basic-block autovectorization pass is available.
    Pass -vectorize to run this pass along with some associated
    post-vectorization cleanup passes.
  X86-32 and X86-64 Target Improvements
  * Bug fixes and improved support for AVX1
  * Support for AVX2 (still incomplete at this point)
  ARM Target Improvements
  * The constant island pass now supports basic block and
    constant pool entry alignments greater than 4 bytes.
  Clang Changes
  * New: -Wdangling-else, -Wstrncat-size
  * Improved: -Wformat, -Wempty-body, -Wliteral-conversion
  * Clang 3.1 adds support for anonymous structs and anonymous unions,
    added in the latest ISO C standard. Use -std=c11 or -std=gnu11
    to enable support for the new language standard.
    The new C11 features are backwards-compatible and are available
    as an extension in all language modes.
  * All warning and language selection flags which previously accepted
    c1x have been updated to accept c11. The old c1x forms have been removed.
  * Generalized constant expressions
  * Lambda expressions
  * Generalized initializers
  * Unrestricted unions
  * User-defined literals
  * Forward-declared enumerations
  * Atomics (both libc++'s and libstdc++4.7's <atomic> are supported)
* Tue Mar 20 2012 idonmez@suse.com
- Target i586-linux for 32bit builds
* Tue Dec 27 2011 idonmez@suse.com
- Add upstream fix for llvm PR11642
* Sun Dec 25 2011 idonmez@suse.com
- Don't run gcc for ada files, just fail instead.
* Thu Dec 22 2011 idonmez@suse.com
- Add clang-glibc2.14.patch to support glibc 2.14 headers
- Install profiling support
* Mon Dec  5 2011 idoenmez@suse.de
- Switch to 3-stage bootstrap
* Fri Dec  2 2011 idoenmez@suse.de
- Build first stage compiler with -O0 to workaround gcc 4.5 bug
* Thu Dec  1 2011 idoenmez@suse.de
- Update to final 3.0 release
  * No real change since rc2
* Tue Nov 29 2011 idoenmez@suse.de
- Use %%{_lib} macro instead of checking for x86_64
* Wed Nov 16 2011 idonmez@suse.com
- Enable ARM support again
- Switch to optimized build
* Thu Nov 10 2011 idonmez@suse.com
- Disable ARM support, VM goes out of memory while compiling it
* Thu Nov 10 2011 idonmez@suse.com
- Really enable ARM support
- Remove forcing -frtti
* Mon Nov  7 2011 idonmez@suse.com
- Update to r143961 from llvm-3.0 branch
  * No longer hardcoding include paths
* Mon Nov  7 2011 idonmez@suse.com
- Fix LLVMgold.so path for x86-64
* Sun Nov  6 2011 idonmez@suse.com
- Enable ld gold support
* Tue Nov  1 2011 idonmez@suse.com
- Update r143456 from llvm-3.0 branch
  * llvm/clang 3.0rc2
* Fri Oct 28 2011 idonmez@suse.com
- Add llvm-pr9614-part{1,2}.patch to fix LLVM PR9614
* Fri Oct 28 2011 idonmez@suse.com
- Fixup dependencies so that llvm-clang doesn't depend
  on llvm-clang-devel
* Tue Oct 25 2011 idonmez@suse.com
- Update to r142912 llvm-3.0 branch
  * Fixes to python bindings
* Fri Oct 21 2011 idonmez@suse.com
- Update to r142641
  * llvm/clang 3.0 rc1
* Thu Oct 20 2011 idonmez@suse.com
- Enable ARM code generation
* Wed Oct 19 2011 idonmez@suse.com
- Fix libdir on x86_64
* Tue Oct 18 2011 idonmez@suse.com
- Update to r142341
  * First build from 3.0 branch
  * -Wc++98-compat warnings for the lexer
  * Add flags for the remaining shift related warnings
    (-Wshift-count-negative, -Wshift-count-overflow).
  * Only warn in -Wliteral-conversion if the conversion
    loses information
  * Added clang_getCompletionAnnotation and
    clang_getCompletionNumAnnotations to retrieve annotations
    from completion string.
  * Add support for -std=gnu90 and -std=c++03, for compatibility
    with modern gcc.
- Switch to tar.bz2 and remove xz dependency
* Thu Sep 29 2011 idonmez@suse.com
- Update to r140780
  * Code cleanup
  * Crash fixes
  * Add support for alignment-specifiers in C1X and C++11
  * Introduce a new compiler switch: -fms-compatility
  * Emit debug info for c++0x nullptr.
* Tue Sep 13 2011 idonmez@suse.com
- Update to r139589
  * C++0x fixes
  * PCH fixes
* Thu Sep  1 2011 idonmez@suse.com
- Update to r138939
  * Many crash fixes.
  * Performance optimizations.
  * Allow C99 hexfloats in C++0x mode.
  * Add missing function _mm_ucomige_sd to emmintrin.h.
* Fri Aug 12 2011 idonmez@novell.com
- Update to r137452
  * Fix problems found by PVS-Studio
  * More AVX fixes
  * Many C++ fixes
- Add assume-opensuse.patch to remove dependency on openSUSE-release
* Wed Aug  3 2011 idonmez@novell.com
- Update to r136773
  * Many AVX fixes
  * Support for C++0x unicode string and character literals
* Tue Jul 19 2011 vljn@ovi.com
- Update to r135431
  * API changes to match Mesa requirements
* Mon Jul 11 2011 idonmez@novell.com
- Update to r134888
  * Type system rewrite
* Sat Jul  9 2011 idonmez@novell.com
- Update to r134813
  * Mainly gcc compatibility fixes
* Fri Jul  8 2011 idonmez@novell.com
- Update to r134698
  * Up to 80x speed improvements with -Wuninitialized
* Thu Jul  7 2011 idonmez@novell.com
- Enable RTTI support
- Disable assertions because they are not thread safe
- Update to r134611
  * Many C++ fixes and speedups
  * Updates for AVX instruction support
  * gcc 4.6.1 support
* Sat Jul  2 2011 idonmez@novell.com
-  Fix manpage generation (bnc #703591)
* Sun Jun  5 2011 idonmez@novell.com
- Update to r132667
* Sun May 29 2011 idonmez@novell.com
- Update to use cmake buildsystem
- Remove unmaintained ocaml support
* Thu May 26 2011 idonmez@novell.com
- Drop ocaml support because its unmaintained
- Update to latest svn revision 132050
  + Start of the upcoming 3.0 version
  + Support for gcc 4.6 c++ headers
  + Better support for C++0x
* Fri Apr 29 2011 idoenmez@novell.com
- Fix ocaml dependency
* Thu Apr  7 2011 idoenmez@novell.com
- Update to 2.9
  + Type Based Alias Analysis (TBAA) is now implemented in clang
  + LLVM now generates better debug information
  + Inline assembly now supports multiple alternative constraints
* Wed Apr  6 2011 stepan@coresystems.de
- drop revision from Requires: fields
- update to 2.8.99 revision 129008.
* Mon Mar  7 2011 jslaby@suse.de
- spec file cleanup
* Wed Dec 22 2010 dmacvicar@suse.de
- Do not require specific ffi version but gather the
  appropiate one from the distro
* Fri Dec 10 2010 reddwarf@opensuse.org
- Fix compatibility with C++0x compilers (g++ 4.5)
* Mon Nov 29 2010 ismail@namtrac.org
- Fix C include paths
* Fri Nov 26 2010 ismail@namtrac.org
- Fix header path for openSUSE 11.4
- Enabled PIC for x86 for loadable module support
- Enable package tests for llvm and clang
- Disable package timestamps to silence an rpmlint warning
* Wed Jun  2 2010 anschneider@exsuse.de
- Fixed the build on x86 plattforms.
- Package the clang c++-analyzer.
* Sat May  1 2010 jslaby@suse.de
- update to llvm 2.7
* Mon Mar 15 2010 jslaby@suse.de
- added vim plugins
* Sun Mar 14 2010 jslaby@suse.de
- added libffi-devel to llvm-devel requires so that build does not fail
- fixed build of explicit constructors with gcc45
* Mon Nov  2 2009 jslaby@suse.de
- Initial 2.6 release