• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2
3TOPSRCDIR="$( cd "$( dirname "$0" )" && pwd )"
4
5KERNEL_DIR=$1
6
7if [ -z "${KERNEL_DIR}" -o \
8     ! -f ${KERNEL_DIR}/usr/include/linux/videodev2.h -o \
9     ! -f ${KERNEL_DIR}/usr/include/linux/fb.h -o \
10     ! -f ${KERNEL_DIR}/usr/include/linux/vesa.h -o \
11     ! -f ${KERNEL_DIR}/usr/include/linux/v4l2-controls.h -o \
12     ! -f ${KERNEL_DIR}/usr/include/linux/v4l2-common.h -o \
13     ! -f ${KERNEL_DIR}/usr/include/linux/v4l2-subdev.h -o \
14     ! -f ${KERNEL_DIR}/usr/include/linux/v4l2-mediabus.h -o \
15     ! -f ${KERNEL_DIR}/usr/include/linux/v4l2-dv-timings.h -o \
16     ! -f ${KERNEL_DIR}/usr/include/linux/ivtv.h -o \
17     ! -f ${KERNEL_DIR}/usr/include/linux/dvb/frontend.h -o \
18     ! -f ${KERNEL_DIR}/usr/include/linux/dvb/dmx.h -o \
19     ! -f ${KERNEL_DIR}/usr/include/linux/lirc.h -o \
20     ! -f ${KERNEL_DIR}/usr/include/linux/bpf.h -o \
21     ! -f ${KERNEL_DIR}/usr/include/linux/bpf_common.h -o \
22     ! -f ${KERNEL_DIR}/drivers/media/tuners/xc2028-types.h -o \
23     ! -f ${KERNEL_DIR}/usr/include/linux/input-event-codes.h ]; then
24	echo "Usage: $0 KERNEL_DIR"
25	echo
26	echo "KERNEL_DIR must be the path to an extracted kernel source dir"
27	echo "and run 'make headers_install' in KERNEL_DIR."
28	exit 1
29fi
30
31cp -a ${KERNEL_DIR}/usr/include/linux/videodev2.h ${TOPSRCDIR}/include/linux
32cp -a ${KERNEL_DIR}/usr/include/linux/fb.h ${TOPSRCDIR}/include/linux
33cp -a ${KERNEL_DIR}/usr/include/linux/vesa.h ${TOPSRCDIR}/include/linux
34cp -a ${KERNEL_DIR}/usr/include/linux/v4l2-controls.h ${TOPSRCDIR}/include/linux
35patch -d ${TOPSRCDIR} --no-backup-if-mismatch -p1 <${TOPSRCDIR}/utils/common/v4l2-controls.patch
36cp -a ${KERNEL_DIR}/usr/include/linux/v4l2-common.h ${TOPSRCDIR}/include/linux
37cp -a ${KERNEL_DIR}/usr/include/linux/v4l2-subdev.h ${TOPSRCDIR}/include/linux
38cp -a ${KERNEL_DIR}/usr/include/linux/v4l2-mediabus.h ${TOPSRCDIR}/include/linux
39cp -a ${KERNEL_DIR}/usr/include/linux/v4l2-dv-timings.h ${TOPSRCDIR}/include/linux
40cp -a ${KERNEL_DIR}/usr/include/linux/media-bus-format.h ${TOPSRCDIR}/include/linux
41cp -a ${KERNEL_DIR}/usr/include/linux/media.h ${TOPSRCDIR}/include/linux
42cp -a ${KERNEL_DIR}/usr/include/linux/ivtv.h ${TOPSRCDIR}/include/linux
43cp -a ${KERNEL_DIR}/usr/include/linux/dvb/frontend.h ${TOPSRCDIR}/include/linux/dvb
44cp ${TOPSRCDIR}/include/linux/dvb/frontend.h ${TOPSRCDIR}/lib/include/libdvbv5/dvb-frontend.h
45cp -a ${KERNEL_DIR}/usr/include/linux/dvb/dmx.h ${TOPSRCDIR}/include/linux/dvb
46cp -a ${KERNEL_DIR}/usr/include/linux/lirc.h ${TOPSRCDIR}/include/linux
47cp -a ${KERNEL_DIR}/usr/include/linux/bpf.h ${TOPSRCDIR}/include/linux
48cp -a ${KERNEL_DIR}/usr/include/linux/bpf_common.h ${TOPSRCDIR}/include/linux
49cp -a ${KERNEL_DIR}/usr/include/linux/cec.h ${TOPSRCDIR}/include/linux
50cp -a ${KERNEL_DIR}/usr/include/linux/cec-funcs.h ${TOPSRCDIR}/include/linux
51cp -a ${KERNEL_DIR}/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c ${TOPSRCDIR}/utils/common
52cp -a ${KERNEL_DIR}/drivers/media/common/v4l2-tpg/v4l2-tpg-colors.c ${TOPSRCDIR}/utils/common
53cp -a ${KERNEL_DIR}/include/media/tpg/v4l2-tpg.h ${TOPSRCDIR}/utils/common
54patch -d ${TOPSRCDIR} --no-backup-if-mismatch -p1 <${TOPSRCDIR}/utils/common/v4l2-tpg.patch
55cp -a ${KERNEL_DIR}/drivers/media/test-drivers/vicodec/codec-fwht.[ch] ${TOPSRCDIR}/utils/common/
56cp -a ${KERNEL_DIR}/drivers/media/test-drivers/vicodec/codec-v4l2-fwht.[ch] ${TOPSRCDIR}/utils/common/
57patch -d ${TOPSRCDIR} --no-backup-if-mismatch -p1 <${TOPSRCDIR}/utils/common/codec-fwht.patch
58
59# Remove the ' | grep -v V4L2_META_FMT_GENERIC_' part once these meta formats
60# are enabled in videodev2.h. Currently these are under #ifdef __KERNEL__.
61grep V4L2_.*_FMT.*descr ${KERNEL_DIR}/drivers/media/v4l2-core/v4l2-ioctl.c | grep -v V4L2_META_FMT_GENERIC_ | perl -pe 's/.*V4L2_(.*)_FMT/\tcase V4L2_\1_FMT/; s/:.*descr = /: return /; s/;.*/;/;' >${TOPSRCDIR}/utils/common/v4l2-pix-formats.h
62
63function keytable {
64	SRCDIR=${TOPSRCDIR}/utils/keytable
65
66	cd ${SRCDIR}
67	echo generating ${SRCDIR}/parse.h
68	./gen_input_events.pl < ${KERNEL_DIR}/usr/include/linux/input-event-codes.h  > ${SRCDIR}/parse.h
69	rm -f ${SRCDIR}/rc_keymaps/*
70	echo storing existing keymaps at ${SRCDIR}/rc_keymaps/
71	./gen_keytables.pl ${KERNEL_DIR};
72	cp ${SRCDIR}/rc_keymaps_userspace/* ${SRCDIR}/rc_keymaps/
73	echo "ir_keytable_rc_keymaps = files(" >${SRCDIR}/rc_keymaps/meson.build
74	ls ${SRCDIR}/rc_keymaps | grep toml | perl -ne "chomp; printf(\"    '\$_',\n\");" >>${SRCDIR}/rc_keymaps/meson.build
75	echo ")" >>${SRCDIR}/rc_keymaps/meson.build
76}
77
78function libdvbv5 {
79	SRCDIR=${TOPSRCDIR}/lib/libdvbv5
80
81	cd ${SRCDIR}
82	./gen_dvb_structs.pl ${KERNEL_DIR}/usr/include/
83}
84
85function xc3028-firmware {
86	SRCDIR=${TOPSRCDIR}/contrib/xc3028-firmware
87
88	cp -a ${KERNEL_DIR}/drivers/media/tuners/xc2028-types.h ${SRCDIR}/
89}
90
91function ioctl-test {
92	SRCDIR=${TOPSRCDIR}/contrib/test
93
94	cd ${SRCDIR}
95
96	./gen_ioctl_list.pl --gen_ioctl_numbers >.tmp_ioctl.c
97	gcc -I ../../include/ .tmp_ioctl.c -o tmp_ioctl32 -m32
98	gcc -I ../../include/ .tmp_ioctl.c -o tmp_ioctl64 -m64
99	./tmp_ioctl32 32 >ioctl_32.h
100	./tmp_ioctl64 64 >ioctl_64.h
101	rm .tmp_ioctl.c tmp_ioctl32 tmp_ioctl64
102	./gen_ioctl_list.pl >ioctl-test.h
103}
104
105function freebsd {
106	SRCDIR=${TOPSRCDIR}/contrib/freebsd
107
108	cd ${SRCDIR}
109
110	rm -rf .pc
111
112	for i in input.h input-event-codes.h ivtv.h uinput.h videodev2.h v4l2-controls.h v4l2-common.h; do
113		mkdir -p include/linux/$(dirname $i)
114		cp ${KERNEL_DIR}/usr/include/linux/$i include/linux/$i
115	done
116	patch -d ${SRCDIR} --no-backup-if-mismatch -p1 <${TOPSRCDIR}/utils/common/v4l2-controls.patch
117
118	for i in ivtv.h uinput.h videodev2.h v4l2-common.h; do
119		sed -e 's/__u8/uint8_t/g' -e 's/__u16/uint16_t/g' -e 's/__u32/uint32_t/g' -e 's/__u64/uint64_t/g' -e 's/__s8/int8_t/g' -e 's/__s16/int16_t/g' -e 's/__s32/int32_t/g' -e 's/__s64/int64_t/g' -e 's/__le32/uint32_t/g' -e 's/__user//g' -i include/linux/$i
120	done
121
122	quilt push -a
123}
124
125function v4l2-tracer {
126	V4L2TRACERDIR="${TOPSRCDIR}/utils/v4l2-tracer"
127	V4L2TRACERSOURCES="${TOPSRCDIR}/include/linux/v4l2-controls.h "
128	V4L2TRACERSOURCES+="${TOPSRCDIR}/include/linux/videodev2.h "
129	V4L2TRACERSOURCES+="${TOPSRCDIR}/include/linux/media.h "
130	V4L2TRACERSOURCES+="${TOPSRCDIR}/include/linux/v4l2-common.h "
131
132	V4L2TRACERTMPDIR=$(mktemp --tmpdir -d "v4l2-tracer-gen.XXXXXXXXXX")
133
134	perl "${V4L2TRACERDIR}/v4l2-tracer-gen.pl" -o $V4L2TRACERTMPDIR $V4L2TRACERSOURCES
135
136	diff -Naur "${V4L2TRACERDIR}/trace-gen.cpp" "${V4L2TRACERTMPDIR}/trace-gen.cpp" > "${V4L2TRACERTMPDIR}/trace-gen.patch"
137	diff -Naur "${V4L2TRACERDIR}/trace-gen.h" "${V4L2TRACERTMPDIR}/trace-gen.h" > "${V4L2TRACERTMPDIR}/trace-gen-h.patch"
138	diff -Naur "${V4L2TRACERDIR}/retrace-gen.cpp" "${V4L2TRACERTMPDIR}/retrace-gen.cpp" > "${V4L2TRACERTMPDIR}/retrace-gen.patch"
139	diff -Naur "${V4L2TRACERDIR}/retrace-gen.h" "${V4L2TRACERTMPDIR}/retrace-gen.h" > "${V4L2TRACERTMPDIR}/retrace-gen-h.patch"
140	diff -Naur "${V4L2TRACERDIR}/v4l2-tracer-info-gen.h" "${V4L2TRACERTMPDIR}/v4l2-tracer-info-gen.h" > "${V4L2TRACERTMPDIR}/v4l2-tracer-info-gen-h.patch"
141
142	patch -d ${V4L2TRACERDIR} --no-backup-if-mismatch <${V4L2TRACERTMPDIR}/trace-gen.patch
143	patch -d ${V4L2TRACERDIR} --no-backup-if-mismatch <${V4L2TRACERTMPDIR}/trace-gen-h.patch
144	patch -d ${V4L2TRACERDIR} --no-backup-if-mismatch <${V4L2TRACERTMPDIR}/retrace-gen.patch
145	patch -d ${V4L2TRACERDIR} --no-backup-if-mismatch <${V4L2TRACERTMPDIR}/retrace-gen-h.patch
146	patch -d ${V4L2TRACERDIR} --no-backup-if-mismatch <${V4L2TRACERTMPDIR}/v4l2-tracer-info-gen-h.patch
147
148	rm -r "$V4L2TRACERTMPDIR"
149}
150
151keytable
152libdvbv5
153freebsd
154ioctl-test
155xc3028-firmware
156v4l2-tracer
157