diff mbox series

[v2,01/16] build: simplify library build file

Message ID 20210420102232.314452-2-bruce.richardson@intel.com (mailing list archive)
State Accepted
Delegated to: Thomas Monjalon
Headers show
Series Build file updates | expand

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Bruce Richardson April 20, 2021, 10:22 a.m. UTC
Two simplifications can be made to the build file which reduce indentation
levels and make it easier to read:

1. When meson build support was first added, the compat library existed in
DPDK as a single header file. Since that header has been merged into EAL,
we no longer need to support header-only libraries, so can shorten the
code.

2. From meson 0.49 onwards we have the "continue" keyword available to
break out of one loop iteration and begin the next. This allows us to
remove blocks in the build configuration file which were conditional on the
"build" variable being true. Instead we can use "continue" to abort
processing at the point where the "build" value becomes false.

Since this patch changes the indentation level of large parts of the
meson.build file, we use the opportunity to adjust the whitespace used to
the meson-standard 4-spec indentation level.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/meson.build | 303 +++++++++++++++++++++++-------------------------
 1 file changed, 147 insertions(+), 156 deletions(-)
diff mbox series

Patch

diff --git a/lib/meson.build b/lib/meson.build
index 4eed83e57c..95fcd01896 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -54,165 +54,156 @@  default_cflags += ['-DALLOW_EXPERIMENTAL_API']
 default_cflags += ['-DALLOW_INTERNAL_API']
 
 if cc.has_argument('-Wno-format-truncation')
-	default_cflags += '-Wno-format-truncation'
+    default_cflags += '-Wno-format-truncation'
 endif
 
 enabled_libs = [] # used to print summary at the end
 
 foreach l:libraries
