I should not have been born.

This patch is a ugly, but a this moment I have no better alternatives to
offer.

 - Add a script to compile the llvm sources through the standard
   makefiles instead of the bsd build system. The produced gold plugin
   is then copied into the source tree and used from there by the BSD
   Makefiles.

Change-Id: I7fd7ad80be8efcedf27a047b872930ed602d7874
This commit is contained in:
Lionel Sambuc 2014-02-25 13:43:18 +01:00
parent c03229e600
commit fe5a129a88

View file

@ -0,0 +1,66 @@
#!/bin/sh
cd $(dirname $0)
: ${NETBSDSRCDIR=${PWD}/..}
: ${LLVMSRCDIR=${NETBSDSRCDIR}/external/bsd/llvm/dist}
: ${ARCH=i386}
: ${JOBS=1}
: ${OBJ_LLVM=${NETBSDSRCDIR}/../obj_llvm.${ARCH}}
: ${OBJ=${NETBSDSRCDIR}/../obj.${ARCH}}
: ${CROSS_TOOLS=${OBJ}/"tooldir.`uname -s`-`uname -r`-`uname -m`"/bin}
echo ${NETBSDSRCDIR}
echo ${LLVMSRCDIR}
echo ${OBJ_LLVM}
echo ${OBJ}
echo ${CROSS_TOOLS}
# Retrieve all the GPL sources
cd ${NETBSDSRCDIR}
find . -name fetch.sh -exec '{}' \;
# Build LLVM manually
mkdir -p ${OBJ_LLVM}
cd ${OBJ_LLVM}
${LLVMSRCDIR}/llvm/configure \
--enable-targets=x86 \
--with-c-include-dirs=/usr/include/clang-3.4:/usr/include \
--disable-timestamps \
--prefix=/usr \
--sysconfdir=/etc/llvm \
--with-clang-srcdir=${LLVMSRCDIR}/clang \
--host=i586-elf32-minix \
--with-binutils-include=${NETBSDSRCDIR}/external/gpl3/binutils/dist/include \
--disable-debug-symbols \
--enable-assertions \
--enable-bindings=none \
llvm_cv_gnu_make_command=make \
ac_cv_path_CIRCO="echo circo" \
ac_cv_path_DOT="echo dot" \
ac_cv_path_DOTTY="echo dotty" \
ac_cv_path_FDP="echo fdp" \
ac_cv_path_NEATO="echo neato" \
ac_cv_path_TWOPI="echo twopi" \
ac_cv_path_XDOT="echo xdot" \
--enable-optimized \
CC=cc
make -j ${JOBS}
# Copy the gold plugin where the NetBSD build system expects it.
mkdir -p ${NETBSDSRCDIR}/external/bsd/llvm/passes/lib/
cp ${OBJ_LLVM}/./Release+Asserts/lib/libLTO.so ${NETBSDSRCDIR}/external/bsd/llvm/passes/lib/
cp ${OBJ_LLVM}/./Release+Asserts/lib/LLVMgold.so ${NETBSDSRCDIR}/external/bsd/llvm/passes/lib/
# Copy useful LLVM tools
mkdir -p ${CROSS_TOOLS}
cp ${OBJ_LLVM}/./Release+Asserts/bin/llc ${CROSS_TOOLS}
cp ${OBJ_LLVM}/./Release+Asserts/bin/opt ${CROSS_TOOLS}
cp ${OBJ_LLVM}/./Release+Asserts/bin/llvm-* ${CROSS_TOOLS}
# Generate and Install default MINIX passes
cd ${NETBSDSRCDIR}/external/bsd/llvm/passes/WeakAliasModuleOverride
make LLVMPREFIX=${OBJ_LLVM}/./Release+Asserts/ install