3 Feb 2009 09:41
Hi Vincent, On Tue, 3 Feb 2009 00:26:55 +0100 (CET), Vincent Torri <vtorri@...> wrote: > On Mon, 2 Feb 2009, Danny Backx wrote: > >> I'm inclined to put this work (based on the current gcc from their svn) >> in our repository. >> >> Upgrading to 4.4.0 once it's out shouldn't be hard. >> >> Does anyone have ideas (objections or hurrays) about that ? > > going to 4.4.0 would be nice. Just some remarks: > > 1) I've answered on the mailing list of mingw about the status of gcc > 4.3.0 but i've not received any answer from the dev. But a guy, who wanted > also such information, mentioned a post where the mingw gcc maintainer > filed a bug in gcc bugzilla. Do you know if it would be the thing to do, > that is patching directly gcc instead of having your own tree ? > I have already generated a mingw from gcc trunk using mingw-w64 repository and you could find attached the script I use. > 2) I've also read on the gcc main site that there is (will be) a support > of plugins for gcc (finally, it stops being monolythic). Does it mean that > the port of cegcc could use that plugin framework ? > Don't know very well but plugin architecture seems a bit young for now and I wouldn't go there until gcc4.5. > Vincent Torri >
#! /usr/bin/env bash # This script can be use to generate a mingw cross-compiler targeting x86 # It uses mingw-w64 repository because projects seems more active and people # mainteners are more windows oriented and nicer# To use it : # mkdir -p x86mingw/src; cd x86mingw/src # Copy this script in it # Downloads binutils : wget ftp://sourceware.org/pub/binutils/snapshots/binutils-2.19.51.tar.bz2 # Decompress binutils : tar xvf binutils-2.19.51.tar.bz2 # if decompressed archive name != binutils create a symlink : ln -s binutils-2.19.51 binutils # svn co https://mingw-w64.svn.sourceforge.net/svnroot/mingw-w64 mingw-w64 # svn checkout svn://gcc.gnu.org/svn/gcc/trunk gcc # mkdir build-mingw32; cd build-mingw32 # ../build-mingw32-sysroot.sh -j2 # Take a coffee ! # you should have a mingw toolchain # TODO : HANDLE x64 and ce BASE_DIRECTORY=`dirname $0` BASE_DIRECTORY=`(cd ${BASE_DIRECTORY}; pwd)` ME=`basename $0` # FIXME: some components need this (mingwdll), but they shouldn't. export BASE_DIRECTORY # # Initializations. # export BUILD_DIR=`pwd` ac_default_prefix="/opt/mingw32-4.4.0" gcc_src=gcc # The list of components, in build order. There's a build_FOO # function for each of these components COMPONENTS=( binutils headers bootstrap_gcc mingw gcc ) COMPONENTS_NUM=${#COMPONENTS[*]} # Build comma separated list of components, for user display. for ((i=0;i<$COMPONENTS_NUM;i++)); do if [ $i = 0 ]; then COMPONENTS_COMMA_LIST=${COMPONENTS[${i}]} else COMPONENTS_COMMA_LIST="${COMPONENTS_COMMA_LIST}, ${COMPONENTS[${i}]}" fi done 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] -j, --parallelism PARALLELISM Pass PARALLELISM as -jPARALLELISM to make invocations. --components=LIST specify which components to build valid components are: ${COMPONENTS_COMMA_LIST} [all] Report bugs to <cegcc-devel <at> lists.sourceforge.net>. _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 ;; -j | --parallelism | --parallelis | --paralleli | --parallel \ | --paralle | --parall | --paral | --para | --par \ | --pa) ac_prev=parallelism ;; -j=* | --parallelism=* | --parallelis=* | --paralleli=* | --parallel=* \ | --paralle=* | --parall=* | --paral=* | --para=* | --par=* \ | --pa=*) parallelism=$ac_optarg ;; -j*) parallelism=`echo $ac_option | sed 's/-j//'` ;; -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 # We don't want no errors from here on. set -e 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 if [ "x${parallelism}" != "x" ]; then PARALLELISM="-j${parallelism}" else PARALLELISM= fi # embedded tabs in the sed below -- do not untabify components=`echo "${components}" | sed -e 's/[ ,][ ,]*/,/g' -e 's/,$//'` # Don't build in source directory, it will clobber things and cleanup is hard. if [ -d ${BUILD_DIR}/.svn ]; then echo "Don't build in a source directory, please create an empty directory and build there." echo "Example :" echo " mkdir build-mingw32ce" echo " cd build-mingw32ce" echo " sh ../build-mingw32ce.sh $ <at> " exit 1 fi build_binutils() { echo "" echo "BUILDING BINUTILS --------------------------" echo "" echo "" mkdir -p binutils cd binutils ${BASE_DIRECTORY}/binutils/configure \ --prefix=${PREFIX} \ --target=${TARGET} \ --with-sysroot=${PREFIX} \ --disable-nls make ${PARALLELISM} make install cd ${BUILD_DIR} } build_headers() { mkdir -p "$PREFIX/include" test -e "$PREFIX/usr" || ( cd "$PREFIX" && ln -s . usr ) test -e "$PREFIX/usr/local" || ( cd "$PREFIX/usr" && ln -s . local ) test -e "$PREFIX/mingw" || ( cd "$PREFIX" && ln -s "${TARGET}" mingw ) cp -r ${BASE_DIRECTORY}/mingw-w64/trunk/mingw-w64-headers/include "${PREFIX}/${TARGET}" || die $? \ "$unrecoverable installing mingw-runtime headers" cd ${BUILD_DIR} } build_bootstrap_gcc() { mkdir -p gcc-bootstrap cd gcc-bootstrap ${BASE_DIRECTORY}/${gcc_src}/configure \ --prefix=${PREFIX} \ --target=${TARGET} \ --with-sysroot=${PREFIX} \ --disable-shared \ --with-gcc \ --with-gnu-as \ --with-gnu-ld make ${PARALLELISM} all-gcc make install-gcc cd ${BUILD_DIR} } build_w32api() { mkdir -p w32api cd w32api ${BASE_DIRECTORY}/w32api/configure \ --host=${TARGET} \ --prefix=${PREFIX} \ --with-sysroot=${PREFIX} make ${PARALLELISM} make install cd ${BUILD_DIR} } build_mingw() { mkdir -p mingw cd mingw ${BASE_DIRECTORY}/mingw-w64/trunk/mingw-w64-crt/configure \ --host=${TARGET} \ --prefix=${PREFIX} \ --with-sysroot=${PREFIX} \ --enable-lib32 \ --disable-lib64 #make ${PARALLELISM} #make install # because of a bug with Makefile # when cross-compiling mingw32 we need to copy from lib32 to lib mv ${PREFIX}/${TARGET}/lib32/* ${PREFIX}/${TARGET}/lib/ cd ${BUILD_DIR} } build_gcc() { cd ${BASE_DIRECTORY}/${gcc_src} if [ -e ${BASE_DIRECTORY}/${gcc_src}/winsup ]; then echo "winsup symbolic link already exists" else echo "Creating winsup symbolic link" ln -s ${PREFIX} winsup fi # Actually we start from boostrap-gcc to build full compiler - no need to reconfigure cd ${BUILD_DIR} ln -s gcc-bootstrap gcc cd gcc make ${PARALLELISM} make install cd ${BUILD_DIR} } build_gdb() { echo "" echo "BUILDING GDB --------------------------" echo "" echo "" mkdir -p gdb cd gdb ${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 export CFLAGS=${PREV_CFLAGS} make ${PARALLELISM} make install cd ${BUILD_DIR} } build_gdbserver() { echo "" echo "BUILDING gdbserver --------------------------" echo "" echo "" mkdir -p gdbserver cd gdbserver ${BASE_DIRECTORY}/gdb/gdbserver/configure \ --target=${TARGET} \ --host=${TARGET} \ --prefix=${PREFIX} \ make ${PARALLELISM} make install cd ${BUILD_DIR} } build_docs() { echo "" echo "INSTALLING documentation --------------------------" echo "" echo "" mkdir -p ${PREFIX}/share/docs mkdir -p ${PREFIX}/share/images cd ${BASE_DIRECTORY}/../docs tar cf - . | (cd ${PREFIX}/share/docs; tar xf -) cd ${BASE_DIRECTORY}/../website tar cf - images | (cd ${PREFIX}/share; tar xf -) cd ${BASE_DIRECTORY}/.. cp NEWS README ${PREFIX} cp src/binutils/COPYING ${PREFIX} cp src/binutils/COPYING.LIB ${PREFIX} cp src/newlib/COPYING.NEWLIB ${PREFIX} cd ${BUILD_DIR} } build_profile() { echo "" echo "BUILDING profiling libraries --------------------------" echo "" echo "" mkdir -p profile cd profile ${BASE_DIRECTORY}/profile/configure \ --build=${BUILD} \ --host=${TARGET} \ --target=${TARGET} \ --prefix=${PREFIX} \ || exit make ${PARALLELISM} make install cd ${BUILD_DIR} } obuild_dlls() { echo "" echo "BUILDING DLL libraries --------------------------" echo "" echo "" cd ${BUILD_DIR} mkdir -p dll cd dll cd ${BASE_DIRECTORY} ${BASE_DIRECTORY}/build-mingw32ce-dlls.sh cd ${BUILD_DIR} } build_dlls() { echo "" echo "BUILDING DLL libraries --------------------------" echo "" echo "" cd ${BUILD_DIR} cd ${BASE_DIRECTORY}/mingwdll make make install cd ${BUILD_DIR} } build_all() { for ((i=0;i<$COMPONENTS_NUM;i++)); do comp=${COMPONENTS[${i}]} build_$comp done } split_components=`echo "${components}" | sed -e 's/,/ /g'` # check for valid options before trying to build them all. eval "set -- $split_components" while [ -n "$1" ]; do if [ "$1" != "all" ]; then found=false for ((i=0;i<$COMPONENTS_NUM;i++)); do if [ "${COMPONENTS[${i}]}" = "$1" ]; then found=true fi done if [ $found = false ] ; then echo "Please enter a valid build option." exit 1 fi fi shift done export TARGET="i686-pc-mingw32" export BUILD=`sh ${BASE_DIRECTORY}/gcc/config.guess` export PATH=${PREFIX}/bin:${PATH} echo "Building ${TARGET}:" echo "source: ${BASE_DIRECTORY}" echo "building in: ${BUILD_DIR}" echo "prefix: ${PREFIX}" echo "components: ${components}" mkdir -p ${BUILD_DIR} mkdir -p ${PREFIX} # Now actually build them. eval "set -- $split_components" while [ -n "$1" ]; do build_${1} shift done echo "" echo "DONE --------------------------" echo "" echo ""
------------------------------------------------------------------------------ Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM) software. With Adobe AIR, Ajax developers can use existing skills and code to build responsive, highly engaging applications that combine the power of local resources and data with the reach of the web. Download the Adobe AIR SDK and Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
_______________________________________________ Cegcc-devel mailing list Cegcc-devel@... https://lists.sourceforge.net/lists/listinfo/cegcc-devel

# To use it :
# mkdir -p x86mingw/src; cd x86mingw/src
# Copy this script in it
# Downloads binutils : wget ftp://sourceware.org/pub/binutils/snapshots/binutils-2.19.51.tar.bz2
# Decompress binutils : tar xvf binutils-2.19.51.tar.bz2
# if decompressed archive name != binutils create a symlink : ln -s binutils-2.19.51 binutils
# svn co
RSS Feed