mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 17:09:09 +00:00 
			
		
		
		
	 e26b8dca3f
			
		
	
	
		e26b8dca3f
		
	
	
	
	
		
			
			git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4491 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			173 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| #
 | |
| # Build a mingw64 compiler for doing x64 compiles.
 | |
| #
 | |
| 
 | |
| ###
 | |
| ### CYGWIN :: Make sure that cygwin is mouting its file systems in binmode.
 | |
| ###
 | |
| 
 | |
| #
 | |
| # Specify the architectures for which the tools are to be built
 | |
| #
 | |
| TARGS="${TARGS:-x86_64-pc-mingw32}"
 | |
| 
 | |
| # Let's be nice
 | |
| renice 10 -p $$
 | |
| 
 | |
| # If any thing goes wrong, we'll bail out.
 | |
| set -e
 | |
| 
 | |
| #
 | |
| # Specify the versions
 | |
| #
 | |
| GCC_VERSION=4.3-20071207
 | |
| BINUTILS_VERSION=2.17.50.0.18
 | |
| MINGW_HEADERS_VERSION=20070802
 | |
| 
 | |
| _GCC_=gcc-${GCC_VERSION}
 | |
| _BINUTILS_=binutils-${BINUTILS_VERSION}
 | |
| _MINGW_HEADERS_=mingw-w64-headers-${MINGW_HEADERS_VERSION}
 | |
| 
 | |
| export PATH=/bin:/usr/bin:/usr/local/bin
 | |
| 
 | |
| #
 | |
| # Where to install
 | |
| #
 | |
| PREFIX="${PREFIX:-/opt/tiano/}"
 | |
| 
 | |
| #
 | |
| # Where to get the GNU tools
 | |
| #
 | |
| BINUTILS_URL=http://www.kernel.org/pub/linux/devel/binutils/${_BINUTILS_}.tar.bz2
 | |
| GCC_URL=ftp://gd.tuwien.ac.at/gnu/gcc/snapshots/${GCC_VERSION}/${_GCC_}.tar.bz2
 | |
| MINGW_HEADERS_URL=http://superb-west.dl.sourceforge.net/sourceforge/mingw/${_MINGW_HEADERS_}.tar.bz2
 | |
| 
 | |
| #
 | |
| # If your site uses proxy servers, un-comment the following lines
 | |
| # and change the server name to your site's proxy server and proxy port.
 | |
| # export http_proxy=http://proxyservername.mycompany.com:911
 | |
| # export ftp_proxy=http://proxyservername.mycompany.com:911
 | |
| 
 | |
| #
 | |
| # Uncomment one of the following depending upon which your system provides
 | |
| #
 | |
| #GET_COMMAND="curl --remote-name"
 | |
| GET_COMMAND="wget -c -nc --no-directories --retr-symlinks "
 | |
| 
 | |
| #
 | |
| # Allow environment to override some programs
 | |
| #
 | |
| MAKE="${MAKE:-make}"
 | |
| export MAKE
 | |
| SHELL="${SHELL:-/bin/sh}"
 | |
| export SHELL
 | |
| 
 | |
| #
 | |
| # Get the source
 | |
| # If you don't have curl on your machine, try using
 | |
| #     wget --passive-ftp --no-directories --retr-symlinks <<url>>
 | |
| # If that doesn't work, try without the --passive-ftp option.
 | |
| #
 | |
| getSource() {
 | |
|     ${GET_COMMAND}  "${BINUTILS_URL}"
 | |
|     ${GET_COMMAND}  "${GCC_URL}"
 | |
|     ${GET_COMMAND}  "${MINGW_HEADERS_URL}"
 | |
|     wait
 | |
| }
 | |
| 
 | |
| #
 | |
| # Unpack the source
 | |
| #
 | |
