Annotation of wikisrc/pkgsrc/how_to_convert_autotools_to_meson.mdwn, revision 1.1
1.1 ! nia 1: How to convert autotools to meson
! 2: =================================
! 3:
! 4: GNU's build system ("autotools", ./configure, etc) was previously the
! 5: main one used by most of the open source world. However, lots of high
! 6: profile projects (GNOME, etc) have been switching from it to a new
! 7: python-based one, called meson.
! 8:
! 9: Many things in pkgsrc have needed to be updated to use meson, so
! 10: here's a guide on doing it properly.
! 11:
! 12: Basics
! 13: ------
! 14:
! 15: You won't need the following, so delete them:
! 16:
! 17: GNU_CONFIUGRE= yes
! 18: USE_LIBTOOL= yes
! 19:
! 20: Neither meson or cmake (another increasingly popular alternative) uses
! 21: libtool to make shared libraries.
! 22:
! 23: You will need the following:
! 24:
! 25: .include "../../devel/meson/build.mk"
! 26:
! 27: Tools
! 28: -----
! 29:
! 30: Only the following tools are generally needed:
! 31:
! 32: USE_TOOLS+= pkg-config msgfmt xgettext
! 33:
! 34: Nearly every meson package needs pkg-config, since it's the main way it
! 35: resolves dependencies. This also means that dependencies where the
! 36: buildlink isn't included won't be detected.
! 37:
! 38: meson does not use intltool or other gettext tools than xgettext
! 39: and msgfmt. If your package uses `i18n.gettext` in a `meson.build` file
! 40: it needs xgettext, and if it uses `i18n.merge_file` it needs msgfmt.
! 41: It's easy to check this with grep.
! 42:
! 43: gettext issues on NetBSD
! 44: ------------------------
! 45:
! 46: NetBSD includes an (old, pre-GPLv3?) version of msgfmt. This doesn't
! 47: have the new --desktop or --xml flags, so you'll get a build error
! 48: if a package attempts to use these.
! 49:
! 50: There's an easy workaround:
! 51:
! 52: .include "../../mk/bsd.prefs.mk"
! 53:
! 54: # msgfmt: unknown option -- desktop
! 55: .if ${OPSYS} == "NetBSD"
! 56: TOOLS_PLATFORM.msgfmt=
! 57: .endif
! 58:
! 59: Python
! 60: ------
! 61:
! 62: Every Meson project uses Python to build, but many don't install
! 63: Python scripts and don't need it to run, so you should add the following:
! 64:
! 65: PYTHON_FOR_BUILD_ONLY= tool
! 66:
! 67: If the build process needs a `python3`, `python2`, or `python` binary to
! 68: execute scripts during the build, you should also include the following:
! 69:
! 70: .include "../../lang/python/tool.mk"
! 71:
! 72: This will automatically create a python executable with the appropriate
! 73: suffix (or lack of suffix) for the duration of the build.
! 74:
! 75: Flags
! 76: -----
! 77:
! 78: Flags of the following form:
! 79:
! 80: CONFIGURE_ARGS+= --enable-opengl
! 81:
! 82: Generally now take the following form:
! 83:
! 84: MESON_ARGS+= -Dopengl=true
! 85:
! 86: pkgconfig overrides
! 87: -------------------
! 88:
! 89: Libraries that use meson generally generate .pc files for use
! 90: by pkg-config. This happens during the build, while previously
! 91: they would have been pregenerated.
! 92:
! 93: You should search for .pc files after the build is complete
! 94: and set the appropriate flags:
! 95:
! 96: PKGCONFIG_OVERRIDE_STAGE= pre-install
! 97: PKGCONFIG_OVERRIDE+= output/meson-private/glesv2.pc
! 98:
! 99: This is necessary so that pkgsrc sets the correct runtime
! 100: path for libraries.
! 101:
! 102: Remove any old references to nonexistent .pc files from the old
! 103: build system in the PKGCONFIG_OVERRIDE.
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb