From 47580c4eb4e2cf4d0d9eeb206a574951329cf1cc Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 29 Jun 2026 12:26:00 +0200 Subject: [PATCH] volk_gnsssdr: do not write files in source tree when building --- .../gen/volk_gnsssdr_arch_defs.py.in | 3 +-- .../gen/volk_gnsssdr_compile_utils.py | 22 +++++++++++++++++++ .../gen/volk_gnsssdr_tmpl_utils.py | 20 +++++++++++++++++ .../volk_gnsssdr/lib/CMakeLists.txt | 9 +++++++- 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_arch_defs.py.in b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_arch_defs.py.in index 53fcd4073..14af3c929 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_arch_defs.py.in +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_arch_defs.py.in @@ -49,8 +49,7 @@ def register_arch(**kwargs): #TODO skip the XML and put it here from xml.dom import minidom import os -gendir = os.path.dirname(__file__) -archs_xml = minidom.parse(os.path.join(gendir, '@VOLK_GNSSSSDR_ARCHS_XML_FILE@')).getElementsByTagName('arch') +archs_xml = minidom.parse(os.path.join('@PROJECT_SOURCE_DIR@', 'gen', '@VOLK_GNSSSSDR_ARCHS_XML_FILE@')).getElementsByTagName('arch') for arch_xml in archs_xml: kwargs = dict() for attr in arch_xml.attributes.keys(): diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_compile_utils.py b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_compile_utils.py index 0a763ddca..f8f354ce6 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_compile_utils.py +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_compile_utils.py @@ -9,6 +9,27 @@ from __future__ import print_function import argparse +import os +import sys + +sys.dont_write_bytecode = True + +def extract_generated_python_dir(args): + option = '--generated-python-dir' + if option in args: + option_index = args.index(option) + if option_index + 1 < len(args): + return args[option_index + 1] + option_prefix = option + '=' + for arg in args: + if arg.startswith(option_prefix): + return arg[len(option_prefix):] + return os.environ.get('VOLK_GNSSSDR_GENERATED_PYTHON_DIR') + +generated_python_dir = extract_generated_python_dir(sys.argv[1:]) +if generated_python_dir: + sys.path.insert(0, generated_python_dir) + import volk_gnsssdr_arch_defs import volk_gnsssdr_machine_defs @@ -44,6 +65,7 @@ def main(): parser.add_argument('--compiler', type=str) parser.add_argument('--archs', type=str) parser.add_argument('--machine', type=str) + parser.add_argument('--generated-python-dir', type=str) args = parser.parse_args() if args.mode == 'arch_flags': return do_arch_flags_list(args.compiler.lower()) diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_tmpl_utils.py b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_tmpl_utils.py index 3baf83bd7..b031b40c9 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_tmpl_utils.py +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/volk_gnsssdr_tmpl_utils.py @@ -12,6 +12,25 @@ import os import re import sys import argparse + +sys.dont_write_bytecode = True + +def extract_generated_python_dir(args): + option = '--generated-python-dir' + if option in args: + option_index = args.index(option) + if option_index + 1 < len(args): + return args[option_index + 1] + option_prefix = option + '=' + for arg in args: + if arg.startswith(option_prefix): + return arg[len(option_prefix):] + return os.environ.get('VOLK_GNSSSDR_GENERATED_PYTHON_DIR') + +generated_python_dir = extract_generated_python_dir(sys.argv[1:]) +if generated_python_dir: + sys.path.insert(0, generated_python_dir) + import volk_gnsssdr_arch_defs import volk_gnsssdr_machine_defs import volk_gnsssdr_kernel_defs @@ -37,6 +56,7 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument('--input', type=str) parser.add_argument('--output', type=str) + parser.add_argument('--generated-python-dir', type=str) args, extras = parser.parse_known_args() output = __parse_tmpl(open(args.input).read(), args=extras) diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/CMakeLists.txt b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/CMakeLists.txt index 7e8d6642f..1b3a6fb94 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/CMakeLists.txt +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/CMakeLists.txt @@ -91,14 +91,16 @@ if(USE_CPU_FEATURES) else() set(VOLK_GNSSSSDR_ARCHS_XML_FILE "archs_old.xml") endif() +file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/gen) configure_file(${PROJECT_SOURCE_DIR}/gen/volk_gnsssdr_arch_defs.py.in - ${PROJECT_SOURCE_DIR}/gen/volk_gnsssdr_arch_defs.py + ${PROJECT_BINARY_DIR}/gen/volk_gnsssdr_arch_defs.py @ONLY ) execute_process( COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${PROJECT_SOURCE_DIR}/gen/volk_gnsssdr_compile_utils.py + --generated-python-dir ${PROJECT_BINARY_DIR}/gen --mode "arch_flags" --compiler "${COMPILER_NAME}" OUTPUT_VARIABLE arch_flag_lines OUTPUT_STRIP_TRAILING_WHITESPACE ) @@ -320,6 +322,7 @@ message(STATUS "Available architectures: ${available_archs}") execute_process( COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${PROJECT_SOURCE_DIR}/gen/volk_gnsssdr_compile_utils.py + --generated-python-dir ${PROJECT_BINARY_DIR}/gen --mode "machines" --archs "${available_archs}" OUTPUT_VARIABLE available_machines OUTPUT_STRIP_TRAILING_WHITESPACE ) @@ -359,6 +362,8 @@ else() endif() list(SORT xml_files) file(GLOB py_files ${PROJECT_SOURCE_DIR}/gen/*.py) +list(REMOVE_ITEM py_files ${PROJECT_SOURCE_DIR}/gen/volk_gnsssdr_arch_defs.py) +list(APPEND py_files ${PROJECT_BINARY_DIR}/gen/volk_gnsssdr_arch_defs.py) list(SORT py_files) file(GLOB h_files ${PROJECT_SOURCE_DIR}/kernels/volk_gnsssdr/*.h) list(SORT h_files) @@ -370,6 +375,7 @@ macro(gen_template tmpl output) DEPENDS ${xml_files} ${py_files} ${h_files} ${tmpl} COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${PROJECT_SOURCE_DIR}/gen/volk_gnsssdr_tmpl_utils.py + --generated-python-dir ${PROJECT_BINARY_DIR}/gen --input ${tmpl} --output ${output} ${ARGN} ) endmacro() @@ -429,6 +435,7 @@ foreach(machine_name ${available_machines}) execute_process( COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${PROJECT_SOURCE_DIR}/gen/volk_gnsssdr_compile_utils.py + --generated-python-dir ${PROJECT_BINARY_DIR}/gen --mode "machine_flags" --machine "${machine_name}" --compiler "${COMPILER_NAME}" OUTPUT_VARIABLE ${machine_name}_flags OUTPUT_STRIP_TRAILING_WHITESPACE )