diff options
author | Roger Monk <r-monk@ti.com> | 2010-02-08 21:48:05 +0000 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2010-04-12 19:43:17 +0200 |
commit | 3a72b7231064db96f71eba28e6c0b63a5311dc8b (patch) | |
tree | 43ec4512956c0502c31cc7bcd2bba112bfd82406 /recipes/ti/ti-dsplink.inc | |
parent | 923e18a8d41682c05a31a45a1bc302483f077116 (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.inc | 239 |
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 |