Skip to content

Commit a719eb1

Browse files
authored
Initial commit
0 parents  commit a719eb1

23 files changed

Lines changed: 2529 additions & 0 deletions

.github/workflows/linux.yml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: Linux
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
paths:
7+
- 'src/**'
8+
- '.github/workflows/linux.yml'
9+
release:
10+
types: [published]
11+
12+
permissions:
13+
contents: read
14+
15+
jobs:
16+
build:
17+
permissions:
18+
contents: write # for actions/upload-release-asset to upload release asset
19+
runs-on: ubuntu-latest
20+
21+
env:
22+
PROJECT_NAME: ${{ github.event.repository.name }}
23+
PROJECT_BUILD_PATH: ${{ github.event.repository.name }}/src
24+
PROJECT_RELEASE_PATH: ${{ github.event.repository.name }}_dev_linux_x64
25+
PROJECT_CUSTOM_FLAGS: ""
26+
PROJECT_RESOURCES_PATH: src/resources
27+
28+
steps:
29+
- name: Checkout this repo
30+
uses: actions/checkout@master
31+
with:
32+
path: ${{ env.PROJECT_NAME }}
33+
34+
- name: Checkout raylib repo
35+
uses: actions/checkout@v4
36+
with:
37+
repository: raysan5/raylib
38+
path: raylib
39+
40+
- name: Setup Release Paths
41+
run: |
42+
echo "PROJECT_RELEASE_PATH=${{ env.PROJECT_NAME }}_v${{ github.event.release.tag_name }}_linux_x64" >> $GITHUB_ENV
43+
shell: bash
44+
if: github.event_name == 'release' && github.event.action == 'published'
45+
46+
- name: Setup Environment
47+
run: |
48+
sudo apt-get update -qq
49+
sudo apt-get install -y --no-install-recommends libglfw3 libglfw3-dev libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libxext-dev libxfixes-dev libwayland-dev libxkbcommon-dev
50+
mkdir ${{ env.PROJECT_RELEASE_PATH }}
51+
ls
52+
shell: bash
53+
54+
- name: Build raylib Library
55+
run: |
56+
cd raylib/src
57+
gcc --version
58+
make PLATFORM=PLATFORM_DESKTOP BUILD_MODE=RELEASE RAYLIB_LIBTYPE=STATIC RAYLIB_PROJECT_RELEASE_PATH=. -B
59+
60+
- name: Build Product
61+
run: |
62+
cd ${{ env.PROJECT_NAME }}/src
63+
make PLATFORM=PLATFORM_DESKTOP BUILD_MODE=RELEASE PROJECT_CUSTOM_FLAGS=${{ env.PROJECT_CUSTOM_FLAGS }} PROJECT_BUILD_PATH=. RAYLIB_SRC_PATH=../../raylib/src
64+
65+
- name: Generate Artifacts
66+
run: |
67+
ls ${{ env.PROJECT_BUILD_PATH }}
68+
cp ${{ env.PROJECT_BUILD_PATH }}/${{ env.PROJECT_NAME }} ${{ env.PROJECT_RELEASE_PATH }}
69+
cp -r ${{ env.PROJECT_NAME }}/${{ env.PROJECT_RESOURCES_PATH }} ${{ env.PROJECT_RELEASE_PATH }}
70+
cp ${{ env.PROJECT_NAME }}/README.md ${{ env.PROJECT_RELEASE_PATH }}
71+
cp ${{ env.PROJECT_NAME }}/LICENSE ${{ env.PROJECT_RELEASE_PATH }}
72+
ls ${{ env.PROJECT_RELEASE_PATH }}
73+
7z a ./${{ env.PROJECT_RELEASE_PATH }}.zip ./${{ env.PROJECT_RELEASE_PATH }}
74+
75+
- name: Upload Artifacts
76+
uses: actions/upload-artifact@v4
77+
with:
78+
name: ${{ env.PROJECT_RELEASE_PATH }}.zip
79+
path: ./${{ env.PROJECT_RELEASE_PATH }}.zip
80+
81+
- name: Upload Artifact to Release
82+
uses: softprops/action-gh-release@v1
83+
with:
84+
files: ${{ env.PROJECT_RELEASE_PATH }}.zip
85+
env:
86+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
87+
if: github.event_name == 'release' && github.event.action == 'published'

