occlum/tools/installer/deb/toolchains/gcc/rules
Hui, Chunyang 8d1e1838d3 Fix package build errors
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
2020-10-22 16:47:47 +08:00

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 ..."