summaryrefslogtreecommitdiffstats
path: root/core/modules/xorg/module.build
blob: 8fc1edd4b793c37cbe7015bf50260dce9f63a011 (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
#!/bin/bash

fetch_source() {
	if [ -n "$REQUIRED_XORG_DRIVERS" ]; then
		mkdir -p src
		cd src || perror "No cd to xorg src dir"
		for drv in $REQUIRED_XORG_DRIVERS; do
			[ -d "${drv}/.git" ] && continue
			git clone --depth 1 "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 freezed/crashed X with certain gfx cards (radeon R240)
	rm -f -- "${MODULE_BUILD_DIR}/usr/lib/xorg/modules/libglamoregl.so"

	# See if we should build more up to date versions of drivers
	local drv
	if [ -n "$REQUIRED_XORG_DRIVERS" ]; then
		pinfo "Compiling requested xorg drivers from source"
		mkdir -p "${MODULE_BUILD_DIR}/usr/lib/xorg/modules/drivers"
		for drv in $REQUIRED_XORG_DRIVERS; do
			pinfo "Compiling $drv"
			cd "${MODULE_WORK_DIR}/src/${drv}" || perror "No src dir for xorg driver $drv"
			./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
}