summaryrefslogtreecommitdiff
path: root/recipes/trdx-nv-binaries/trdx-nv-binaries.bb
blob: adf6f5b470cf4ac62ecd3a28652023c56c63b9a3 (plain)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
DESCRIPTION = "binary files from Nvidia along with there configuration"
LICENSE = "CLOSED SGI Khronos"
PR = "r12"

PACKAGE_ARCH = "${MACHINE_ARCH}"

LIC_DIR = "${datadir}/common-licenses"
#gstnvvidconf.tar.bz2 will hopefully be integrated into the public L4T packages
SRC_COMMON =  " \
    file://nvgstplayer.desktop \
    file://aplay.desktop \
    file://mimeapps.list \
    https://www.khronos.org/registry/khronos_headers.tgz;name=gles-h \
    https://www.khronos.org/registry/omxil/api/1.1.2/OpenMAX_IL_1_1_2_Header.zip;name=openmax-h;unpack=no \
    file://egl.pc \
    file://gles.pc \
    file://glesv2.pc \
"
SRC_URI_colibri-t20 =  " \
    file://ventana_Tegra-Linux-codecs-R16.3.0_armhf.tbz2 \
    file://ventana_Tegra-Linux-R16.3.0_armhf.tbz2 \
    ${SRC_COMMON} \
"

SRC_URI_colibri-t30 =  " \
    file://t30/cardhu_Tegra-Linux-codecs-R16.3.0_armhf.tbz2 \
    file://t30/cardhu_Tegra-Linux-R16.3.0_armhf.tbz2 \
    ${SRC_COMMON} \
"

SRC_URI_apalis-t30 =  " \
    file://t30/cardhu_Tegra-Linux-codecs-R16.3.0_armhf.tbz2 \
    file://t30/cardhu_Tegra-Linux-R16.3.0_armhf.tbz2 \
    ${SRC_COMMON} \
"

SRC_URI[gles-h.md5sum] = "45806b48a2967f12f74d9e1e5e9fea29"
SRC_URI[gles-h.sha256sum] = "0ef2ab3676f042ec9bab5d2761a15fbc58f237fedcbaea2884ff78975972cc47"

SRC_URI[openmax-h.md5sum] = "f8ac8d7272abdbe1980eeac8d03338e8"
SRC_URI[openmax-h.sha256sum] = "9e8aee85f37946202ff15a52836233f983e90a751c0816ba341ba0c1ffedf99e"
#    https://www.khronos.org/registry/omxil/api/1.2.0/OpenMAX_IL_1_2.0_Header.zip;name=openmax-h;unpack=no \
#SRC_URI[openmax-h.md5sum] = "a328b82e29d1e2abc1f20f070b9041a9"
#SRC_URI[openmax-h.sha256sum] = "9a121921450497e5373abcda000daf52af2ee31097d59c0d299a522b66936fa7"

LIC_FILES_CHKSUM = "file://../khronos_headers/GLES2/gl2.h;beginline=12;endline=15;md5=acbf6ad5edbe9552e8cc04776b0208fa"

PACKAGES = "${PN}-restricted-codecs ${PN}-nv-gstapps ${PN} ${PN}-dev"

