#!/usr/bin/sh
#----------------------------------------------------------------------------
# /tmp/install.sh - llvm21 installation
#
# Creation   :  2025-12-03 holbru
# Last update:  $Id$
#
# Copyright (c) 2025-@@YEAR@@ Holger Bruenjes, holgerbruenjes(at)gmx(dot)net
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#----------------------------------------------------------------------------

# set package name
package_name=llvm21

# ---------------------------------------------------------------------------
# activate
# ---------------------------------------------------------------------------
ver=21
veri=2118

/usr/sbin/update-alternatives \
   --install /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-${ver} ${veri} \
   --slave /usr/bin/bugpoint bugpoint /usr/bin/bugpoint-${ver} \
   --slave /usr/bin/dsymutil dsymutil /usr/bin/dsymutil-${ver} \
   --slave /usr/bin/llc llc /usr/bin/llc-${ver} \
   --slave /usr/bin/lli lli /usr/bin/lli-${ver} \
   --slave /usr/bin/llvm-addr2line llvm-addr2line /usr/bin/llvm-addr2line-${ver} \
   --slave /usr/bin/llvm-as llvm-as /usr/bin/llvm-as-${ver} \
   --slave /usr/bin/llvm-bcanalyzer llvm-bcanalyzer /usr/bin/llvm-bcanalyzer-${ver} \
   --slave /usr/bin/llvm-bitcode-strip llvm-bitcode-strip /usr/bin/llvm-bitcode-strip-${ver} \
   --slave /usr/bin/llvm-c-test llvm-c-test /usr/bin/llvm-c-test-${ver} \
   --slave /usr/bin/llvm-cat llvm-cat /usr/bin/llvm-cat-${ver} \
   --slave /usr/bin/llvm-cfi-verify llvm-cfi-verify /usr/bin/llvm-cfi-verify-${ver} \
   --slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${ver} \
   --slave /usr/bin/llvm-cvtres llvm-cvtres /usr/bin/llvm-cvtres-${ver} \
   --slave /usr/bin/llvm-cxxdump llvm-cxxdump /usr/bin/llvm-cxxdump-${ver} \
   --slave /usr/bin/llvm-cxxfilt llvm-cxxfilt /usr/bin/llvm-cxxfilt-${ver} \
   --slave /usr/bin/llvm-cxxmap llvm-cxxmap /usr/bin/llvm-cxxmap-${ver} \
   --slave /usr/bin/llvm-debuginfo-analyzer llvm-debuginfo-analyzer /usr/bin/llvm-debuginfo-analyzer-${ver} \
   --slave /usr/bin/llvm-debuginfod llvm-debuginfod /usr/bin/llvm-debuginfod-${ver} \
   --slave /usr/bin/llvm-debuginfod-find llvm-debuginfod-find /usr/bin/llvm-debuginfod-find-${ver} \
   --slave /usr/bin/llvm-diff llvm-diff /usr/bin/llvm-diff-${ver} \
   --slave /usr/bin/llvm-dis llvm-dis /usr/bin/llvm-dis-${ver} \
   --slave /usr/bin/llvm-dlltool llvm-dlltool /usr/bin/llvm-dlltool-${ver} \
   --slave /usr/bin/llvm-dwarfdump llvm-dwarfdump /usr/bin/llvm-dwarfdump-${ver} \
   --slave /usr/bin/llvm-dwarfutil llvm-dwarfutil /usr/bin/llvm-dwarfutil-${ver} \
   --slave /usr/bin/llvm-dwp llvm-dwp /usr/bin/llvm-dwp-${ver} \
   --slave /usr/bin/llvm-extract llvm-extract /usr/bin/llvm-extract-${ver} \
   --slave /usr/bin/llvm-gsymutil llvm-gsymutil /usr/bin/llvm-gsymutil-${ver} \
   --slave /usr/bin/llvm-ifs llvm-ifs /usr/bin/llvm-ifs-${ver} \
   --slave /usr/bin/llvm-install-name-tool llvm-install-name-tool /usr/bin/llvm-install-name-tool-${ver} \
   --slave /usr/bin/llvm-jitlink llvm-jitlink /usr/bin/llvm-jitlink-${ver} \
   --slave /usr/bin/llvm-lib llvm-lib /usr/bin/llvm-lib-${ver} \
   --slave /usr/bin/llvm-libtool-darwin llvm-libtool-darwin /usr/bin/llvm-libtool-darwin-${ver} \
   --slave /usr/bin/llvm-link llvm-link /usr/bin/llvm-link-${ver} \
   --slave /usr/bin/llvm-lipo llvm-lipo /usr/bin/llvm-lipo-${ver} \
   --slave /usr/bin/llvm-lto llvm-lto /usr/bin/llvm-lto-${ver} \
   --slave /usr/bin/llvm-lto2 llvm-lto2 /usr/bin/llvm-lto2-${ver} \
   --slave /usr/bin/llvm-mc llvm-mc /usr/bin/llvm-mc-${ver} \
   --slave /usr/bin/llvm-mca llvm-mca /usr/bin/llvm-mca-${ver} \
   --slave /usr/bin/llvm-ml llvm-ml /usr/bin/llvm-ml-${ver} \
   --slave /usr/bin/llvm-mt llvm-mt /usr/bin/llvm-mt-${ver} \
   --slave /usr/bin/llvm-modextract llvm-modextract /usr/bin/llvm-modextract-${ver} \
   --slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-${ver} \
   --slave /usr/bin/llvm-objcopy llvm-objcopy /usr/bin/llvm-objcopy-${ver} \
   --slave /usr/bin/llvm-objdump llvm-objdump /usr/bin/llvm-objdump-${ver} \
   --slave /usr/bin/llvm-opt-report llvm-opt-report /usr/bin/llvm-opt-report-${ver} \
   --slave /usr/bin/llvm-otool llvm-otool /usr/bin/llvm-otool-${ver} \
   --slave /usr/bin/llvm-pdbutil llvm-pdbutil /usr/bin/llvm-pdbutil-${ver} \
   --slave /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-${ver} \
   --slave /usr/bin/llvm-profgen llvm-profgen /usr/bin/llvm-profgen-${ver} \
   --slave /usr/bin/llvm-ranlib llvm-ranlib /usr/bin/llvm-ranlib-${ver} \
   --slave /usr/bin/llvm-rc llvm-rc /usr/bin/llvm-rc-${ver} \
   --slave /usr/bin/llvm-readelf llvm-readelf /usr/bin/llvm-readelf-${ver} \
   --slave /usr/bin/llvm-readobj llvm-readobj /usr/bin/llvm-readobj-${ver} \
   --slave /usr/bin/llvm-readtapi llvm-readtapi /usr/bin/llvm-readtapi-${ver} \
   --slave /usr/bin/llvm-reduce llvm-reduce /usr/bin/llvm-reduce-${ver} \
   --slave /usr/bin/llvm-remarkutil llvm-remarkutil /usr/bin/llvm-remarkutil-${ver} \
   --slave /usr/bin/llvm-rtdyld llvm-rtdyld /usr/bin/llvm-rtdyld-${ver} \
   --slave /usr/bin/llvm-sim llvm-sim /usr/bin/llvm-sim-${ver} \
   --slave /usr/bin/llvm-size llvm-size /usr/bin/llvm-size-${ver} \
   --slave /usr/bin/llvm-split llvm-split /usr/bin/llvm-split-${ver} \
   --slave /usr/bin/llvm-stress llvm-stress /usr/bin/llvm-stress-${ver} \
   --slave /usr/bin/llvm-strings llvm-strings /usr/bin/llvm-strings-${ver} \
   --slave /usr/bin/llvm-strip llvm-strip /usr/bin/llvm-strip-${ver} \
   --slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-${ver} \
   --slave /usr/bin/llvm-tblgen llvm-tblgen /usr/bin/llvm-tblgen-${ver} \
   --slave /usr/bin/llvm-tli-checker llvm-tli-checker /usr/bin/llvm-tli-checker-${ver} \
   --slave /usr/bin/llvm-undname llvm-undname /usr/bin/llvm-undname-${ver} \
   --slave /usr/bin/llvm-windres llvm-windres /usr/bin/llvm-windres-${ver} \
   --slave /usr/bin/llvm-xray llvm-xray /usr/bin/llvm-xray-${ver} \
   --slave /usr/bin/opt opt /usr/bin/opt-${ver} \
   --slave /usr/bin/sancov sancov /usr/bin/sancov-${ver} \
   --slave /usr/bin/sanstats sanstats /usr/bin/sanstats-${ver} \
   --slave /usr/bin/verify-uselistorder verify-uselistorder /usr/bin/verify-uselistorder-${ver}

