[v7,8/8] build: meson changes to build on windows

Message ID 20190328232451.16988-9-anand.rawat@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series HelloWorld example for windows |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Anand Rawat March 28, 2019, 11:24 p.m. UTC
  Added meson workarounds to build helloworld on windows.
Windows currently only supports kvargs and eal libraries.
This change restricts the build flow to supported libraries
only.

Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
---
 app/meson.build                        | 6 +++++-
 buildtools/meson.build                 | 6 +++++-
 drivers/meson.build                    | 6 +++++-
 examples/meson.build                   | 8 ++++++--
 kernel/windows/meson.build             | 4 ++++
 lib/librte_eal/windows/eal/meson.build | 6 ++++++
 lib/meson.build                        | 4 ++++
 7 files changed, 35 insertions(+), 5 deletions(-)
 create mode 100644 kernel/windows/meson.build
  

Comments

Thomas Monjalon April 1, 2019, 11:25 p.m. UTC | #1
29/03/2019 00:24, Anand Rawat:
> Added meson workarounds to build helloworld on windows.
> Windows currently only supports kvargs and eal libraries.
> This change restricts the build flow to supported libraries
> only.
[...]
> --- a/app/meson.build
> +++ b/app/meson.build
> @@ -1,5 +1,9 @@
>  # SPDX-License-Identifier: BSD-3-Clause
> -# Copyright(c) 2017 Intel Corporation
> +# Copyright(c) 2017-2019 Intel Corporation
> +
> +if host_machine.system() == 'windows'
> +	subdir_done()
> +endif

Not sure this change deserves a copyright update :)

> --- a/examples/meson.build
> +++ b/examples/meson.build
> -	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']

Please keep this line intact.

> +	if host_machine.system() != 'windows'
> +		deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
> +	else
> +		deps = ['eal'] # only supported lib on windows currently
> +	endif

You could override deps for Windows only.

Other workarounds look reasonnable. Thanks
  
Anand Rawat April 2, 2019, 3:47 a.m. UTC | #2
On 4/1/2019 4:25 PM, Thomas Monjalon wrote:
> 29/03/2019 00:24, Anand Rawat:
>> Added meson workarounds to build helloworld on windows.
>> Windows currently only supports kvargs and eal libraries.
>> This change restricts the build flow to supported libraries
>> only.
> [...]
>> --- a/app/meson.build
>> +++ b/app/meson.build
>> @@ -1,5 +1,9 @@
>>   # SPDX-License-Identifier: BSD-3-Clause
>> -# Copyright(c) 2017 Intel Corporation
>> +# Copyright(c) 2017-2019 Intel Corporation
>> +
>> +if host_machine.system() == 'windows'
>> +	subdir_done()
>> +endif
> 
> Not sure this change deserves a copyright update :)

I am not sure either, basic principle that I am following
is if any file is touched with some code/logic the license
should be updated. Do correct me if I am wrong. I can make
the changes accordingly in the future releases.

> 
>> --- a/examples/meson.build
>> +++ b/examples/meson.build
>> -	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
> 
> Please keep this line intact.
> 
>> +	if host_machine.system() != 'windows'
>> +		deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
>> +	else
>> +		deps = ['eal'] # only supported lib on windows currently
>> +	endif
> 
> You could override deps for Windows only.
> 

Will be updated in v8
  

Patch

diff --git a/app/meson.build b/app/meson.build
index aa353f657..e949624b7 100644
--- a/app/meson.build
+++ b/app/meson.build
@@ -1,5 +1,9 @@ 
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2017 Intel Corporation
+# Copyright(c) 2017-2019 Intel Corporation
+
+if host_machine.system() == 'windows'
+	subdir_done()
+endif
 
 apps = [
 	'pdump',
diff --git a/buildtools/meson.build b/buildtools/meson.build
index cdd38ed24..0209bec8f 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -1,5 +1,9 @@ 
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2017 Intel Corporation
+# Copyright(c) 2017-2019 Intel Corporation
+
+if host_machine.system() == 'windows'
+	subdir_done()
+endif
 
 subdir('pmdinfogen')
 
diff --git a/drivers/meson.build b/drivers/meson.build
index 8c76a5659..7520a16e3 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -1,5 +1,9 @@ 
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2017 Intel Corporation
+# Copyright(c) 2017-2019 Intel Corporation
+
+if host_machine.system() == 'windows'
+	subdir_done()
+endif
 
 # Defines the order in which the drivers are buit.
 dpdk_driver_classes = ['common',
diff --git a/examples/meson.build b/examples/meson.build
index af81c762e..015b26f73 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -1,5 +1,5 @@ 
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2017 Intel Corporation
+# Copyright(c) 2017-2019 Intel Corporation
 
 driver_libs = []
 if get_option('default_library') == 'static'
@@ -35,7 +35,11 @@  foreach example: examples
 
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
-	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
+	if host_machine.system() != 'windows'
+		deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
+	else
+		deps = ['eal'] # only supported lib on windows currently
+	endif
 	subdir(example)
 
 	if build
diff --git a/kernel/windows/meson.build b/kernel/windows/meson.build
new file mode 100644
index 000000000..45adcd138
--- /dev/null
+++ b/kernel/windows/meson.build
@@ -0,0 +1,4 @@ 
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+# stub file for supporting windows logic in future release
diff --git a/lib/librte_eal/windows/eal/meson.build b/lib/librte_eal/windows/eal/meson.build
index 6bc577e5c..e9b7138c5 100644
--- a/lib/librte_eal/windows/eal/meson.build
+++ b/lib/librte_eal/windows/eal/meson.build
@@ -5,6 +5,12 @@  eal_inc += include_directories('include')
 
 env_objs = []
 env_headers = []
+common_sources = files(
+	'../../common/eal_common_errno.c',
+	'../../common/eal_common_launch.c',
+	'../../common/eal_common_lcore.c',
+	'../../common/eal_common_log.c'
+)
 env_sources = files('eal.c',
 	'eal_debug.c',
 	'eal_lcore.c',
diff --git a/lib/meson.build b/lib/meson.build
index a7b5a9194..c3289f885 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -30,6 +30,10 @@  libraries = [
 	# flow_classify lib depends on pkt framework table lib
 	'flow_classify', 'bpf', 'telemetry']
 
+if host_machine.system() == 'windows'
+	libraries = ['kvargs','eal'] # only supported libraries for windows
+endif
+
 default_cflags = machine_args
 if cc.has_argument('-Wno-format-truncation')
 	default_cflags += '-Wno-format-truncation'