Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
kovzol committed Oct 6, 2023
2 parents 87be458 + 0a9f65a commit 8df8e48
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 0 deletions.
15 changes: 15 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,18 @@ jobs:
run: qmake
- name: make
run: make

# This requires too much disk space (more than 40 GB), so it is disabled for now:

# wasm:
#
# runs-on: ubuntu-latest
#
# steps:
# - uses: actions/checkout@v1
# - name: prerequisites
# run: sudo apt update && sudo apt install build-essential libclang-13-dev cmake ninja-build libgl-dev libegl-dev libfontconfig-dev
# - name: compile-qt-web
# run: cd tools && ./compile-qt-web
# - name: compile-xaos-web
# run: cd tools && ./compile-xaos-web
46 changes: 46 additions & 0 deletions tools/compile-qt-web
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/bin/bash

# This script compiles Qt6 to be able to build XaoS for WebAssembly.
# Make sure that you have enough disk space. At least 45 GB is recommended.

# See also https://doc.qt.io/qt-6.5/wasm.html and https://wiki.qt.io/Building_Qt_6_from_Git.

QT6_VERSION=6.5.3
EMSDK_VERSION=3.1.25
PARALLEL=4

QT6_HOST_PATH=`pwd`/qt6-host-install

set -e

# Get emscripten:
test -x emsdk || git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
git pull
./emsdk install $EMSDK_VERSION
./emsdk activate --embedded $EMSDK_VERSION
cd ..

# Get Qt:
git clone git://code.qt.io/qt/qt5.git qt6
cd qt6
git switch $QT6_VERSION
perl init-repository

# Compile Qt for the Linux host
cd ..
mkdir qt6-host-build
cd qt6-host-build
../qt6/configure -prefix $QT6_HOST_PATH
cmake --build . --parallel $PARALLEL
cmake --install .

# Compile Qt for WebAssembly
cd ..
mkdir qt6-wasm-build
cd qt6-wasm-build
. ../emsdk/emsdk_env.sh
../qt6/configure -xplatform wasm-emscripten -nomake examples -prefix $PWD/qtbase \
-opensource -confirm-license -qt-host-path $QT6_HOST_PATH -device-option QT_EMSCRIPTEN_ASYNCIFY=1
cmake --build . --parallel $PARALLEL -t qtbase -t qtdeclarative -t qtimageformats -t qsvgicon -t qsvg
cd ..
16 changes: 16 additions & 0 deletions tools/compile-xaos-web
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

# This script compiles XaoS for WebAssembly.

set -e

QT6_WASM_BUILD=`pwd`/qt6-wasm-build
test -x $QT6_WASM_BUILD || {
echo "Run compile-qt-web first."
exit 1
}

. emsdk/emsdk_env.sh
cd ..
$QT6_WASM_BUILD/qtbase/bin/qmake
make || true

0 comments on commit 8df8e48

Please sign in to comment.