summaryrefslogtreecommitdiff
path: root/recipes/ti/ti-dsplink.inc
diff options
context:
space:
mode:
authorRoger Monk <r-monk@ti.com>2010-02-08 21:48:05 +0000
committerKoen Kooi <koen@openembedded.org>2010-04-12 19:43:17 +0200
commit3a72b7231064db96f71eba28e6c0b63a5311dc8b (patch)
tree43ec4512956c0502c31cc7bcd2bba112bfd82406 /recipes/ti/ti-dsplink.inc
parent923e18a8d41682c05a31a45a1bc302483f077116 (diff)
ti-dsplink: Recipe rename, remove module.bbclass dependence, refactor variables
* Remove module.bbclass, since building user + kernel + dsp, etc * Add necessary module aware pieces (KERNEL_VERSION, pre/post inst) * Rename apps to examples to align with other recipes * Variable refactoring, moving DSPLINK specifics into this recipe * Move 'clean' steps into prepsources and clean all * Change XDC .interfaces to .make for consistency * Prepare stage for cleaning common include files Signed-off-by: Roger Monk <r-monk@ti.com>
Diffstat (limited to 'recipes/ti/ti-dsplink.inc')
-rw-r--r--recipes/ti/ti-dsplink.inc239
1 files changed, 239 insertions, 0 deletions
diff --git a/recipes/ti/ti-dsplink.inc b/recipes/ti/ti-dsplink.inc
new file mode 100644
index 0000000000..6c9089ad62
--- /dev/null
+++ b/recipes/ti/ti-dsplink.inc
@@ -0,0 +1,239 @@
+DESCRIPTION = "DSPLINK Inter-Processor Communications (IPC) for TI ARM/DSP processors"
+HOMEPAGE = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/DSPLink"
+
+# TODO :: KERNEL_CC, should use for kernel cc for module build?
+# TODO :: Need to understand why OBJDUMP is required for kernel module
+# TODO :: Unset required since LDFLAGS gets picked up and used incorrectly - investigate
+# TODO :: Do we need to pass so many variables to each make step?
+
+require ti-paths.inc
+require ti-staging.inc
+
+PROVIDES = "ti-dsplink-module"
+PROVIDES += "ti-dsplink-examples"
+
+# This package builds a kernel module, use kernel PR as base and append a local version
+PR = "${MACHINE_KERNEL_PR}"
+PR_append = "b"
+
+S = "${WORKDIR}/dsplink_linux_${PV}"
+
+SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/DSPLink/${PV}/exports/dsplink_linux_${PV}.tar.gz;name=dsplinktarball \
+ file://loadmodules-ti-dsplink-apps.sh \
+ file://unloadmodules-ti-dsplink-apps.sh"
+
+DEPENDS = "ti-dspbios ti-xdctools ti-cgt6x"
+DEPENDS += "virtual/kernel perl-native"
+
+# SOC_FAMILY configuration
+
+DSPLINKPLATFORM_dm6446 = "DAVINCI"
+DSPLINKPLATFORM_dm6467 = "DAVINCIHD"
+DSPLINKPLATFORM_omapl137 = "OMAPL1XX"
+DSPLINKPLATFORM_omapl138 = "OMAPL138"
+DSPLINKPLATFORM_omap3 = "OMAP3530"
+DSPLINKPLATFORM ?= "<UNDEFINED_DSPLINKPLATFORM>"
+
+DSPLINKDSPCFG_dm6446 = "DM6446GEMSHMEM"
+DSPLINKDSPCFG_dm6467 = "DM6467GEMSHMEM"
+DSPLINKDSPCFG_omapl137 = "OMAPL1XXGEMSHMEM"
+DSPLINKDSPCFG_omapl138 = "OMAPL138GEMSHMEM"
+DSPLINKDSPCFG_omap3 = "OMAP3530SHMEM"
+DSPLINKDSPCFG ?= "<UNDEFINED_DSPLINKDSPCFG>"
+
+DSPLINKGPPOS_dm6446 = "MVL5G"
+DSPLINKGPPOS_dm6467 = "DM6467LSP"
+DSPLINKGPPOS_omapl137 = "ARM"
+DSPLINKGPPOS_omapl138 = "ARM"
+DSPLINKGPPOS_omap3 = "OMAPLSP"
+DSPLINKGPPOS ?= "<DEFINED_DSPLINKGPPOS>"
+
+# Exported Variable needed by build
+DSPLINK = "${S}/dsplink"
+export DSPLINK
+
+do_configure() {
+
+ # asm/page.h is gone with linux-libc-headers 2.6.31.
+ # We can safely sed it out since it has been empty for the past 2 years
+ sed -i /page.h/d ${S}/dsplink/gpp/src/api/Linux/drv_api.c || true
+
+ # Run perl script to create appropriate makefiles (v1.60 and up)
+ (
+ cd ${DSPLINK}
+ perl config/bin/dsplinkcfg.pl --platform=${DSPLINKPLATFORM} --nodsp=1 \
+ --dspcfg_0=${DSPLINKDSPCFG} --dspos_0=DSPBIOS5XX \
+ --gppos=${DSPLINKGPPOS} --comps=ponslrmc
+ )
+
+}
+
+do_prepsources () {
+
+ # Prepare the tree for rebuiling - generate makefiles and clean
+ XDCPATH=${DSPLINK} ${XDC_INSTALL_DIR}/xdc .make -PR .
+ XDCPATH=${DSPLINK} ${XDC_INSTALL_DIR}/xdc clean -PR .
+
+ # Clean the gpp user space library
+ cd ${DSPLINK}/gpp/src/api && make \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ CC="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ AR="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ LD="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ld" \
+ COMPILER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ ARCHIVER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ KERNEL_DIR="${STAGING_KERNEL_DIR}" \
+ clean
+
+ # Clean the gpp kernel space (debug and release)
+ cd ${DSPLINK}/gpp/src && make \
+ OBJDUMP="${TARGET_PREFIX}objdump" \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ CC="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ AR="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ LD="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ld" \
+ COMPILER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ ARCHIVER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ KERNEL_DIR="${STAGING_KERNEL_DIR}" \
+ BASE_BUILDOS="${STAGING_KERNEL_DIR}" \
+ clean
+
+ # Clean the gpp samples
+ cd ${DSPLINK}/gpp/src/samples && make \
+ BASE_TOOLCHAIN="${TOOLCHAIN_PATH}" \
+ BASE_CGTOOLS="${BASE_TOOLCHAIN}/bin" \
+ OSINC_PLATFORM="${TOOLCHAIN_PATH}/lib/gcc/${TARGET_SYS}/$(${TARGET_PREFIX}gcc -dumpversion)/include" \
+ OSINC_TARGET="${BASE_TOOLCHAIN}/target/usr/include" \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ CC="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ AR="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ LD="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ld" \
+ COMPILER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ LINKER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ld" \
+ ARCHIVER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ KERNEL_DIR="${STAGING_KERNEL_DIR}" \
+ clean
+
+ # Clean the dsp library (debug and release)
+ cd ${DSPLINK}/dsp/src && make \
+ BASE_CGTOOLS="${CODEGEN_INSTALL_DIR}" \
+ BASE_SABIOS="${BIOS_INSTALL_DIR}" \
+ clean
+
+ # Clean the dsp samples (debug and release)
+ cd ${DSPLINK}/dsp/src/samples && make \
+ BASE_CGTOOLS="${CODEGEN_INSTALL_DIR}" \
+ BASE_SABIOS="${BIOS_INSTALL_DIR}" \
+ clean
+
+}
+
+addtask prepsources after do_configure before do_compile
+
+do_compile() {
+ # TODO :: KERNEL_CC, should use for kernel module build?
+ # TODO :: Need to understand why OBJDUMP is required for kernel module
+ # Unset these since LDFLAGS gets picked up and used incorrectly.... need
+ # investigation
+
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+
+ # Build the gpp user space library
+ cd ${DSPLINK}/gpp/src/api && make \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ CC="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ AR="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ LD="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ld" \
+ COMPILER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ ARCHIVER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ KERNEL_DIR="${STAGING_KERNEL_DIR}" \
+ all
+
+ # Build the gpp kernel space (debug and release)
+ cd ${DSPLINK}/gpp/src && make \
+ OBJDUMP="${TARGET_PREFIX}objdump" \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ CC="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ AR="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ LD="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ld" \
+ COMPILER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ ARCHIVER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ KERNEL_DIR="${STAGING_KERNEL_DIR}" \
+ BASE_BUILDOS="${STAGING_KERNEL_DIR}" \
+ all
+
+ # Build the gpp samples
+ cd ${DSPLINK}/gpp/src/samples && make \
+ BASE_TOOLCHAIN="${TOOLCHAIN_PATH}" \
+ BASE_CGTOOLS="${BASE_TOOLCHAIN}/bin" \
+ OSINC_PLATFORM="${TOOLCHAIN_PATH}/lib/gcc/${TARGET_SYS}/$(${TARGET_PREFIX}gcc -dumpversion)/include" \
+ OSINC_TARGET="${BASE_TOOLCHAIN}/target/usr/include" \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ CC="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ LD="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ AR="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ COMPILER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ LINKER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}gcc" \
+ ARCHIVER="${TOOLCHAIN_PATH}/bin/${TARGET_PREFIX}ar" \
+ KERNEL_DIR="${STAGING_KERNEL_DIR}" \
+ all
+
+ # Build the dsp library (debug and release)
+ cd ${DSPLINK}/dsp/src && make \
+ BASE_CGTOOLS="${CODEGEN_INSTALL_DIR}" \
+ BASE_SABIOS="${BIOS_INSTALL_DIR}" \
+ all
+
+ # Build the dsp samples (debug and release)
+ cd ${DSPLINK}/dsp/src/samples && make \
+ BASE_CGTOOLS="${CODEGEN_INSTALL_DIR}" \
+ BASE_SABIOS="${BIOS_INSTALL_DIR}" \
+ all
+}
+
+KERNEL_VERSION = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-abiversion')}"
+
+do_install () {
+
+ # Install the kernel module
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+ install -m 0755 ${DSPLINK}/gpp/export/BIN/Linux/${DSPLINKPLATFORM}/RELEASE/dsplinkk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/
+
+ # Install the example apps
+ install -d ${D}/${installdir}/ti-dsplink-examples/
+ cp ${DSPLINK}/gpp/export/BIN/Linux/${DSPLINKPLATFORM}/RELEASE/*gpp ${D}/${installdir}/ti-dsplink-examples
+
+ for i in $(find ${DSPLINK}/dsp/BUILD/ -name "*.out") ; do
+ cp ${i} ${D}/${installdir}/ti-dsplink-examples
+ done
+
+ # Install the example apps module un/load scripts
+ install ${WORKDIR}/loadmodules-ti-dsplink-apps.sh ${D}/${installdir}/ti-dsplink-examples
+ install ${WORKDIR}/unloadmodules-ti-dsplink-apps.sh ${D}/${installdir}/ti-dsplink-examples
+
+ # Install/Stage the Source Tree
+ install -d ${D}${LINK_INSTALL_DIR_RECIPE}
+ cp -pPrf ${S}/* ${D}${LINK_INSTALL_DIR_RECIPE}
+}
+
+PACKAGES += "ti-dsplink-module"
+FILES_ti-dsplink-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/dsplinkk.ko"
+RDEPENDS_ti-dsplink-module += "update-modules"
+
+pkg_postinst_ti-dsplink-module_append () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm_ti-dsplink-module_append () {
+ update-modules || true
+}
+
+PACKAGES += "ti-dsplink-examples"
+RDEPENDS_ti-dsplink-examples += "ti-dsplink-module"
+RDEPENDS_ti-dsplink-examples_omap3 += "ti-lpm-module"
+FILES_ti-dsplink-examples = "${installdir}/ti-dsplink-examples/*"
+INSANE_SKIP_ti-dsplink-examples = True