[dpdk-dev] [PATCH] helloworld: Windows DPDK sample application is compiled and built using eal and kvargs libraries in order to add windows support in the mainline repository.

Luca Boccassi bluca at debian.org
Fri Nov 30 17:04:30 CET 2018


On Wed, 2018-11-28 at 21:05 -0800, Pallavi Kadam wrote:
> Signed-off-by: Pallavi Kadam <pallavi.kadam at intel.com>
> ---
> [RFC] This is a large patch that contains changes to build the
> HelloWorld
> sample application on Windows. It also contains changes to build the
> librte_eal and librte_kvargs libraries which are required to build
> the
> sample application. To merge these changes, this patch will be split
> up
> into multiple smaller patches and sent for review.
> 
>  lib/librte_eal/common/eal_common_errno.c      |    9 +
>  lib/librte_eal/common/eal_common_log.c        |    2 +
>  lib/librte_eal/common/eal_common_options.c    |    2 +
>  lib/librte_eal/common/eal_common_timer.c      |    2 +
>  .../common/include/arch/x86/rte_byteorder.h   |   14 +
>  .../common/include/arch/x86/rte_rtm.h         |   22 +-
>  lib/librte_eal/common/include/rte_common.h    |   11 +
>  .../common/include/rte_malloc_heap.h          |    3 +
>  lib/librte_eal/common/include/rte_random.h    |    4 +
>  .../common/include/rte_string_fns.h           |    2 +
>  lib/librte_eal/common/malloc_elem.h           |    3 +
>  lib/librte_eal/common/malloc_heap.c           |    2 +
>  lib/librte_eal/common/malloc_heap.h           |    4 +
>  lib/librte_eal/windows/eal/eal.c              |  697 +++++++++
>  lib/librte_eal/windows/eal/eal_alarm.c        |   29 +
>  lib/librte_eal/windows/eal/eal_debug.c        |  102 ++
>  lib/librte_eal/windows/eal/eal_fbarray.c      | 1273
> +++++++++++++++++
>  lib/librte_eal/windows/eal/eal_filesystem.h   |   97 ++
>  .../windows/eal/eal_hugepage_info.c           |   20 +
>  lib/librte_eal/windows/eal/eal_interrupts.c   |   90 ++
>  lib/librte_eal/windows/eal/eal_lcore.c        |   83 ++
>  lib/librte_eal/windows/eal/eal_log.c          |  415 ++++++
>  lib/librte_eal/windows/eal/eal_memalloc.c     |  995 +++++++++++++
>  lib/librte_eal/windows/eal/eal_memory.c       |  140 ++
>  lib/librte_eal/windows/eal/eal_proc.c         | 1003 +++++++++++++
>  lib/librte_eal/windows/eal/eal_thread.c       |  167 +++
>  lib/librte_eal/windows/eal/eal_timer.c        |   40 +
>  .../windows/eal/linux-emu/_rand48.c           |   46 +
>  .../windows/eal/linux-emu/drand48.c           |   62 +
>  lib/librte_eal/windows/eal/linux-emu/fork.c   |  111 ++
>  lib/librte_eal/windows/eal/linux-emu/getopt.c |  407 ++++++
>  .../windows/eal/linux-emu/lrand48.c           |   23 +
>  lib/librte_eal/windows/eal/linux-emu/mman.c   |  179 +++
>  lib/librte_eal/windows/eal/linux-emu/setenv.c |   26 +
>  .../windows/eal/linux-emu/srand48.c           |   30 +
>  .../windows/eal/linux-emu/termios.c           |   11 +
>  lib/librte_eal/windows/eal/linux-emu/unistd.c |   21 +
>  lib/librte_eal/windows/eal/malloc_heap.c      | 1068 ++++++++++++++
>  lib/librte_eal/windows/eal/malloc_mp.c        |  645 +++++++++
>  .../windows/include_override/dirent.h         |  950 ++++++++++++
>  .../windows/include_override/getopt.h         |  252 ++++
>  .../windows/include_override/net/ethernet.h   |  405 ++++++
>  .../windows/include_override/netinet/in.h     |   48 +
>  .../windows/include_override/netinet/tcp.h    |    4 +
>  .../windows/include_override/pthread.h        |   65 +
>  .../windows/include_override/rand48.h         |   32 +
>  .../windows/include_override/sched.h          |   21 +
>  .../windows/include_override/sys/_iovec.h     |   48 +
>  .../include_override/sys/_sockaddr_storage.h  |   54 +
>  .../windows/include_override/sys/_termios.h   |  222 +++
>  .../windows/include_override/sys/_types.h     |  105 ++
>  .../windows/include_override/sys/cdefs.h      |    3 +
>  .../windows/include_override/sys/mman.h       |   63 +
>  .../include_override/sys/netbsd/queue.h       |  846 +++++++++++
>  .../windows/include_override/sys/queue.h      |   11 +
>  .../windows/include_override/syslog.h         |  217 +++
>  .../windows/include_override/termios.h        |    1 +
>  .../windows/include_override/unistd.h         |   30 +
>  .../windows/include_override/x86intrin.h      |    1 +
>  .../rte_override/exec-env/rte_interrupts.h    |    3 +
>  lib/librte_eal/windows/rte_override/rte_acl.h |    7 +
>  .../windows/rte_override/rte_atomic.h         |  744 ++++++++++
>  .../windows/rte_override/rte_bus_pci.h        |   25 +
>  .../windows/rte_override/rte_byteorder.h      |   10 +
>  .../windows/rte_override/rte_common.h         |   56 +
>  .../windows/rte_override/rte_common.h.sav     |  372 +++++
>  .../windows/rte_override/rte_config.h         |  328 +++++
>  .../windows/rte_override/rte_cpuflags.h       |    3 +
>  .../windows/rte_override/rte_cycles.h         |   26 +
>  .../windows/rte_override/rte_debug.h          |   22 +
>  lib/librte_eal/windows/rte_override/rte_io.h  |    8 +
>  .../windows/rte_override/rte_lcore.h          |   15 +
>  .../windows/rte_override/rte_log.h.sav        |    6 +
>  .../windows/rte_override/rte_memcpy.h         |    3 +
>  .../windows/rte_override/rte_memory.h         |   20 +
>  .../windows/rte_override/rte_pause.h          |   10 +
>  lib/librte_eal/windows/rte_override/rte_pci.h |    7 +
>  .../windows/rte_override/rte_per_lcore.h      |   29 +
>  .../windows/rte_override/rte_prefetch.h       |   29 +
>  lib/librte_eal/windows/rte_override/rte_rtm.h |    8 +
>  .../windows/rte_override/rte_rwlock.h         |   40 +
>  .../windows/rte_override/rte_spinlock.h       |  271 ++++
>  .../windows/rte_override/rte_vect.h           |    5 +
>  .../windows/rte_override/rte_wincompat.h      |  347 +++++
>  .../windows/rte_override/rte_windows.h        |  497 +++++++
>  mk/exec-env/windows/DpdkRteLib.props          |   46 +
>  mk/exec-env/windows/dpdk.sln                  |   43 +
>  .../windows/helloworld/helloworld.vcxproj     |   98 ++
>  .../helloworld/helloworld.vcxproj.filters     |   22 +
>  .../helloworld/helloworld.vcxproj.user        |    4 +
>  .../windows/librte_eal/librte_eal.vcxproj     |  187 +++
>  .../librte_eal/librte_eal.vcxproj.filters     |  297 ++++
>  .../librte_eal/librte_eal.vcxproj.user        |    4 +
>  .../librte_kvargs/librte_kvargs.vcxproj       |   91 ++
>  .../librte_kvargs.vcxproj.filters             |   33 +
>  .../librte_kvargs/librte_kvargs.vcxproj.user  |    4 +
>  96 files changed, 14955 insertions(+), 3 deletions(-)

Hi,

In my (limited) experience managing cross-platform projects, having
manually defined Visual Studio files (*.vcxproj.*) manually checked in
git and maintained is always a pain. They invariably get out of sync
and rot, and they are massive and not very readable.

Given that we have now reasonably on-par support for Meson, which has
both a Visual Studio backend and a Ninja (which IIRC is supported by
VS) backend, wouldn't it be better to let the build be handled by Meson
itself? There might be a couple of places that needs fixing (we don't
always to the right thing of using join_path for directories for
example) but in the long run it would be much more maintainable IMHO.
Adding new libraries/PMDs would need to be done just once, etc etc.

-- 
Kind regards,
Luca Boccassi


More information about the dev mailing list