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