Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add workflow for making releases #121

Merged
merged 1 commit into from
Nov 23, 2023
Merged
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
161 changes: 161 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
name: release

on:
push:
tags:
- "v*.*.*"

jobs:
linux-x86:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: jirutka/setup-alpine@v1
with:
arch: x86
packages: "build-base make cmake"
- name: build
shell: alpine.sh {0}
run: |
mkdir build
cd build
cmake -DBUILD_STATIC_QJS_EXE=ON ..
cd ..
cmake --build build --target qjs_exe -j$(getconf _NPROCESSORS_ONLN)
mv build/qjs build/qjs-linux-x86
- name: check
shell: alpine.sh {0}
run: |
file build/qjs-linux-x86
- name: upload
uses: actions/upload-artifact@v3
with:
name: qjs
path: build/qjs-linux-x86

linux-x86_64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: jirutka/setup-alpine@v1
with:
arch: x86_64
packages: "build-base make cmake"
- name: build
shell: alpine.sh {0}
run: |
mkdir build
cd build
cmake -DBUILD_STATIC_QJS_EXE=ON ..
cd ..
cmake --build build --target qjs_exe -j$(getconf _NPROCESSORS_ONLN)
mv build/qjs build/qjs-linux-x86_64
- name: check
shell: alpine.sh {0}
run: |
file build/qjs-linux-x86_64
- name: upload
uses: actions/upload-artifact@v3
with:
name: qjs
path: build/qjs-linux-x86_64

macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: build
run: |
mkdir build
cd build
cmake -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" ..
make -j$(getconf _NPROCESSORS_ONLN)
mv qjs qjs-darwin
- name: check
run: |
lipo -info build/qjs-darwin
- name: upload
uses: actions/upload-artifact@v3
with:
name: qjs
path: build/qjs-darwin

windows-x86:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v3
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: mingw32
install: >-
git
make
pacboy: >-
cmake:p
ninja:p
toolchain:p
- name: build
run: |
make
mv build/qjs.exe build/qjs-windows-x86.exe
- name: check
run: |
ldd build/qjs-windows-x86.exe
- name: upload
uses: actions/upload-artifact@v3
with:
name: qjs
path: build/qjs-windows-x86.exe

windows-x86_64:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v3
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: mingw64
install: >-
git
make
pacboy: >-
cmake:p
ninja:p
toolchain:p
- name: build
run: |
make
mv build/qjs.exe build/qjs-windows-x86_64.exe
- name: check
run: |
ldd build/qjs-windows-x86_64.exe
- name: upload
uses: actions/upload-artifact@v3
with:
name: qjs
path: build/qjs-windows-x86_64.exe

upload-to-release:
needs: [linux-x86, linux-x86_64, macos, windows-x86, windows-x86_64]
runs-on: ubuntu-latest
steps:
- name: get assets
uses: actions/download-artifact@v3
with:
path: build
- name: release
uses: softprops/action-gh-release@v1
with:
files: |
build/qjs/qjs-linux-x86_64
build/qjs/qjs-linux-x86
build/qjs/qjs-windows-x86.exe
build/qjs/qjs-windows-x86_64.exe
build/qjs/qjs-darwin
11 changes: 8 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ if(BUILD_SHARED_LIBS)
endif()

xoption(BUILD_EXAMPLES "Build examples" OFF)
xoption(BUILD_STATIC_QJS_EXE "Build a static qjs executable" OFF)
xoption(CONFIG_ASAN "Enable AddressSanitizer (ASan)" OFF)
xoption(CONFIG_MSAN "Enable MemorySanitizer (MSan)" OFF)
xoption(CONFIG_UBSAN "Enable UndefinedBehaviorSanitizer (UBSan)" OFF)
Expand Down Expand Up @@ -180,9 +181,13 @@ set_target_properties(qjs_exe PROPERTIES
)
target_compile_definitions(qjs_exe PRIVATE ${qjs_defines})
target_link_libraries(qjs_exe ${qjs_libs})
if(MINGW)
target_link_options(qjs_exe PRIVATE -static -static-libgcc)
else()
if(BUILD_STATIC_QJS_EXE OR MINGW)
target_link_options(qjs_exe PRIVATE -static)
if(MINGW)
target_link_options(qjs_exe PRIVATE -static-libgcc)
endif()
endif()
if(NOT MINGW)
set_target_properties(qjs_exe PROPERTIES ENABLE_EXPORTS TRUE)
endif()

Expand Down