-	build = true
-	reason = '<unknown reason>' # set if build == false to explain why
-	name = l
-	use_function_versioning = false
-	sources = []
-	headers = []
-	indirect_headers = [] # public headers not directly included by apps
-	driver_sdk_headers = [] # public headers included by drivers
-	includes = []
-	cflags = default_cflags
-	objs = [] # other object files to link against, used e.g. for
-	          # instruction-set optimized versions of code
-
-	# use "deps" for internal DPDK dependencies, and "ext_deps" for
-	# external package/library requirements
-	ext_deps = []
-	deps = []
-	# eal is standard dependency once built
-	if dpdk_conf.has('RTE_LIB_EAL')
-		deps += ['eal']
-	endif
-
-	dir_name = 'librte_' + l
-	subdir(dir_name)
-
-	if build
-		shared_deps = ext_deps
-		static_deps = ext_deps
-		foreach d:deps
-			if not is_variable('shared_rte_' + d)
-				error('Missing internal dependency "@0@" for @1@ [@2@]'
-						.format(d, name, 'lib/' + dir_name))
-			endif
-			shared_deps += [get_variable('shared_rte_' + d)]
-			static_deps += [get_variable('static_rte_' + d)]
-		endforeach
-	endif
-
-	if not build
-		dpdk_libs_disabled += name
-		set_variable(name.underscorify() + '_disable_reason', reason)
-	else
-		enabled_libs += name
-		dpdk_conf.set('RTE_LIB_' + name.to_upper(), 1)
-		install_headers(headers)
-		install_headers(indirect_headers)
-		if get_option('enable_driver_sdk')
-			install_headers(driver_sdk_headers)
-		endif
-		dpdk_chkinc_headers += headers
-
-		libname = 'rte_' + name
-		includes += include_directories(dir_name)
-
-		if sources.length() == 0
-			# if no C files, just set a dependency on header path
-			shared_dep = declare_dependency(include_directories: includes)
-			static_dep = shared_dep
-		else
-			if is_windows and use_function_versioning and developer_mode
-				message('@0@: Function versioning is not supported by Windows.'
-						.format(name))
-			endif
-
-			if use_function_versioning
-				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
-			endif
-
-			# first build static lib
-			static_lib = static_library(libname,
-					sources,
-					objects: objs,
-					c_args: cflags,
-					dependencies: static_deps,
-					include_directories: includes,
-					install: true)
-			static_dep = declare_dependency(
-					include_directories: includes,
-					dependencies: static_deps)
-
-			if not use_function_versioning or is_windows
-				# use pre-build objects to build shared lib
-				sources = []
-				objs += static_lib.extract_all_objects(recursive: false)
-			else
-				# for compat we need to rebuild with
-				# RTE_BUILD_SHARED_LIB defined
-				cflags += '-DRTE_BUILD_SHARED_LIB'
-			endif
-			version_map = '@0@/@1@/version.map'.format(
-					meson.current_source_dir(), dir_name)
-			implib = dir_name + '.dll.a'
-
-			def_file = custom_target(libname + '_def',
-				command: [map_to_win_cmd, '@INPUT@', '@OUTPUT@'],
-				input: version_map,
-				output: '@0@_exports.def'.format(libname))
-
-			mingw_map = custom_target(libname + '_mingw',
-				command: [map_to_win_cmd, '@INPUT@', '@OUTPUT@'],
-				input: version_map,
-				output: '@0@_mingw.map'.format(libname))
-
-			if is_ms_linker
-				lk_args = ['-Wl,/def:' + def_file.full_path()]
-				if meson.version().version_compare('<0.54.0')
-					lk_args += ['-Wl,/implib:lib\\' + implib]
-				endif
-			else
-				if is_windows
-					lk_args = ['-Wl,--version-script=' + mingw_map.full_path()]
-				else
-					lk_args = ['-Wl,--version-script=' + version_map]
-				endif
-			endif
-
-			lk_deps = [version_map, def_file, mingw_map]
-			if developer_mode and not is_windows
-				# on unix systems check the output of the
-				# check-symbols.sh script, using it as a
-				# dependency of the .so build
-				lk_deps += custom_target(name + '.sym_chk',
-					command: [check_symbols,
-						version_map, '@INPUT@'],
-					capture: true,
-					input: static_lib,
-					output: name + '.sym_chk')
-			endif
-
-			shared_lib = shared_library(libname,
-					sources,
-					objects: objs,
-					c_args: cflags,
-					dependencies: shared_deps,
-					include_directories: includes,
-					link_args: lk_args,
-					link_depends: lk_deps,
-					version: abi_version,
-					soversion: so_version,
-					install: true)
-			shared_dep = declare_dependency(link_with: shared_lib,
-					include_directories: includes,
-					dependencies: shared_deps)
-
-			dpdk_libraries = [shared_lib] + dpdk_libraries
-			dpdk_static_libraries = [static_lib] + dpdk_static_libraries
-		endif # sources.length() > 0
-
-		set_variable('shared_rte_' + name, shared_dep)
-		set_variable('static_rte_' + name, static_dep)
-		if developer_mode
-			message('lib/@0@: Defining dependency "@1@"'.format(
-					dir_name, name))
-		endif
-	endif # if build
+    build = true
+    reason = '<unknown reason>' # set if build == false to explain why
+    name = l
+    use_function_versioning = false
+    sources = []
+    headers = []
+    indirect_headers = [] # public headers not directly included by apps
+    driver_sdk_headers = [] # public headers included by drivers
+    includes = []
+    cflags = default_cflags
+    objs = [] # other object files to link against, used e.g. for
+              # instruction-set optimized versions of code
+
+    # use "deps" for internal DPDK dependencies, and "ext_deps" for
+    # external package/library requirements
+    ext_deps = []
+    deps = []
+    # eal is standard dependency once built
+    if dpdk_conf.has('RTE_LIB_EAL')
+        deps += ['eal']
+    endif
+
+    dir_name = 'librte_' + l
+    subdir(dir_name)
+
+    if not build
+        dpdk_libs_disabled += name
+        set_variable(name.underscorify() + '_disable_reason', reason)
+        continue
+    endif
+
+    shared_deps = ext_deps
+    static_deps = ext_deps
+    foreach d:deps
+        if not is_variable('shared_rte_' + d)
+            error('Missing internal dependency "@0@" for @1@ [@2@]'
+                    .format(d, name, 'lib/' + dir_name))
+        endif
+        shared_deps += [get_variable('shared_rte_' + d)]
+        static_deps += [get_variable('static_rte_' + d)]
+    endforeach
+
+    enabled_libs += name
+    dpdk_conf.set('RTE_LIB_' + name.to_upper(), 1)
+    install_headers(headers)
+    install_headers(indirect_headers)
+    if get_option('enable_driver_sdk')
+        install_headers(driver_sdk_headers)
+    endif
+    dpdk_chkinc_headers += headers
+
+    libname = 'rte_' + name
+    includes += include_directories(dir_name)
+
+    if is_windows and use_function_versioning
+        message('@0@: Function versioning is not supported by Windows.'.format(name))
+    endif
+
+    if use_function_versioning
+        cflags += '-DRTE_USE_FUNCTION_VERSIONING'
+    endif
+
+    # first build static lib
+    static_lib = static_library(libname,
+            sources,
+            objects: objs,
+            c_args: cflags,
+            dependencies: static_deps,
+            include_directories: includes,
+            install: true)
+    static_dep = declare_dependency(
+            include_directories: includes,
+            dependencies: static_deps)
+
+    if not use_function_versioning or is_windows
+        # use pre-build objects to build shared lib
+        sources = []
+        objs += static_lib.extract_all_objects(recursive: false)
+    else
+        # for compat we need to rebuild with
+        # RTE_BUILD_SHARED_LIB defined
+        cflags += '-DRTE_BUILD_SHARED_LIB'
+    endif
+    version_map = '@0@/@1@/version.map'.format(
+            meson.current_source_dir(), dir_name)
+    implib = dir_name + '.dll.a'
+
+    def_file = custom_target(libname + '_def',
+            command: [map_to_win_cmd, '@INPUT@', '@OUTPUT@'],
+            input: version_map,
+            output: '@0@_exports.def'.format(libname))
+
+    mingw_map = custom_target(libname + '_mingw',
+            command: [map_to_win_cmd, '@INPUT@', '@OUTPUT@'],
+            input: version_map,
+            output: '@0@_mingw.map'.format(libname))
+
+    if is_ms_linker
+        lk_args = ['-Wl,/def:' + def_file.full_path()]
+        if meson.version().version_compare('<0.54.0')
+            lk_args += ['-Wl,/implib:lib\\' + implib]
+        endif
+    else
+        if is_windows
+            lk_args = ['-Wl,--version-script=' + mingw_map.full_path()]
+        else
+            lk_args = ['-Wl,--version-script=' + version_map]
+        endif
+    endif
+
+    lk_deps = [version_map, def_file, mingw_map]
+    if not is_windows
+        # on unix systems check the output of the
+        # check-symbols.sh script, using it as a
+        # dependency of the .so build
+        lk_deps += custom_target(name + '.sym_chk',
+                command: [check_symbols,
+                    version_map, '@INPUT@'],
+                capture: true,
+                input: static_lib,
+                output: name + '.sym_chk')
+    endif
+
+    shared_lib = shared_library(libname,
+            sources,
+            objects: objs,
+            c_args: cflags,
+            dependencies: shared_deps,
+            include_directories: includes,
+            link_args: lk_args,
+            link_depends: lk_deps,
+            version: abi_version,
+            soversion: so_version,
+            install: true)
+    shared_dep = declare_dependency(link_with: shared_lib,
+            include_directories: includes,
+            dependencies: shared_deps)
+
+    dpdk_libraries = [shared_lib] + dpdk_libraries
+    dpdk_static_libraries = [static_lib] + dpdk_static_libraries
+
+    set_variable('shared_rte_' + name, shared_dep)
+    set_variable('static_rte_' + name, static_dep)
+    if developer_mode
+        message('lib/@0@: Defining dependency "@1@"'.format(dir_name, name))
+    endif
 endforeach