.github/workflows/macos.yml

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
name: macOS
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
paths:
7+
- 'src/**'
8+
- '.github/workflows/macos.yml'
9+
release:
10+
types: [published]
11+
12+
permissions:
13+
contents: read
14+
15+
jobs:
16+
build:
17+
permissions:
18+
contents: write # for actions/upload-release-asset to upload release asset
19+
runs-on: macos-latest
20+
21+
env:
22+
PROJECT_NAME: ${{ github.event.repository.name }}
23+
PROJECT_BUILD_PATH: ${{ github.event.repository.name }}/src
24+
PROJECT_RELEASE_PATH: ${{ github.event.repository.name }}_dev_macos
25+
PROJECT_CUSTOM_FLAGS: ""
26+
PROJECT_RESOURCES_PATH: src/resources
27+
28+
steps:
29+
- name: Checkout this repo
30+
uses: actions/checkout@master
31+
with:
32+
path: ${{ env.PROJECT_NAME }}
33+
34+
- name: Checkout raylib repo
35+
uses: actions/checkout@v4
36+
with:
37+
repository: raysan5/raylib
38+
path: raylib
39+
40+
- name: Setup Release Paths
41+
run: |
42+
echo "PROJECT_RELEASE_PATH=${{ env.PROJECT_NAME }}_v${{ github.event.release.tag_name }}_macos" >> $GITHUB_ENV
43+
shell: bash
44+
if: github.event_name == 'release' && github.event.action == 'published'
45+
46+
- name: Setup Environment
47+
run: |
48+
mkdir ${{ env.PROJECT_RELEASE_PATH }}
49+
cd ${{ env.PROJECT_RELEASE_PATH }}
50+
mkdir ${{ env.PROJECT_NAME }}.app
51+
cd ${{ env.PROJECT_NAME }}.app
52+
mkdir Contents
53+
cd Contents
54+
mkdir MacOS
55+
mkdir Resources
56+
cd ../../..
57+
ls
58+
shell: bash
59+
60+
# Generating static library, note that i386 architecture is deprecated
61+
# Defining GL_SILENCE_DEPRECATION because OpenGL is deprecated on macOS
62+
- name: Build raylib Library
63+
run: |
64+
cd raylib/src
65+
clang --version
66+
67+
# Extract version numbers from Makefile
68+
brew install grep
69+
RAYLIB_API_VERSION=`ggrep -Po 'RAYLIB_API_VERSION\s*=\s\K(.*)' Makefile`
70+
RAYLIB_VERSION=`ggrep -Po 'RAYLIB_VERSION\s*=\s\K(.*)' Makefile`
71+
72+
# Build raylib x86_64 static
73+
make PLATFORM=PLATFORM_DESKTOP RAYLIB_LIBTYPE=STATIC CUSTOM_CFLAGS="-target x86_64-apple-macos10.12 -DGL_SILENCE_DEPRECATION"
74+
mv -v -f libraylib.a libraylib_x86_64.a
75+
make clean
76+
77+
# Build raylib arm64 static
78+
make PLATFORM=PLATFORM_DESKTOP RAYLIB_LIBTYPE=STATIC CUSTOM_CFLAGS="-target arm64-apple-macos11 -DGL_SILENCE_DEPRECATION" -B
79+
mv -v -f libraylib.a libraylib_arm64.a
80+
make clean
81+
82+
# Join x86_64 and arm64 static
83+
lipo -create -output libraylib.a libraylib_x86_64.a libraylib_arm64.a
84+
lipo libraylib.a -detailed_info
85+
cd ../..
86+
87+
- name: Build Product
88+
run: |
89+
cd ${{ env.PROJECT_NAME }}/src
90+
91+
# Build project x86_64 binary
92+
# TODO: Link with x86_64 raylib library: libraylib_x86_64.a
93+
make PLATFORM=PLATFORM_DESKTOP BUILD_MODE=RELEASE PROJECT_CUSTOM_FLAGS=${{ env.PROJECT_CUSTOM_FLAGS }} PROJECT_BUILD_PATH=. RAYLIB_SRC_PATH=../../raylib/src PROJECT_CUSTOM_FLAGS="-target x86_64-apple-macos10.12"
94+
mv -v -f ${{ env.PROJECT_NAME }} ${{ env.PROJECT_NAME }}_x86_64
95+
make clean
96+
97+
# Build project arm64 binary
98+
# TODO: Link with arm64 raylib library: libraylib_arm.a
99+
make PLATFORM=PLATFORM_DESKTOP BUILD_MODE=RELEASE PROJECT_CUSTOM_FLAGS=${{ env.PROJECT_CUSTOM_FLAGS }} PROJECT_BUILD_PATH=. RAYLIB_SRC_PATH=../../raylib/src PROJECT_CUSTOM_FLAGS="-target arm64-apple-macos11"
100+
mv -v -f ${{ env.PROJECT_NAME }} ${{ env.PROJECT_NAME }}_arm64
101+
make clean
102+
103+
# Join x86_64 and arm64 binaries
104+
lipo -create -output ${{ env.PROJECT_NAME }} ${{ env.PROJECT_NAME }}_x86_64 ${{ env.PROJECT_NAME }}_arm64
105+
lipo ${{ env.PROJECT_NAME }} -detailed_info
106+
cd ..
107+
108+
- name: Generate Artifacts
109+
run: |
110+
ls ${{ env.PROJECT_BUILD_PATH }}
111+
cp ${{ env.PROJECT_BUILD_PATH }}/${{ env.PROJECT_NAME }} ${{ env.PROJECT_RELEASE_PATH }}/${{ env.PROJECT_NAME }}.app/Contents/MacOS
112+
cp ${{ env.PROJECT_NAME }}/src/raylib.icns ${{ env.PROJECT_RELEASE_PATH }}/${{ env.PROJECT_NAME }}.app/Contents/Resources
113+
cp ${{ env.PROJECT_NAME }}/src/Info.plist ${{ env.PROJECT_RELEASE_PATH }}/${{ env.PROJECT_NAME }}.app/Contents
114+
cp -r ${{ env.PROJECT_NAME }}/${{ env.PROJECT_RESOURCES_PATH }} ${{ env.PROJECT_RELEASE_PATH }}/${{ env.PROJECT_NAME }}.app/Contents
115+
cp ${{ env.PROJECT_NAME }}/README.md ${{ env.PROJECT_RELEASE_PATH }}
116+
cp ${{ env.PROJECT_NAME }}/LICENSE ${{ env.PROJECT_RELEASE_PATH }}
117+
ls ${{ env.PROJECT_RELEASE_PATH }}
118+
7z a ./${{ env.PROJECT_RELEASE_PATH }}.zip ./${{ env.PROJECT_RELEASE_PATH }}
119+
120+
- name: Upload Artifacts
121+
uses: actions/upload-artifact@v4
122+
with:
123+
name: ${{ env.PROJECT_RELEASE_PATH }}.zip
124+
path: ./${{ env.PROJECT_RELEASE_PATH }}.zip
125+
126+
- name: Upload Artifact to Release
127+
uses: softprops/action-gh-release@v1
128+
with:
129+
files: ${{ env.PROJECT_RELEASE_PATH }}.zip
130+
env:
131+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
132+
if: github.event_name == 'release' && github.event.action == 'published'

