diff --git a/.github/workflows/analysis-actions.yml b/.github/workflows/analysis-actions.yml index 7f7c7b642..8188345d7 100644 --- a/.github/workflows/analysis-actions.yml +++ b/.github/workflows/analysis-actions.yml @@ -26,7 +26,7 @@ jobs: tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64 - name: Build env: - BUILD_OPTIONS: -DESCARGOT_HOST=linux -DESCARGOT_ARCH=x64 -DESCARGOT_MODE=release -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_CODE_CACHE=ON -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja + BUILD_OPTIONS: -DESCARGOT_MODE=release -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_CODE_CACHE=ON -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja run: | export PATH=$GITHUB_WORKSPACE/cov-analysis-linux64/bin:$PATH cmake -H. -Bout/coverity_scan $BUILD_OPTIONS @@ -59,7 +59,7 @@ jobs: sudo apt-get install -y pypy ninja-build libicu-dev gcovr - name: Build x64 env: - BUILD_OPTIONS: -DESCARGOT_HOST=linux -DESCARGOT_ARCH=x64 -DESCARGOT_MODE=release -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_COVERAGE=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja + BUILD_OPTIONS: -DESCARGOT_MODE=release -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_COVERAGE=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja run: | cmake -H. -Bout/coverage $BUILD_OPTIONS ninja -Cout/coverage diff --git a/.github/workflows/es-actions.yml b/.github/workflows/es-actions.yml index 60f710bc2..6658dae7b 100644 --- a/.github/workflows/es-actions.yml +++ b/.github/workflows/es-actions.yml @@ -5,6 +5,7 @@ on: branches: [ master ] pull_request: branches: [ master ] + workflow_dispatch: env: RUNNER: tools/run-tests.py @@ -33,7 +34,7 @@ jobs: - name: Install Packages run: | brew update - brew install cmake ninja pkg-config icu4c + brew install ninja pkg-config icu4c@75 - name: Build x64 env: BUILD_OPTIONS: -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja @@ -41,7 +42,8 @@ jobs: # check cpu sysctl -a | grep machdep.cpu # add icu path to pkg_config_path - export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig:$PKG_CONFIG_PATH" + brew --prefix icu4c@75 + export PKG_CONFIG_PATH="/usr/local/opt/icu4c@75/lib/pkgconfig:$PKG_CONFIG_PATH" cmake -H. -Bout/debug/ -DESCARGOT_MODE=debug $BUILD_OPTIONS ninja -Cout/debug/ $RUNNER --engine="./out/debug/escargot" new-es @@ -59,7 +61,7 @@ jobs: - name: Install Packages run: | brew update - brew install cmake ninja pkg-config icu4c + brew install ninja pkg-config icu4c@75 - name: Build arm64 env: BUILD_OPTIONS: -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja @@ -67,7 +69,8 @@ jobs: # check cpu sysctl -a | grep machdep.cpu # add icu path to pkg_config_path - export PKG_CONFIG_PATH="/opt/homebrew/opt/icu4c/lib/pkgconfig:$PKG_CONFIG_PATH" + brew --prefix icu4c@75 + export PKG_CONFIG_PATH="/opt/homebrew/opt/icu4c@75/lib/pkgconfig:$PKG_CONFIG_PATH" cmake -H. -Bout/debug/ -DESCARGOT_MODE=debug $BUILD_OPTIONS ninja -Cout/debug/ $RUNNER --engine="./out/debug/escargot" new-es @@ -89,7 +92,7 @@ jobs: - name: Install Packages run: | brew update - brew install cmake pkg-config + brew install pkg-config - name: Set up JDK uses: actions/setup-java@v4.1.0 with: @@ -289,6 +292,7 @@ jobs: run: | sudo apt-get update sudo apt-get install -y ninja-build gcc-multilib g++-multilib python2 + # set python2 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1 - name: Install ICU run: | @@ -311,7 +315,6 @@ jobs: uses: mxschmitt/action-tmate@v3 timeout-minutes: 15 - build-test-on-x64-release: runs-on: ubuntu-latest strategy: @@ -358,26 +361,17 @@ jobs: submodules: true - name: Install Packages run: | + # for i386 ICU + sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install -y ninja-build gcc-multilib g++-multilib - - name: Install ICU - run: | - wget http://mirrors.kernel.org/ubuntu/pool/main/i/icu/libicu-dev_70.1-2ubuntu1_i386.deb - dpkg -X libicu-dev_70.1-2ubuntu1_i386.deb $GITHUB_WORKSPACE/icu32 - wget http://mirrors.kernel.org/ubuntu/pool/main/i/icu/libicu-dev_70.1-2ubuntu1_amd64.deb - dpkg -X libicu-dev_70.1-2ubuntu1_amd64.deb $GITHUB_WORKSPACE/icu64 + sudo apt-get install -y libicu-dev:i386 # install i386 ICU - name: Build x86/x64 env: - BUILD_OPTIONS_X86: -DESCARGOT_MODE=debug -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN=OFF -DESCARGOT_OUTPUT=shell -GNinja + BUILD_OPTIONS_X86: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja BUILD_OPTIONS_X64: -DESCARGOT_MODE=debug -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja run: | - export CXXFLAGS="-I$GITHUB_WORKSPACE/icu32/usr/include" - export LDFLAGS="-L$GITHUB_WORKSPACE/icu32/usr/lib/i386-linux-gnu -Wl,-rpath=$GITHUB_WORKSPACE/icu32/usr/lib/i386-linux-gnu" - export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/icu32/usr/lib/i386-linux-gnu/pkgconfig cmake -H. -Bout/debug/x86 $BUILD_OPTIONS_X86 - export CXXFLAGS="-I$GITHUB_WORKSPACE/icu64/usr/include" - export LDFLAGS="-L$GITHUB_WORKSPACE/icu64/usr/lib/x86_64-linux-gnu -Wl,-rpath=$GITHUB_WORKSPACE/icu64/usr/lib/x86_64-linux-gnu" - export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/icu64/usr/lib/x86_64-linux-gnu/pkgconfig cmake -H. -Bout/debug/x64 $BUILD_OPTIONS_X64 ninja -Cout/debug/x86 ninja -Cout/debug/x64 @@ -476,7 +470,7 @@ jobs: sudo apt-get install -y ninja-build gcc-multilib g++-multilib - name: Build x86/x64 env: - BUILD_OPTIONS_X86: -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_THREADING=ON -DESCARGOT_DEBUGGER=1 -DESCARGOT_USE_EXTENDED_API=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=cctest -GNinja + BUILD_OPTIONS_X86: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_THREADING=ON -DESCARGOT_DEBUGGER=1 -DESCARGOT_USE_EXTENDED_API=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=cctest -GNinja BUILD_OPTIONS_X64: -DESCARGOT_MODE=debug -DESCARGOT_THREADING=1 -DESCARGOT_DEBUGGER=1 -DESCARGOT_USE_EXTENDED_API=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=cctest -GNinja run: | cmake -H. -Bout/cctest/x86 $BUILD_OPTIONS_X86 @@ -496,39 +490,27 @@ jobs: submodules: true - name: Install Packages run: | + # for i386 ICU + sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install -y ninja-build gcc-multilib g++-multilib - - name: Install ICU - run: | - wget http://mirrors.kernel.org/ubuntu/pool/main/i/icu/libicu-dev_70.1-2ubuntu1_i386.deb - dpkg -X libicu-dev_70.1-2ubuntu1_i386.deb $GITHUB_WORKSPACE/icu32 - wget http://mirrors.kernel.org/ubuntu/pool/main/i/icu/libicu-dev_70.1-2ubuntu1_amd64.deb - dpkg -X libicu-dev_70.1-2ubuntu1_amd64.deb $GITHUB_WORKSPACE/icu64 + sudo apt-get install -y libicu-dev:i386 # install i386 ICU - name: Build x86 env: - BUILD_OPTIONS: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN=OFF -DESCARGOT_CODE_CACHE=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja + BUILD_OPTIONS: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_CODE_CACHE=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja run: | - export CXXFLAGS="-I$GITHUB_WORKSPACE/icu32/usr/include" - export LDFLAGS="-L$GITHUB_WORKSPACE/icu32/usr/lib/i386-linux-gnu -Wl,-rpath=$GITHUB_WORKSPACE/icu32/usr/lib/i386-linux-gnu" - export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/icu32/usr/lib/i386-linux-gnu/pkgconfig cmake -H. -Bout/codecache/x86 $BUILD_OPTIONS ninja -Cout/codecache/x86 - name: Build x64 env: BUILD_OPTIONS: -DESCARGOT_MODE=debug -DESCARGOT_CODE_CACHE=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja run: | - export CXXFLAGS="-I$GITHUB_WORKSPACE/icu64/usr/include" - export LDFLAGS="-L$GITHUB_WORKSPACE/icu64/usr/lib/x86_64-linux-gnu -Wl,-rpath=$GITHUB_WORKSPACE/icu64/usr/lib/x86_64-linux-gnu" - export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/icu64/usr/lib/x86_64-linux-gnu/pkgconfig cmake -H. -Bout/codecache/x64 $BUILD_OPTIONS ninja -Cout/codecache/x64 - name: Build x64 Release Mode env: BUILD_OPTIONS: -DESCARGOT_MODE=release -DESCARGOT_CODE_CACHE=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja run: | - export CXXFLAGS="-I$GITHUB_WORKSPACE/icu64/usr/include" - export LDFLAGS="-L$GITHUB_WORKSPACE/icu64/usr/lib/x86_64-linux-gnu -Wl,-rpath=$GITHUB_WORKSPACE/icu64/usr/lib/x86_64-linux-gnu" - export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/icu64/usr/lib/x86_64-linux-gnu/pkgconfig cmake -H. -Bout/codecache/release/x64 $BUILD_OPTIONS ninja -Cout/codecache/release/x64 - name: Run x86 test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..39204b4f6 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,194 @@ +name: Release + +on: + push: + tags: + - "v*.*.*" + +env: + RUNNER: tools/run-tests.py + BUILD_OPTIONS: -DESCARGOT_MODE=release -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=shell -GNinja + +jobs: + build-mac64: + runs-on: macos-13 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Install Packages + run: | + brew update + brew install ninja icu4c@75 + - name: Build x64 + run: | + # check cpu + sysctl -a | grep machdep.cpu + # add icu path to pkg_config_path + brew --prefix icu4c@75 + export PKG_CONFIG_PATH="/usr/local/opt/icu4c@75/lib/pkgconfig:$PKG_CONFIG_PATH" + cmake -H. -Bout/ $BUILD_OPTIONS + ninja -Cout/ + - name: Check + run: | + file out/escargot + strip out/escargot + $RUNNER --engine="$GITHUB_WORKSPACE/out/escargot" new-es + mv out/escargot out/escargot-mac64 + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: mac64-result + path: out/escargot-mac64 + + build-mac64arm: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Install Packages + run: | + brew update + brew install ninja icu4c@75 + - name: Build arm64 + run: | + # check cpu + sysctl -a | grep machdep.cpu + # add icu path to pkg_config_path + brew --prefix icu4c@75 + export PKG_CONFIG_PATH="/opt/homebrew/opt/icu4c@75/lib/pkgconfig:$PKG_CONFIG_PATH" + cmake -H. -Bout/ $BUILD_OPTIONS + ninja -Cout/ + - name: Check + run: | + file out/escargot + strip out/escargot + $RUNNER --engine="$GITHUB_WORKSPACE/out/escargot" new-es + mv out/escargot out/escargot-mac64arm + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: mac64arm-result + path: out/escargot-mac64arm + + build-windows: + runs-on: windows-2022 + strategy: + matrix: + arch: [x86, x64] + steps: + - name: Set git cllf config + run: | + git config --global core.autocrlf input + git config --global core.eol lf + - uses: actions/checkout@v4 + with: + submodules: true + - uses: szenius/set-timezone@v2.0 + with: + timezoneWindows: "Pacific Standard Time" + - uses: lukka/get-cmake@latest + - uses: GuillaumeFalourd/setup-windows10-sdk-action@v2 + with: + sdk-version: 20348 + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Install msvc redist package + run: | + (new-object System.Net.WebClient).DownloadFile('https://github.com/abbodi1406/vcredist/releases/download/v0.73.0/VisualCppRedist_AIO_x86_x64.exe','VisualCppRedist_AIO_x86_x64.exe') + .\VisualCppRedist_AIO_x86_x64.exe /y + - uses: ilammy/msvc-dev-cmd@v1.13.0 + with: + arch: ${{ matrix.arch }} + sdk: "10.0.20348.0" + - name: Build ${{ matrix.arch }} + run: | + CMake -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_VERSION:STRING="10.0" -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} -DESCARGOT_ARCH=${{ matrix.arch }} -Bout/ -DESCARGOT_OUTPUT=shell -DESCARGOT_LIBICU_SUPPORT=ON -DESCARGOT_LIBICU_SUPPORT_WITH_DLOPEN=OFF -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -G Ninja -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=release + CMake --build out/ --config Release + - name: Check + run: | + python tools\run-tests.py --engine=%cd%\out\escargot.exe new-es + rename out\escargot.exe escargot-win-${{ matrix.arch }}.exe + shell: cmd + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: win-${{ matrix.arch }}-result + path: out\escargot-win-${{ matrix.arch }}.exe + + build-linux: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Install Packages + run: | + # for i386 ICU + sudo dpkg --add-architecture i386 + sudo apt-get update + sudo apt-get install -y ninja-build libicu-dev gcc-multilib g++-multilib + sudo apt-get install -y libicu-dev:i386 # install i386 ICU + - name: Build x86/x64 + run: | + cmake -H. -Bout/x86 -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_TEMPORAL=ON $BUILD_OPTIONS + cmake -H. -Bout/x64 -DESCARGOT_TEMPORAL=ON $BUILD_OPTIONS + ninja -Cout/x86 + ninja -Cout/x64 + - name: Check + run: | + file out/x86/escargot + file out/x64/escargot + strip out/x86/escargot + strip out/x64/escargot + # set locale + sudo locale-gen en_US.UTF-8 + export LANG=en_US.UTF-8 + locale + # run test + $RUNNER --engine="$GITHUB_WORKSPACE/out/x86/escargot" new-es + $RUNNER --engine="$GITHUB_WORKSPACE/out/x64/escargot" new-es + mv out/x86/escargot out/escargot-linux-x86 + mv out/x64/escargot out/escargot-linux-x64 + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: linux-result + path: out/escargot-linux-* + + update-release: + needs: [build-mac64, build-mac64arm, build-windows, build-linux] + runs-on: ubuntu-latest + steps: + - name: Download mac64 result + uses: actions/download-artifact@v4 + with: + name: mac64-result + path: artifacts + - name: Download mac64arm result + uses: actions/download-artifact@v4 + with: + name: mac64arm-result + path: artifacts + - name: Download win32 result + uses: actions/download-artifact@v4 + with: + name: win-x86-result + path: artifacts + - name: Download win64 result + uses: actions/download-artifact@v4 + with: + name: win-x64-result + path: artifacts + - name: Download linux result + uses: actions/download-artifact@v4 + with: + name: linux-result + path: artifacts + - name: Upload to release + uses: softprops/action-gh-release@v2 + with: + files: | + artifacts/escargot-* diff --git a/build/target.cmake b/build/target.cmake index d2a6d1cb9..6145a6082 100644 --- a/build/target.cmake +++ b/build/target.cmake @@ -157,6 +157,8 @@ ELSEIF (${ESCARGOT_HOST} STREQUAL "darwin") IF ((NOT ${ESCARGOT_ARCH} STREQUAL "x64") AND (NOT ${ESCARGOT_ARCH} STREQUAL "aarch64")) MESSAGE (FATAL_ERROR ${ESCARGOT_ARCH} " is unsupported") ENDIF() + # recent macOS supports only ICU version 75 that requires c++17 or above + SET (ESCARGOT_CXXFLAGS ${ESCARGOT_CXXFLAGS} -std=c++17) SET (ESCARGOT_LDFLAGS -lpthread -Wl,-dead_strip) SET (ESCARGOT_BUILD_64BIT_LARGE ON) # bdwgc mac cannot support pthread_getattr_np