diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index f98effde2..c240885e8 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -33,6 +33,7 @@ from .modules import ModuleReturnValue import os, sys, shutil, uuid import re, shlex from collections import namedtuple +from pathlib import PurePath import importlib @@ -2899,11 +2900,16 @@ different subdirectory. def evaluate_subproject_info(self, path_from_source_root, subproject_dirname): depth = 0 subproj_name = '' - segs = path_from_source_root.split(os.path.sep) - while segs and segs[0] == subproject_dirname: - depth += 1 - subproj_name = segs[1] - segs = segs[2:] + segs = PurePath(path_from_source_root).parts + segs_spd = PurePath(subproject_dirname).parts + while segs and segs[0] == segs_spd[0]: + if len(segs_spd) == 1: + subproj_name = segs[1] + segs = segs[2:] + depth += 1 + else: + segs_spd = segs_spd[1:] + segs = segs[1:] return (depth, subproj_name) # Check that the indicated file is within the same subproject