1. Fix repeatedly linking dynamic libraries for occlum-run 2. Fix gcc toolchain deb package build error 3. Remove redundant file from installer file list 4. Change symlink target path to relative path
		
			
				
	
	
		
			106 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.9 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
 | |
| 
 | |
| # Users can pass "-j$(nproc)" by specifying this env.
 | |
| # This is not enabled by default because under certain scenarios,
 | |
| # make will use too many jobs and gcc will be killed because out
 | |
| # of memory.
 | |
| BUILD_OPTIONS +=
 | |
| 
 | |
| .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; \
 | |
| 		make $(BUILD_OPTIONS)
 | |
| 
 | |
| # 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 ..."
 |