It appears to work for me. Haven't adapted the RPM creation script yet, I'll try that shortly.
Danny
On Wed, 2007-04-25 at 18:11 +0100, Pedro Alves wrote:
> bernhard wrote:
> > On 23.04.2007, at 23:00, Pedro Alves wrote:
> >> bernhard wrote:
> >>
> >>> I was able to build a gcc toolchain (mingw32ce and cegcc) on my
> >>> MacOSX to do cross-compiling,
> >>>
> >> Interesting, so you were able to build it. For the archives, could
> >> you explain what was going wrong before, and how you solved it?
> >>
> >
> > Of course!
> > It was not really hard to get it going. The first problem i ran into
> > was that on my OSX box the 'readlink -f .' would not do the obvious.
> > I replaced it with `pwd`:
> >
>
> > I also decided to use another prefix dir, but that is not really
> > important. I made this changes in "build-mingw32ce.sh" and in "build-
> > cegcc.sh".
> >
>
> Thanks! I was going to apply your pwd fix, but ended up rewriting
> the whole build-mingw32ce.sh options logic (shamelessly
> copying it from what autoconf generates, and then tweaking
> it). The result is attached. Would be great if you could
> give it a spin on MacOS.
>
> It now builds wherever pwd is, and doesn't automatically create
> a build-ming32ce subdir. You can now pass a list of comma
> separated components to build, instead of just one.
>
> So to use it, you now do:
> mkdir $any_build_dir
> cd $any_build_dir
> $path_to_src/build-mingw32ce.sh --prefix=/I_put_by_toolchains_here/mingw32ce
>
>
> >../build-mingw32ce.sh --help
>
> build-mingw32ce.sh builds the mingw32ce toolchain.
>
> Usage: ../build-mingw32ce.sh [OPTIONS] ...
>
> -h, --help print this help, then exit
> --prefix=PREFIX install toolchain in PREFIX
> [/opt/mingw32ce]
> --components=LIST specify which components to build
> valid components are:
> all,binutils,gcc,w32api,mingw,
> gdb,gdbstub,docs and profile
> [all]
>
> Report bugs to <[email protected]>
>
>
>
> Should be easier and more intuitive to set a different prefix without
> hacking the script.
>
> If anyone has any spare cycles, would be great to have
> usage reports on this new script.
>
> > After that changes i was able to start both build scripts without
> > parameters. Unfortunately gdb does not build using "build-mingw32ce.sh":
> > .../cegcc/src/gdb/gdb/exceptions.h:165: error: parse error before
> > ‘va_list’
> > make[2]: *** [gdb.o] Error 1
> > make[1]: *** [all-gdb] Error 2
> > make: *** [all] Error 2
> >
> > "build-cegcc.sh" runs *perfectly*well* without any complaints!!!
> >
> >
>
> Strange, there shouldn't be any difference. The gdb in our svn is a
> huge hack, and I am frankly surprised that it built at all for
> you (you're on x86, right?). Current gdb-cvs has rewritten
> WinCE support, and should build cleanly for everyone.
> Still waiting for the mingw32ce name to be made official
> at config-patches to finally get rid of our hacky version.
>
> I'll post a bit of usage instructions for the gdb-cvs version on a
> separate thread.
>
> Cheers,
> Pedro Alves
>
>
>
>
> plain text document attachment (build-mingw32ce.sh)
> #!/bin/sh
>
> BASE_DIRECTORY=`dirname $0`
> BASE_DIRECTORY=`(cd ${BASE_DIRECTORY}; pwd)`
> ME=`basename $0`
>
> #
> # Initializations.
> #
> ac_default_prefix="/opt/mingw32ce"
> export BUILD_DIR=`pwd`
>
> function usage
> {
> cat << _ACEOF
>
> $ME builds the mingw32ce toolchain.
>
> Usage: $0 [OPTIONS] ...
>
> -h, --help print this help, then exit
> --prefix=PREFIX install toolchain in PREFIX
> [$ac_default_prefix]
> --components=LIST specify which components to build
> valid components are: all,binutils,gcc,w32api,mingw,
> gdb,gdbstub,docs and profile
> [all]
>
> Report bugs to <[email protected]>.
> _ACEOF
>
> }
>
> ac_prev=
> for ac_option
> do
> # If the previous option needs an argument, assign it.
> if test -n "$ac_prev"; then
> eval "$ac_prev=\$ac_option"
> ac_prev=
> continue
> fi
>
> ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
>
> case $ac_option in
>
> -help | --help | --hel | --he | -h)
> usage; exit 0 ;;
>
> -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
> ac_prev=prefix ;;
> -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
> prefix=$ac_optarg ;;
>
> -components | --components | --component | --componen | \
> --compone | --compon | --compo | --comp | --com \
> | --co | --c)
> ac_prev=components ;;
> -components=* | --components=* | --component=* | --componen=* \
> | --compone=* | --compon=* | --compo=* | --comp=* | --com=* \
> | --co=* | --c=*)
> components=$ac_optarg ;;
>
> -*) { echo "$as_me: error: unrecognized option: $ac_option
> Try \`$0 --help' for more information." >&2
> { (exit 1); exit 1; }; }
> ;;
>
> *=*)
> ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
> # Reject names that are not valid shell variable names.
> expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
> { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
> { (exit 1); exit 1; }; }
> ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
> eval "$ac_envvar='$ac_optarg'"
> export $ac_envvar ;;
>
> *)
> ;;
> esac
> done
>
> if test -n "$ac_prev"; then
> ac_option=--`echo $ac_prev | sed 's/_/-/g'`
> { echo "$as_me: error: missing argument to $ac_option" >&2
> { (exit 1); exit 1; }; }
> fi
>
> # Be sure to have absolute paths.
> for ac_var in prefix
> do
> eval ac_val=$`echo $ac_var`
> case $ac_val in
> [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
> *) { echo "$as_me: error: expected an absolute directory name for
> --$ac_var: $ac_val" >&2
> { (exit 1); exit 1; }; };;
> esac
> done
>
> if [ "x${prefix}" != "x" ]; then
> export PREFIX="${prefix}"
> else
> export PREFIX=${ac_default_prefix}
> fi
>
> # Figure out what components where requested to be built.
> if test x"${components+set}" != xset; then
> components=all
> else
> if test x"${components}" = x ||
> test x"${components}" = xyes;
> then
> echo --components needs at least one argument 1>&2
> exit 1
> fi
> fi
>
> # embedded tabs in the sed below -- do not untabify
> components=`echo "${components}" | sed -e 's/[ ,][ ,]*/,/g' -e
> 's/,$//'`
>
> echo The following components will be built: ${components}
>
> export TARGET="arm-wince-mingw32ce"
> export BUILD=`sh ${BASE_DIRECTORY}/gcc/config.guess`
> export PATH=${PREFIX}/bin:${PATH}
>
> echo "Building mingw32ce:"
> echo "source: ${BASE_DIRECTORY}"
> echo "building in: ${BUILD_DIR}"
> echo "prefix: ${PREFIX}"
> echo "components: ${components}"
>
> mkdir -p ${BUILD_DIR} || exit 1
> mkdir -p ${PREFIX} || exit 1
>
> function build_binutils()
> {
> echo ""
> echo "BUILDING BINUTILS --------------------------"
> echo ""
> echo ""
> mkdir -p binutils || exit 1
> cd binutils
> ${BASE_DIRECTORY}/binutils/configure \
> --prefix=${PREFIX} \
> --target=${TARGET} \
> --disable-nls || exit 1
>
> make || exit 1
> make install || exit 1
>
> cd ${BUILD_DIR}
> }
>
> function build_bootstrap_gcc()
> {
> mkdir -p gcc-bootstrap || exit 1
> cd gcc-bootstrap
>
> ${BASE_DIRECTORY}/gcc/configure \
> --with-gcc \
> --with-gnu-ld \
> --with-gnu-as \
> --target=${TARGET} \
> --prefix=${PREFIX} \
> --disable-threads \
> --disable-nls \
> --enable-languages=c \
> --disable-win32-registry \
> --disable-multilib \
> --disable-interwork \
> --without-newlib \
> --enable-checking \
> || exit 1
>
> make all-gcc || exit 1
> make install-gcc || exit 1
>
> cd ${BUILD_DIR}
> }
>
> function build_w32api()
> {
> #I have this normally set by ccache.
> #Must unset them, because mingw being a lib,
> #uses $host==$target, and CC instead of CC_FOR_TARGET.
> PREV_CC=${CC}
> unset CC
>
> mkdir -p w32api || exit 1
> cd w32api
>
> ${BASE_DIRECTORY}/w32api/configure \
> --host=${TARGET} \
> --prefix=${PREFIX} \
> || exit 1
>
> make || exit 1
> make install || exit 1
>
> export CC=${PREV_CC}
> cd ${BUILD_DIR}
> }
>
> function build_mingw_runtime()
> {
> #I have this normally set by ccache.
> #Must unset them, because mingw being a lib,
> #uses $host==$target, and CC instead of CC_FOR_TARGET.
> PREV_CC=${CC}
> unset CC
>
> mkdir -p mingw || exit 1
> cd mingw
> ${BASE_DIRECTORY}/mingw/configure \
> --build=${BUILD} \
> --host=${TARGET} \
> --target=${TARGET} \
> --prefix=${PREFIX} \
> || exit 1
>
> make || exit 1
> make install || exit 1
>
> export CC=${PREV_CC}
> cd ${BUILD_DIR}
> }
>
> function build_gcc()
> {
> mkdir -p gcc || exit 1
> cd gcc
>
> ${BASE_DIRECTORY}/gcc/configure \
> --with-gcc \
> --with-gnu-ld \
> --with-gnu-as \
> --target=${TARGET} \
> --prefix=${PREFIX} \
> --enable-threads=win32 \
> --disable-nls \
> --enable-languages=c,c++ \
> --disable-win32-registry \
> --disable-multilib \
> --disable-interwork \
> --without-newlib \
> --enable-checking \
> --with-headers \
> || exit
>
> # we build libstdc++ as dll, so we don't need this.
> # --enable-fully-dynamic-string \
>
> # --disable-clocale \
>
> #
> # Below, the first "make" followed by a file removal, are a workaround
> # for a gcc build bug. The existence of the script causes the first
> # make to fail, the second one should succeed. Therefore, not checking
> # the error code of the first make is intentional.
> #
> make
> rm -f gcc/as
> make || exit 1
> #
> # End workaround
> #
> make install || exit 1
>
> cd ${BUILD_DIR}
> }
>
> function build_gdb()
> {
> echo ""
> echo "BUILDING GDB --------------------------"
> echo ""
> echo ""
>
> mkdir -p gdb || exit 1
> cd gdb || exit 1
>
> PREV_CFLAGS=${CFLAGS}
> export CFLAGS="-I${BASE_DIRECTORY}/w32api/include"
>
> ${BASE_DIRECTORY}/gdb/configure \
> --with-gcc \
> --with-gnu-ld \
> --with-gnu-as \
> --target=${TARGET} \
> --prefix=${PREFIX} \
> --disable-nls \
> --disable-win32-registry \
> --disable-multilib \
> --disable-interwork \
> --enable-checking \
> || exit 1
>
> export CFLAGS=${PREV_CFLAGS}
>
> make || exit 1
> make install || exit 1
>
> cd ${BUILD_DIR}
> }
>
> function build_gdbstub()
> {
> echo ""
> echo "BUILDING GDB stub --------------------------"
> echo ""
> echo ""
>
> STUB_EXE=${PREFIX}/bin/${TARGET}-stub.exe
> STUB_SRC=${BASE_DIRECTORY}/gdb/gdb/wince-stub.c
>
> ${TARGET}-gcc -O2 \
> ${STUB_SRC} \
> -o ${STUB_EXE} \
> -lwinsock || exit 1
> ${TARGET}-strip ${STUB_EXE} || exit 1
>
> cd ${BUILD_DIR}
> }
>
> function build_docs()
> {
> echo ""
> echo "INSTALLING documentation --------------------------"
> echo ""
> echo ""
>
> mkdir -p ${PREFIX}/share/docs || exit 1
> mkdir -p ${PREFIX}/share/images || exit 1
>
> cd ${BASE_DIRECTORY}/../docs || exit 1
> tar cf - . | (cd ${PREFIX}/share/docs; tar xf -) || exit 1
> cd ${BASE_DIRECTORY}/../website || exit 1
> tar cf - images | (cd ${PREFIX}/share; tar xf -) || exit 1
>
> cd ${BASE_DIRECTORY}/.. || exit 1
> cp NEWS README ${PREFIX} || exit 1
> cp src/binutils/COPYING ${PREFIX} || exit 1
> cp src/binutils/COPYING.LIB ${PREFIX} || exit 1
> cp src/binutils/COPYING.NEWLIB ${PREFIX} || exit 1
>
> cd ${BUILD_DIR}
> }
>
> function build_profile()
> {
> echo ""
> echo "BUILDING profiling libraries --------------------------"
> echo ""
> echo ""
>
> mkdir -p profile || exit 1
> cd profile
>
> ${BASE_DIRECTORY}/profile/configure \
> --build=${BUILD} \
> --host=${TARGET} \
> --target=${TARGET} \
> --prefix=${PREFIX} \
> || exit
>
> make || exit 1
> make install || exit 1
>
> cd ${BUILD_DIR}
> }
>
> function build_all
> {
> build_binutils
> build_bootstrap_gcc
> build_mingw_runtime
> build_w32api
> build_gcc
> build_docs
> build_profile
> build_gdb
> build_gdbstub
> }
>
> # check for valid options before trying to build them all.
> eval "set -- $components"
> while [ -n "$1" ]; do
> case $1 in
> binutils | bootstrapgcc | w32api | \
> mingw | gcc | gdb | gdbstub | \
> docs | profile | all)
> ;;
> *) echo "Please enter a valid build option." ;;
> esac
> shift
> done
>
> # now actually try to build them.
> eval "set -- $components"
> while [ -n "$1" ]; do
> case $1 in
> binutils) build_binutils ;;
> bootstrapgcc) build_bootstrap_gcc ;;
> w32api) build_w32api ;;
> mingw) build_mingw_runtime ;;
> gcc) build_gcc ;;
> gdb) build_gdb ;;
> gdbstub) build_gdbstub ;;
> docs) build_docs ;;
> profile) build_profile ;;
> all) build_all ;;
> esac
> shift
> done
>
> echo ""
> echo "DONE --------------------------"
> echo ""
> echo ""
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________ Cegcc-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/cegcc-devel
--
Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info
signature.asc
Description: This is a digitally signed message part
------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/
_______________________________________________ Cegcc-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/cegcc-devel
