forked from mirrors/gecko-dev
		
	 dc8ae8410c
			
		
	
	
		dc8ae8410c
		
	
	
	
	
		
			
			When different translation units contain the same symbol name, all static, but one of them non-static, ld64 wrongfully link the references to the static data with the non-static data, or vice versa. With libaom and libvpx sharing data structures with the same name but different contents, that leads to interesting failures/crashes at runtime. This was apparently fixed in Apple ld64 from Xcode 9, but the last open sourced version is the one from Xcode 8, so I ended up digging in the ld64 source code and fixed the issue. This work was merged to cctools-port upstream in https://github.com/tpoechtrager/cctools-port/pull/59. For the same reason as invoked in bug 1478917, though, updating to cctools-port master is more involved than just changing a commit sha1 (as it requires building apple-libtapi, which in turn builds parts of LLVM, which should probably be avoided), so just cherry-pick the fix.
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| set -x -e -v
 | |
| 
 | |
| # This script is for building cctools (Apple's binutils) for Mac OS X on
 | |
| # Linux using ctools-port (https://github.com/tpoechtrager/cctools-port).
 | |
| WORKSPACE=$HOME/workspace
 | |
| UPLOAD_DIR=$HOME/artifacts
 | |
| 
 | |
| # Repository info
 | |
| : CROSSTOOL_PORT_REPOSITORY    ${CROSSTOOL_PORT_REPOSITORY:=https://github.com/tpoechtrager/cctools-port}
 | |
| : CROSSTOOL_PORT_REV           ${CROSSTOOL_PORT_REV:=8e9c3f2506b51cf56725eaa60b6e90e240e249ca}
 | |
| 
 | |
| # Set some crosstools-port directories
 | |
| CROSSTOOLS_SOURCE_DIR=$WORKSPACE/crosstools-port
 | |
| CROSSTOOLS_CCTOOLS_DIR=$CROSSTOOLS_SOURCE_DIR/cctools
 | |
| CROSSTOOLS_BUILD_DIR=/tmp/cctools
 | |
| CLANG_DIR=$WORKSPACE/build/src/clang
 | |
| CCTOOLS_DIR=$WORKSPACE/build/src/cctools
 | |
| MACOSX_SDK_DIR=$WORKSPACE/build/src/MacOSX10.11.sdk
 | |
| 
 | |
| TARGET_TRIPLE=x86_64-apple-darwin11
 | |
| 
 | |
| # Create our directories
 | |
| mkdir -p $CROSSTOOLS_BUILD_DIR
 | |
| 
 | |
| git clone --no-checkout $CROSSTOOL_PORT_REPOSITORY $CROSSTOOLS_SOURCE_DIR
 | |
| cd $CROSSTOOLS_SOURCE_DIR
 | |
| git checkout $CROSSTOOL_PORT_REV
 | |
| # Cherry pick two fixes for LTO.
 | |
| git cherry-pick -n 82381f5038a340025ae145745ae5b325cd1b749a
 | |
| git cherry-pick -n 328c7371008a854af30823adcd4ec1e763054a1d
 | |
| echo "Building from commit hash `git rev-parse $CROSSTOOL_PORT_REV`..."
 | |
| 
 | |
| # Fetch clang from tooltool
 | |
| cd $WORKSPACE/build/src
 | |
| . taskcluster/scripts/misc/tooltool-download.sh
 | |
| 
 | |
| # Configure crosstools-port
 | |
| cd $CROSSTOOLS_CCTOOLS_DIR
 | |
| export CC=$CLANG_DIR/bin/clang
 | |
| export CXX=$CLANG_DIR/bin/clang++
 | |
| export CFLAGS="-mcpu=generic -mtune=generic -O3 -target $TARGET_TRIPLE -isysroot $MACOSX_SDK_DIR"
 | |
| export CXXFLAGS="-mcpu=generic -mtune=generic -O3 -target $TARGET_TRIPLE -isysroot $MACOSX_SDK_DIR"
 | |
| export LDFLAGS="-Wl,-syslibroot,$MACOSX_SDK_DIR -Wl,-dead_strip"
 | |
| # TODO: bug 1357317 to avoid the LD_LIBRARY_PATH.
 | |
| export LD_LIBRARY_PATH="$CLANG_DIR/lib"
 | |
| export PATH="$CCTOOLS_DIR/bin:$PATH"
 | |
| ./autogen.sh
 | |
| ./configure --prefix=$CROSSTOOLS_BUILD_DIR --build=$MACHTYPE --host=$TARGET_TRIPLE --with-llvm-config=$CLANG_DIR/bin/llvm-config
 | |
| 
 | |
| # Build cctools
 | |
| make -j `nproc --all` install
 | |
| $CCTOOLS_DIR/bin/$TARGET_TRIPLE-strip $CROSSTOOLS_BUILD_DIR/bin/*
 | |
| 
 | |
| # Put a tarball in the artifacts dir
 | |
| mkdir -p $UPLOAD_DIR
 | |
| tar cjf $UPLOAD_DIR/cctools.tar.bz2 -C $CROSSTOOLS_BUILD_DIR/.. `basename $CROSSTOOLS_BUILD_DIR`
 |