# activate the best version
/usr/sbin/update-alternatives --auto llvm-ar

# check what is the best version
best=$(/usr/sbin/update-alternatives --query llvm-ar | /usr/bin/gawk '/Best/ {print $2}')

# if the best version not this version, use this version manual
if ! echo "${best}" | /usr/bin/grep -q "${ver}"
then
    echo "llvm-ar manual /usr/bin/llvm-ar-${ver}" | /usr/sbin/update-alternatives --set-selections  >/dev/null 2>&1
fi


inst_clang=$(eisman check clang${ver})
if [ "${inst_clang}" = "installed" ]
then
    # activate the best version
    /usr/sbin/update-alternatives --auto clang

    # check what is the best version
    best=$(/usr/sbin/update-alternatives --query clang | /usr/bin/gawk '/Best/ {print $2}')

    # if the best version not this version, use this version manual
    if ! echo "${best}" | /usr/bin/grep -q "${ver}"
    then
        echo "clang manual /usr/bin/clang-${ver}" | /usr/sbin/update-alternatives --set-selections  >/dev/null 2>&1
    fi
fi

inst_lldb=$(eisman check lldb${ver})
if [ "${inst_lldb}" = "installed" ]
then
    # activate the best version
    /usr/sbin/update-alternatives --auto lldb

    # check what is the best version
    best=$(/usr/sbin/update-alternatives --query lldb | /usr/bin/gawk '/Best/ {print $2}')

    # if the best version not this version, use this version manual
    if ! echo "${best}" | /usr/bin/grep -q "${ver}"
    then
        echo "lldb manual /usr/bin/lldb-${ver}" | /usr/sbin/update-alternatives --set-selections  >/dev/null 2>&1
    fi
fi

inst_lld=$(eisman check lld${ver})
if [ "${inst_lld}" = "installed" ]
then
    # activate the best version
    /usr/sbin/update-alternatives --auto lld

    # check what is the best version
    best=$(/usr/sbin/update-alternatives --query lld | /usr/bin/gawk '/Best/ {print $2}')

    # if the best version not this version, use this version manual
    if ! echo "${best}" | /usr/bin/grep -q "${ver}"
    then
        echo "lld manual /usr/bin/lld-${ver}" | /usr/sbin/update-alternatives --set-selections  >/dev/null 2>&1
    fi

    # activate the best version
    /usr/sbin/update-alternatives --auto ld

    # check what is the best version
    best=$(/usr/sbin/update-alternatives --query ld | /usr/bin/gawk '/Best/ {print $2}')

    # if the best version not this version, use this version manual
    if ! echo "${best}" | /usr/bin/grep -q "${ver}"
    then
        echo "ld manual /usr/bin/ld-${ver}" | /usr/sbin/update-alternatives --set-selections  >/dev/null 2>&1
    fi
fi

exit 0
# ---------------------------------------------------------------------------
# end
# ---------------------------------------------------------------------------
