Merge branch 'org.openembedded.dev' of git://git.openembedded.net/openembedded into...
[vuplus_openembedded] / packages / dsplink / dsplink.inc
1 DESCRIPTION = "DSP Link for TI ARM/DSP processors"
2
3 DEPENDS = "virtual/kernel perl-native"
4
5 inherit module
6
7 S = "${WORKDIR}/dsplink_1_60/dsplink"
8
9 # Needed for buildscripts
10 export DSPLINK="${S}"
11
12 require ti-paths.inc
13
14 DSPLINKPLATFORM ?= "DAVINCI"
15 DSPLINKPLATFORM_omap5912osk = "OMAP"
16 DSPLINKPLATFORM_beagleboard = "OMAP3530"
17 DSPLINKPLATFORM_davinci-sffsdr = "DAVINCI"
18 DSPLINKPLATFORM_davinci-dvevm = "DAVINCI"
19
20 DSPLINKDSP ?= "C64XX"
21
22 DSPLINKSOC ?= "DM6446"
23 DSPLINKSOC_beagleboard = "3530"
24
25 DSPCFG ?= "DM6446GEMSHMEM"
26 DSPCFG_beagleboard ?= "OMAP3530SHMEM"
27
28 GPPOS ?= "DAVINCILSP"
29 GPPOS_beagleboard = "OMAPLSP"
30
31 export DSPLINKPLATFORM 
32 export DSPLINKDSP
33 export DSPLINKSOC
34 export DSPCFG
35 export GPPOS
36
37 do_configure () {
38         # Clean up stale binaries
39         find ${S} -name "*.ko" -exec rm {} \; || true
40         find ${S} -name "*.o" -exec rm {} \; || true
41
42         # Run perl script to create appropriate makefiles (v1.60 and up)
43         (
44         cd ${DSPLINK}
45         perl config/bin/dsplinkcfg.pl --platform=${DSPLINKPLATFORM} --nodsp=1 --dspcfg_0=${DSPCFG} --dspos_0=DSPBIOS5XX  --gppos=${GPPOS} --comps=ponslrm
46         )
47
48         if [ $(echo ${KERNEL_VERSION} | cut -c5,6) -gt 26 ] ; then
49                 sed -i -e s:asm/semaphore:linux/semaphore: ${DSPLINK}/gpp/src/osal/Linux/user.c
50                 sed -i -e s:asm/semaphore:linux/semaphore: ${DSPLINK}/gpp/src/osal/Linux/2.6.18/sync.c
51         fi
52 }
53
54 PARALLEL_MAKE = ""
55
56 do_compile () {
57         unset DISPLAY
58         sed -i -e s:armv7a:armv7-a:g ${DSPLINK}/make/Linux/omap3530_2.6.mk
59
60         # export various settings to override the defaults in the makefiles     
61         export DSP_BASE_CGTOOLS=${TITOOLSDIR}/${TICGTOOLSDIR}
62         export DSP_BASE_BIOS=${TITOOLSDIR}/${TIBIOSDIR}
63         export DSP_BASE_RTDX=${TITOOLSDIR}/${TIBIOSDIR}/packages/ti/rtdx
64         export GPPTOOL_DIR=${CROSS_DIR}
65         export LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}
66         export LINK_INSTALL_DIR=${DSPLINK}
67         export VARIANT=${DSPLINKSOC}
68         export PLATFORM=${DSPLINKPLATFORM}
69         export BASE_TOOLCHAIN=${CROSS_DIR}
70         export BASE_CGTOOLS=${BASE_TOOLCHAIN}/bin
71         # 'OSINC_PLATFORM' is used in both the dsp and gpp sides...     
72         export OSINC_PLATFORM1=${CROSS_DIR}/lib/gcc/${TARGET_SYS}/$(${TARGET_PREFIX}gcc -dumpversion)/include
73         export OSINC_TARGET=${BASE_TOOLCHAIN}/target/usr/include
74
75         # 'ARCHIVER' is being used in the dsp side of the build as well as gpp
76         export ARCHIVER_AR=${TARGET_PREFIX}ar
77         export BASE_SABIOS=${DSP_BASE_BIOS}
78         
79         if [ ! -d ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE ] ; then 
80                 install -d ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE
81         fi
82
83 #dsplinkk.ko bits
84         cp ${WORKDIR}/Makefile-dsplink-gpp ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/Makefile
85         cd ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/
86
87         unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
88         export KDIR=${STAGING_KERNEL_DIR}
89         make -e all
90
91         make -e -f ${WORKDIR}/Makefile-dsplink-dsp
92
93 #lpm bits
94         if [ -e ${S}/cetools/packages/ti/bios/power/ ] ; then
95                 echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make         
96                 echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make
97                 echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}"  >> ${S}/Rules.make
98                 #export DSPLINK=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/dsplink
99
100                 # Build the DSP power manager kernel module
101                 cd ${S}/cetools/packages/ti/bios/power/modules/${DSPPOWERSOC}/lpm
102
103                 if [ $(echo ${KERNEL_VERSION} | cut -c5,6) -gt 26 ] ; then
104                         sed -i -e s:asm/semaphore:linux/semaphore: lpm_driver.c
105                 fi
106
107                 rm -f *o
108                 make    KERNEL_PATH=${STAGING_KERNEL_DIR} \
109                         KERNEL_SRC=${STAGING_KERNEL_DIR} \
110                         KERNEL_DIR=${STAGING_KERNEL_DIR} \
111                         KERNEL_VERSION=${KERNEL_VERSION} \
112                         TOOL_PREFIX=${TARGET_PREFIX} \
113                         DSPLINK_REPO=${DSPLINK}/../ \
114                         CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
115                         AR="${KERNEL_AR}"
116         fi
117
118 #cmemk bits
119         if [ -e ${S}/cetools/packages/ti/sdo/linuxutils/cmem ] ; then
120                 # Build the cmem kernel module
121                 # We unset CFLAGS because kernel modules need different ones, this is basically a verbatim copy of kernel.bbclass and module-base.bbclass       
122                 unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS  
123                 cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem
124
125                 # This sadly breaks doing -c compile more than once, but I don't have a better solution 
126                 if [ $(echo ${KERNEL_VERSION} | cut -c5,6) -gt 26 ] ; then
127                         patch -p0 < ${WORKDIR}/cmemk-class-device-27.diff
128                 fi
129
130                 oe_runmake clean
131                 oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR}   \
132                 KERNEL_SRC=${STAGING_KERNEL_DIR}    \
133                 KERNEL_VERSION=${KERNEL_VERSION}    \
134                 CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
135                 AR="${KERNEL_AR}"
136         fi
137 }
138
139 do_install () {
140         install -d ${D}/${bindir}
141         install ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/*gpp ${D}/${bindir} || true
142
143         install -d ${D}/${datadir}/dsplink
144         for i in $(find ${DSPLINK}/dsp/BUILD/ -name "*.out") ; do
145                 install ${i}  ${D}/${datadir}/dsplink
146         done    
147
148         install -d ${D}/${libdir}
149         install -m 0755 ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/dsplink.lib  ${D}/${libdir}
150
151         install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
152         cp ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/dsplinkk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/ 
153         cp ${S}/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true
154         cp ${S}/cetools/packages/ti/bios/power/${DSPPOWERSOC}/lpm/*.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true
155         cp ${S}/cetools/packages/ti/bios/power/modules/${DSPPOWERSOC}/lpm/*.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true
156 }
157
158
159 # Codec Engine and friends need a complete tree, so stage it all
160 do_stage() {
161         install -d ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/dsplink
162         cp -pPr ${S}/* ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/dsplink/ 
163 }
164
165 pkg_postinst_dsplink-module () {
166         if [ -n "$D" ]; then
167                 exit 1
168         fi
169         depmod -a
170         update-modules || true
171 }
172
173 pkg_postrm_dsplink-module () {
174         update-modules || true
175 }
176
177 PACKAGES =+ "dsplink-apps dsplink-module ti-lpm-module ti-cmemk-module"
178 FILES_dsplink-module  = "${sysconfdir} /lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/dsplinkk.ko"
179 FILES_dsplink-apps = "${bindir}/* ${datadir}/dsplink/* ${libdir}/dsplink.lib"
180
181 FILES_ti-lpm-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/*lpm*ko"
182
183 pkg_postinst_ti-lpm-module () {
184         if [ -n "$D" ]; then
185                 exit 1
186         fi
187         depmod -a
188         update-modules || true
189 }
190
191 pkg_postrm_ti-lpm-module () {
192         update-modules || true
193 }
194
195 FILES_ti-cmemk-module = "${sysconfdir} /lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/cmemk.ko"
196
197 pkg_postinst_ti-cmemk-module () {
198         if [ -n "$D" ]; then        
199                 exit 1
200         fi
201         depmod -a
202         update-modules || true
203 }
204
205 pkg_postrm_ti-cmemk-module () {
206         update-modules || true
207 }
208
209
210
211 INHIBIT_PACKAGE_STRIP = "1"
212
213 PACKAGE_ARCH = "${MACHINE_ARCH}" 
214