diff options
Diffstat (limited to 'waflib/Tools/fc_scan.py')
-rw-r--r-- | waflib/Tools/fc_scan.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/waflib/Tools/fc_scan.py b/waflib/Tools/fc_scan.py index c07a22d..a688250 100644 --- a/waflib/Tools/fc_scan.py +++ b/waflib/Tools/fc_scan.py @@ -5,10 +5,12 @@ import re INC_REGEX="""(?:^|['">]\s*;)\s*(?:|#\s*)INCLUDE\s+(?:\w+_)?[<"'](.+?)(?=["'>])""" USE_REGEX="""(?:^|;)\s*USE(?:\s+|(?:(?:\s*,\s*(?:NON_)?INTRINSIC)?\s*::))\s*(\w+)""" -MOD_REGEX="""(?:^|;)\s*MODULE(?!\s*PROCEDURE)(?:\s+|(?:(?:\s*,\s*(?:NON_)?INTRINSIC)?\s*::))\s*(\w+)""" +MOD_REGEX="""(?:^|;)\s*MODULE(?!\s+(?:PROCEDURE|SUBROUTINE|FUNCTION))\s+(\w+)""" +SMD_REGEX="""(?:^|;)\s*SUBMODULE\s*\(([\w:]+)\)\s*(\w+)""" re_inc=re.compile(INC_REGEX,re.I) re_use=re.compile(USE_REGEX,re.I) re_mod=re.compile(MOD_REGEX,re.I) +re_smd=re.compile(SMD_REGEX,re.I) class fortran_parser(object): def __init__(self,incpaths): self.seen=[] @@ -30,6 +32,10 @@ class fortran_parser(object): m=re_mod.search(line) if m: mods.append(m.group(1)) + m=re_smd.search(line) + if m: + uses.append(m.group(1)) + mods.append('{0}:{1}'.format(m.group(1),m.group(2))) return(incs,uses,mods) def start(self,node): self.waiting=[node] |