Skip to content
This repository has been archived by the owner on Sep 10, 2022. It is now read-only.

Commit

Permalink
llvm things
Browse files Browse the repository at this point in the history
  • Loading branch information
Phantom X committed Nov 15, 2016
1 parent bba5af8 commit 5c3c237
Show file tree
Hide file tree
Showing 43 changed files with 3,423 additions and 431 deletions.
209 changes: 209 additions & 0 deletions clang/clang-compat32.SlackBuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,209 @@
#!/bin/bash
#-- clang-compat32 for Slackware --
# Build script by Phantom X <megaphantomx at bol.com.br>
# Suggested usage: $ clang-compat32.SlackBuild 2>&1 | tee build.log
#--
# Copyright 2008-2016 Phantom X, Goiania, Brazil.
# Copyright 2006 Martijn Dekker, Groningen, Netherlands.
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# http://llvm.org

PACKAGER_ID=${PACKAGER_ID:-$USER}
PACKAGER=${PACKAGER:-$USER@$HOSTNAME}

# Set YES for native build with gcc >= 4.2
SB_NATIVE=${SB_NATIVE:-NO}

# Set to YES to replicate slackbuild and patches
SB_REP=${SB_REP:-YES}

CWD=$(pwd)
TMP=${TMP:-/tmp}

PNAME=clang
NAME=clang-compat32
PKG=${PKG:-${TMP}/package-${NAME}}

VERSION=${VERSION:-3.9.0}
if [ "${SB_NATIVE}" = "YES" ] ;then
ARCH32=${ARCH32:-$(linux32 uname -m)}
else
ARCH32=${ARCH32:-i686}
fi
SLKTARGET32=${SLKTARGET32:-i586}
SLKDTARGET=${SLKDTARGET:-slackware}
BUILD=${BUILD:-1}
NJOBS=${NJOBS:-$(( $(getconf _NPROCESSORS_ONLN) + 1 ))}
DOCDIR=${PKG}/usr/doc/${NAME}-${VERSION}
SBDIR=${PKG}/usr/src/slackbuilds/${PNAME}
PKGDEST=${PKGDEST:-${CWD}}
PKGFORMAT=${PKGFORMAT:-txz}
PKGNAME=${NAME}-${VERSION//-/.}-${ARCH32}-${BUILD}${PACKAGER_ID}

DATE=$(LC_ALL=C date +%d-%b-%Y)

SRCDIR=${PNAME}-${VERSION}.src
SRCARCHIVE=${SRCDIR}.tar.xz

DL_PROG=${DL_PROG:-wget}
DL_TO=${DL_TO:-5}
DL_OPTS=${DL_OPTS:-"--timeout=${DL_TO}"}
DL_URL="http://llvm.org/releases/${VERSION}"
DL_URLB="http://llvm.org/prereleases/${VERSION}"

# if source is not present, download in source rootdir if possible
test -r ${CWD}/${SRCARCHIVE} || ${DL_PROG} ${DL_OPTS} ${DL_URL}/${SRCARCHIVE} || ${DL_PROG} ${DL_OPTS} ${DL_URLB}/${SRCARCHIVE} || exit 1

[ "$1" = "--dlsrc" ] && exit 0

if [ "${SB_NATIVE}" = "YES" ] ;then
SLKCFLAGS="-O2 -march=native -mtune=native -pipe"
[ "${SB_ECFLAGS}" ] && SLKCFLAGS+=" ${SB_ECFLAGS}"
else
case "${ARCH32}" in
i[3-6]86) SLKCFLAGS="-O2 -march=${ARCH32} -mtune=i686"
;;
esac
fi
LIBDIRSUFFIX=""
export CC="gcc -m32"
export CXX="g++ -m32"
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"

if [ ! -d ${TMP} ]; then
mkdir -p ${TMP}
fi
if [ -d ${PKG} ]; then
# Clean up a previous build
rm -rf ${PKG}
fi
mkdir -p ${PKG}

cd ${TMP}
rm -rf ${SRCDIR}
tar -xvf ${CWD}/${SRCARCHIVE} || exit 1
cd ${SRCDIR} || exit 1

chmod -R u+w,go+r-w,a-s .

if [ -r ${CWD}/apply-patches.sh ]; then
. ${CWD}/apply-patches.sh
fi

