diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 9089694..47cb9ee 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -13,32 +13,77 @@ env: RUSTFLAGS: "-Dwarnings" jobs: - build: - + build-gnu-apt: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 - name: Update repos run: sudo apt-get update -qq - - name: Install rust toolchain - run: sudo apt-get install -qy cargo rust-clippy - - name: install lzma - run: sudo apt-get install -qy liblzma-dev - - name: install gcc - run: sudo apt-get install -qy gcc make + - name: Install toolchain + run: sudo apt-get install -qy cargo rust-clippy liblzma-dev gcc make pkgconf - name: Run Clippy run: cargo clippy + - name: build + run: cargo build + - name: generate bindings run: ./generate-binding.sh - name: check that generated files did not change run: output=$(git status --porcelain) && [ -z "$output" ] - - - name: build - run: cargo build - - name: build example - run: cd example && make + - name: build example -- glibc release + run: cd example && make clean && make TARGET=aarch64-unknown-linux-gnu PROFILE=release + - name: build example -- glibc debug + run: cd example && make clean && make TARGET=aarch64-unknown-linux-gnu PROFILE=debug + + # this _should_ have been -stable, but there is a bug when running in the container ("Invalid cross-device link") + build-musl-beta: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Update repos + run: sudo apt-get update -qq + - name: Install toolchain + run: sudo apt-get install -qy liblzma-dev gcc make pkgconf musl-dev musl-tools rustup + - name: install rust target + run: rustup default beta && rustup target add aarch64-unknown-linux-musl && rustup component add rust-src && rustup update + + - name: build example -- musl release + run: cd example && make clean && make TARGET=aarch64-unknown-linux-musl PROFILE=release MUSL=1 CARGO="rustup run beta cargo" + - name: build example -- musl debug + run: cd example && make clean && make TARGET=aarch64-unknown-linux-musl PROFILE=debug MUSL=1 CARGO="rustup run beta cargo" + + build-size-gnu-unstable: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Update repos + run: sudo apt-get update -qq + - name: Install toolchain + run: sudo apt-get install -qy liblzma-dev gcc make pkgconf rustup + - name: install rust targets + run: rustup toolchain install nightly -t aarch64-unknown-linux-gnu -c rust-src --no-self-update + + - name: build example -- glibc size-optimized + run: cd example && make clean && make TARGET=aarch64-unknown-linux-gnu PROFILE=size-optimized CARGO="rustup run nightly cargo" LTO=1 + + + build-size-musl-unstable: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Update repos + run: sudo apt-get update -qq + - name: Install toolchain + run: sudo apt-get install -qy liblzma-dev gcc make pkgconf musl-dev musl-tools rustup + - name: install rust targets + run: rustup toolchain install nightly -t aarch64-unknown-linux-musl -c rust-src --no-self-update + + - name: build example -- musl size-optimized + run: cd example && make clean && make TARGET=aarch64-unknown-linux-musl PROFILE=size-optimized MUSL=1 LTO=1 CARGO="rustup run nightly cargo" diff --git a/example/Makefile b/example/Makefile index a35aa5c..353e298 100644 --- a/example/Makefile +++ b/example/Makefile @@ -1,7 +1,7 @@ CARGO ?= cargo STRIP ?= strip -FEATURES := +FEATURES := "" THIS_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) REPO_ROOT := $(realpath $(THIS_DIR)/..) @@ -10,7 +10,7 @@ export SERVICEPOINT_HEADER_OUT := $(REPO_ROOT)/include override CFG_MUSL := $(if $(CFG_MUSL),$(CFG_MUSL),$(if $(MUSL),$(MUSL),0)) override CFG_PROFILE := $(if $(CFG_PROFILE),$(CFG_PROFILE),$(if $(PROFILE),$(PROFILE),release)) -CCFLAGS += -Wall -fwhole-program +CCFLAGS += -Wall -fwhole-program -fPIE -pie STRIPFLAGS := -s --strip-unneeded -R .comment -R .gnu.version -R .note -R .note.gnu.build-id -R .note.ABI-tag @@ -18,7 +18,7 @@ ifeq ($(CFG_MUSL), 1) TARGET ?= x86_64-unknown-linux-musl CC ?= musl-gcc CCFLAGS += -static -lservicepoint_binding_c - RUSTFLAGS += --crate-type=staticlib + RUSTFLAGS += --crate-type=staticlib -Ctarget-feature=-crt-static else TARGET ?= x86_64-unknown-linux-gnu CC ?= gcc