Knowledge

Meson (software)

Source ๐Ÿ“

1143: 1676: 209: 139: 95: 29: 41: 571: 629: 538:
of source files. By requiring all source files to be listed in the build definition files, the build definition file timestamps are sufficient to determine whether the set of source files has changed, thereby ensuring that removed source files are detected. CMake supports globbing, but recommends
401:, such that builtin types like library, executable, string, and lists thereof, are non-interchangeable. In particular, unlike Make, the list type does not split strings on whitespace. Thus, whitespace and other characters in filenames and program arguments are handled cleanly. 387:, but is not Python: It is designed such that it can be reimplemented in any other language; for example, muon is a C implementation, and Meson++ is a C++ implementation. The dependency on Python is an implementation detail. 1384:
Note: We do not recommend using GLOB to collect a list of source files from your source tree. If no CMakeLists.txt file changes when a source is added or removed, the generated build system cannot know when to ask CMake to
1235:
Meson aims to optimize programmer productivity by providing simple, out-of-the-box support for modern software development tools and practices, such as unit tests, coverage reports, Valgrind, CCache and the
530:
Unlike bare Make, the separate configure step ensures that changes to arguments, environment variables and command output are not partially applied in subsequent builds, which would lead to a stale build.
1411:
Recursive Make is considered harmful for very good reasons (Miller 1998); it is not possible to accurately track dependencies when the build system is constructed of separate components that invoke each
527:
As with any typical buildsystem, correct incremental builds are the most significant speed feature (because all incremental progress is discarded whenever the user is forced to do a clean build).
892:, CMake, and project-specific lookups, but this only finds installed dependencies, which Meson can not do anything about. Alternatively, or as a fallback, a dependency can be provided as a 394:, and can therefore not express an arbitrary program. Instead, arbitrary build steps beyond compiling supported languages can be represented as custom targets. 1701: 1711: 1148: 1502: 1166: 1042: 672: 610: 588: 639: 592: 305: 261:
approach, promoting standard development tools and practice instead of providing unlimited flexibility to the user. Meson is
384: 266: 262: 258: 152: 1471: 896:โ€“ a Meson project within another, either contained or as a download link, possibly with patches. This lets Meson resolve 1609: 824: 555: 118: 1706: 333: 329: 325: 86: 176: 1397: 1691: 1696: 1086: 654: 317: 297: 1595: 650: 581: 368: 344: 352: 1561: 911:
Meson supports Meson and CMake subprojects. A Meson build file may also refer to the WrapDB service.
815:
A stated goal of Meson is to facilitate modern development practices. As such, Meson knows how to do
364: 208: 94: 559: 391: 171: 1273: 1230: 905: 535: 270: 188: 1029:
Cross compilation requires extra configuration, which Meson supports in the form of a separate
1516: 290: 1623: 1547: 1287: 1109: 562:
are supported, but require configuration. Debug builds are without optimization by default.
254: 224: 183: 159: 28: 1488: 900:
for the convenience of casual users who want to compile the project, but may contribute to
1161: 1074: 964: 897: 138: 1675: 1210: 1185: 40: 1424: 901: 551: 398: 164: 1379: 1685: 1450: 820: 1082: 904:
if a common installed dependency could have been used instead. The mode favored by
816: 547: 1610:"Mesa Developers Move Closer To Dropping Autotools Build System In Favor Of Meson" 1051: 570: 383:
The syntax of Meson's build description files (the Meson language) borrows from
313: 1575: 1530: 1138: 1128: 941: 889: 356: 54: 1344: 1405: 1067: 1055: 1637: 46: 915:
Comparison of dependency resolution use cases in different build systems
1215: 1093: 1078: 595: in this section. Unsourced material may be challenged and removed. 321: 1248: 1100:
was improved to help various scientific projects in their switch from
127: 1580: 1472:"Dependencies with custom lookup functionality โ€” Meson documentation" 1097: 765: 749: 543: 507:
Can run arbitrary commands at build time as recipes of custom targets
360: 1651: 1365: 657:. Statements consisting only of original research should be removed. 554:
to skip relinking executables against the library when there are no
1059: 1050:
has made it a goal to port its projects to Meson. As of late 2017,
301: 1156: 1105: 1081:
relies on Meson since dropping Autotools in version 234, and also
1047: 719:
The target that runs tests depends on the tests being built (e.g.
372: 348: 286: 1308: 355:
and other compilers, including non-traditional compilers such as
1167:
List of build automation software ยง Build script generation
1124: 1063: 309: 282: 888:
Meson can automatically find and use external dependencies via
622: 564: 827:
etc without the programmer having to write support for this.
702:
Prohibits stale builds (partial rebuild against input change)
1562:"GNOME 3.26 Beta Debuts: More Meson Porting, Wayland Action" 233: 1669: 242: 199: 1131:; the Meson homepage lists further projects using Meson. 866:
Set correct library installation directory on x86_64 Unix
491:
Can read output of arbitrary commands (at configure time)
1503:"Meson and 3rd party dependencies. Only one correct way" 646: 546:
automatically if installed. It also detects changes to
1322: 971:
Finding installed dependencies, with download fallback
1211:"Making build systems not suck (linux.conf.au video)" 367:
as the primary backend buildsystem, but can also use
245: 239: 1548:"GNOME Goal: Port modules to use Meson build system" 1054:itself exclusively requires Meson after abandoning 1013: 978: 859: 230: 227: 194: 182: 170: 158: 148: 117: 85: 63: 53: 1002:Facilitate use as an auto-downloadable dependency 714:(an idiomatic pattern) is broken in this respect 1596:"Meson Support Has Landed In The X.Org Server" 1033:, which can be external to the Meson project. 1542: 1540: 8: 21: 1517:"FetchContent โ€” CMake 3.15.7 Documentation" 1123:Other notable projects using Meson include 236: 1674: 1249:"mesonbuild/meson: The Meson Build System" 1205: 1203: 207: 137: 93: 39: 27: 20: 673:Learn how and when to remove this message 611:Learn how and when to remove this message 920: 829: 684: 472:non-standard extension on some variants 403: 390:The Meson language is intentionally not 257:(compiling) of software. Meson adopts a 1483: 1481: 1451:"CMake support for precompiled headers" 1425:"Make test does not depend on make all" 1398:"Non-recursive Make Considered Harmful" 1177: 281:Being written in Python, Meson runs on 955:Downloading dependencies automatically 1303: 1301: 1299: 1297: 7: 1149:Free and open-source software portal 593:adding citations to reliable sources 534:Like Ninja, Meson does not support 285:-like operating systems, including 1702:Free software programmed in Python 1309:"Meson Frequently Asked Questions" 1077:projects have switched to Meson. 14: 1712:Software using the Apache license 1043:Category:Software that uses Meson 1005:Can be used as a Meson subproject 1231:"High productivity build system" 1141: 627: 569: 539:against it for the same reason. 293:and on other operating systems. 223: 1624:"How to build SciPy with Meson" 1489:"Wrap dependency system manual" 1108:. Meson can also be used as a 876:./configure --libdir=/usr/lib64 580:needs additional citations for 477:Extensible via custom functions 1652:"List of projects using Meson" 1638:"meson-python package on PyPI" 1058:, and central components like 938:Finding installed dependencies 1: 296:Meson supports the languages 263:free and open-source software 259:convention over configuration 1576:"Drop support for autotools" 1343:Baker, Dylan (28 May 2021). 781:Symbol-table-aware relinking 708:If not globbing source files 444:whitespace-delimited string 336:, and has a mechanism named 705:Yes (unless there are bugs) 653:the claims made and adding 1728: 1040: 977:CMake module/pkg-config + 737:is forbidden, because the 735:add_dependencies(test all) 441:semicolon-delimited string 177:Software development tools 1345:"dcbaker/meson-plus-plus" 1070:can be built with Meson. 988:pkg-config file generator 253:) is a software tool for 113: 81: 38: 26: 1112:backend to build Python 947:CMake module, pkg-config 340:to handle dependencies. 974:pkg-config + subproject 908:is therefore fallback. 369:Microsoft Visual Studio 345:GNU Compiler Collection 255:automating the building 16:Build automation system 1104:to Meson, for example 1089:were ported to Meson. 825:link time optimization 397:The Meson language is 69:; 11 years ago 1429:Kitware issue tracker 1011:With registration to 523:Speed and correctness 1380:"CMake FILE command" 1092:Meson's support for 589:improve this article 353:Microsoft Visual C++ 100:; 7 days ago 1531:"Cross compilation" 1188:. 20 September 2024 795:Precompiled headers 741:target is reserved. 560:Precompiled headers 449:Dictionary datatype 363:. The project uses 98:/ 20 September 2024 23: 1707:Meson build system 1274:"Reference manual" 638:possibly contains 271:Apache License 2.0 189:Apache License 2.0 45:Meson configuring 1025:Cross compilation 1022: 1021: 881: 880: 808: 807: 683: 682: 675: 640:original research 621: 620: 613: 520: 519: 291:Microsoft Windows 216: 215: 105:20 September 2024 67:2 March 2013 1719: 1692:Build automation 1678: 1673: 1672: 1670:Official website 1656: 1655: 1648: 1642: 1641: 1634: 1628: 1627: 1620: 1614: 1613: 1606: 1600: 1599: 1592: 1586: 1585: 1572: 1566: 1565: 1558: 1552: 1551: 1544: 1535: 1534: 1527: 1521: 1520: 1513: 1507: 1506: 1499: 1493: 1492: 1485: 1476: 1475: 1468: 1462: 1461: 1459: 1457: 1447: 1441: 1440: 1438: 1436: 1421: 1415: 1414: 1402: 1394: 1388: 1387: 1376: 1370: 1369: 1362: 1356: 1355: 1353: 1351: 1340: 1334: 1333: 1331: 1329: 1319: 1313: 1312: 1305: 1292: 1291: 1284: 1278: 1277: 1270: 1264: 1263: 1261: 1259: 1245: 1239: 1238: 1227: 1221: 1220: 1207: 1198: 1197: 1195: 1193: 1182: 1151: 1146: 1145: 1144: 1119: 1103: 1018: 1015: 980: 965:Cargo dependency 944:, CMake packages 921: 877: 872:Not standardized 861: 849: 830: 740: 736: 726: 722: 685: 678: 671: 667: 664: 658: 655:inline citations 631: 630: 623: 616: 609: 605: 602: 596: 573: 565: 552:shared libraries 496: 404: 277:Interoperability 252: 251: 248: 247: 244: 241: 238: 235: 232: 229: 212: 211: 204: 201: 160:Operating system 141: 136: 133: 131: 129: 108: 106: 101: 97: 77: 75: 70: 43: 31: 24: 1727: 1726: 1722: 1721: 1720: 1718: 1717: 1716: 1697:Compiling tools 1682: 1681: 1668: 1667: 1664: 1659: 1650: 1649: 1645: 1636: 1635: 1631: 1622: 1621: 1617: 1608: 1607: 1603: 1594: 1593: 1589: 1574: 1573: 1569: 1560: 1559: 1555: 1546: 1545: 1538: 1529: 1528: 1524: 1515: 1514: 1510: 1501: 1500: 1496: 1487: 1486: 1479: 1470: 1469: 1465: 1455: 1453: 1449: 1448: 1444: 1434: 1432: 1423: 1422: 1418: 1400: 1396: 1395: 1391: 1378: 1377: 1373: 1364: 1363: 1359: 1349: 1347: 1342: 1341: 1337: 1327: 1325: 1321: 1320: 1316: 1307: 1306: 1295: 1286: 1285: 1281: 1272: 1271: 1267: 1257: 1255: 1247: 1246: 1242: 1229: 1228: 1224: 1209: 1208: 1201: 1191: 1189: 1186:"Release 1.5.2" 1184: 1183: 1179: 1175: 1147: 1142: 1140: 1137: 1117: 1101: 1075:freedesktop.org 1062:, Clutter-GTK, 1045: 1039: 1027: 1012: 906:Linux packagers 898:dependency hell 886: 875: 847: 813: 804:Do it yourself 790:Do it yourself 776:Trivial to add 760:Trivial to add 744:Trivial to add 738: 734: 724: 720: 679: 668: 662: 659: 644: 632: 628: 617: 606: 600: 597: 586: 574: 525: 494: 392:Turing-complete 381: 343:Meson supports 279: 226: 222: 206: 198: 144: 126: 109: 104: 102: 99: 73: 71: 68: 64:Initial release 49: 34: 33:Logo since 2019 17: 12: 11: 5: 1725: 1723: 1715: 1714: 1709: 1704: 1699: 1694: 1684: 1683: 1680: 1679: 1663: 1662:External links 1660: 1658: 1657: 1643: 1629: 1615: 1601: 1587: 1567: 1553: 1536: 1522: 1508: 1494: 1477: 1463: 1442: 1431:. 23 June 2016 1416: 1389: 1371: 1366:"Meson Syntax" 1357: 1335: 1314: 1293: 1288:"Compiler IDs" 1279: 1265: 1240: 1222: 1199: 1176: 1174: 1171: 1170: 1169: 1164: 1159: 1153: 1152: 1136: 1133: 1038: 1035: 1026: 1023: 1020: 1019: 1009: 1006: 1003: 999: 998: 995: 992: 989: 985: 984: 981: 975: 972: 968: 967: 962: 959: 956: 952: 951: 948: 945: 939: 935: 934: 931: 928: 925: 919: 918: 916: 902:software bloat 885: 882: 879: 878: 873: 870: 867: 863: 862: 857: 854: 851: 843: 842: 839: 836: 833: 812: 809: 806: 805: 802: 799: 796: 792: 791: 788: 787:Do it yourself 785: 782: 778: 777: 774: 773:Trivial to add 771: 770:Trivial to add 768: 762: 761: 758: 757:Trivial to add 755: 752: 746: 745: 742: 731: 728: 716: 715: 712:Recursive Make 709: 706: 703: 699: 698: 695: 692: 689: 681: 680: 635: 633: 626: 619: 618: 577: 575: 568: 524: 521: 518: 517: 514: 511: 508: 504: 503: 500: 497: 492: 488: 487: 484: 481: 478: 474: 473: 470: 467: 464: 460: 459: 456: 453: 450: 446: 445: 442: 439: 436: 432: 431: 428: 425: 422: 418: 417: 414: 411: 408: 399:strongly typed 380: 377: 278: 275: 214: 213: 196: 192: 191: 186: 180: 179: 174: 168: 167: 165:Cross-platform 162: 156: 155: 150: 146: 145: 143: 142: 123: 121: 115: 114: 111: 110: 91: 89: 87:Stable release 83: 82: 79: 78: 65: 61: 60: 59:Jussi Pakkanen 57: 51: 50: 44: 36: 35: 32: 15: 13: 10: 9: 6: 4: 3: 2: 1724: 1713: 1710: 1708: 1705: 1703: 1700: 1698: 1695: 1693: 1690: 1689: 1687: 1677: 1671: 1666: 1665: 1661: 1653: 1647: 1644: 1639: 1633: 1630: 1625: 1619: 1616: 1611: 1605: 1602: 1597: 1591: 1588: 1583: 1582: 1577: 1571: 1568: 1563: 1557: 1554: 1549: 1543: 1541: 1537: 1532: 1526: 1523: 1518: 1512: 1509: 1504: 1498: 1495: 1490: 1484: 1482: 1478: 1473: 1467: 1464: 1452: 1446: 1443: 1430: 1426: 1420: 1417: 1413: 1408: 1407: 1399: 1393: 1390: 1386: 1381: 1375: 1372: 1367: 1361: 1358: 1346: 1339: 1336: 1324: 1318: 1315: 1310: 1304: 1302: 1300: 1298: 1294: 1289: 1283: 1280: 1275: 1269: 1266: 1254: 1250: 1244: 1241: 1237: 1232: 1226: 1223: 1218: 1217: 1212: 1206: 1204: 1200: 1187: 1181: 1178: 1172: 1168: 1165: 1163: 1160: 1158: 1155: 1154: 1150: 1139: 1134: 1132: 1130: 1126: 1121: 1115: 1111: 1107: 1099: 1095: 1090: 1088: 1084: 1080: 1076: 1071: 1069: 1065: 1061: 1057: 1053: 1049: 1044: 1036: 1034: 1032: 1024: 1017: 1010: 1007: 1004: 1001: 1000: 996: 993: 990: 987: 986: 982: 976: 973: 970: 969: 966: 963: 960: 957: 954: 953: 949: 946: 943: 940: 937: 936: 932: 929: 926: 923: 922: 917: 914: 913: 912: 909: 907: 903: 899: 895: 891: 883: 874: 871: 868: 865: 864: 858: 855: 852: 845: 844: 840: 837: 834: 832: 831: 828: 826: 822: 821:test coverage 819:, build with 818: 810: 803: 800: 797: 794: 793: 789: 786: 783: 780: 779: 775: 772: 769: 767: 764: 763: 759: 756: 753: 751: 748: 747: 743: 732: 729: 718: 717: 713: 710: 707: 704: 701: 700: 696: 693: 690: 688:speed feature 687: 686: 677: 674: 666: 656: 652: 648: 642: 641: 636:This section 634: 625: 624: 615: 612: 604: 594: 590: 584: 583: 578:This section 576: 572: 567: 566: 563: 561: 557: 553: 549: 548:symbol tables 545: 540: 537: 532: 528: 522: 515: 512: 509: 506: 505: 501: 498: 493: 490: 489: 485: 482: 479: 476: 475: 471: 468: 465: 463:File globbing 462: 461: 457: 454: 451: 448: 447: 443: 440: 437: 435:List datatype 434: 433: 429: 426: 423: 420: 419: 415: 412: 409: 406: 405: 402: 400: 395: 393: 388: 386: 378: 376: 374: 370: 366: 362: 358: 354: 350: 346: 341: 339: 335: 331: 327: 323: 319: 315: 311: 307: 303: 299: 294: 292: 289:, as well as 288: 284: 276: 274: 272: 268: 264: 260: 256: 250: 220: 210: 203: 197: 193: 190: 187: 185: 181: 178: 175: 173: 169: 166: 163: 161: 157: 154: 151: 147: 140: 135: 125: 124: 122: 120: 116: 112: 96: 90: 88: 84: 80: 66: 62: 58: 56: 52: 48: 42: 37: 30: 25: 19: 1646: 1632: 1618: 1604: 1590: 1579: 1570: 1556: 1525: 1511: 1497: 1466: 1454:. Retrieved 1445: 1433:. Retrieved 1428: 1419: 1410: 1404: 1392: 1383: 1374: 1360: 1348:. Retrieved 1338: 1326:. Retrieved 1323:"muon.build" 1317: 1282: 1268: 1256:. Retrieved 1252: 1243: 1234: 1225: 1214: 1192:22 September 1190:. Retrieved 1180: 1122: 1118:meson-python 1113: 1091: 1072: 1046: 1030: 1028: 979:FetchContent 961:FetchContent 910: 893: 887: 817:unity builds 814: 801:CMake โ‰ฅ 3.16 711: 669: 660: 637: 607: 598: 587:Please help 582:verification 579: 541: 533: 529: 526: 452:since 0.47.0 396: 389: 382: 342: 337: 295: 280: 269:, under the 218: 217: 55:Developer(s) 18: 1435:3 September 1385:regenerate. 1052:GNOME Shell 1041:Main page: 884:Subprojects 846:Generate a 723:depends on 542:Meson uses 495:run_command 314:Objective-C 265:written in 132:/mesonbuild 92:1.5.2  1686:Categories 1328:27 January 1173:References 1129:PostgreSQL 1116:, via the 1102:setuptools 1031:cross file 958:subproject 942:pkg-config 894:subproject 890:pkg-config 841:Autotools 663:March 2024 647:improve it 601:March 2024 375:backends. 357:Emscripten 200:mesonbuild 149:Written in 119:Repository 74:2013-03-02 1406:Microsoft 1120:package. 1068:GStreamer 1056:Autotools 869:Automatic 860:make dist 848:configure 754:Automatic 651:verifying 558:changes. 421:Datatypes 1456:13 March 1258:13 April 1135:See also 1037:Adopters 924:use case 811:Features 798:Optional 733:No, and 536:globbing 379:Language 1216:YouTube 1094:Fortran 1079:Systemd 645:Please 407:Feature 322:Fortran 195:Website 184:License 103: ( 72: ( 1581:GitHub 1412:other. 1350:28 May 1253:GitHub 1114:wheels 1110:PEP517 1098:Cython 1014:crates 933:Cargo 850:script 766:Distcc 750:Ccache 544:ccache 385:Python 361:Cython 332:, and 267:Python 205:  153:Python 134:/meson 128:github 1401:(PDF) 1236:like. 1157:Cmake 1106:SciPy 1083:X.Org 1073:Many 1048:GNOME 930:CMake 927:Meson 838:CMake 835:Meson 697:Make 694:CMake 691:Meson 416:Make 413:CMake 410:Meson 373:Xcode 365:ninja 349:Clang 287:macOS 219:Meson 47:dav1d 22:Meson 1458:2018 1437:2020 1352:2021 1330:2023 1260:2016 1194:2024 1162:make 1127:and 1125:QEMU 1096:and 1087:Mesa 1085:and 1066:and 1064:GLib 1060:GTK+ 739:test 721:test 516:Yes 502:Yes 359:and 338:Wrap 334:Vala 330:Rust 326:Java 310:CUDA 283:Unix 202:.com 172:Type 130:.com 1016:.io 997:No 991:Yes 784:Yes 730:Yes 725:all 649:by 591:by 556:ABI 550:of 513:Yes 510:Yes 499:Yes 486:No 483:Yes 469:Yes 458:No 438:Yes 430:No 424:Yes 371:or 302:C++ 1688:: 1578:. 1539:^ 1480:^ 1427:. 1409:. 1403:. 1382:. 1296:^ 1251:. 1233:. 1213:. 1202:^ 1008:No 994:No 983:? 950:? 856:No 853:No 823:, 480:No 466:No 455:No 427:No 351:, 347:, 328:, 324:, 320:, 316:, 312:, 308:, 306:C# 304:, 300:, 273:. 1654:. 1640:. 1626:. 1612:. 1598:. 1584:. 1564:. 1550:. 1533:. 1519:. 1505:. 1491:. 1474:. 1460:. 1439:. 1368:. 1354:. 1332:. 1311:. 1290:. 1276:. 1262:. 1219:. 1196:. 727:) 676:) 670:( 665:) 661:( 643:. 614:) 608:( 603:) 599:( 585:. 318:D 298:C 249:/ 246:n 243:ษ’ 240:s 237:. 234:ษ› 231:m 228:หˆ 225:/ 221:( 107:) 76:)

Index



dav1d
Developer(s)
Stable release
Edit this on Wikidata
Repository
github.com/mesonbuild/meson
Edit this at Wikidata
Python
Operating system
Cross-platform
Type
Software development tools
License
Apache License 2.0
mesonbuild.com
Edit this on Wikidata
/หˆmษ›.sษ’n/
automating the building
convention over configuration
free and open-source software
Python
Apache License 2.0
Unix
macOS
Microsoft Windows
C
C++
C#

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

โ†‘