volk_gnsssdr: do not write files in source tree when building

This commit is contained in:
Carles Fernandez committed 2026-06-29 12:26:00 +02:00
1 parent 0b131707a5
commit 47580c4eb4
4 files changed
+51 -3

No files matched your search

@@ -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():
@@ -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())
@@ -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)
@@ -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
)