Skip to content

Commit fe42681

Browse files
committed
Initial attempt at getting xeus-cpp deployment in readthedocs PR preview
1 parent 3d3c82d commit fe42681

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

docs/conf.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,85 @@
5353
command = 'mkdir {0}/build; cd {0}/build; cmake ../ -DClang_DIR=/usr/lib/llvm-16/build/lib/cmake/clang\
5454
-DLLVM_DIR=/usr/lib/llvm-16/build/lib/cmake/llvm -DCPPINTEROP_ENABLE_DOXYGEN=ON\
5555
-DCPPINTEROP_INCLUDE_DOCS=ON'.format(CPPINTEROP_ROOT)
56+
command_emscripten = 'git clone https://github.com/emscripten-core/emsdk.git {0}/emsdk;\
57+
{0}/emsdk/emsdk install 3.1.73;\
58+
{0}/emsdk/emsdk activate 3.1.73;\
59+
cd {0}/emsdk/;\
60+
export PATH="{0}/emsdk/upstream/emscripten:$PATH";\
61+
export SYSROOT_PATH={0}/emsdk/upstream/emscripten/cache/sysroot;\
62+
git clone --depth=1 --branch release/20.x https://github.com/llvm/llvm-project.git {0}/llvm-project;\
63+
cd {0}/llvm-project;\
64+
git apply -v {0}/CppInterOp/patches/llvm/emscripten-clang20-*.patch\
65+
mkdir {0}/llvm-project/native_build;\
66+
cd {0}/llvm-project/native_build;\
67+
cmake -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=host -DCMAKE_BUILD_TYPE=Release {0}/llvm-project/llvm;\
68+
cmake --build . --target llvm-tblgen clang-tblgen --parallel $(nproc --all);\
69+
export NATIVE_DIR={0}/llvm-project/native_build/bin/;\
70+
mkdir {0}/llvm-project/build;\
71+
cd {0}/llvm-project/build;\
72+
emcmake cmake -DCMAKE_BUILD_TYPE=Release \
73+
-DLLVM_HOST_TRIPLE=wasm32-unknown-emscripten \
74+
-DLLVM_ENABLE_ASSERTIONS=ON \
75+
-DLLVM_TARGETS_TO_BUILD="WebAssembly" \
76+
-DLLVM_ENABLE_LIBEDIT=OFF \
77+
-DLLVM_ENABLE_PROJECTS="clang;lld" \
78+
-DLLVM_ENABLE_ZSTD=OFF \
79+
-DLLVM_ENABLE_LIBXML2=OFF \
80+
-DCLANG_ENABLE_STATIC_ANALYZER=OFF \
81+
-DCLANG_ENABLE_ARCMT=OFF \
82+
-DCLANG_ENABLE_BOOTSTRAP=OFF \
83+
-DCMAKE_CXX_FLAGS="-Dwait4=__syscall_wait4" \
84+
-DLLVM_INCLUDE_BENCHMARKS=OFF \
85+
-DLLVM_INCLUDE_EXAMPLES=OFF \
86+
-DLLVM_INCLUDE_TESTS=OFF \
87+
-DLLVM_ENABLE_THREADS=OFF \
88+
-DLLVM_BUILD_TOOLS=OFF \
89+
-DLLVM_ENABLE_LIBPFM=OFF \
90+
-DCLANG_BUILD_TOOLS=OFF \
91+
-DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \
92+
{0}/llvm-project/llvm;\
93+
emmake make libclang -j $(nproc --all);\
94+
emmake make clangInterpreter clangStaticAnalyzerCore -j $(nproc --all);\
95+
emmake make lldWasm -j $(nproc --all);\
96+
export LLVM_BUILD_DIR={0}/llvm-project/build;\
97+
mkdir {0}/build_native;\
98+
cd {0};\
99+
micromamba create -f environment-wasm.yml --platform=emscripten-wasm32;\
100+
micromamba activate CppInterOp-wasm;\
101+
export PREFIX=$CONDA_PREFIX;\
102+
export CMAKE_PREFIX_PATH=$PREFIX;\
103+
export CMAKE_SYSTEM_PREFIX_PATH=$PREFIX;\
104+
cd {0}/build_native;\
105+
emcmake cmake -DCMAKE_BUILD_TYPE=Release \
106+
-DLLVM_DIR=$LLVM_BUILD_DIR/lib/cmake/llvm \
107+
-DLLD_DIR=$LLVM_BUILD_DIR/lib/cmake/lld \
108+
-DClang_DIR=$LLVM_BUILD_DIR/lib/cmake/clang \
109+
-DBUILD_SHARED_LIBS=ON \
110+
-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \
111+
-DCMAKE_INSTALL_PREFIX=$PREFIX \
112+
-DSYSROOT_PATH=$SYSROOT_PATH \
113+
{0};\
114+
emake make -j $(nproc --all) install;\
115+
cd {0};\
116+
git clone --depth=1 https://github.com/compiler-research/xeus-cpp.git {0}/xeus-cpp;\
117+
mkdir {0}/xeus-cpp/build;\
118+
cd {0}/xeus-cpp/build;\
119+
emcmake cmake \
120+
-DCMAKE_BUILD_TYPE=Release \
121+
-DCMAKE_PREFIX_PATH=$PREFIX \
122+
-DCMAKE_INSTALL_PREFIX=$PREFIX \
123+
-DXEUS_CPP_EMSCRIPTEN_WASM_BUILD=ON \
124+
-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \
125+
-DXEUS_CPP_RESOURCE_DIR=$LLVM_BUILD_DIR/lib/clang/$LLVM_VERSION \
126+
-DSYSROOT_PATH=$SYSROOT_PATH \
127+
{0}/xeus-cpp/;\
128+
emmake make -j $(nproc --all) install;\
129+
cd {0};\
130+
micromamba create -n xeus-lite-host jupyterlite-core -c conda-forge;\
131+
micromamba activate xeus-lite-host;\
132+
python -m pip install jupyterlite-xeus jupyter_server;\
133+
jupyter lite build --XeusAddon.prefix=$PREFIX --contents xeus-cpp/notebooks/xeus-cpp-lite-demo.ipynb --contents notebooks/smallpt.ipynb --contents notebooks/images/marie.png --contents notebooks/audio/audio.wav --output-dir $READTHEDOCS_OUTPUT/html/xeus-cpp; '.format(CPPINTEROP_ROOT)
56134
subprocess.call(command, shell=True)
57135
subprocess.call('doxygen {0}/build/docs/doxygen.cfg'.format(CPPINTEROP_ROOT), shell=True)
136+
subprocess.call('doxygen {0}/build/docs/doxygen.cfg'.format(CPPINTEROP_ROOT), shell=True)
137+
subprocess.call(command_emscripten.format(CPPINTEROP_ROOT), shell=True)

0 commit comments

Comments
 (0)