mirror of
				https://github.com/nicbarker/clay.git
				synced 2025-11-04 08:36:17 +00:00 
			
		
		
		
	[Bindings/Odin] - add CI to update binding libs (#452)
This commit is contained in:
		
							parent
							
								
									a9c1f9a8a7
								
							
						
					
					
						commit
						8dfcc944fa
					
				
							
								
								
									
										104
									
								
								.github/workflows/odin-bindings-update.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								.github/workflows/odin-bindings-update.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,104 @@
 | 
				
			||||||
 | 
					name: Odin Bindings Update
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					    branches: [main]
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  check_changes:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    outputs:
 | 
				
			||||||
 | 
					      changed: ${{ steps.check_clay.outputs.changed }}
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Checkout repo
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          fetch-depth: 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Check if clay.h changed
 | 
				
			||||||
 | 
					        id: check_clay
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          if git diff --name-only HEAD^ HEAD | grep -Fx "clay.h"; then
 | 
				
			||||||
 | 
					            echo "changed=true" >> $GITHUB_OUTPUT
 | 
				
			||||||
 | 
					          else
 | 
				
			||||||
 | 
					            echo "changed=false" >> $GITHUB_OUTPUT
 | 
				
			||||||
 | 
					          fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  build:
 | 
				
			||||||
 | 
					    needs: check_changes
 | 
				
			||||||
 | 
					    if: needs.check_changes.outputs.changed == 'true'
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [ubuntu-latest, macos-latest]
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Checkout repo
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Install clang (Linux)
 | 
				
			||||||
 | 
					        if: runner.os == 'Linux'
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          sudo apt-get update
 | 
				
			||||||
 | 
					          sudo apt-get install -y clang
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Build libs
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          mkdir -p build
 | 
				
			||||||
 | 
					          mkdir -p artifacts
 | 
				
			||||||
 | 
					          cp clay.h clay.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          COMMON_FLAGS="-DCLAY_IMPLEMENTATION -fno-ident -frandom-seed=clay"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          if [[ "$(uname)" == "Linux" ]]; then
 | 
				
			||||||
 | 
					            mkdir -p artifacts/linux
 | 
				
			||||||
 | 
					            mkdir -p artifacts/windows
 | 
				
			||||||
 | 
					            mkdir -p artifacts/wasm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            echo "Building for Linux..."
 | 
				
			||||||
 | 
					            clang -c $COMMON_FLAGS -fPIC -ffreestanding -static -target x86_64-unknown-linux-gnu clay.c -o build/linux.o
 | 
				
			||||||
 | 
					            ar rD artifacts/linux/clay.a build/linux.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            echo "Building for Windows..."
 | 
				
			||||||
 | 
					            clang -c $COMMON_FLAGS -ffreestanding -target x86_64-pc-windows-msvc -fuse-ld=llvm-lib clay.c -o artifacts/windows/clay.lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            echo "Building for WASM..."
 | 
				
			||||||
 | 
					            clang -c $COMMON_FLAGS -fPIC -target wasm32 -nostdlib -static clay.c -o artifacts/wasm/clay.o
 | 
				
			||||||
 | 
					          elif [[ "$(uname)" == "Darwin" ]]; then
 | 
				
			||||||
 | 
					            mkdir -p artifacts/macos
 | 
				
			||||||
 | 
					            mkdir -p artifacts/macos-arm64
 | 
				
			||||||
 | 
					            echo "Building for macOS (x86_64)..."
 | 
				
			||||||
 | 
					            clang -c $COMMON_FLAGS -fPIC -target x86_64-apple-macos clay.c -o build/macos.o
 | 
				
			||||||
 | 
					            libtool -static -o artifacts/macos/clay.a build/macos.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            echo "Building for macOS (ARM64)..."
 | 
				
			||||||
 | 
					            clang -c $COMMON_FLAGS -fPIC -target arm64-apple-macos clay.c -o build/macos-arm64.o
 | 
				
			||||||
 | 
					            libtool -static -o artifacts/macos-arm64/clay.a build/macos-arm64.o
 | 
				
			||||||
 | 
					          fi
 | 
				
			||||||
 | 
					          rm -f clay.c build/*.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Upload artifacts
 | 
				
			||||||
 | 
					        uses: actions/upload-artifact@v4
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          name: artifacts-${{ matrix.os }}
 | 
				
			||||||
 | 
					          path: artifacts/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  commit:
 | 
				
			||||||
 | 
					    needs: build
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Checkout repo
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Download artifacts
 | 
				
			||||||
 | 
					        uses: actions/download-artifact@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Move artifacts
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          cp -r artifacts-ubuntu-latest/* bindings/odin/clay-odin/
 | 
				
			||||||
 | 
					          cp -r artifacts-macos-latest/* bindings/odin/clay-odin/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Commit/Push changes
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          git config user.name "github-actions[bot]"
 | 
				
			||||||
 | 
					          git config user.email "github-actions[bot]@users.noreply.github.com"
 | 
				
			||||||
 | 
					          git add bindings/odin/clay-odin/
 | 
				
			||||||
 | 
					          git commit -m "[bindings/odin] Update Odin bindings"
 | 
				
			||||||
 | 
					          git push
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in a new issue