|  | # | 
|  | # Copyright 2018, Data61, CSIRO (ABN 41 687 119 230) | 
|  | # | 
|  | # SPDX-License-Identifier: BSD-2-Clause | 
|  | # | 
|  |  | 
|  | cmake_minimum_required(VERSION 3.8.2) | 
|  |  | 
|  | project(libethdrivers C) | 
|  |  | 
|  | set(configure_string "") | 
|  |  | 
|  | config_string( | 
|  | LibEthdriverRXDescCount | 
|  | LIB_ETHDRIVER_RX_DESC_COUNT | 
|  | "Number of RX descriptors in the descriptor ring for the driver." | 
|  | DEFAULT | 
|  | 128 | 
|  | UNQUOTE | 
|  | ) | 
|  |  | 
|  | config_string( | 
|  | LibEthdriverTXDescCount | 
|  | LIB_ETHDRIVER_TX_DESC_COUNT | 
|  | "Number of TX descriptors in the descriptor ring for the driver." | 
|  | DEFAULT | 
|  | 128 | 
|  | UNQUOTE | 
|  | ) | 
|  |  | 
|  | config_string( | 
|  | LibEthdriverNumPreallocatedBuffers | 
|  | LIB_ETHDRIVER_NUM_PREALLOCATED_BUFFERS | 
|  | "Number of preallocated DMA buffers | 
|  | To avoid allocating and freeing buffers continuously the driver | 
|  | can preallocate a base amount internally." | 
|  | DEFAULT | 
|  | 512 | 
|  | UNQUOTE | 
|  | ) | 
|  |  | 
|  | config_string( | 
|  | LibEthdriverPreallocatedBufSize | 
|  | LIB_ETHDRIVER_PREALLOCATED_BUF_SIZE | 
|  | "Size of preallocated DMA buffers | 
|  | The size of each preallocated buffer that will be used for RX and | 
|  | TX allocation requests. This needs to be the maximum of the RX buffer | 
|  | size and the MTU. Currently the largest RX buffer of any of the | 
|  | implemented drivers is 2048, and the MTU is 1500" | 
|  | DEFAULT | 
|  | 2048 | 
|  | UNQUOTE | 
|  | ) | 
|  |  | 
|  | config_option(LibEthdriverPicoTCBAsyncDriver LIB_PICOTCP_ASYNC_DRIVER "Async driver for PicoTcp | 
|  | Use an async instead of a polling driver for PicoTCP." DEFAULT ON) | 
|  | mark_as_advanced( | 
|  | LibEthdriverRXDescCount | 
|  | LibEthdriverTXDescCount | 
|  | LibEthdriverNumPreallocatedBuffers | 
|  | LibEthdriverPreallocatedBufSize | 
|  | LibEthdriverPicoTCBAsyncDriver | 
|  | ) | 
|  | add_config_library(ethdrivers "${configure_string}") | 
|  |  | 
|  | if("${KernelPlatform}" MATCHES "imx8mq-evk") | 
|  | # Re-use the imx6 sources | 
|  | set(PlatPrefix "imx6") | 
|  | else() | 
|  | set(PlatPrefix "${KernelPlatform}") | 
|  | endif() | 
|  |  | 
|  | file( | 
|  | GLOB | 
|  | sources | 
|  | src/plat/${PlatPrefix}/*.c | 
|  | src/plat/${PlatPrefix}/uboot/*.c | 
|  | src/plat/${PlatPrefix}/cpsw/*.c | 
|  | src/*.c | 
|  | ) | 
|  |  | 
|  | add_library(ethdrivers STATIC EXCLUDE_FROM_ALL ${sources}) | 
|  | target_include_directories(ethdrivers PRIVATE src/plat/${PlatPrefix}/cpsw) | 
|  | target_include_directories( | 
|  | ethdrivers | 
|  | PUBLIC include plat_include/${PlatPrefix} arch_include/${KernelArch} | 
|  | ) | 
|  | target_link_libraries( | 
|  | ethdrivers | 
|  | muslc | 
|  | platsupport | 
|  | ethdrivers_Config | 
|  | lwip_Config | 
|  | picotcp_Config | 
|  | sel4_autoconf | 
|  | ) | 
|  | if(LibLwip) | 
|  | target_link_libraries(ethdrivers lwip) | 
|  | endif() | 
|  | if(LibPicotcp) | 
|  | target_link_libraries(ethdrivers picotcp) | 
|  | endif() | 
|  |  | 
|  | if("${KernelPlatform}" STREQUAL "tx2") | 
|  | target_link_libraries(ethdrivers platsupportports) | 
|  | endif() | 
|  |  | 
|  | # Get the list of driver modules | 
|  | string( | 
|  | JOIN | 
|  | "," | 
|  | DriverModules | 
|  | "-Wl" | 
|  | "--undefined=tx_ether_qos_ptr" | 
|  | "--undefined=zynq7000_gem_ptr" | 
|  | "--undefined=imx_fec_ptr" | 
|  | "--undefined=odroidc2_ethernet_ptr" | 
|  | ) | 
|  |  | 
|  | target_link_libraries(ethdrivers "${DriverModules}") |