diff options
| author | Jouke Witteveen <j.witteveen@gmail.com> | 2024-03-08 11:57:35 +0100 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2024-04-11 09:40:47 -0700 |
| commit | bcb82b390a382e10b6dd5a8e27727b31ada811b1 (patch) | |
| tree | cdbd40643c0486cd0644acd7fa249f85906a157f | |
| parent | bf00ca69b5eb8c836ba76402bb94ccf52660d724 (diff) | |
| download | meson-bcb82b390a382e10b6dd5a8e27727b31ada811b1.tar.gz | |
cmake: best-effort build type propagation
| -rw-r--r-- | mesonbuild/cmake/interpreter.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index 68cbea497..eae2c17f2 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -67,6 +67,14 @@ disable_policy_warnings = [ 'CMP0102', ] +# CMake is a bit more averse to debugging, but in spirit the build types match +buildtype_map = { + 'debug': 'Debug', + 'debugoptimized': 'RelWithDebInfo', # CMake sets NDEBUG + 'release': 'Release', + 'minsize': 'MinSizeRel', # CMake leaves out debug information immediately +} + target_type_map = { 'STATIC_LIBRARY': 'static_library', 'MODULE_LIBRARY': 'shared_module', @@ -819,6 +827,11 @@ class CMakeInterpreter: cmake_args += cmake_get_generator_args(self.env) cmake_args += [f'-DCMAKE_INSTALL_PREFIX={self.install_prefix}'] cmake_args += extra_cmake_options + if not any(arg.startswith('-DCMAKE_BUILD_TYPE=') for arg in cmake_args): + # Our build type is favored over any CMAKE_BUILD_TYPE environment variable + buildtype = T.cast('str', self.env.coredata.get_option(OptionKey('buildtype'))) + if buildtype in buildtype_map: + cmake_args += [f'-DCMAKE_BUILD_TYPE={buildtype_map[buildtype]}'] trace_args = self.trace.trace_args() cmcmp_args = [f'-DCMAKE_POLICY_WARNING_{x}=OFF' for x in disable_policy_warnings] |
