Meson
Meson | |
---|---|
Luoja | Jussi Pakkanen |
Kehityshistoria | |
Vakaa versio | 1.6.0 ()[1] |
Tiedot | |
Ohjelmointikielet | Python |
Lisenssi | Apache-lisenssi, versio 2.0 |
Aiheesta muualla | |
Verkkosivusto | |
Versiohallinta |
Meson on järjestelmä tietokoneohjelman konfigurointiin lähdekoodista ja käännösautomaatioon.[2][3] Meson tukee useita hakemistoja eri käännöksiä varten samasta lähdekoodista.[2] Meson on toteutettu Python 3:lla ja julkaistu Apache 2.0 -lisenssillä.[2]
Järjestelmässä on oma konfiguraatiokieli, joka tukee ehtolauseita.[2] Meson tukee C-, C++-, D-, Java- ja Vala-kielillä tehtyä lähdekoodia.[2][4]
Projektin on aloittanut suomalainen fyysikko Jussi Pakkanen jouluna 2012 ja ensimmäinen julkaisu oli kaksi kuukautta myöhemmin.[2] Järjestelmä on nimetty mesonihiukkasen mukaan.[2] Kriteerinä nimelle oli, että vastaavalla nimellä ei saanut ennestään olla Debian-pakettia tai SourceForge-projektia ja esimerkiksi Gluon ei siksi kelvannut nimeksi.[5]
Taustaa
[muokkaa | muokkaa wikitekstiä]Aikaisempi make oli hidas ja Makefile-syntaksi on ylläpidolle hankala.[5] Evan Martin toteutti Ninja-työkalun make-ohjelman ongelmien vuoksi.[5][6] Ninja ei toteuta eräitä asioita joita make-ohjelma toteutti vaan luottaa toisen ohjelman kuten Mesonin tuottamiin konfiguraatiotiedostoihin.[7]
Mesonin konfiguraatiokieli ei ole Turing-täydellinen useiden syiden vuoksi, joista on yksi on mahdollinen työkalujen toteutuskielen vaihtaminen mikäli se osoittautuu pullonkaulaksi.[5][8]
Meson pyrkii toistettaviin käännöksiin.[9]
Esimerkki
[muokkaa | muokkaa wikitekstiä]Esimerkki käännöksestä Meson-työkaluilla komentorivillä:
$ cd ohjelma $ meson builddir $ cd builddir $ ninja
.. jossa ohjelma on hakemisto, jossa käännettävä ohjelma sijaitsee ja builddir on nimi käännöksen aikana käytettävälle hakemistolle.
meson
tarkistaa saatavilla olevat riippuvuudet ja tekee tarvittavan konfiguraation käännöstä varten. Meson-järjestelmä ei salli käännöstä lähdekoodihakemistossa. ninja
suorittaa varsinaisen käännöksen. Uudelleen kääntämiseen riittää komennon ninja
ajaminen.[10]
Oletuksena Meson käyttää Ninja-järjestelmää taustatyökaluna projektin kääntämiseen, mutta se tukee myös muita kuten Visual Studiota.[3] Ohjelmointiympäristö voi suorittaa kääntämisen Ninjan sijaan.[3]
Käännöskonfiguraatio Mesonille voi olla seuraavankaltainen:[11]
project('simple', 'c') src = ['source1.c', 'source2.c', 'source3.c'] executable('myexe', src)
Tuki
[muokkaa | muokkaa wikitekstiä]Muun muassa X.Org-ohjelmisto on lisännyt tuen Meson-käännösjärjestelmälle vaihtoehtona GNU Autotoolsille.[12] GNOME-projektilla on tavoitteena siirtyä Autotoolsista Meson-järjestelmään.[13]
Muita Meson-järjestelmää käyttäviä projekteja ovat muun muassa Mesa 3D ja Wayland-projekti.[14]
Kirjallisuutta
[muokkaa | muokkaa wikitekstiä]- Pakkanen, Jussi: The Meson Manual. Diffraction Labs, 2020. ISBN 978-952-94-2892-2 (englanniksi)
Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ Release 1.6.0, (viitattu ). Tieto on haettu Wikidatasta.
- ↑ a b c d e f g Tim Schürmann: A Better Builder admin-magazine.com. Viitattu 1.2.2020. (englanniksi)
- ↑ a b c Meson/ The Meson build system sourceforge.net. Viitattu 1.2.2020. (englanniksi)[vanhentunut linkki]
- ↑ Compiling D applications mesonbuild.com. Viitattu 1.2.2020. (englanniksi)
- ↑ a b c d Meson Frequently Asked Questions mesonbuild.com. Viitattu 1.2.2020. (englanniksi)
- ↑ Ninja, a new build system neugierig.org. 6.2.2011. Viitattu 1.2.2020. (englanniksi)
- ↑ David Röthlisberger: The Ninja build tool lwn.net. 16.11.2016. Viitattu 1.2.2020. (englanniksi)
- ↑ Against The Use Of Programming Languages in Configuration Files taint.org. 18.2.2011. Viitattu 1.2.2020. (englanniksi)
- ↑ https://mesonbuild.com/Reproducible-builds.html
- ↑ Using Meson mesonbuild.com. Viitattu 1.2.2020. (englanniksi)
- ↑ Meson sample mesonbuild.com. Viitattu 1.2.2020. (englanniksi)
- ↑ The Meson Build System Is Being Fitted For The X.Org Server phoronix.com. 27.3.2017. Viitattu 19.10.2019. (englanniksi)
- ↑ GNOME Goal: Port modules to use Meson build system wiki.gnome.org. Viitattu 19.10.2019. (englanniksi)
- ↑ List of projects using Meson mesonbuild.com. Viitattu 1.2.2020. (englanniksi)