aboutsummaryrefslogtreecommitdiff
path: root/cil32-crosstool.sh
diff options
context:
space:
mode:
Diffstat (limited to 'cil32-crosstool.sh')
-rwxr-xr-xcil32-crosstool.sh245
1 files changed, 134 insertions, 111 deletions
diff --git a/cil32-crosstool.sh b/cil32-crosstool.sh
index 53cf09e75e2..40f587e062c 100755
--- a/cil32-crosstool.sh
+++ b/cil32-crosstool.sh
@@ -1,6 +1,7 @@
#!/bin/sh
+INSTALL_BINUTILS=yes
INSTALL_GCC=yes
TARGET=cil32
@@ -12,81 +13,65 @@ 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
+_help()
+{
+ echo "Options:"
+ echo " -binutils : install of binutils (default)"
+ echo " -nobinutils : skip install of binutils"
+ echo " -gcc : gcc build and installation (default)"
+ echo " -nogcc : skip gcc build and installation"
+ echo " -cpp : build also C++ compiler"
+ echo " -help : this message"
+}
# 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 . )
+_prepare_dirs()
+{
+ 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
+_binutils()
+{
+ CIL_AS=${CIL_AS-`which ilasm`}
+ CIL_LD=${CIL_LD-`which ilalink`}
-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 "Tools:"
+ echo " CIL ASSEMBLER: " ${CIL_AS}
+ echo " CIL LINKER: " ${CIL_LD}
-echo
-echo "Installing Bin Utils"
+ echo
+ echo "Installing Bin Utils"
-cat > ${SYSROOT}/bin/tool_not_exist <<_EOF_
+ 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
+ chmod 755 ${SYSROOT}/bin/tool_not_exist
-cat > ${SYSROOT}/bin/as <<_EOF_
+ cat > ${SYSROOT}/bin/as <<_EOF_
#!/bin/sh
${CIL_AS} "\$@"
_EOF_
-chmod 755 ${SYSROOT}/bin/as
+ chmod 755 ${SYSROOT}/bin/as
-cat > ${SYSROOT}/bin/ld <<_EOF_
+ cat > ${SYSROOT}/bin/ld <<_EOF_
#!/bin/sh
PARAM=
@@ -107,81 +92,119 @@ 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_
+ 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 "\$@"
+basedir=\`dirname \$0\`
+basedir=\`cd \$basedir/.. ; pwd\`
+
+ilrun -L \$basedir/lib "\$@"
_EOF_
-chmod 755 ${PREFIX}/bin/${TARGET}-ilrun
+ chmod 755 ${PREFIX}/bin/${TARGET}-ilrun
-cat > ${PREFIX}/bin/${TARGET}-mono <<_EOF_
+ cat > ${PREFIX}/bin/${TARGET}-mono <<_EOF_
#!/bin/sh
-export MONO_PATH=${PREFIX}/lib
+basedir=\`dirname \$0\`
+basedir=\`cd \$basedir/.. ; pwd\`
-mono "\$@"
+MONO_PATH=\$basedir/lib mono "\$@"
_EOF_
-chmod 755 ${PREFIX}/bin/${TARGET}-mono
+ chmod 755 ${PREFIX}/bin/${TARGET}-mono
+}
-# ... To Be Completed with needed binutil tools
-
-# ... To Be Completed with libraries
+# Configure, build and install gcc
-if test "x${INSTALL_GCC}" == "xno"
-then
+_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}
+
+ echo
+ echo "Building GCC"
+ make all
+
+ echo
+ echo "Installing GCC"
+ make install
+}
+
+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-nobinutils ] ; then
+ INSTALL_BINUTILS=no
+elif [ "x$1" == x-nogcc ] ; then
+ INSTALL_GCC=no
+elif [ "x$1" == x-binutils ] ; then
+ INSTALL_BINUTILS=yes
+elif [ "x$1" == x-gcc ] ; then
+ INSTALL_GCC=yes
+else
+ echo "Unrecognized option: " $1
+ _help ;
+ exit 1
fi
-# Configure gcc
+shift 1
+done
-echo
-echo "Configuring GCC"
+PATH="${PREFIX}/bin:${PATH}"
+export PATH
-mkdir -p ${BUILD_DIR}/build-gcc
-cd ${BUILD_DIR}/build-gcc
+_prepare_dirs
-${SOURCE_DIR}/configure --target=${TARGET} \
- --enable-languages=${LANGUAGES} \
- --disable-bootstrap \
- --prefix=${PREFIX} \
- --with-local-prefix=${SYSROOT}
+if test "x${INSTALL_BINUTILS}" == "xyes"
+then
+ _binutils
+fi
-# Build and install gcc
-echo
-echo "Building GCC"
-make all
-echo
-echo "Installing GCC"
-make install
+if test "x${INSTALL_GCC}" == "xyes"
+then
+ _gcc
+fi