Skip to content

Commit ca991d9

Browse files
committed
setup
1 parent d6263f6 commit ca991d9

File tree

2 files changed

+139
-1
lines changed

2 files changed

+139
-1
lines changed

readme.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,10 @@ path/to/ifcc [-h] [-v] [-o <output_file>] <source_file.c>
2525
The options are :
2626
- `-o <output_file>`: Specify the output file name
2727
- `-v`: Enable verbose mode, which prints the symbol table in the output
28-
- `-h`: Show help message
28+
- `-h`: Show help message
29+
30+
## WebAssembly
31+
32+
Si vous souhaitez compiler en WebAssembly, il faut installer différents programmes dont Node.js.
33+
34+
Vous pouvez lancer setup.sh qui le fera à votre place, si vous avez les droits nécessaires évidemment.

setup.sh

+132
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
#!/bin/bash
2+
3+
# Script d'installation des dépendances pour les tests IFCC (WAT/WASM)
4+
# Ce script installe les outils nécessaires pour exécuter ifcc-wat-test.py et ifcc-test.py
5+
6+
set -e # Arrêter le script en cas d'erreur
7+
8+
# Fonction pour afficher les messages en couleur
9+
print_rouge() {
10+
echo -e "\033[1;31m$1\033[0m"
11+
}
12+
13+
print_vert() {
14+
echo -e "\033[1;32m$1\033[0m"
15+
}
16+
17+
print_jaune() {
18+
echo -e "\033[1;33m$1\033[0m"
19+
}
20+
21+
print_vert "Installation des dépendances pour les tests IFCC (WAT/WASM)"
22+
23+
# Vérifier si on est dans un environnement WSL/Linux
24+
if [[ "$(uname -a)" != *"Linux"* ]]; then
25+
print_rouge "Ce script est conçu pour fonctionner sous Linux ou WSL"
26+
exit 1
27+
fi
28+
29+
# Mise à jour des dépôts
30+
print_jaune "Mise à jour des dépôts..."
31+
sudo apt-get update
32+
33+
# Installation des outils de base nécessaires pour la compilation
34+
print_jaune "Installation des outils de base pour la compilation..."
35+
sudo apt-get install -y build-essential cmake python3 python3-pip git curl wget
36+
37+
# Installation de Node.js (nécessaire pour exécuter le WASM)
38+
if ! command -v node &> /dev/null; then
39+
print_jaune "Installation de Node.js..."
40+
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
41+
sudo apt-get install -y nodejs
42+
else
43+
print_vert "Node.js est déjà installé"
44+
fi
45+
46+
# Vérifier la version de Node.js
47+
NODE_VERSION=$(node -v)
48+
print_vert "Version de Node.js installée: $NODE_VERSION"
49+
50+
# Installation de Emscripten (pour emcc)
51+
if ! command -v emcc &> /dev/null; then
52+
print_jaune "Installation d'Emscripten..."
53+
54+
# Cloner le dépôt emsdk
55+
git clone https://github.com/emscripten-core/emsdk.git
56+
57+
# Configurer emsdk
58+
cd emsdk
59+
./emsdk install latest
60+
./emsdk activate latest
61+
62+
# Ajouter emsdk au PATH de l'utilisateur
63+
EMSDK_SETUP="source \"$(pwd)/emsdk_env.sh\""
64+
if ! grep -q "$EMSDK_SETUP" ~/.bashrc; then
65+
echo "$EMSDK_SETUP" >> ~/.bashrc
66+
print_vert "Emscripten ajouté à votre PATH dans .bashrc"
67+
fi
68+
69+
cd ..
70+
71+
# Activer pour la session courante
72+
source ./emsdk/emsdk_env.sh
73+
else
74+
print_vert "Emscripten est déjà installé"
75+
fi
76+
77+
# Installation de wabt (WebAssembly Binary Toolkit) pour wat2wasm
78+
if ! command -v wat2wasm &> /dev/null; then
79+
print_jaune "Installation de wabt (WebAssembly Binary Toolkit)..."
80+
81+
# Installation des dépendances pour la compilation
82+
sudo apt-get install -y cmake g++ gcc ninja-build
83+
84+
# Cloner le dépôt wabt
85+
git clone --recursive https://github.com/WebAssembly/wabt.git
86+
87+
# Compiler wabt
88+
cd wabt
89+
mkdir build
90+
cd build
91+
cmake .. -DBUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release
92+
cmake --build .
93+
94+
# Installer les outils dans /usr/local/bin
95+
sudo cp wat2wasm wasm2wat wasm-interp wasm-objdump wasm-strip /usr/local/bin/
96+
97+
cd ../..
98+
99+
print_vert "wabt installé avec succès"
100+
else
101+
print_vert "wabt est déjà installé"
102+
fi
103+
104+
# Vérifier les installations
105+
print_jaune "Vérification des installations..."
106+
107+
echo -n "node: "
108+
if command -v node &> /dev/null; then
109+
print_vert "OK"
110+
else
111+
print_rouge "NON INSTALLÉ"
112+
fi
113+
114+
echo -n "emcc: "
115+
if command -v emcc &> /dev/null; then
116+
print_vert "OK"
117+
else
118+
print_rouge "NON INSTALLÉ"
119+
print_jaune "Si emcc n'est pas détecté, essayez de redémarrer votre terminal ou exécutez 'source ./emsdk/emsdk_env.sh'"
120+
fi
121+
122+
echo -n "wat2wasm: "
123+
if command -v wat2wasm &> /dev/null; then
124+
print_vert "OK"
125+
else
126+
print_rouge "NON INSTALLÉ"
127+
fi
128+
129+
print_vert "\nInstallation terminée !"
130+
print_jaune "REMARQUE: Pour que les changements soient pris en compte dans cette session, exécutez:"
131+
echo "source ./emsdk/emsdk_env.sh"
132+
print_jaune "Ou redémarrez votre terminal."

0 commit comments

Comments
 (0)