198184Sgordon#!/bin/sh
298184Sgordon#
398184Sgordon# $FreeBSD$
498184Sgordon#
598184Sgordon
698184Sgordon# PROVIDE: abi
7155838Sdougb# REQUIRE: archdep
8136224Smtm# KEYWORD: nojail
998184Sgordon
1098184Sgordon. /etc/rc.subr
1198184Sgordon
12153537Sdougbname="abi"
13298514Slmedesc="Enable foreign ABIs"
14165378Syarstart_cmd="${name}_start"
15165378Syarstop_cmd=":"
1698184Sgordon
1798184Sgordonsysv_start()
1898184Sgordon{
1998184Sgordon	echo -n ' sysvipc'
20159830Syar	load_kld sysvmsg
21159830Syar	load_kld sysvsem
22159830Syar	load_kld sysvshm
2398184Sgordon}
2498184Sgordon
2598184Sgordonlinux_start()
2698184Sgordon{
27165664Syar	local _tmpdir
28165664Syar
2998184Sgordon	echo -n ' linux'
30159830Syar	load_kld -e 'linux(aout|elf)' linux
31296542Sdchagin	case `sysctl -n hw.machine_arch` in
32296542Sdchagin	amd64)
33296542Sdchagin		load_kld -e 'linux64elf' linux64
34296542Sdchagin		;;
35296542Sdchagin	esac
36154787Snetchild	if [ -x /compat/linux/sbin/ldconfigDisabled ]; then
37154236Sbrooks		_tmpdir=`mktemp -d -t linux-ldconfig`
38154236Sbrooks		/compat/linux/sbin/ldconfig -C ${_tmpdir}/ld.so.cache
39154236Sbrooks		if ! cmp -s ${_tmpdir}/ld.so.cache /compat/linux/etc/ld.so.cache; then
40154236Sbrooks			cat ${_tmpdir}/ld.so.cache > /compat/linux/etc/ld.so.cache
41154236Sbrooks		fi
42154236Sbrooks		rm -rf ${_tmpdir}
4398184Sgordon	fi
4498184Sgordon}
4598184Sgordon
46153537Sdougbsvr4_start()
47153537Sdougb{
48153537Sdougb	echo -n ' svr4'
49159830Syar	load_kld -m svr4elf svr4
50153537Sdougb}
5198184Sgordon
52165378Syarabi_start()
53153537Sdougb{
54179930Smtm	local _echostop
55153537Sdougb
56179930Smtm	_echostop=
57179930Smtm	if checkyesno sysvipc_enable || checkyesno linux_enable || checkyesno svr4_enable; then
58179930Smtm		echo -n 'Additional ABI support:'
59179930Smtm		_echostop=yes
60179930Smtm	fi
61179930Smtm
62153537Sdougb	checkyesno sysvipc_enable && sysv_start
63153537Sdougb	checkyesno linux_enable && linux_start
64153537Sdougb	checkyesno svr4_enable && svr4_start
65153537Sdougb
66179930Smtm	[ -n "${_echostop}" ] && echo '.'
67153537Sdougb}
68153537Sdougb
6998184Sgordonload_rc_config $name
7098184Sgordonrun_rc_command "$1"
71