diff options
Diffstat (limited to 'mesonbuild/compilers/d.py')
-rw-r--r-- | mesonbuild/compilers/d.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py index f0f3d54..93dca0e 100644 --- a/mesonbuild/compilers/d.py +++ b/mesonbuild/compilers/d.py @@ -23,6 +23,8 @@ from .compilers import ( d_ldc_buildtype_args, get_gcc_soname_args, gnu_color_args, + gnu_optimization_args, + clike_debug_args, Compiler, CompilerArgs, ) @@ -41,6 +43,22 @@ d_feature_args = {'gcc': {'unittest': '-funittest', } } +ldc_optimization_args = {'0': [], + 'g': [], + '1': ['-O1'], + '2': ['-O2'], + '3': ['-O3'], + 's': ['-Os'], + } + +dmd_optimization_args = {'0': [], + 'g': [], + '1': ['-O1'], + '2': ['-O2'], + '3': ['-O3'], + 's': ['-Os'], + } + class DCompiler(Compiler): def __init__(self, exelist, version, is_cross, **kwargs): self.language = 'd' @@ -238,6 +256,8 @@ class DCompiler(Compiler): return dcargs + def get_debug_args(self, is_debug): + return clike_debug_args[is_debug] class GnuDCompiler(DCompiler): def __init__(self, exelist, version, is_cross, **kwargs): @@ -288,6 +308,8 @@ class GnuDCompiler(DCompiler): def build_rpath_args(self, build_dir, from_dir, rpath_paths, build_rpath, install_rpath): return self.build_unix_rpath_args(build_dir, from_dir, rpath_paths, build_rpath, install_rpath) + def get_optimization_args(self, optimization_level): + return gnu_optimization_args[optimization_level] class LLVMDCompiler(DCompiler): def __init__(self, exelist, version, is_cross, **kwargs): @@ -342,6 +364,9 @@ class LLVMDCompiler(DCompiler): def unix_args_to_native(cls, args): return cls.translate_args_to_nongnu(args) + def get_optimization_args(self, optimization_level): + return ldc_optimization_args[optimization_level] + class DmdDCompiler(DCompiler): def __init__(self, exelist, version, is_cross, **kwargs): @@ -392,3 +417,6 @@ class DmdDCompiler(DCompiler): @classmethod def unix_args_to_native(cls, args): return cls.translate_args_to_nongnu(args) + + def get_optimization_args(self, optimization_level): + return dmd_optimization_args[optimization_level] |