Add CI using Github actions and update README
authorKevin Petit <kevin.petit@arm.com>
Wed, 23 Jun 2021 16:36:33 +0000 (17:36 +0100)
committerKevin Petit <kevin.petit@arm.com>
Wed, 23 Jun 2021 17:21:33 +0000 (18:21 +0100)
- Run on Linux, macOS and Windows
- Check that the headers install works
- Check the example can be built
- Check the header generation tool can be built
- Generate headers and check they match the committed files
- Mention the requirement to install the header generation tool in README

Change-Id: I8385b3931064ad677d7aa49b2514cea9b4602168
Signed-off-by: Kevin Petit <kevin.petit@arm.com>
.github/workflows/presubmit.yml [new file with mode: 0644]
README.md
tools/buildHeaders/bin/makeHeaders

diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml
new file mode 100644 (file)
index 0000000..d9c25fa
--- /dev/null
@@ -0,0 +1,37 @@
+name: Presubmit
+on: [push, pull_request]
+
+jobs:
+  build:
+    name: Build ${{ matrix.os }}
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os: [ubuntu-latest, macos-latest, windows-latest]
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install Ubuntu packages
+        if: matrix.os == 'ubuntu-latest'
+        run: sudo apt install -y dos2unix
+      - name: Install macOS packages
+        if: matrix.os == 'macos-latest'
+        run: brew install dos2unix
+      - name: Build
+        run: |
+          mkdir build
+          cd build
+          cmake -DCMAKE_INSTALL_PREFIX=install ..
+          cmake --build . --target install
+      - name: Build spec tools
+        run: |
+          cd tools/buildHeaders
+          mkdir build
+          cd build
+          cmake ..
+          cmake --build . --target install
+      - name: Build headers
+        run: |
+          cd tools/buildHeaders
+          ./bin/makeHeaders
+      - name: Check generated headers
+        run: git diff --exit-code
index b1aa964..8c7039f 100644 (file)
--- a/README.md
+++ b/README.md
@@ -140,10 +140,21 @@ and can be used to test a PR, or even to include the results in the PR.
 This is not required though.
 
 The header-generation project is under the `tools/buildHeaders` directory.
-Use CMake to build the project, in a `build` subdirectory (under `tools/buildHeaders`).
+Use CMake to build and install the project, in a `build` subdirectory (under `tools/buildHeaders`).
 There is then a bash script at `bin/makeHeaders` that shows how to use the built
 header-generator binary to generate the headers from the JSON grammar.
 (Execute `bin/makeHeaders` from the `tools/buildHeaders` directory.)
+Here's a complete example:
+
+```
+cd tools/buildHeaders
+mkdir build
+cd build
+cmake ..
+cmake --build . --target install
+cd ..
+./bin/makeHeaders
+```
 
 Notes:
 - this generator is used in a broader context within Khronos to generate the specification,
index 0ca0b2f..7b4959e 100755 (executable)
@@ -4,4 +4,4 @@ python3 bin/makeExtinstHeaders.py
 
 cd ../../include/spirv/unified1
 ../../../tools/buildHeaders/build/install/bin/buildSpvHeaders -H spirv.core.grammar.json
-dos2unix spirv.* SpirV.* spv.*
+dos2unix spirv.* spv.*