FILES_${PN} += " \
    ${sysconfdir}/X11/def* \
    ${sysconfdir}/X11/xorg.conf.* \
    ${sysconfdir}/init/* \
    ${sysconfdir}/udev/rules.d/* \
    ${sysconfdir}/init/nv* \
    ${sysconfdir}/init/wpa* \	
    /lib/firmware/* \
    ${LIC_DIR}/${PN}/* \
    /usr/lib/* \
    /home/root/.local/share/applications/* \
"
FILES_${PN}-restricted-codecs += " \
    /lib/firmware/*.axf \
    ${LIC_DIR}/${PN}-restricted-codecs/* \
"
FILES_${PN}-nv-gstapps += " \
    /usr/bin/* \
    /usr/share/doc/nv_gstapps/* \
    ${LIC_DIR}/${PN}-nv-gstapps/* \
"

#no gnu_hash in NVIDIA binaries, skip QA dev-so for this package
#we have symlinks ending in .so, skip QA ldflags for this package
INSANE_SKIP_${PN} = "dev-so ldflags"
INSANE_SKIP_${PN}-nv-gstapps = "dev-so ldflags"

do_patch () {
    mkdir -p OpenMAX/il
    unzip -d OpenMAX/il OpenMAX_IL_1_1_2_Header.zip
}

do_compile () {
    #unpack the different packages
    #nvidia drivers
    mkdir -p nvidia_drivers${LIC_DIR}/${PN}/nvidia_drivers
    tar -C nvidia_drivers -xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/nvidia_drivers.tbz2
    tar -C nvidia_drivers -xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/config.tbz2
    cp ${WORKDIR}/Linux_for_Tegra/nv_tegra/LICENSE nvidia_drivers${LIC_DIR}/${PN}/nvidia_drivers/

    #nvidia sample gstreamer apps
    mkdir -p nvgstapps${LIC_DIR}/${PN}-nv-gstapps
    mkdir -p nvgstapps/usr/share/doc/nv_gstapps
    tar -C nvgstapps -xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/nv_sample_apps/nvgstapps.tbz2
    cp ${WORKDIR}/Linux_for_Tegra/nv_tegra/nv_sample_apps/LICENSE* nvgstapps${LIC_DIR}/${PN}-nv-gstapps/
    cp ${WORKDIR}/Linux_for_Tegra/nv_tegra/nv_sample_apps/nv*.txt nvgstapps/usr/share/doc/nv_gstapps/

    #restricted codecs
    mkdir -p restricted_codecs${LIC_DIR}/${PN}-restricted-codecs/
    tar -C restricted_codecs -xjf ${WORKDIR}/restricted_codecs.tbz2
    cp ${WORKDIR}/*.txt restricted_codecs${LIC_DIR}/${PN}-restricted-codecs/
}

do_install () {
    #nvidia_driver
    install -d ${D}/usr/lib/xorg/modules/drivers ${D}/home/root/.local/share/applications/
    install -d ${D}${LIC_DIR}/${PN}/nvidia_drivers ${D}/lib/firmware/
    install -d ${D}/${sysconfdir}/X11 ${D}/${sysconfdir}/init ${D}/${sysconfdir}/udev/rules.d
    install -m 0644 nvidia_drivers/${sysconfdir}/X11/xorg.conf ${D}/${sysconfdir}/X11/xorg.conf.nvidia
    install -m 0755 nvidia_drivers/${sysconfdir}/init/* ${D}/${sysconfdir}/init/
    install -m 0644 nvidia_drivers/${sysconfdir}/udev/rules.d/* ${D}/${sysconfdir}/udev/rules.d/
    install -m 0644 nvidia_drivers/${sysconfdir}/nv* ${D}/${sysconfdir}/
    install -m 0644 nvidia_drivers/${sysconfdir}/wpa* ${D}/${sysconfdir}/
    install -m 0644 nvidia_drivers/lib/firmware/* ${D}/lib/firmware/
    install -m 0644 nvidia_drivers${LIC_DIR}/${PN}/nvidia_drivers/* ${D}${LIC_DIR}/${PN}/nvidia_drivers/
    install -m 0644 nvidia_drivers/usr/lib/*.so ${D}/usr/lib/
    install -m 0644 nvidia_drivers/usr/lib/*.so.? ${D}/usr/lib/
    rm ${D}/usr/lib/libjpeg.so
    install -m 0644 nvidia_drivers/usr/lib/xorg/modules/drivers/* ${D}/usr/lib/xorg/modules/drivers/
    ln -s tegra_drv.abi11.so ${D}/usr/lib/xorg/modules/drivers/tegra_drv.so
    # create symlink to the shared libs for development, *.so -> *.so.x
    export LIBNAME=`ls ${D}/usr/lib/libGLESv2.so.?`
    export LIBNAME=`basename $LIBNAME`
    ln -s $LIBNAME ${D}/usr/lib/libGLESv2.so
    export LIBNAME=`ls ${D}/usr/lib/libEGL.so.?`
    export LIBNAME=`basename $LIBNAME`
    ln -s $LIBNAME ${D}/usr/lib/libEGL.so
    export LIBNAME=`ls ${D}/usr/lib/libGLESv1_CM.so.?`
    export LIBNAME=`basename $LIBNAME`
    ln -s $LIBNAME ${D}/usr/lib/libGLESv1_CM.so

    #nvidia sample gstreamer apps
    install -d ${D}/usr/bin ${D}/usr/lib/gstreamer-0.10 ${D}/usr/share/doc/nv_gstapps
    install -d ${D}/usr/lib/xorg/modules/drivers ${D}/home/root/.local/share/applications/
    install -d ${D}${LIC_DIR}/${PN}-nv-gstapps/
    install -m 0755 nvgstapps/usr/bin/* ${D}/usr/bin/
    install -m 0644 nvgstapps/usr/lib/gstreamer-0.10/*.so ${D}/usr/lib/gstreamer-0.10/
    install -m 0644 nvgstapps/usr/share/doc/nv_gstapps/* ${D}/usr/share/doc/nv_gstapps/
    install -m 0644 nvgstapps${LIC_DIR}/${PN}-nv-gstapps/* ${D}${LIC_DIR}/${PN}-nv-gstapps/
    install -m 0644 ${WORKDIR}/*.desktop ${D}/home/root/.local/share/applications/
    install -m 0644 ${WORKDIR}/mimeapps.list ${D}//home/root/.local/share/applications/
    ln -s libpcre.so.1.0.1 ${D}/usr/lib/libpcre.so.3
    ln -s libpcreposix.so.0.0.1 ${D}/usr/lib/libpcreposix.so.3

    #nvidia restricted codecs
    install -d ${D}${LIC_DIR}/${PN}-restricted-codecs ${D}/lib/firmware/
    install -m 0644 restricted_codecs/lib/firmware/* ${D}/lib/firmware/
    install -m 0644 restricted_codecs${LIC_DIR}/${PN}-restricted-codecs/* ${D}${LIC_DIR}/${PN}-restricted-codecs/

    #khronos headers for EGL/GLES/GLES2/OpenMax
    for dir in EGL GLES GLES2 KD KHR
    do
        install -d ${D}${includedir}/$dir 
        install -m 0644 ${WORKDIR}/khronos_headers/$dir/* ${D}${includedir}/$dir
    done
    dir="OpenMAX/il"
    install -d ${D}${includedir}/$dir
    install -m 0644 ${WORKDIR}/$dir/* ${D}${includedir}/$dir

    install -d  ${D}/usr/lib/pkgconfig
    install -m 0644 ${WORKDIR}/*.pc ${D}/usr/lib/pkgconfig/
}