diff --git a/meson.build b/meson.build index b655128c57c762c4d5cc58bcbb3b5171b4b1f0d6..e434506847f5d0d3b1d492c7b65e9625aa02dcf4 100644 --- a/meson.build +++ b/meson.build @@ -445,8 +445,15 @@ cargo_wrapper_args = [ '--libdir', get_option('libdir'), ] -if not get_option('debug') or \ - (is_msvc_style and get_option('buildtype') == 'debugoptimized') +if get_option('debug') + optimization = get_option('optimization') + if optimization in ['0', '1', '2', '3', 's'] + cargo_wrapper_args += ['--optimization', optimization] + elif optimization != 'plain' # g + cargo_wrapper_args += ['--optimization', '1'] + # plain: https://github.com/mesonbuild/meson/issues/7194 + endif +else cargo_wrapper_args += ['--release'] endif diff --git a/meson/cargo_wrapper.py b/meson/cargo_wrapper.py index 48ce2f15ed8565aa2445f5d4104f059e596bc47b..98bda87b215ed53bac2904cf5b767e9ac8926303 100755 --- a/meson/cargo_wrapper.py +++ b/meson/cargo_wrapper.py @@ -57,10 +57,6 @@ parser.add_argument( "--build-triplet", help="Build toolchain triplet (for cross builds using specific toolchain version)" ) -parser.add_argument( - "--release", action="store_true", help="Build artifacts in release mode" -) - parser.add_argument( "--avif", action="store_true", help="Enable AVIF support" ) @@ -89,6 +85,15 @@ group.add_argument( ) group.add_argument("--bin", help="Name of binary to build") +g = parser.add_argument_group("Optimizations") +group = parser.add_mutually_exclusive_group(required=False) +group.add_argument( + "--release", action="store_true", help="Build artifacts in release mode" +) +group.add_argument( + '--optimization', type=int, help="Set optimization level" +) + args = parser.parse_args() if args.toolchain_version is not None and args.target is None and args.build_triplet is None: @@ -163,6 +168,11 @@ if args.release: cargo_cmd.extend(['--release']) else: buildtype = 'debug' + if args.optimization: + if 'CARGO_BUILD_RUSTFLAGS' in env: + env['CARGO_BUILD_RUSTFLAGS'] = env['CARGO_BUILD_RUSTFLAGS'] + f' -C opt-level={args.optimization}' + else: + env['CARGO_BUILD_RUSTFLAGS'] = f'-C opt-level={args.optimization}' if args.target: cargo_cmd.extend(['--target', args.target])