export CFLAGS="${SLKCFLAGS}"
export CXXFLAGS="${SLKCFLAGS}"
export FFLAGS="${SLKCFLAGS}"

mkdir -p _build
( cd _build || exit $?
unset ARCH

cmake .. \
-DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" \
-DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \
-DCMAKE_Fortran_FLAGS_RELEASE:STRING="-DNDEBUG" \
-DCMAKE_INSTALL_PREFIX:PATH=/usr \
-DSYSCONF_INSTALL_DIR:PATH=/etc \
-DINCLUDE_INSTALL_DIR:PATH=/usr/include \
-DLIB_INSTALL_DIR:PATH=/usr/lib${LIBDIRSUFFIX} \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
-DSHARE_INSTALL_PREFIX:PATH=/usr/share \
-DMAN_INSTALL_DIR:PATH=/usr/man \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DBUILD_SHARED_LIBS:BOOL=ON \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
-DLLVM_CONFIG:FILEPATH=/usr/bin/llvm-config-32 \
-DCLANG_ENABLE_ARCMT:BOOL=ON \
-DCLANG_ENABLE_STATIC_ANALYZER:BOOL=OFF \
-DCLANG_INCLUDE_DOCS:BOOL=OFF \
-DCLANG_INCLUDE_TESTS:BOOL=OFF \
-DCLANG_PLUGIN_SUPPORT:BOOL=ON \
-DCLANG_BUILD_EXAMPLES:BOOL=OFF \
-DLLVM_LIBDIR_SUFFIX=${LIBDIRSUFFIX} \
-DLIB_SUFFIX= \
|| exit $?

make -j${NJOBS} || make || exit $?
make install/fast DESTDIR=${PKG} || exit $?

) || exit $?

rm -rf ${PKG}/usr/{bin,sbin,doc,libexec,man,info,share} ${PKG}/{etc,var}

find ${PKG} | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null

mv ${PKG}/usr/include/clang/Config/config.h config-32.h || exit 1

rm -rf ${PKG}/usr/include/*
mkdir -p ${PKG}/usr/include/clang/Config/

mv config-32.h ${PKG}/usr/include/clang/Config/config-32.h || exit 1

mkdir -p ${PKG}/install
cat ${CWD}/slack-desc-compat32 > ${PKG}/install/slack-desc
cat ${CWD}/slack-required > ${PKG}/install/slack-required

sed -i "s|_PACKAGER|${PACKAGER}|g; s|_BUILD_DATE|${DATE}|g" \
${PKG}/install/slack-desc

if [ "${SB_REP}" = "YES" ] ;then
# Replicate slackbuild and patches
mkdir -p ${SBDIR}
install -pm0644 ${CWD}/slack-desc-compat32 ${SBDIR}/
install -pm0755 ${CWD}/${NAME}.SlackBuild \
${SBDIR}/${NAME}.SlackBuild
fi

# Build package:
set +o xtrace # no longer print commands upon execution
set -e

ROOTCOMMANDS="set -o errexit -o xtrace ; cd ${PKG} ;
/bin/chown --recursive root:root . ;"

ROOTCOMMANDS="${ROOTCOMMANDS}
/sbin/makepkg --linkadd y --chown n ${PKGDEST}/${PKGNAME}.${PKGFORMAT} "

if test ${UID} = 0; then
eval ${ROOTCOMMANDS}
set +o xtrace
elif test "$(type -t fakeroot)" = 'file'; then
echo -e "\e[1mEntering fakeroot environment.\e[0m"
echo ${ROOTCOMMANDS} | fakeroot
else
echo -e "\e[1mPlease preferably install fakeroot or run as root.\e[0m"
exit 5
fi

# Clean up the extra stuff:
if [ "$1" = "--cleanup" ]; then
echo "Cleaning..."
if [ -d ${TMP}/${SRCDIR} ]; then
rm -rf ${TMP}/${SRCDIR} && echo "${TMP}/${SRCDIR} cleanup completed"
fi
if [ -d ${PKG} ]; then
rm -rf ${PKG} && echo "${PKG} cleanup completed"
fi
rmdir ${TMP} && echo "${TMP} cleanup completed"
fi
exit 0
Loading

0 comments on commit 5c3c237

Please sign in to comment.