Comme expliqué dans un épisode précédent, après une dizaine d'années de fidélité aux autotools je suis récemment passé à CMake et l'essayer c'est l'adopter. Du coup, je me suis demandé si Okawix pourrait être construit avec ; et qui dit construire Okawix, dit compiler des composants XPCOM et la... pas de bol, CMake ne fournit pas de module pour faire du XPCOM. Enfin... pas encore :)
J'ai donc travaillé sur un module CMake permettant de détecter XUL ; en fait, sur plusieurs modules : un pour XUL lui même, un pour NSPR et un dernier module "utilitaire" qui fait une bonne partie du sale boulot. Ces modules sont maintenant à un stade ou ils permettent de compiler les composants d'Okawix sous Linux, Mac et Windows.
Sous Linux, la détection est faite grâce à pkg-config ; sous Mac et Windows aucune détection n'est tentée pour l'instant et l'utilisateur doit spécifier un chemin vers un SDK.
En plus de détecter les chemins des fichiers d'en-tête, des bibliothèques et des paramètres de compilation, le module XUL recherche l'emplacement des fichiers IDL, de l'exécutable xpidl et fournit même des macros pour faciliter la génération des fichiers .h et .xpt à partir des IDL.
Enfin, lorsque plusieurs SDK sont disponibles (ie les SDK "stable" et "unstable" proposés par pkg-config), le module permet de choisir un SDK suivant la disponibilité de certains composants. Par exemple, Okawix utilise nsIRunnable qui n'est pas dans le SDK "stable" ; il est alors possible de trouver le "bon" SDK en lui indiquant que l'on veut ce composant.
Le code est disponible sur un projet google et inclut un exemple de composant avec le CMakeLists.txt permettant de le compiler. Maintenant, je suis à la recherche de gens intéressés pour tester (voir utiliser) le truc et je suis preneur de tout retour : commentaire, suggestion, rapport de bug, etc.