diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000000..18736ba3305fb --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,137 @@ +name: 'build' + +on: [push, pull_request] + +jobs: + build: + env: + MSYSTEM: MINGW64 + CHERE_INVOKING: 'yes' + MSYS: 'winsymlinks:native' + strategy: + fail-fast: false + matrix: + include: + - platform: macos-x86_64 + runs_on: macos-12 + extra_configure_args: "--disable-cocoa --disable-coreaudio" + shell: bash -e {0} + # - platform: macos-arm64 + # runs_on: macos-latest-xlarge + # extra_configure_args: "--disable-cocoa --disable-coreaudio" + # shell: bash -e {0} + - platform: linux-amd64 + runs_on: ubuntu-20.04 + # Building with -Werror only on Linux as that breaks some features detection + # in meson on macOS. + extra_configure_args: "--extra-cflags=-Werror --disable-gtk" + shell: bash -e {0} + - platform: linux-arm64 + runs_on: ubuntu-22.04 + extra_configure_args: "--disable-gtk --cross-prefix=aarch64-linux-gnu-" + shell: bash -e {0} + - platform: win-x86_64 + runs_on: windows-2022 + extra_configure_args: "" + shell: msys2 {0} + runs-on: ${{ matrix.runs_on }} + defaults: + run: + shell: ${{ matrix.shell }} + steps: + - uses: actions/checkout@v3 + - name: Install prerequisites (Linux arm64) + if: ${{ matrix.platform == 'linux-arm64' }} + env: + DEBIAN_FRONTEND: "noninteractive" + run: | + sudo cat /etc/apt/apt-mirrors.txt + sudo sed -i '/azure\.archive\.ubuntu\.com/d' /etc/apt/apt-mirrors.txt + sudo cat /etc/apt/apt-mirrors.txt + sudo dpkg --add-architecture arm64 + sudo apt-get update + sudo apt-get install -q --no-install-recommends \ + ninja-build \ + crossbuild-essential-arm64 \ + binutils-dev:arm64 \ + libgcrypt-dev:arm64 \ + libglib2.0-dev:arm64 \ + libpixman-1-dev:arm64 \ + libslirp-dev:arm64 + - name: Install prerequisites (Linux x86_64) + if: ${{ matrix.platform == 'linux-amd64' }} + env: + DEBIAN_FRONTEND: "noninteractive" + run: | + sudo apt-get install -y -q --no-install-recommends \ + binutils-dev \ + ninja-build \ + libgcrypt-dev \ + libglib2.0-dev \ + libpixman-1-dev \ + libslirp-dev + - name: Install prerequisites (macOS) + if: ${{ matrix.platform == 'macos-x86_64' || matrix.platform == 'macos-arm64' }} + run: | + brew install \ + ninja \ + libgcrypt \ + glib \ + pixman \ + pkg-config + - name: Install prerequisites (Windows) + if : ${{ matrix.platform == 'win-x86_64' }} + uses: msys2/setup-msys2@v2 + with: + cache: true + msystem: mingw64 + install: >- + mingw-w64-x86_64-python + mingw-w64-x86_64-ninja + mingw-w64-x86_64-gcc + mingw-w64-x86_64-glib2 + mingw-w64-x86_64-pkg-config + mingw-w64-x86_64-pixman + mingw-w64-x86_64-libgcrypt + mingw-w64-x86_64-libslirp + diffutils git + - name: Sanity check (macOS) + if: ${{ matrix.platform == 'macos-x86_64' || matrix.platform == 'macos-arm64' }} + run: | + which cc || true + which gcc || true + which clang || true + cc --version || true + gcc --version || true + clang --version || true + + clang 1.m -o 1 + + - name: Configure + run: | + ./configure \ + --prefix=$PWD/install/qemu \ + --target-list=xtensa-softmmu \ + --with-pkgversion="${{ github.ref_name }}" \ + --enable-gcrypt \ + --enable-slirp \ + --disable-user \ + --disable-capstone \ + --disable-vnc \ + --disable-sdl \ + --disable-docs \ + ${{ matrix.extra_configure_args }} || (cat meson-logs/meson-log.txt && false) + - name: Build + run: | + ninja -C build + - name: Package distribution archive + run: | + ninja -C build install + find install/qemu/share/qemu -maxdepth 1 -mindepth 1 -not -name 'esp*.bin' -exec rm -rf {} \; + mkdir -p dist + export DIST_DIR=${PWD}/dist + export ARCHIVE_NAME=qemu-${{ github.ref_name }}-${{ matrix.platform }}.tar.bz2 + cd install + tar cjvf ${DIST_DIR}/${ARCHIVE_NAME} qemu + cd ${DIST_DIR} + shasum -a 256 *.tar.bz2 > ${ARCHIVE_NAME}.sha256 diff --git a/1.m b/1.m new file mode 100644 index 0000000000000..9ee5c2b1eeec6 --- /dev/null +++ b/1.m @@ -0,0 +1,2 @@ +#import +int main(void) { return 0; } diff --git a/meson.build b/meson.build index a9c4f28247609..95d40c431960b 100644 --- a/meson.build +++ b/meson.build @@ -1,4 +1,4 @@ -project('qemu', ['c'], meson_version: '>=0.63.0', +project('qemu', ['c', 'objc'], meson_version: '>=0.63.0', default_options: ['warning_level=1', 'c_std=gnu11', 'cpp_std=gnu++11', 'b_colorout=auto', 'b_staticpic=false', 'stdsplit=false', 'optimization=2', 'b_pie=true'], version: files('VERSION'))