Skip to content

Commit ed6b7f1

Browse files
authored
Initial attempt at getting xeus-cpp deployment in readthedocs PR preview
1 parent e05026a commit ed6b7f1

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

docs/conf.py

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

0 commit comments

Comments
 (0)