Give dependencies the option to add to CMAKE_PREFIX_PATH for compiling CMake dependencies against each other.

This commit is contained in:
Patrick 2025-04-03 16:29:36 +02:00
parent 9436d2c48d
commit 161f2e52d8

View File

@ -31,10 +31,18 @@ def _generate_cmake_cxx_flags(env, dependencies: 'list[dict]') -> str:
def _get_cmake_cxx_standard(env: Environment) -> str: def _get_cmake_cxx_standard(env: Environment) -> str:
return env['CXX_STANDARD'][3:] # we use "C++XX", CMake just "XX" return env['CXX_STANDARD'][3:] # we use "C++XX", CMake just "XX"
def _get_cmake_prefix_path(dependencies: 'list[dict]') -> str:
parts = []
for dependency in dependencies:
for path in dependency.get('CMAKE_PREFIX_PATH', []):
parts.append(path)
return cmd_quote(';'.join(parts))
def _generate_cmake_args(env: Environment, dependencies: 'list[dict]') -> 'list[str]': def _generate_cmake_args(env: Environment, dependencies: 'list[dict]') -> 'list[str]':
args = [f'-DCMAKE_C_FLAGS={_generate_cmake_c_flags(env, dependencies)}', args = [f'-DCMAKE_C_FLAGS={_generate_cmake_c_flags(env, dependencies)}',
f'-DCMAKE_CXX_FLAGS={_generate_cmake_cxx_flags(env, dependencies)}', f'-DCMAKE_CXX_FLAGS={_generate_cmake_cxx_flags(env, dependencies)}',
f'-DCMAKE_CXX_STANDARD={_get_cmake_cxx_standard(env)}'] f'-DCMAKE_CXX_STANDARD={_get_cmake_cxx_standard(env)}',
f'-DCMAKE_PREFIX_PATH={_get_cmake_prefix_path(dependencies)}']
for dependency in dependencies: for dependency in dependencies:
for name, value in dependency.get('CMAKE_VARS', {}).items(): for name, value in dependency.get('CMAKE_VARS', {}).items():
args.append(f'-D{name}={cmd_quote(value)}') args.append(f'-D{name}={cmd_quote(value)}')