Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Système de compilation Meson #3

Open
Phundrak opened this issue May 9, 2019 · 6 comments
Open

[WIP] Système de compilation Meson #3

Phundrak opened this issue May 9, 2019 · 6 comments
Assignees
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@Phundrak
Copy link
Collaborator

Phundrak commented May 9, 2019

Je suis en train de travailler sur une configuration du système de compilation Meson pour GL4Dummies sur la branche mesonbuild. Il y a encore quelques détails à régler, notamment l’installation (une fois la bibliothèque installée, on se retrouve avec des problèmes de linkers et le fichier .pc n’est pas correctement situé), mais le temps de compilation a été grandement réduit.

Avec les outils actuels, la compilation prend environ 16s à plus ou moins 2s sur ma machine avec la commande make -f Makefile.autotools && ./configure && make -j. L’équivalent avec Meson (meson build && ninja -C build/) ne prend que 2.5s, et la recompilation lorsqu’un unique fichier a été changé est également beaucoup plus rapide (pas d’exemple cette fois-ci).

J’ai aussi mentionné un fichier .pc, et en effet Meson en génère un, ce qui rendrait GL4Dummies compatible et détectable par pkg-config, rendant le développement de programmes et bibliothèques en dépendant beaucoup plus aisé.

Je pense également que ça aidera à avoir un système de compilation plus aisé à maintenir, le fichier meson.build ne fait qu’environ 90 lignes contre plus de 1600 lignes pour les quatres fichiers actuels, aclocal.m4, configure.ac, Makefile.am et Makefile.autotools.

J’ai également pris la liberté de modifier légèrement le source code afin de faire taire certains warnings (voir ac79ac0 et c68a695).

@Phundrak Phundrak added enhancement New feature or request good first issue Good for newcomers labels May 9, 2019
@Phundrak Phundrak self-assigned this May 9, 2019
@noalien
Copy link
Owner

noalien commented May 9, 2019

Cool, merci pour cette initiative
Est-ce que Meson permet de faire différents types de releases (tgz, dep, rpm, intall windows ...) ?

@Phundrak
Copy link
Collaborator Author

Phundrak commented May 9, 2019

Pour ce qui est du tarball, il est déjà possible d’en générer un en exécutant ninja -C build/ dist à la racine du projet, pas besoin de target supplémentaire. Avec la version actuelle, cela génère les fichiers build/meson-dist/GL4Dummies-6.0.0.tar.xz et build/meson-dist/GL4Dummies-6.0.0.tar.xz.sha256sum.

De mémoire, les targets sont cross-platforme, donc il ne devrait pas y avoir non plus besoin de target pour Windows (à tester).

Et je ne crois pas qu’il existe de solution native concernant la génération des fichiers d’installation type dep ou rpm, mais il est tout à fait possible de créer d’autres targets exécutant chacun un stript custom les générant. D’ailleurs, si cela est implémenté, il sera possible d’automatiser leur publication sur GitHub via Travis-CI, et potentiellement AppVeyor pour ce qui est des releases Windows.

@noalien
Copy link
Owner

noalien commented May 9, 2019

ok, on verra ça plus tard ... c'est déjà très bien d'avoir du tgz
(je voulais dire .deb et non .dep)
Merci !

@Phundrak
Copy link
Collaborator Author

Phundrak commented May 9, 2019

Je viens de faire quelques tests pour ce qui est de la compilation sous Windows, et la compilation native me semble assez compliquée du fait que l’on a pas accès à pkg-config et que l’on soit restreint à l’invite de commande développeur pour avoir accès à cl. Par contre, ce sera à mon avis peut-être plus simple avec des shells type MinGW ou Cygwin.

@noalien
Copy link
Owner

noalien commented May 9, 2019

MinGW ou Cygwin c'est très bien

@Phundrak
Copy link
Collaborator Author

Phundrak commented May 9, 2019

Normalement le commit 99440e8 règle le problème de linker. J’ai aussi ajouté dans le commit 371e224 les instructions pour pouvoir utiliser le fichier de pkg-config.

Et pour ce qui est de l’installation avec préfixe, il se trouve que Meson le gère déjà, c.f. les instructions du Readme.

À mon avis on peut procéder à un premier merge de la branche dans le master. Je pourrai voir plus tard pour progressivement remplacer les Makefiles par des builds Meson, cela devrait pouvoir se faire relativement simplement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

2 participants