101 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/make -f
 | 
						|
export DH_VERBOSE = 1
 | 
						|
export deb_build_dir = /tmp/deb_build
 | 
						|
export name = occlum-toolchains-gcc
 | 
						|
export buildroot := $(deb_build_dir)/$(name)/debian/$(name)
 | 
						|
 | 
						|
export tmp_build_dir = $(deb_build_dir)/$(name)/tmp_build
 | 
						|
export install_dir = $(buildroot)/opt/occlum/toolchains/gcc
 | 
						|
 | 
						|
SHELL = /bin/bash
 | 
						|
 | 
						|
# Needed by musl-cross-make config
 | 
						|
TARGET = x86_64-linux-musl
 | 
						|
MUSL_REPO = https://github.com/occlum/musl
 | 
						|
MUSL_VER = 1.1.24
 | 
						|
GCC_VER = 8.3.0
 | 
						|
 | 
						|
.ONESHELL: prepare_musl override_dh_install
 | 
						|
 | 
						|
%:
 | 
						|
	dh $@
 | 
						|
 | 
						|
# All rules executed in one shell
 | 
						|
prepare_musl:
 | 
						|
	rm -rf $(tmp_build_dir)
 | 
						|
	rm -rf $(install_dir)
 | 
						|
	mkdir -p $(tmp_build_dir)
 | 
						|
	cd $(tmp_build_dir)
 | 
						|
	git clone https://github.com/occlum/musl-cross-make
 | 
						|
	cd musl-cross-make
 | 
						|
	git checkout 0.9.9.hotfix
 | 
						|
	cp $(deb_build_dir)/$(name)/debian/0014-libgomp-*.diff patches/gcc-$(GCC_VER)
 | 
						|
	cat > config.mak <<EOF
 | 
						|
		TARGET = $(TARGET)
 | 
						|
		OUTPUT = $(install_dir)
 | 
						|
		COMMON_CONFIG += CFLAGS="-fPIC" CXXFLAGS="-fPIC" LDFLAGS="-pie"
 | 
						|
		GCC_VER = $(GCC_VER)
 | 
						|
		MUSL_VER = git-$(MUSL_VER)
 | 
						|
		MUSL_REPO = $(MUSL_REPO)
 | 
						|
	EOF
 | 
						|
 | 
						|
override_dh_auto_build: prepare_musl
 | 
						|
	cd $(tmp_build_dir)/musl-cross-make
 | 
						|
	cd $(tmp_build_dir)/musl-cross-make; \
 | 
						|
		make -j$(nproc)
 | 
						|
 | 
						|
# We create symlinks in /usr/local
 | 
						|
override_dh_usrlocal:
 | 
						|
	echo "Skip ..."
 | 
						|
 | 
						|
override_dh_fixperms:
 | 
						|
	dh_fixperms
 | 
						|
	# Occlum need this to be executable
 | 
						|
	chmod 755 $(install_dir)/$(TARGET)/lib/libc.so
 | 
						|
 | 
						|
override_dh_install:
 | 
						|
	cd $(tmp_build_dir)/musl-cross-make
 | 
						|
	make install
 | 
						|
	cat > $(install_dir)/bin/occlum-gcc <<EOF
 | 
						|
		#!/bin/bash
 | 
						|
		/opt/occlum/toolchains/gcc/bin/$(TARGET)-gcc -fPIC -pie -Wl,-rpath,/opt/occlum/toolchains/gcc/$(TARGET)/lib "\$$@"
 | 
						|
	EOF
 | 
						|
 | 
						|
	cat > $(install_dir)/bin/occlum-g++ <<EOF
 | 
						|
		#!/bin/bash
 | 
						|
		/opt/occlum/toolchains/gcc/bin/$(TARGET)-g++ -fPIC -pie -Wl,-rpath,/opt/occlum/toolchains/gcc/$(TARGET)/lib "\$$@"
 | 
						|
	EOF
 | 
						|
 | 
						|
	cat > $(install_dir)/bin/occlum-ld <<EOF
 | 
						|
		#!/bin/bash
 | 
						|
		/opt/occlum/toolchains/gcc/bin/$(TARGET)-ld -pie -rpath /opt/occlum/toolchains/gcc/$(TARGET)/lib "\$$@"
 | 
						|
	EOF
 | 
						|
 | 
						|
	chmod +x $(install_dir)/bin/occlum-gcc
 | 
						|
	chmod +x $(install_dir)/bin/occlum-g++
 | 
						|
	chmod +x $(install_dir)/bin/occlum-ld
 | 
						|
 | 
						|
	mkdir -p $(buildroot)/lib
 | 
						|
	pushd $(buildroot)/lib
 | 
						|
	ln -sf /opt/occlum/toolchains/gcc/$(TARGET)/lib/libc.so ld-musl-x86_64.so.1
 | 
						|
	popd
 | 
						|
	mkdir -p $(buildroot)/usr/local
 | 
						|
	pushd $(buildroot)/usr/local
 | 
						|
	ln -sf /opt/occlum/toolchains/gcc occlum
 | 
						|
	popd
 | 
						|
	pushd $(install_dir)/bin
 | 
						|
	ln -sf /opt/occlum/toolchains/gcc/bin/x86_64-linux-musl-gcc-ar occlum-ar
 | 
						|
	ln -sf /opt/occlum/toolchains/gcc/bin/x86_64-linux-musl-strip occlum-strip
 | 
						|
	popd
 | 
						|
 | 
						|
	mkdir -p $(buildroot)/etc/profile.d
 | 
						|
	cp $(deb_build_dir)/$(name)/debian/occlum-gcc.sh $(buildroot)/etc/profile.d
 | 
						|
	chmod 644 $(buildroot)/etc/profile.d/occlum-gcc.sh
 | 
						|
 | 
						|
clean:
 | 
						|
	dh_clean
 | 
						|
	rm -f $(buildroot)
 | 
						|
 | 
						|
override_dh_shlibdeps:
 | 
						|
	echo "skip ..."
 |