summaryrefslogtreecommitdiffstats
path: root/core/modules/xorg/module.build
blob: 390b5922c431e51d7380610626ce0591036624fc (plain) (blame)
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
#!/bin/bash

fetch_source() {
	if [ -n "$REQUIRED_XORG_DRIVERS" ]; then
		local drv
		mkdir -p src
		cd src || perror "No cd to xorg src dir"
		for drv in $REQUIRED_XORG_DRIVERS; do
			drv=${drv%//*}
			[ -d "${drv}/.git" ] && continue
			git clone "git://anongit.freedesktop.org/xorg/driver/${drv}" "${drv}" || perror "Could not clone $drv"
		done
		cd -
	fi
}

build() {
	COPYLIST="list_dpkg_output"
	[ -e "$COPYLIST" ] && rm "$COPYLIST"

	list_packet_files >> "$COPYLIST"
	tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}"

	# copy udev rules to correct location
	if [ -d "${MODULE_BUILD_DIR}/lib/udev" ]; then
		cp -r "${MODULE_BUILD_DIR}/lib/udev" "${MODULE_BUILD_DIR}/usr/lib/"
	fi
	if [ -d "${MODULE_BUILD_DIR}/etc/udev" ]; then
		cp -r "${MODULE_BUILD_DIR}/etc/udev" "${MODULE_BUILD_DIR}/usr/lib/"
	fi
	rm -rf -- "${MODULE_BUILD_DIR}/lib/udev" "${MODULE_BUILD_DIR}/etc/udev"

	# This used to freeze/crashe X with certain gfx cards (radeon R240)
	# /usr/lib/xorg/modules/libglamoregl.so
	# Newer X versions seems to have this fixed, so we included it again

	# See if we should build more up to date versions of drivers
	if [ -n "$REQUIRED_XORG_DRIVERS" ]; then
		local repo vers drv
		pinfo "Compiling requested xorg drivers from source"
		mkdir -p "${MODULE_BUILD_DIR}/usr/lib/xorg/modules/drivers"
		for drv in $REQUIRED_XORG_DRIVERS; do
			repo=${drv%//*}
			vers=${drv#*//}
			pinfo "Compiling $drv"
			cd "${MODULE_WORK_DIR}/src/${repo}" || perror "No src dir for xorg driver $repo"
			if [ "$drv" != "$vers" ]; then
				git checkout "$vers" || pwarn "Could not checkout $vers for $repo"
			fi
			./autogen.sh || perror "Autogen for $drv failed"
			./configure || perror "configure for $drv failed"
			make || perror "Make for $drv failed"
			find . -type f -name "*_drv.so" -exec cp {} "${MODULE_BUILD_DIR}/usr/lib/xorg/modules/drivers" \;
		done
	fi
}

post_copy() {
	mkdir -p "${TARGET_BUILD_DIR}/etc/X11"
	[ ! -e ${TARGET_BUILD_DIR}/etc/X11/X ] && ln -s /usr/bin/Xorg ${TARGET_BUILD_DIR}/etc/X11/X
}