| unpackSource() {
 | |
|     (rm -rf "${_BINUTILS_}"
 | |
|     tar jxf "${_BINUTILS_}.tar.bz2"
 | |
|     )
 | |
| 
 | |
|     (rm -rf "${_GCC_}"
 | |
|     tar jxf "${_GCC_}.tar.bz2"
 | |
|     )
 | |
| 
 | |
|     (rm -rf "include"
 | |
|     tar jxf "${_MINGW_HEADERS_}.tar.bz2"
 | |
|     )
 | |
| 
 | |
|     wait
 | |
| }
 | |
| 
 | |
| CONF_SHELL="${CONF_SHELL:-/bin/bash}"
 | |
| # CONF_SHELL="${CONF_SHELL:-echo}"
 | |
| 
 | |
| #
 | |
| # Build
 | |
| #
 | |
| build() {
 | |
|     for targ in $TARGS
 | |
|     do (
 | |
|         export pref=${PREFIX}${targ}
 | |
|         export PATH="${pref}/bin:$PATH"
 | |
|         rm -f ${targ}.log
 | |
| 
 | |
|         (
 | |
| 	    rm -rf build-binutils-$targ
 | |
| 	    mkdir -p build-binutils-$targ
 | |
|             cd build-binutils-$targ
 | |
|             "${CONF_SHELL}" "../${_BINUTILS_}/configure" \
 | |
|                 --disable-nls "--target=${targ}" "--prefix=${pref}"
 | |
|             ${MAKE} -j1 -w all
 | |
|             ${MAKE} -w install
 | |
|         ) >> ${targ}.log 2>&1 
 | |
| 
 | |
|         (
 | |
|             mkdir -p $pref/$targ/include;
 | |
| 	    cp -fr include/* $pref/$targ/include
 | |
| 	    ln -s $pref/$targ $pref/mingw
 | |
| 	    ln -s $pref/$targ/include $pref/$targ/sys-include
 | |
|         ) 
 | |
| 
 | |
| 
 | |
|         (
 | |
| 	    rm -rf build-gcc-$targ
 | |
| 	    mkdir -p build-gcc-$targ
 | |
|             cd build-gcc-$targ
 | |
|             "${CONF_SHELL}" "../${_GCC_}/configure" "--target=${targ}" \
 | |
| 	        "--prefix=${pref}" \
 | |
| 	        --without-headers --with-newlib --verbose \
 | |
|                 --disable-libssp --disable-nls --enable-languages=c
 | |
|             ${MAKE} -j1 -w all
 | |
|             ${MAKE} -w install
 | |
|         ) >> ${targ}.log 2>&1
 | |
| 
 | |
|         # GCC 4.3 needs the symbol links for the gcc and binutils. Otherwise
 | |
| 	# the cc1 and as, ld etc can not be found by gcc.
 | |
| 	(
 | |
| 	    rm -f $pref/$targ/bin/*
 | |
| 	    ln -s $pref/bin/$targ-ar $pref/$targ/bin/ar
 | |
| 	    ln -s $pref/bin/$targ-as $pref/$targ/bin/as
 | |
| 	    ln -s $pref/bin/$targ-dlltool $pref/$targ/bin/dlltool
 | |
| 	    ln -s $pref/bin/$targ-gcc $pref/$targ/bin/gcc
 | |
| 	    ln -s $pref/bin/$targ-ld $pref/$targ/bin/ld
 | |
| 	    ln -s $pref/bin/$targ-nm $pref/$targ/bin/nm
 | |
| 	    ln -s $pref/bin/$targ-objcopy $pref/$targ/bin/objcopy
 | |
| 	    ln -s $pref/bin/$targ-objdump $pref/$targ/bin/objdump
 | |
| 	    ln -s $pref/bin/$targ-ranlib $pref/$targ/bin/ranlib
 | |
| 	    ln -s $pref/bin/$targ-strip $pref/$targ/bin/strip
 | |
| 	)
 | |
|     )
 | |
|     done
 | |
| 
 | |
|     wait
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| #
 | |
| # Do everything
 | |
| #
 | |
| # Comment out any activities you wish to omit
 | |
| #
 | |
| getSource
 | |
| unpackSource
 | |
| build
 |