#vivado #make #bitbake #vivado #make #bitbake


Mark Pashley <Mark.Pashley@...>
 

I am trying to build a Xilinx XDMA driver for Yocto, using their supplied makefile. When I run my recipe the build fails with the following errors:
 
    DEBUG: Executing shell function do_compile
    NOTE: make -j 32 KERNEL_SRC=./tmp/work-shared/intel-corei7-64/kernel-source
                     KERNEL_PATH=./tmp/work-shared/intel-corei7-64/kernel-source
                     KERNEL_VERSION=5.10.78-intel-pk-standard CC=x86_64-poky-linux-gcc
                     -fuse-ld=bfd
                     -fmacro-prefix-map=./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0=/usr/src/debug/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0
                     -fdebug-prefix-map=./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0=/usr/src/debug/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0
                     -fdebug-prefix-map=./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0/recipe-sysroot= 
                     -fdebug-prefix-map=./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0/recipe-sysroot-native= 
                     -fdebug-prefix-map=./tmp/work-shared/intel-corei7-64/kernel-source=/usr/src/kernel LD=x86_64-poky-linux-ld.bfd 
                     AR=x86_64-poky-linux-ar
                     O=./tmp/work-shared/intel-corei7-64/kernel-build-artifacts KBUILD_EXTRA_SYMBOLS=
    
    Makefile:17: XVC_FLAGS: .
    make -C /lib/modules/5.13.0-40-generic/build
          M=./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0/git/linux_driver/xdma modules
    make[1]: Entering directory '/usr/src/linux-headers-5.13.0-40-generic'
    make[2]: Entering directory './tmp/work-shared/intel-corei7-64/kernel-build-artifacts'
    ./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0/git/linux_driver/xdma/Makefile:17: XVC_FLAGS: .
      CC [M]  ./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0/git/linux_driver/xdma/libxdma.o
      CC [M]  ./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0/git/linux_driver/xdma/xdma_cdev.o
    x86_64-poky-linux-gcc: error: missing argument to '-gdwarf-'
      CC [M]  ./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0/git/linux_driver/xdma/cdev_ctrl.o
    make[3]: *** [/usr/src/linux-headers-5.13.0-40-generic/scripts/Makefile.build:281: ./tmp/work/intel_corei7_64-poky-linux/xdma-driver-mod/1.0+gitAUTOINC+8d75946900-r0/git/linux_driver/xdma/libxdma.o] Error 1
    make[3]: *** Waiting for unfinished jobs....
    x86_64-poky-linux-gcc: error: missing argument to '-gdwarf-'
    
    ERROR: oe_runmake failed
    WARNING: exit code 1 from a shell command.
 
I have no idea why this happens as it is not something I have specifically enabled. I have searched through the `module.bbclass` file but I couldn't see anything obvious. I believe that something needs to be configured such that the `-gdwarf-` actual ends up being set to a valid value (e.g. `-gdwarf-2` or `-gdwarf-4` etc.) 
 
A grep through the poky repo for dwarf did not reveal anything neither did a search of  `/usr/src/linux-headers-5.13.0-40-generic/scripts/`.
 
My bitbake recipe is as follows:
 
    LICENSE = "MIT"
    LIC_FILES_CHKSUM = "file://LICENSE;md5=441c1ecbc199a036abf37f3aa47c5f34"
        
    SRC_URI +=  https://github.com/Xilinx/dma_ip_drivers.git;protocol=ssh;nobranch=1;branch=master"
    
    # Modify these as desired
    PV = "1.0+git${SRCPV}"
    SRCREV = "8d7594690058dfa828accc02ac81348e416ffe38"
    
    S = "${WORKDIR}/git/xdma/linux-driver/xdma"
    
    RPROVIDES_${PN} += "xdma"
    
    inherit module
    
    EXTRA_OEMAKE_task-install:append = " -C ${STAGING_KERNEL_DIR} M=${S}"
    EXTRA_OEMAKE += "KDIR=${STAGING_KERNEL_DIR}"
 
The makefile is the standard one from GitHub. The driver builds correctly for Ubuntu using `make` and I can also build the module if I change my recipe such that it does not include `inherit module`; this change will build the module (`xdma.ko`) but does to install it in the roofs. I am also not sure if `inherit module` includes additional functionality which may be rewired. 
 
 
How to I either:
  1.  prevent / disable the `-gdwarf` flag being generated
  2.  configure the recipe that the `-gdwarf-` resolves to something valid
  3.  View the actual command being invoked that is casing the issue.
 
Alternatively is there any downside to simply changing the recipe to remove the `inherit module` so `xdma.ko` is build using the standard makefile? If so how do I install `xdma.ko` to `/lib/modules/{KERNEL_VERSION}/kernel/drivers/xdma/xdma.ko`?