Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
248 changes: 37 additions & 211 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,244 +7,70 @@ on:
branches: [ main ]

jobs:

update-packages:
runs-on: macos-latest
strategy:
fail-fast: true
steps:
- uses: actions/checkout@v3

- name: prepare
run: |
brew install ruby
- uses: &checkout actions/checkout@v4

- name: Prepare
run: brew install ruby

- name: package
run: |
ruby package.rb
- name: Package
run: ruby package.rb

- name: upload artifacts
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: packages
path: temp/*.c3l
if-no-files-found: error

release:
runs-on: ubuntu-latest
needs: [update-packages]
if: github.ref == 'refs/heads/main'

steps:
- uses: actions/checkout@v3
- name: delete tag
- uses: *checkout

- name: Download packages
uses: actions/download-artifact@v4
with:
name: packages
path: packages

- name: Delete previous tag
continue-on-error: true
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
script: |
github.rest.git.deleteRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'tags/latest',
sha: context.sha
})
- name: create tag
uses: actions/github-script@v6
try {
await github.rest.git.deleteRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'tags/latest'
})
} catch (e) {
core.info("Tag not available")
}

- name: Create latest tag
uses: actions/github-script@v7
with:
script: |
github.rest.git.createRef({
await github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/latest',
sha: context.sha
})

- uses: actions/download-artifact@v4

- id: create_release
uses: actions/create-release@v1
- name: Create release and upload packages
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: latest
release_name: Latest
draft: false
prerelease: false

- name: upload raylib
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/raylib.c3l
asset_name: raylib.c3l
asset_content_type: application/zip

- name: upload raylib5
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/raylib5.c3l
asset_name: raylib5.c3l
asset_content_type: application/zip

- name: upload raylib5.5
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/raylib55.c3l
asset_name: raylib55.c3l
asset_content_type: application/zip

- name: upload raygui
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/raygui.c3l
asset_name: raygui.c3l
asset_content_type: application/zip

- name: upload box2d
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/box2d.c3l
asset_name: box2d.c3l
asset_content_type: application/zip

- name: upload sdl2
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/sdl2.c3l
asset_name: sdl2.c3l
asset_content_type: application/zip

- name: upload tigr
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/tigr.c3l
asset_name: tigr.c3l
asset_content_type: application/zip

- name: upload opengl
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/opengl.c3l
asset_name: opengl.c3l
asset_content_type: application/zip

- name: upload vulkan
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/vulkan.c3l
asset_name: vulkan.c3l
asset_content_type: application/zip

- name: upload tree_sitter
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/tree_sitter.c3l
asset_name: tree_sitter.c3l
asset_content_type: application/zip

- name: upload curl
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/curl.c3l
asset_name: curl.c3l
asset_content_type: application/zip

- name: upload clang
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/clang.c3l
asset_name: clang.c3l
asset_content_type: application/zip

- name: upload glfw
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/glfw.c3l
asset_name: glfw.c3l
asset_content_type: application/zip

- name: upload glfw3.4
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/glfw34.c3l
asset_name: glfw34.c3l
asset_content_type: application/zip

- name: upload pq
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/pq.c3l
asset_name: pq.c3l
asset_content_type: application/zip

- name: upload mysql8
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/mysql8.c3l
asset_name: mysql8.c3l
asset_content_type: application/zip

- name: upload sqlite3
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/sqlite3.c3l
asset_name: sqlite3.c3l
asset_content_type: application/zip

- name: upload ktx
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: packages/ktx.c3l
asset_name: ktx.c3l
asset_content_type: application/zip
name: Latest
files: packages/*.c3l
overwrite_files: true
29 changes: 16 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
LIBDIR := ./libraries
C3C := c3c
TARGET ?=
TARGET_ARG := $(if $(TARGET),--target $(TARGET))

LIB_FOLDERS := $(wildcard $(LIBDIR)/*.c3l)
LIBS := $(patsubst %.c3l,%,$(notdir $(LIB_FOLDERS)))
TARGET_ARG := $(if $(TARGET),--target $(TARGET),)

.PHONY: all list compile
.PHONY: all list clean

all: compile
all: $(LIBS)

list:
@printf '%s\n' $(LIBS)

compile:
@for libname in $(LIBS); do \
files=$$(find "$(LIBDIR)/$$libname.c3l" -maxdepth 2 -type f \( -name '*.c3' -o -name '*.c3i' \)); \
if [ -z "$$files" ]; then \
echo "Skipping $$libname (no .c3/.c3i files found)"; \
continue; \
fi; \
echo "Compiling $$libname"; \
$(C3C) -C compile $(TARGET_ARG) --libdir "$(LIBDIR)" --lib "$$libname" $$files; \
done
clean:
@echo "Cleaning built libraries"
@rm -f $(addsuffix .c3l,$(LIBS))

%:
files=$$(find "$(LIBDIR)/$@.c3l" -type f \( -name '*.c3' -o -name '*.c3i' \) | sort); \
if [ -z "$$files" ]; then \
echo "Skipping $@ (no .c3/.c3i files found)"; \
exit 0; \
fi; \
echo "Compiling $@"; \
$(C3C) -C compile $(TARGET_ARG) --libdir "$(LIBDIR)" --lib "$@" $$files || exit 1