diff options
Diffstat (limited to 'cil32-crosstool.sh')
-rwxr-xr-x | cil32-crosstool.sh | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/cil32-crosstool.sh b/cil32-crosstool.sh new file mode 100755 index 00000000000..53cf09e75e2 --- /dev/null +++ b/cil32-crosstool.sh @@ -0,0 +1,187 @@ +#!/bin/sh + + +INSTALL_GCC=yes + +TARGET=cil32 + +BUILD_DIR=${BUILD_DIR-`pwd`} +SOURCE_DIR=${SOURCE_DIR-`dirname $0`} +SOURCE_DIR=`cd $SOURCE_DIR; pwd` +PREFIX=${PREFIX-`pwd`/newbuild} +SYSROOT=${PREFIX}/${TARGET} +LANGUAGES=c + +_help() +{ + echo "Options:" + echo " -nogcc : build only binutils (no compiler)" + echo " -cpp : build also C++ compiler" + echo " -help : this message" +} + +while [ $# -gt 0 ] ; do + +if [ "x$1" == x-help ] ; then + _help ; + exit 0 +elif [ "x$1" == x-cpp ] ; then + LANGUAGES=c,c++ +elif [ "x$1" == x-nogcc ] ; then + INSTALL_GCC=no +else + echo "Unrecognized option: " $1 + _help ; + exit 1 +fi + +shift 1 +done + +echo "DIRECTORIES:" +echo " BUILD_DIR: " ${BUILD_DIR} +echo " SOURCE_DIR: " ${SOURCE_DIR} +echo " SYSROOT: " ${SYSROOT} +echo " PREFIX: " ${PREFIX} + + +PATH="${PREFIX}/bin:${PATH}" +export PATH + +# Create directories + +mkdir -p ${PREFIX} +mkdir -p ${PREFIX}/bin +mkdir -p ${PREFIX}/include +mkdir -p ${PREFIX}/lib +# SYSROOT must be = ${PREFIX}/${TARGET} +mkdir -p ${SYSROOT} +mkdir -p ${SYSROOT}/bin +( cd ${SYSROOT} ; ln -fs ../include . ) +( cd ${SYSROOT} ; ln -fs ../lib . ) + +# Install Binutils + +CIL_AS=${CIL_AS-`which ilasm`} +CIL_LD=${CIL_LD-`which ilalink`} + +echo "Tools:" +echo " CIL ASSEMBLER: " ${CIL_AS} +echo " CIL LINKER: " ${CIL_LD} + +echo +echo "Installing Bin Utils" + +cat > ${SYSROOT}/bin/tool_not_exist <<_EOF_ +#!/bin/sh +echo "Tool " \`basename \$0\` " not provided" +exit 1 +_EOF_ +chmod 755 ${SYSROOT}/bin/tool_not_exist + +cat > ${SYSROOT}/bin/as <<_EOF_ +#!/bin/sh + +${CIL_AS} "\$@" +_EOF_ +chmod 755 ${SYSROOT}/bin/as + +cat > ${SYSROOT}/bin/ld <<_EOF_ +#!/bin/sh + +PARAM= + +for i in "\$@" ; do + case "\$i" in + -lm) + ;; + /tmp*) + PARAM="\${PARAM} /\${i}"; + ;; + *) + PARAM="\${PARAM} \${i}"; + ;; + esac +done + +${CIL_LD} \$PARAM + +_EOF_ +chmod 755 ${SYSROOT}/bin/ld + +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/addr2line +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/ar +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/nm +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/objcopy +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/objdump +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/ranlib +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/readelf +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/size +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/strings +cp ${SYSROOT}/bin/tool_not_exist ${SYSROOT}/bin/strip + + +cp ${SYSROOT}/bin/addr2line ${PREFIX}/bin/${TARGET}-addr2line +cp ${SYSROOT}/bin/ar ${PREFIX}/bin/${TARGET}-ar +cp ${SYSROOT}/bin/as ${PREFIX}/bin/${TARGET}-as +cp ${SYSROOT}/bin/ld ${PREFIX}/bin/${TARGET}-ld +cp ${SYSROOT}/bin/nm ${PREFIX}/bin/${TARGET}-nm +cp ${SYSROOT}/bin/objcopy ${PREFIX}/bin/${TARGET}-objcopy +cp ${SYSROOT}/bin/objdump ${PREFIX}/bin/${TARGET}-objdump +cp ${SYSROOT}/bin/ranlib ${PREFIX}/bin/${TARGET}-ranlib +cp ${SYSROOT}/bin/readelf ${PREFIX}/bin/${TARGET}-readelf +cp ${SYSROOT}/bin/size ${PREFIX}/bin/${TARGET}-size +cp ${SYSROOT}/bin/strings ${PREFIX}/bin/${TARGET}-strings +cp ${SYSROOT}/bin/strip ${PREFIX}/bin/${TARGET}-strip + +echo +echo "Installing vm wrappers" + +cat > ${PREFIX}/bin/${TARGET}-ilrun <<_EOF_ +#!/bin/sh + +ilrun -L ${PREFIX}/lib "\$@" +_EOF_ +chmod 755 ${PREFIX}/bin/${TARGET}-ilrun + +cat > ${PREFIX}/bin/${TARGET}-mono <<_EOF_ +#!/bin/sh + +export MONO_PATH=${PREFIX}/lib + +mono "\$@" +_EOF_ +chmod 755 ${PREFIX}/bin/${TARGET}-mono + +# ... To Be Completed with needed binutil tools + +# ... To Be Completed with libraries + +if test "x${INSTALL_GCC}" == "xno" +then + exit 0 +fi + +# Configure gcc + +echo +echo "Configuring GCC" + +mkdir -p ${BUILD_DIR}/build-gcc +cd ${BUILD_DIR}/build-gcc + +${SOURCE_DIR}/configure --target=${TARGET} \ + --enable-languages=${LANGUAGES} \ + --disable-bootstrap \ + --prefix=${PREFIX} \ + --with-local-prefix=${SYSROOT} + +# Build and install gcc + +echo +echo "Building GCC" +make all + +echo +echo "Installing GCC" +make install |