.github/workflows/webassembly.yml

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
name: WebAssembly
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
paths:
7+
- 'src/**'
8+
- '.github/workflows/webassembly.yml'
9+
release:
10+
types: [published]
11+
12+
permissions:
13+
contents: read
14+
15+
jobs:
16+
build:
17+
permissions:
18+
contents: write # for actions/upload-release-asset to upload release asset
19+
runs-on: windows-latest
20+
21+
env:
22+
PROJECT_NAME: ${{ github.event.repository.name }}
23+
PROJECT_BUILD_PATH: ${{ github.event.repository.name }}\\src
24+
PROJECT_RELEASE_PATH: ${{ github.event.repository.name }}_dev_wasm
25+
26+
steps:
27+
- name: Checkout this repo
28+
uses: actions/checkout@master
29+
with:
30+
path: ${{ env.PROJECT_NAME }}
31+
32+
- name: Checkout raylib repo
33+
uses: actions/checkout@v4
34+
with:
35+
repository: raysan5/raylib
36+
path: raylib
37+
38+
- name: Setup emsdk
39+
uses: mymindstorm/setup-emsdk@v14
40+
with:
41+
version: 3.1.64
42+
actions-cache-folder: 'emsdk-cache'
43+
44+
- name: Setup Release Paths
45+
run: |
46+
echo "PROJECT_RELEASE_PATH=${{ env.PROJECT_NAME }}_v${{ github.event.release.tag_name }}_wasm" >> $GITHUB_ENV
47+
shell: bash
48+
if: github.event_name == 'release' && github.event.action == 'published'
49+
50+
- name: Setup Environment
51+
run: |
52+
mkdir ${{ env.PROJECT_RELEASE_PATH }}
53+
dir
54+
55+
- name: Build raylib Library
56+
run: |
57+
cd raylib/src
58+
emcc -v
59+
make PLATFORM=PLATFORM_WEB RAYLIB_BUILD_MODE=RELEASE RAYLIB_LIBTYPE=STATIC EMSDK_PATH="D:/a/${{ env.PROJECT_NAME }}/${{ env.PROJECT_NAME }}/emsdk-cache/emsdk-main" RAYLIB_PROJECT_RELEASE_PATH=. -B
60+
61+
- name: Build Product
62+
run: |
63+
cd ${{ env.PROJECT_NAME }}/src
64+
make PLATFORM=PLATFORM_WEB BUILD_MODE=RELEASE EMSDK_PATH="D:/a/${{ env.PROJECT_NAME }}/${{ env.PROJECT_NAME }}/emsdk-cache/emsdk-main" PROJECT_BUILD_PATH=. RAYLIB_SRC_PATH=../../raylib/src -B
65+
66+
- name: Generate Artifacts
67+
run: |
68+
dir ${{ env.PROJECT_BUILD_PATH }}
69+
copy /Y ${{ env.PROJECT_BUILD_PATH }}\${{ env.PROJECT_NAME }}.wasm ${{ env.PROJECT_RELEASE_PATH }}\${{ env.PROJECT_NAME }}.wasm
70+
copy /Y ${{ env.PROJECT_BUILD_PATH }}\${{ env.PROJECT_NAME }}.data ${{ env.PROJECT_RELEASE_PATH }}\${{ env.PROJECT_NAME }}.data
71+
copy /Y ${{ env.PROJECT_BUILD_PATH }}\${{ env.PROJECT_NAME }}.js ${{ env.PROJECT_RELEASE_PATH }}\${{ env.PROJECT_NAME }}.js
72+
copy /Y ${{ env.PROJECT_BUILD_PATH }}\${{ env.PROJECT_NAME }}.html ${{ env.PROJECT_RELEASE_PATH }}\index.html
73+
copy /Y ${{ env.PROJECT_NAME }}\README.md ${{ env.PROJECT_RELEASE_PATH }}\README.md
74+
copy /Y ${{ env.PROJECT_NAME }}\LICENSE ${{ env.PROJECT_RELEASE_PATH }}\LICENSE
75+
dir ${{ env.PROJECT_RELEASE_PATH }}
76+
7z a -tzip -r .\${{ env.PROJECT_RELEASE_PATH }}.zip .\${{ env.PROJECT_RELEASE_PATH }}\*
77+
shell: cmd
78+
79+
- name: Upload Artifacts
80+
uses: actions/upload-artifact@v4
81+
with:
82+
name: ${{ env.PROJECT_RELEASE_PATH }}.zip
83+
path: ./${{ env.PROJECT_RELEASE_PATH }}.zip
84+
85+
- name: Upload Artifact to Release
86+
uses: softprops/action-gh-release@v1
87+
with:
88+
files: ${{ env.PROJECT_RELEASE_PATH }}.zip
89+
env:
90+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
91+
if: github.event_name == 'release' && github.event.action == 'published'

0 commit comments

Comments
 (0)