mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 10:52:44 +00:00 
			
		
		
		
	 4055c393fc
			
		
	
	
		4055c393fc
		
	
	
	
	
		
			
			This commit adds support for building the SerenityOS userland with the new [mold linker]. This is not enabled by default yet; to link using mold, run the `Toolchain/BuildMold.sh` script to build the latest release of mold, and set the `ENABLE_MOLD_LINKER` CMake variable to ON. This option relies on toolchain support that has been added just recently, so you might need to rebuild your toolchain for mold to work. [mold linker]: https://github.com/rui314/mold
		
			
				
	
	
		
			44 lines
		
	
	
	
		
			1,008 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1,008 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # This script builds the mold linker that can optionally be used for linking
 | |
| # the SerenityOS userland.
 | |
| set -e
 | |
| 
 | |
| DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 | |
| 
 | |
| NPROC="nproc"
 | |
| SYSTEM_NAME="$(uname -s)"
 | |
| 
 | |
| if [ "$SYSTEM_NAME" = "OpenBSD" ]; then
 | |
|     NPROC="sysctl -n hw.ncpuonline"
 | |
| elif [ "$SYSTEM_NAME" = "FreeBSD" ]; then
 | |
|     NPROC="sysctl -n hw.ncpu"
 | |
| elif [ "$SYSTEM_NAME" = "Darwin" ]; then
 | |
|     NPROC="sysctl -n hw.ncpu"
 | |
| fi
 | |
| 
 | |
| [ -z "$MAKEJOBS" ] && MAKEJOBS=$($NPROC)
 | |
| 
 | |
| mkdir -p "$DIR"/Tarballs
 | |
| pushd "$DIR"/Tarballs
 | |
| 
 | |
| if [ "$1" = "--git" ]; then
 | |
|     [ ! -d mold ] && git clone https://github.com/rui314/mold.git
 | |
| 
 | |
|     cd mold
 | |
| 
 | |
|     git pull
 | |
| else
 | |
|     VERSION=1.0.2
 | |
|     [ ! -e mold-$VERSION.tar.gz ] && curl -L "https://github.com/rui314/mold/archive/refs/tags/v$VERSION.tar.gz" -o mold-$VERSION.tar.gz
 | |
|     [ ! -e mold-$VERSION ] && tar -xzf mold-$VERSION.tar.gz
 | |
|     cd mold-$VERSION
 | |
| fi
 | |
| 
 | |
| make clean
 | |
| export DESTDIR="$DIR"/Local/mold
 | |
| export PREFIX=
 | |
| make -j "$MAKEJOBS"
 | |
| make install
 | |
| 
 | |
| popd
 |