[v2,1/2] eal: add rte_random.c file on windows

Message ID 20201217225909.3580-2-pallavi.kadam@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series Support i40e PMD on Windows |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Kadam, Pallavi Dec. 17, 2020, 10:59 p.m. UTC
  This file is required to compile and build i40e PMD on Windows.
Add rte_rand variable to export file.

Redefine _m_prefetchw for Clang toolchain due to following error
with respect to conflicting types:

FAILED: lib/76b5a35@@rte_eal@sta/librte_eal_common_rte_random.c.obj
clang @lib/76b5a35@@rte_eal@sta/librte_eal_common_rte_random.c.obj.rsp
In file included from ../lib/librte_eal/common/rte_random.c:13:
In file included from ..\lib/librte_eal/include\rte_eal.h:20:
In file included from ..\lib/librte_eal/include\rte_per_lcore.h:25:
In file included from ..\lib/librte_eal/windows/include\pthread.h:21:
In file included from ..\lib/librte_eal/windows/include\rte_windows.h:27:
In file included from C:\Program Files (x86)\Windows Kits\10\include\
10.0.18362.0\um\windows.h:171:
In file included from C:\Program Files (x86)\Windows Kits\10\include\
10.0.18362.0\shared\windef.h:24:
In file included from C:\Program Files (x86)\Windows Kits\10\include\
10.0.18362.0\shared\minwindef.h:182:
C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\
winnt.h:3324:1: error: conflicting types for '_m_prefetchw'
_m_prefetchw (
^
C:\Program Files\LLVM\lib\clang\10.0.0\include\prfchwintrin.h:50:1:
note: previous definition is here
_m_prefetchw(void *__P)
^
1 error generated.

Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
---
 lib/librte_eal/common/meson.build            | 1 +
 lib/librte_eal/rte_eal_exports.def           | 1 +
 lib/librte_eal/windows/include/rte_windows.h | 5 +++++
 3 files changed, 7 insertions(+)
  

Comments

Thomas Monjalon Dec. 18, 2020, 11:29 a.m. UTC | #1
17/12/2020 23:59, Pallavi Kadam:
> This file is required to compile and build i40e PMD on Windows.
> Add rte_rand variable to export file.
> 
> Redefine _m_prefetchw for Clang toolchain due to following error
> with respect to conflicting types:
> 
> FAILED: lib/76b5a35@@rte_eal@sta/librte_eal_common_rte_random.c.obj
> clang @lib/76b5a35@@rte_eal@sta/librte_eal_common_rte_random.c.obj.rsp
> In file included from ../lib/librte_eal/common/rte_random.c:13:
> In file included from ..\lib/librte_eal/include\rte_eal.h:20:
> In file included from ..\lib/librte_eal/include\rte_per_lcore.h:25:
> In file included from ..\lib/librte_eal/windows/include\pthread.h:21:
> In file included from ..\lib/librte_eal/windows/include\rte_windows.h:27:
> In file included from C:\Program Files (x86)\Windows Kits\10\include\
> 10.0.18362.0\um\windows.h:171:
> In file included from C:\Program Files (x86)\Windows Kits\10\include\
> 10.0.18362.0\shared\windef.h:24:
> In file included from C:\Program Files (x86)\Windows Kits\10\include\
> 10.0.18362.0\shared\minwindef.h:182:
> C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\
> winnt.h:3324:1: error: conflicting types for '_m_prefetchw'
> _m_prefetchw (
> ^
> C:\Program Files\LLVM\lib\clang\10.0.0\include\prfchwintrin.h:50:1:
> note: previous definition is here
> _m_prefetchw(void *__P)
> ^
> 1 error generated.
> 
> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
> ---
> +#ifdef RTE_TOOLCHAIN_CLANG
> +#undef _m_prefetchw
> +#define _m_prefetchw __m_prefetchw
> +#endif

It deserves a comment explaining why __m_prefetchw is required.
  
Kadam, Pallavi Dec. 18, 2020, 6:49 p.m. UTC | #2
On 12/18/2020 3:29 AM, Thomas Monjalon wrote:
> 17/12/2020 23:59, Pallavi Kadam:
>> This file is required to compile and build i40e PMD on Windows.
>> Add rte_rand variable to export file.
>>
>> Redefine _m_prefetchw for Clang toolchain due to following error
>> with respect to conflicting types:
>>
>> FAILED: lib/76b5a35@@rte_eal@sta/librte_eal_common_rte_random.c.obj
>> clang @lib/76b5a35@@rte_eal@sta/librte_eal_common_rte_random.c.obj.rsp
>> In file included from ../lib/librte_eal/common/rte_random.c:13:
>> In file included from ..\lib/librte_eal/include\rte_eal.h:20:
>> In file included from ..\lib/librte_eal/include\rte_per_lcore.h:25:
>> In file included from ..\lib/librte_eal/windows/include\pthread.h:21:
>> In file included from ..\lib/librte_eal/windows/include\rte_windows.h:27:
>> In file included from C:\Program Files (x86)\Windows Kits\10\include\
>> 10.0.18362.0\um\windows.h:171:
>> In file included from C:\Program Files (x86)\Windows Kits\10\include\
>> 10.0.18362.0\shared\windef.h:24:
>> In file included from C:\Program Files (x86)\Windows Kits\10\include\
>> 10.0.18362.0\shared\minwindef.h:182:
>> C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\
>> winnt.h:3324:1: error: conflicting types for '_m_prefetchw'
>> _m_prefetchw (
>> ^
>> C:\Program Files\LLVM\lib\clang\10.0.0\include\prfchwintrin.h:50:1:
>> note: previous definition is here
>> _m_prefetchw(void *__P)
>> ^
>> 1 error generated.
>>
>> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
>> Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
>> ---
>> +#ifdef RTE_TOOLCHAIN_CLANG
>> +#undef _m_prefetchw
>> +#define _m_prefetchw __m_prefetchw
>> +#endif
> It deserves a comment explaining why __m_prefetchw is required.
Will add a comment in v3. Thanks!
>
>
>
  

Patch

diff --git a/lib/librte_eal/common/meson.build b/lib/librte_eal/common/meson.build
index 39abf7a0a..98e8fffd4 100644
--- a/lib/librte_eal/common/meson.build
+++ b/lib/librte_eal/common/meson.build
@@ -33,6 +33,7 @@  if is_windows
 		'malloc_heap.c',
 		'rte_malloc.c',
 		'eal_common_timer.c',
+		'rte_random.c',
 		'rte_service.c',
 	)
 	subdir_done()
diff --git a/lib/librte_eal/rte_eal_exports.def b/lib/librte_eal/rte_eal_exports.def
index 6a6be1cfa..a2ad4d633 100644
--- a/lib/librte_eal/rte_eal_exports.def
+++ b/lib/librte_eal/rte_eal_exports.def
@@ -114,6 +114,7 @@  EXPORTS
 	rte_memzone_reserve_bounded
 	rte_memzone_walk
 	rte_openlog_stream
+	rte_rand
 	rte_realloc
 	rte_rtm_supported
 	rte_service_attr_get
diff --git a/lib/librte_eal/windows/include/rte_windows.h b/lib/librte_eal/windows/include/rte_windows.h
index b82af34f6..ee065204d 100644
--- a/lib/librte_eal/windows/include/rte_windows.h
+++ b/lib/librte_eal/windows/include/rte_windows.h
@@ -18,6 +18,11 @@ 
 #define WIN32_LEAN_AND_MEAN
 #endif
 
+#ifdef RTE_TOOLCHAIN_CLANG
+#undef _m_prefetchw
+#define _m_prefetchw __m_prefetchw
+#endif
+
 /* Must come first. */
 #include <windows.h>