diff options
Diffstat (limited to 'meta/classes/autotools.bbclass')
| -rw-r--r-- | meta/classes/autotools.bbclass | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass new file mode 100644 index 0000000000..927e3432b7 --- /dev/null +++ b/meta/classes/autotools.bbclass | |||
| @@ -0,0 +1,182 @@ | |||
| 1 | inherit base | ||
| 2 | |||
| 3 | def autotools_dep_prepend(d): | ||
| 4 | import bb; | ||
| 5 | |||
| 6 | if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1): | ||
| 7 | return '' | ||
| 8 | |||
| 9 | pn = bb.data.getVar('PN', d, 1) | ||
| 10 | deps = '' | ||
| 11 | |||
| 12 | if pn in ['autoconf-native', 'automake-native']: | ||
| 13 | return deps | ||
| 14 | deps += 'autoconf-native automake-native ' | ||
| 15 | |||
| 16 | if not pn in ['libtool', 'libtool-native', 'libtool-cross']: | ||
| 17 | deps += 'libtool-native ' | ||
| 18 | |||
| 19 | return deps + 'gnu-config-native ' | ||
| 20 | |||
| 21 | EXTRA_OEMAKE = "" | ||
| 22 | DEPENDS_prepend = "${@autotools_dep_prepend(d)}" | ||
| 23 | acpaths = "default" | ||
| 24 | EXTRA_AUTORECONF = "--exclude=autopoint" | ||
| 25 | |||
| 26 | def autotools_set_crosscompiling(d): | ||
| 27 | import bb | ||
| 28 | if not bb.data.inherits_class('native', d): | ||
| 29 | return " cross_compiling=yes" | ||
| 30 | return "" | ||
| 31 | |||
| 32 | # EXTRA_OECONF_append = "${@autotools_set_crosscompiling(d)}" | ||
| 33 | |||
| 34 | oe_runconf () { | ||
| 35 | if [ -x ${S}/configure ] ; then | ||
| 36 | cfgcmd="${S}/configure \ | ||
| 37 | --build=${BUILD_SYS} \ | ||
| 38 | --host=${HOST_SYS} \ | ||
| 39 | --target=${TARGET_SYS} \ | ||
| 40 | --prefix=${prefix} \ | ||
| 41 | --exec_prefix=${exec_prefix} \ | ||
| 42 | --bindir=${bindir} \ | ||
| 43 | --sbindir=${sbindir} \ | ||
| 44 | --libexecdir=${libexecdir} \ | ||
| 45 | --datadir=${datadir} \ | ||
| 46 | --sysconfdir=${sysconfdir} \ | ||
| 47 | --sharedstatedir=${sharedstatedir} \ | ||
| 48 | --localstatedir=${localstatedir} \ | ||
| 49 | --libdir=${libdir} \ | ||
| 50 | --includedir=${includedir} \ | ||
| 51 | --oldincludedir=${oldincludedir} \ | ||
| 52 | --infodir=${infodir} \ | ||
| 53 | --mandir=${mandir} \ | ||
| 54 | ${EXTRA_OECONF} \ | ||
| 55 | $@" | ||
| 56 | oenote "Running $cfgcmd..." | ||
| 57 | $cfgcmd || oefatal "oe_runconf failed" | ||
| 58 | else | ||
| 59 | oefatal "no configure script found" | ||
| 60 | fi | ||
| 61 | } | ||
| 62 | |||
| 63 | autotools_do_configure() { | ||
| 64 | case ${PN} in | ||
| 65 | autoconf*) | ||
| 66 | ;; | ||
| 67 | automake*) | ||
| 68 | ;; | ||
| 69 | *) | ||
| 70 | # WARNING: gross hack follows: | ||
| 71 | # An autotools built package generally needs these scripts, however only | ||
| 72 | # automake or libtoolize actually install the current versions of them. | ||
| 73 | # This is a problem in builds that do not use libtool or automake, in the case | ||
| 74 | # where we -need- the latest version of these scripts. e.g. running a build | ||
| 75 | # for a package whose autotools are old, on an x86_64 machine, which the old | ||
| 76 | # config.sub does not support. Work around this by installing them manually | ||
| 77 | # regardless. | ||
| 78 | ( for ac in `find ${S} -name configure.in -o -name configure.ac`; do | ||
| 79 | rm -f `dirname $ac`/configure | ||
| 80 | done ) | ||
| 81 | if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then | ||
| 82 | olddir=`pwd` | ||
| 83 | cd ${S} | ||
| 84 | if [ x"${acpaths}" = xdefault ]; then | ||
| 85 | acpaths= | ||
| 86 | for i in `find ${S} -maxdepth 2 -name \*.m4|grep -v 'aclocal.m4'| \ | ||
| 87 | grep -v 'acinclude.m4' | sed -e 's,\(.*/\).*$,\1,'|sort -u`; do | ||
| 88 | acpaths="$acpaths -I $i" | ||
| 89 | done | ||
| 90 | else | ||
| 91 | acpaths="${acpaths}" | ||
| 92 | fi | ||
| 93 | AUTOV=`automake --version |head -n 1 |sed "s/.* //;s/\.[0-9]\+$//"` | ||
| 94 | automake --version | ||
| 95 | echo "AUTOV is $AUTOV" | ||
| 96 | install -d ${STAGING_DIR}/${HOST_SYS}/share/aclocal | ||
| 97 | install -d ${STAGING_DIR}/${HOST_SYS}/share/aclocal-$AUTOV | ||
| 98 | acpaths="$acpaths -I ${STAGING_DIR}/${HOST_SYS}/share/aclocal-$AUTOV -I ${STAGING_DIR}/${HOST_SYS}/share/aclocal" | ||
| 99 | # autoreconf is too shy to overwrite aclocal.m4 if it doesn't look | ||
| 100 | # like it was auto-generated. Work around this by blowing it away | ||
| 101 | # by hand, unless the package specifically asked not to run aclocal. | ||
| 102 | if ! echo ${EXTRA_AUTORECONF} | grep -q "aclocal"; then | ||
| 103 | rm -f aclocal.m4 | ||
| 104 | fi | ||
| 105 | if [ -e configure.in ]; then | ||
| 106 | CONFIGURE_AC=configure.in | ||
| 107 | else | ||
| 108 | CONFIGURE_AC=configure.ac | ||
| 109 | fi | ||
| 110 | if grep "^AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then | ||
| 111 | if grep "sed.*POTFILES" $CONFIGURE_AC >/dev/null; then | ||
| 112 | : do nothing -- we still have an old unmodified configure.ac | ||
| 113 | else | ||
| 114 | oenote Executing glib-gettextize --force --copy | ||
| 115 | echo "no" | glib-gettextize --force --copy | ||
| 116 | fi | ||
| 117 | fi | ||
| 118 | if grep "^AC_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then | ||
| 119 | oenote Executing intltoolize --copy --force --automake | ||
| 120 | intltoolize --copy --force --automake | ||
| 121 | fi | ||
| 122 | oenote Executing autoreconf --verbose --install --force ${EXTRA_AUTORECONF} $acpaths | ||
| 123 | mkdir -p m4 | ||
| 124 | autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed." | ||
| 125 | cd $olddir | ||
| 126 | fi | ||
| 127 | ;; | ||
| 128 | esac | ||
| 129 | if [ -e ${S}/configure ]; then | ||
| 130 | oe_runconf | ||
| 131 | else | ||
| 132 | oenote "nothing to configure" | ||
| 133 | fi | ||
| 134 | } | ||
| 135 | |||
| 136 | autotools_do_install() { | ||
| 137 | oe_runmake 'DESTDIR=${D}' install | ||
| 138 | } | ||
| 139 | |||
| 140 | STAGE_TEMP="${WORKDIR}/temp-staging" | ||
| 141 | |||
| 142 | autotools_stage_includes() { | ||
| 143 | if [ "${INHIBIT_AUTO_STAGE_INCLUDES}" != "1" ] | ||
| 144 | then | ||
| 145 | rm -rf ${STAGE_TEMP} | ||
| 146 | mkdir -p ${STAGE_TEMP} | ||
| 147 | make DESTDIR="${STAGE_TEMP}" install | ||
| 148 | cp -pPR ${STAGE_TEMP}/${includedir}/* ${STAGING_INCDIR} | ||
| 149 | rm -rf ${STAGE_TEMP} | ||
| 150 | fi | ||
| 151 | } | ||
| 152 | |||
| 153 | autotools_stage_all() { | ||
| 154 | if [ "${INHIBIT_AUTO_STAGE}" = "1" ] | ||
| 155 | then | ||
| 156 | return | ||
| 157 | fi | ||
| 158 | rm -rf ${STAGE_TEMP} | ||
| 159 | mkdir -p ${STAGE_TEMP} | ||
| 160 | oe_runmake DESTDIR="${STAGE_TEMP}" install | ||
| 161 | if [ -d ${STAGE_TEMP}/${includedir} ]; then | ||
| 162 | cp -fpPR ${STAGE_TEMP}/${includedir}/* ${STAGING_INCDIR} | ||
| 163 | fi | ||
| 164 | if [ -d ${STAGE_TEMP}/${libdir} ] | ||
| 165 | then | ||
| 166 | for i in ${STAGE_TEMP}/${libdir}/*.la | ||
| 167 | do | ||
| 168 | if [ ! -f "$i" ]; then | ||
| 169 | cp -fpPR ${STAGE_TEMP}/${libdir}/* ${STAGING_LIBDIR} | ||
| 170 | break | ||
| 171 | fi | ||
| 172 | oe_libinstall -so $(basename $i .la) ${STAGING_LIBDIR} | ||
| 173 | done | ||
| 174 | fi | ||
| 175 | if [ -d ${STAGE_TEMP}/${datadir}/aclocal ]; then | ||
| 176 | install -d ${STAGING_DATADIR}/aclocal | ||
| 177 | cp -fpPR ${STAGE_TEMP}/${datadir}/aclocal/* ${STAGING_DATADIR}/aclocal | ||
| 178 | fi | ||
| 179 | rm -rf ${STAGE_TEMP} | ||
| 180 | } | ||
| 181 | |||
| 182 | EXPORT_FUNCTIONS do_configure do_install | ||
