From af456e6c11c477a2f47a5233df8e0ec876eebd9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Wed, 22 Nov 2023 22:46:07 +0100 Subject: [PATCH] Add workflow for making releases --- .github/workflows/release.yml | 161 ++++++++++++++++++++++++++++++++++ CMakeLists.txt | 11 ++- 2 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..ed5c85a --- /dev/null +++ b/.github/workflows/release.yml @@ -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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 86c5f8e..b5c9f99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) @@ -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()