La compilation croisée de Gwyddion pour MS Windows sous Linux est assez similaire à la compilation habituelle sous Linux, avec quelques réglages et étapes supplémentaires. Bien que le processus soit assez simple, la mise en place intiale peut paraître un peu compliquée. Si de plus vous n'êtes pas habitué à la compilation sous Linux il vous faudra peut-être vous familiariser avec la procédure de base avant de vous lancer dans la compilation croisée.
Les instructions qui suivent décrivent la compilation sous Fedora en utilisant le support de compilation croisée MinGW utilisé par les développeurs de Gwyddion. En général, les instructions fonctionnent pour la version en cours de Fedora. La compilation pour d'autres versions ou pour d'autre distributions basées sur RedHat-based (CentOS, Scientific Linux, …) devrait être similaire et relativement triviale, avec peut-être quelques réglages manuels. La compilation sous openSUSE par exemple nécessitera certaines modifications. Les rapports de succès (ou échec) de compilation croisée de Gwyddion sous d'autres distributions ou environnements, ainsi que les améliorations possibles, sont les bienvenus.
La compilation croisée complète suit les étapes suivantes :
Un script est disponible pour automatiser toutes ces étapes, telles que décrites plus bas.
Il vous faut configurer l'environnement de compilation croisée avant de réaliser la première compilation. Cette opération n'est à faire qu'une seule fois.
Lancez en tant que root :
dnf install mingw{32,64}-{gcc-c++,gtk2,libxml2,minizip,fftw,gtkglext,libwebp,OpenEXR}
pour installer les paquets mingw32 et mingw64 nécessaires. Plusieurs autres paquets seront installés en tant que dépendances de ceux donnés ici. Notez que, techniquement, certains des paquets sont des dépendances facultatives et que vous pouvez compiler un installeur MS Windows sans eux (avec quelques ajustements). En tout état de cause, les installeurs standards incluent ces paquets et les scripts de compilation croisée s'attendent à ce qu'ils soient présents par défaut.
Les versions MinGW de quelques paquets utilisés par Gwyddion ne sont pas encore (ou plus) disponibles sous Fedora, ou bien il y a certaines corrections que nous aimerions inclure mais qui ne se trouvent pas dans les paquets Fedora. Actuellement, le seul paquet manquant est gtksourceview2 qui n'est utilisé que par pygwy.
Vous pouvez compiler ces paquets aditionnels à l'aide des patches et fichiers de spécifications disponibles sur http://sourceforge.net/projects/gwyddion/files/mingw32-cross-compile/, il est toutefois certainement plus aisé de les installer avec dnf. Pour cela il suffit de télécharger et installer répertoire du paquet de configuration sur gwyddion.net. L'installation donne accès à tous les paquets supplémentaires pour MinGW. Après installation, vous pouvez lancer
dnf install mingw32-gtksourceview2
Incidemment, le répertoire contient aussi un paquet Gwyddion x86_64 natif que vous pouvez installer pour utiliser Gwyddion sous Fedora, ainsi qu'un paquet fournissant des librairies Gwyddion compilées que vous pourez utiliser pour faire la compilation croisée des modules.
Wine est une couche de compatibilité de MS Windows pour for Unix. Il est utilisé pour lancer NSIS et créer l'installeur de Gwyddion pour Windows. Wine peut aussi être utilisé pour lancer et tester la compilation croisée de Gwyddion, tel que présenté plus bas.
Lancez
dnf install wine
pour installer Wine.
Nullsoft scriptable install system (NSIS) est utilisé utilisé pour créer l'installeur de Gwyddion. Il s'agit d'un programme MS Windows, il est donc installé sous Wine. Une version obtenue par compilation croisée de NSIS peut être disponible dans la distribution, mais il s'avère que la version originale est plus fiable.
Téléchargez NSIS à partir de son site internet et lancez
wine nsis-2.46-setup.exe
en remplaçant 2.46 par le numéro de version actuel. La version 2.46 de NSIS est la plus ancienne qui ait été testée.
Il vous faudra installer Python dans Wine afin de compiler pygwy. Les étapes sont identiques à celles à appliquer pour installer pygwy, sauf que tous les paquets listés au paragraphe Activation de pygwy doivent être installés à l'aide de msiexec :
wine msiexec /i python-2.7.13.msi
wine msiexec /i pygobject-2.28.3.win32-py2.7.msi
wine msiexec /i pycairo-1.8.10.win32-py2.7.msi
wine msiexec /i pygtk-2.24.0.win32-py2.7.msi
en modifiant si besoin les numéros de version.
Des scripts et données sont disponibles dans le module
mingw32-cross-compile
du dépôt subversion de
Gwyddion. Lancez
svn checkout http://svn.code.sf.net/p/gwyddion/code/trunk/mingw32-cross-compile
pour récupérer le contenu du répertoire.
L'outil le plus important que vous obtiendrez est le script
cross-build-32 (ou cross-build-64)
qui automatise les étapes de compilation croisée.
Avant de l'utiliser pour la première fois, consultez le fichier
setup32
qui définit la localisation des différents
éléments (ou setup64
pour la cible 64 bits).
Le contenu par défaut ressemble à ceci:
source_dir=$HOME/Projects/Gwyddion/gwyddion-mingw mingw_prefix=/usr/i686-pc-mingw32/sys-root/mingw target_prefix=$HOME/opt/gwyddion-mingw32 python_dir=$HOME/.wine/drive_c/Python27 nsis_compiler=C:\\Program\ Files\ \(x86\)\\NSIS\\makensis.exe
La variable source_dir
spécifie la localisation du
code source de Gwyddion (décompressée ou directement récupérée du dépôt
subversion), elle devra être probablement modifiée. La variable
target_prefix
spécifie le répertoire d'installation
(zone temporaire) pour la compilation croisée de Gwyddion. La valeur
par défaut est normalement adaptée et n'aura pas à être modifiée, à
moins que vous ne le souhaitiez. Les dernière variables,
mingw32_prefix
, nsis_compiler
et
and python_dir
,
spécifient la localisation des fichiers MinGW, du compilateur NSIS et de
Python Win32 respectivement. Leurs valeurs par défaut n'ont normalement
pas à être modifiées, mais NSIS peut toutefois être installé par défaut
sous Program Files (x86)
ou
Program Files
en fonction de la configuration de
Wine. Notez que setup
est lu par shell, il ne doit
donc pas y avoir d'espace autour du signe =
.
La configuration est fastidieuse mais elle vaut la peine d'être faite car la compilation est alors extrêmement simple. Lancez
./cross-build-32
dans le répertoire mingw32-cross-compile
pour
compiler l'installeur Win32. Et c'est tout.
En cas de succès un installeur de Gwyddion pour Windows intégrant GTK+
sera créé dans $target_prefix
. De même,
l'installeur Win64 est compilé avec
./cross-build-64
En attendant vous pourrez aller boire un café – ou étudier le script
cross-build
(qui est en fait plutôt court et clair).
Notez que les scripts lancent autogen.sh
mais ne
nettoient pas le répertoire du code source. Il vous sera certainement
nécessaire de le faire manuellement si vous compilez Gwyddion de manière
répétée. En particulier, si vous compilez pour les deux architectures dans
le même dossier, assurez-vous de lancer
make distclean
entre deux compilations pour remettre le répertoire source dans un état convenable.
L'executable de Gwyddion peut être lancé sous Wine. En supposant que la
valeur par défaut de target_prefix
est utilisée :
wine ~/opt/gwyddion-mingw32/bin/gwyddion.exe
Pour lancer gwyddion.exe
l'éditeur de liens doit être
capable de trouver les DLLs nécessaires. Ceci est assuré de manière assez
simple par le script copysysfiles qui copie tous les
fichiers MinGW nécessaires du système vers
$target_prefix
. Comme copysysfiles
est exécuté par cross-build vous n'avez normalement pas
à le faire manuellement.
Le seconde étape nécessaire est de créer la clé de registre
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\gwyddion.exe
pour pointer vers gwyddion.exe
et la valeur
Path
pour pointer vers le répertoire
bin
.
La compilation croisée de modules autonomes ne nécessite que les en-têtes
de Gwyddion ainsi que les lirairies de développement Win32. Bien qu'on
puisse la réaliser en compilant totalement Gwyddion, il s'avère qu'il
n'est pas nécessaire de faire ainsi. En ne compilant que les librairies,
vous éviterez l'installation de différentes dépendances de Gwyddion.
Ceci peut être fait à l'aide du patch
gwyddion-2.22-build-only-libs.patch
disponible parmi les scripts de compilation.
Cela peut même être encore plus simple, car les librairies Gwyddion pour
MinGW sont disponibles sous forme de paquet RPM
(mingw32-gwyddion-libs
) sur le site gwyddion.net.
Une fois ce paquet installé, vous pouvez tenter la compilation croisée
du module autonome threshold-example
disponible dans
le répertoire subversion. Voir le fichier README
correspondant pour plus de détails.