aboutsummaryrefslogtreecommitdiffstats
path: root/classes/autotools_base.bbclass
blob: 1b22178f02ea22608f0e1951900b5288a0c635f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# use autotools_stage_all for native packages
AUTOTOOLS_NATIVE_STAGE_INSTALL = "1"

DEPENDS_prepend = "${@['gnu-config-native ', ''][bool(d.getVar('INHIBIT_AUTOTOOLS_DEPS', 1))]}"
EXTRA_OEMAKE = ""

inherit siteinfo

def _autotools_get_sitefiles(d):
    def inherits(d, *classes):
        if any(bb.data.inherits_class(cls, d) for cls in classes):
            return True

    if inherits(d, "native", "nativesdk"):
        return

    sitedata = siteinfo_data(d)
    for path in d.getVar("BBPATH", True).split(":"):
        for element in sitedata:
            filename = os.path.join(path, "site", element)
            if os.path.exists(filename):
                yield filename

# Space separated list of shell scripts with variables defined to supply test
# results for autoconf tests we cannot run at build time.
export CONFIG_SITE = "${@' '.join(_autotools_get_sitefiles(d))}"

def append_libtool_sysroot(d):
	if bb.data.getVar('LIBTOOL_HAS_SYSROOT', d, 1) == "yes":
		if bb.data.getVar('BUILD_SYS', d, 1) == bb.data.getVar('HOST_SYS', d, 1):
			return '--with-libtool-sysroot'
		else:
			return '--with-libtool-sysroot=${STAGING_DIR_HOST}'
	return ''

CONFIGUREOPTS = " --build=${BUILD_SYS} \
		  --host=${HOST_SYS} \
		  --target=${TARGET_SYS} \
		  --prefix=${prefix} \
		  --exec_prefix=${exec_prefix} \
		  --bindir=${bindir} \
		  --sbindir=${sbindir} \
		  --libexecdir=${libexecdir} \
		  --datadir=${datadir} \
		  --sysconfdir=${sysconfdir} \
		  --sharedstatedir=${sharedstatedir} \
		  --localstatedir=${localstatedir} \
		  --libdir=${libdir} \
		  --includedir=${includedir} \
		  --oldincludedir=${oldincludedir} \
		  --infodir=${infodir} \
		  --mandir=${mandir} \
		  ${@append_libtool_sysroot(d)} \
		"

oe_runconf () {
	if [ -x ${S}/configure ] ; then
		${S}/configure \
		${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"
	else
		oefatal "no configure script found"
	fi
}

autotools_base_do_configure () {
	if [ -e ${S}/configure ]; then
		find ${S} -name config.guess -exec \
		    ln -sf ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess "{}" \;
		find ${S} -name config.sub -exec \
		    ln -sf ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub "{}" \;
		oe_runconf $@
	else
		oenote "nothing to configure"
	fi
}

autotools_base_do_install() {
	oe_runmake 'DESTDIR=${D}' install
}

EXPORT_FUNCTIONS do_configure do_install

PACKAGE_PREPROCESS_FUNCS += "${@['autotools_prepackage_lamangler',''][bb.data.getVar('LIBTOOL_HAS_SYSROOT', d, 1) == "yes"]}"
autotools_prepackage_lamangler () {
        for i in `find ${PKGD} -name "*.la"` ; do \
            sed -i -e 's:${STAGING_LIBDIR}:${libdir}:g;' \
                   -e 's:${D}::g;' \
                   -e 's:-I${WORKDIR}\S*: :g;' \
                   -e 's:-L${WORKDIR}\S*: :g;' \
                   $i
	done
}

# STAGE_TEMP_PREFIX is used for a speedup by packaged-staging
STAGE_TEMP="${WORKDIR}/temp-staging"
STAGE_TEMP_PREFIX = ""

autotools_stage_includes() {
	if [ "${INHIBIT_AUTO_STAGE_INCLUDES}" != "1" ]
	then
		rm -rf ${STAGE_TEMP}
		mkdir -p ${STAGE_TEMP}
		make DESTDIR="${STAGE_TEMP}" install
		cp -pPR ${STAGE_TEMP}/${includedir}/* ${STAGING_INCDIR}
		rm -rf ${STAGE_TEMP}
	fi
}

autotools_stage_dir() {
	sysroot_stage_dir $1 ${STAGE_TEMP_PREFIX}$2
}

autotools_stage_libdir() {
	sysroot_stage_libdir $1 ${STAGE_TEMP_PREFIX}$2
}

autotools_stage_all() {
	if [ "${INHIBIT_AUTO_STAGE}" = "1" ]
	then
		return
	fi
	rm -rf ${STAGE_TEMP}
	mkdir -p ${STAGE_TEMP}
	oe_runmake DESTDIR="${STAGE_TEMP}" install
	rm -rf ${STAGE_TEMP}/${mandir} || true
	rm -rf ${STAGE_TEMP}/${infodir} || true
	sysroot_stage_dirs ${STAGE_TEMP} ${STAGE_TEMP_PREFIX}
	rm -rf ${STAGE_TEMP}
}