Skip to content

Conversation

@etr
Copy link
Owner

@etr etr commented Feb 4, 2026

Summary

  • Add ARM32 (ARMv7 hard-float) and ARM64 (AArch64) cross-compilation testing to GitHub Actions CI
  • Validates that libhttpserver builds correctly for ARM targets
  • Uses x86_64 runners with cross-compilation toolchains (build-only, no test execution)

Changes

  • Added two new matrix entries for ARM cross-compilation builds
  • Added ARM toolchain installation step (gcc-arm-linux-gnueabihf, gcc-aarch64-linux-gnu)
  • Added cached cross-compiled libmicrohttpd builds for ARM targets
  • Updated configure step to pass --host flag for cross-compilation
  • Skipped test execution and cppcheck for cross-compilation (binaries can't run on x86_64)

Test plan

  • Verify ARM32 job runs successfully and builds complete
  • Verify ARM64 job runs successfully and builds complete
  • Confirm tests are skipped (expected behavior for cross-compilation)
  • Verify libmicrohttpd caching works correctly for ARM builds

Closes #131

Add ARM32 (ARMv7 hard-float) and ARM64 (AArch64) cross-compilation
testing to the CI workflow. This validates that libhttpserver can be
built for ARM targets using cross-compilation toolchains.

Changes:
- Add arm32 and arm64 matrix entries with appropriate toolchains
- Add step to install ARM cross-compilation toolchains
- Add separate libmicrohttpd cross-compilation steps with caching
- Update configure step to use --host flag for cross-compilation
- Skip tests and cppcheck for cross-compilation builds (binaries
  cannot execute on x86_64 runners)

The existing COND_CROSS_COMPILE logic in configure.ac automatically
handles test exclusion during cross-compilation.

Closes #131
@codecov
Copy link

codecov bot commented Feb 4, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 70.54%. Comparing base (3be9e7c) to head (37d31d1).
⚠️ Report is 3 commits behind head on master.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##           master     #363   +/-   ##
=======================================
  Coverage   70.54%   70.54%           
=======================================
  Files          28       28           
  Lines        1436     1436           
  Branches      570      570           
=======================================
  Hits         1013     1013           
  Misses         35       35           
  Partials      388      388           

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3be9e7c...37d31d1. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

The ARM cross-compiler doesn't search /usr/local by default. Install
libmicrohttpd to a workspace-local sysroot and pass CPPFLAGS/LDFLAGS
to libhttpserver's configure to find the headers and libraries.
@etr etr merged commit 42e769c into master Feb 4, 2026
43 checks passed
@etr etr deleted the feature/arm-cross-compilation branch February 4, 2026 06:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix automatic ARM cross-compilation on github actions

2 participants