name: Build (Windows) on: push: branches: - '*' pull_request: branches: - '*' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: build_win: name: Build on Windows ${{ matrix.platform.bitness }} as ${{ matrix.config }} runs-on: windows-latest strategy: matrix: config: [Debug, Release, ReleaseDLL] platform: - { bitness: x32, ms: Win32, name: windows-ix86 } - { bitness: x64, ms: x64, name: window-x86_64 } env: CONFIG: ${{ matrix.config }} BITNESS: ${{ matrix.platform.bitness }} PLATFORM: ${{ matrix.platform.ms }} PTS: v142 steps: - uses: actions/checkout@v4 - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@v2 - name: Build with MSBuild run: | MSBuild.exe libcpuid_vc10.sln ` /property:Platform=$Env:PLATFORM ` /property:Configuration=$Env:CONFIG ` /property:PlatformToolset=$Env:PTS ` /verbosity:normal - name: Prepate artifacts run: | mkdir -pv "$DESTDIR/"{bin,include,lib} cat < "$DESTDIR/Readme.win" The binaries here are compiled with Microsoft Visual C++. The following configurations are built: Debug\ - no optimizations, using the static debug C runtime (/MTd) Release\ - optimizations on, using the static C runtime (/MT) ReleaseDLL\ - the library is compiled in a .dll (libcpuid.dll), which you'd need to ship alongside your executable. Static C runtime. Operating system and compiler version: $(wmic os get caption,version -value | sed '/^[[:space:]]*$/d')\n$(MSBuild.exe -version | sed '/^[[:space:]]*$/d') EOF install -v AUTHORS ChangeLog COPYING Readme.md "$DESTDIR/" install -v libcpuid/{libcpuid_constants.h,libcpuid.h,libcpuid_types.h} "$DESTDIR/include/" cd "$GITHUB_WORKSPACE/cpuid_tool/$BITNESS" && find * -type f -name '*.exe' -exec install -Dv "{}" "$DESTDIR/bin/{}" \; cd "$GITHUB_WORKSPACE/libcpuid/$BITNESS" && find * -type f \( -name '*.lib' -o -name '*.dll' -o -name '*.exp' \) -exec install -Dv "{}" "$DESTDIR/lib/{}" \; shell: bash env: DESTDIR: ${{ github.workspace }}/installdir - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: ${{ matrix.platform.name }}-${{ matrix.config }} path: installdir/* merge_win_artifacts: name: Merge artifacts runs-on: windows-latest needs: build_win strategy: matrix: platform: - windows-ix86 - window-x86_64 steps: - name: Merge artifacts for ${{ matrix.platform }} uses: actions/upload-artifact/merge@v4 with: name: ${{ matrix.platform }} pattern: ${{ matrix.platform }}-* delete-merged: true