1. OCAML et OPAM
l'installation d'ocaml est ici supposée faite par opam (pour Ubuntu ou Debian ou ...) en ligne de commande bash :
- Installation d'opam :
sudo apt update
sudo apt install opam
opam init --bare
eval $(opam env)
- Installation d'OCaml :
opam switch create 5.4.0.             (pour ocaml 5.4.0)
eval $(opam env --switch=5.4.0)
ce qui donne, pour le chemin absolu <base> du répertoire de base d'OCaml dans linux, <base>=$HOME/.opam/5.4.0

- Installation de quelques paquets supplémentaires :
opam install graphics
opam install zarith
opam install num
opam install domainslib               (ocaml >= 5.0.0)

(
noter l'utilisation des bibliothèques de développement gmp et X11 : dans le cas Ubuntu ou Debian les paquets correspondants libgmp-dev et libx11-dev
peuvent être chargés a priori par:
sudo apt install libgmp-dev
sudo apt install libx11-dev
mais leur installation devrait être proposée au cours de l'installation par opam des quelques paquets supplémentaires.
) 


2. WINCAML
2.a. WINCAML POUR WINDOWS :
Les quatre applications WinCaml suivantes, réservées à Windows 10 ou 11, peuvent non seulement utiliser une distribution OCaml installée directement sous Windows mais aussi une distribution OCaml linux installée dans la machine virtuelle wsl 2 de Microsoft (ou dans wsl 1 si on n'est pas intéressé par le graphisme ou si on sait utiliser un serveur X Window tel que VcXsrv.exe en mode multiwindow).

WinCamlMSW.exe : WinCaml pour windows via Visual Studio Community 2022
WinCamlMGW.exe : WinCaml pour windows via MSYS/MINGW64 (gcc 13.2.0)
WinCamlQTW.exe : WinCaml pour windows via Qt 5.15.2 et Visual Studio Community 2022
WinCamlWXW.exe : WinCaml pour windows via WXWidgets 3.4.2 et Visual Studio Cmmunity 2022

Choisir l'un des quatre dossiers correspondants, le renommer WinCaml7 et y placer les dossiers doc et exemples.


2.b. WINCAML POUR LINUX (x64, x86_64, amd64) :
On pourra utiliser l'application WinCaml pour linux, compilée sous Debian Linux Bullseye, proposée dans le dossier WinCaml-QTI : WinCaml pour Linux AMD64 via Qt  
Placer le dossier WinCaml-QTI dans wsl, directement dans le répertoire $HOME, le renommer WinCaml7 et y placer les dossiers doc et exemples.

WinCaml-QTI demandera sans doute l'installation de cups (common unix printing system):
sudo apt update
sudo apt install cups

et sans doute quelques autres paquets de la distribution Linux : utiliser ldd pour recenser ces derniers, et ne pas oublier dans le cas de WSL 1 de définir la variable d'environnement DISPLAY.

Pour lancer WinCaml exécuter dans bash
QT_PLUGIN_PATH=$HOME/WinCaml7/lib LD_LIBRARY_PATH=$HOME/WinCaml7/lib DISPLAY=:0 $HOME/WinCaml7/WinCaml &
(DISPLAY=:0 seulement si DISPLAY n'est pas déjà définie, cas de WSL 1 notamment avec par exemple comme serveur X Window VcXsrv.exe)

Pour déverrouiller WinCaml si nécessaire, exécuter dans bash
$HOME/WinCaml7/wincamlunlock

Si dans les panneaux d'édition de WinCaml (wsl 1 avec VcXsrv.exe notamment) le clavier est mal configuré (problème qwerty / azerty par exemple), quitter WinCaml puis exécuter la commande
setxkbmap fr
(s'il s'agit d'un clavier français) avant de relancer Wincaml;
on pourra en même temps préciser le modèle de clavier, par exemple
setxkbmap fr -model pc104
(si la commande setxkbmap n'est pas installée on la trouvera dans le paquet x11-xkb-utils :
sudo apt install x11-xkb-utils).

Ce WinCaml, comme le suivant, peut ensuite sembler fonctionner directement sous Windows mais fonctionne en réalité dans wsl sous linux.


2.c. WINCAML POUR LINUX (ARM64, AARCH64)
Comme en 2.b., mais avec l'application WinCaml pour linux, compilée sous Debian Linux Bullseye, proposée dans le dossier WinCaml-QTA : WinCaml pour Linux ARM64 via Qt
...
Pour lancer WinCaml exécuter dans bash
LD_LIBRARY_PATH=$HOME/WinCaml7/lib DISPLAY=:0 $HOME/WinCaml7/WinCaml &
...
Mêmes remarques qu'en 2.b. concernant la variable d'environnement DISPLAY, l'utilisation de wincamlunlock, la configuration du clavier et la nécessité de quelques autres paquets de la distribution Linux.



3. Utilisation de WINCAML POUR WINDOWS avec OCaml pour Windows ou Linux
Utiliser le glisser-déposer dans la fenêtre de WinCaml à partir de l'explorateur de fichiers de Windows pour choisir ou changer la distribution OCaml (ou Caml Light) utilisée par WinCaml. On peut ainsi accéder aux distributions locales ou dans wsl, ou distantes en réseau. Ou bien utiliser le menu Caml > Nouvelle distribution...
Si plusieurs distributions Linux sont installées dans wsl (Debian, Ubuntu, ...), faire attention, en cas de choix de distribution OCaml (ou Caml Light) dans l'une d'elles <dist linux>, à ce que ce soit au moment d'utiliser WinCaml la distribution linux par défaut dans wsl (marquée par une étoile dans le résultat de la commande wsl -l -v) ; en cas contraire utiliser wsl -s <dist linux> .  
Dans tous les cas il peut être nécessaire de rendre exécutables les fichiers suivants: lib/caml-light/caml_all dans le cas de Caml Light, bin/ocamlrun et bin/ocaml dans le cas d'OCaml.

4. Utilisation de WINCAML POUR LINUX avec OCaml pour Linux
Utiliser le menu Caml > Nouvelle distribution... (ou le glisser-déposer dans la fenêtre de WinCaml à partir d'un explorateur de fichiers adéquat) pour choisir ou changer la distribution OCaml (ou Caml Light) utilisée par WinCaml.
Mêmes remarques qu'en 3. en cas de présence de plusieurs distributions Linux dans wsl et concernant les exécutables.   

Pour accéder depuis WinCaml pour Linux aux documentations  de OCaml et Caml Light par le menu Aide sans firefox (WSL 1 avec VcXsrv.exe notamment), on pourra installer le paquet wslu et cibler ou recibler vers wslview le lien /usr/bin/firefox (qui peut ne pas exister) de la distribution linux :
sudo apt install wslu
sudo mv /usr/bin/firefox /usr/bin/firefox1
sudo ln -s /usr/bin/wslview /usr/bin/firefox 

La documentation devrait alors apparaître dans Microsoft Edge.



5. BIBLIOTHÈQUE GRAPHIQUE OCAML
5.a.
La bibliothèque graphique d'OCaml 'graphics' obtenue en 1. par opam, devrait fonctionner à partir de WinCaml avec tout fichier source ocaml *.oml ou *.ml invoquant 'ocamlfind/findlib'  par les deux directives de toplevel suivantes : 
#use "topfind";;
#require "graphics";;

S'il y a des problèmes d'affichage de caractères non-ascii avec cette bibliothèque graphique, c'est sans doute parce que WinCaml les lui envoie avec encodage UTF-8.
De toute façon son usage se limite probablement aux caractères codés latin1. Une première solution est alors de n'utiliser cette bibliothèque qu'à partir de fichiers sources OCaml codés latin1 (encodage "unix" pour WinCaml). WinCaml peut être utilisé pour réencoder les fichiers sources.

5.b.
Une autre solution est de remplacer la bibliothèque graphique d'OCaml (obtenue en 1. par opam) par la bibliothèque modifiée 'graphicx' contenue dans le dossier caml/ocaml/graphicx-src : voir le fichier Alire contenu dans ce dossier.
Une fois cette bibliothèque "graphicx" installée (à côté de "graphics"), elle s'utilise à l'aide des directives de toplevel suivantes :
#use "topfind";;
#require "graphicx";;

5.c
Une autre solution encore est de placer, dans WSL, le dossier caml/ocaml/graphicx-src1 dans le dossier $HOME/WinCaml7 et d'utiliser le script install contenu dans ce dossier caml/ocaml/graphicx-src1. On a alors, sans modifier le dossier d'OCaml, accès depuis WinCaml à une bibliothèque graphique équivalente à 'graphicx' située dans $HOME/WinCaml7/ocamlgraph par la directive:
#load "graphics".cma";; 

5.d.
Essayer notamment avec 'graphics' et 'graphicx' l'exemple "WinCaml7/exemples/OCaml/unicode/yeux noirs gr.oml" où WinCaml7 est le dossier contenant WinCaml, et si les caractères accentués ou cyrilliques ne s'affichent pas correctement avec 'graphicx', vérifier que les polices de caractères Xorg/X11 -misc-fixed-* sont bien installées (normalement dans /usr/share/fonts/X11/misc/ si on utilise wsl 2, dans le répertoire C:\Program Files\VcXsrv\fonts\misc si on utilise VcXsrv.exe avec wsl 1 (noter qu'avec VcXsrv.exe le titre de la fenêtre ne s'affiche peut-être pas correctement)) et que la décompression zip n'a pas altéré le nom cyrillique du fichier utilisé par l'exemple (sous Windows utiliser de préférence 7zip).

Pour installer les polices -misc-fixed-* sous Ubuntu ou Debian utiliser la commande:
sudo apt install xfonts-base

Si l'exemple ne marche encore pas, ouvrir (par exemple avec nano) le fichier /etc/locale.gen et enlever dans ce fichier le # en tête de la ligne
# fr_FR.UTF-8
ajouter un # en début des lignes précédentes qui n'en ont pas 
et enregistrer ce changement
puis exécuter la commande
sudo locale-gen
et redémarrer wsl (ou arrêter et relancer l'exécution par WinCaml du fichier exemple)

Si l'exemple ne marche toujours pas, exécuter la commande
sudo update-locale LANG=fr_FR.UTF8
qui met à jour le fichier /etc/default/locale
puis redémarrer wsl

5.e. La bibliothèque graphique de c:/ocamlmgw64 (distribution OCaml 5.4.0 de l'archive ocamlmgw64-win10-5400.zip) est accessible depuis un toplevel par #use "topfind";; #require "graphics";; ou encore par #use "topfind";; #require "graphicx";; (cf. les exemples). Comme elle fonctionne sous Windows, on peut omettre dans les exemples la gestion de la boîte de fermeture de la fenêtre graphique (directive #thread;; et fonction end_graph ()).     

