aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-09-26 23:58:44 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2019-09-26 23:58:44 +0300
commit3fcca74e340e23b88444748efd792df91a81da63 (patch)
treeee2418a09f9a745fa4f633041f7b2f72a4209991
parent534e94ffc35dae3a0b2cc9f1e60e7e452872c512 (diff)
downloadmeson-vsmodtest.zip
meson-vsmodtest.tar.gz
meson-vsmodtest.tar.bz2
Q&D experiment to scan and build C++ modules with VS.vsmodtest
-rw-r--r--mesonbuild/backend/ninjabackend.py12
-rw-r--r--mesonbuild/compilers/compilers.py2
-rw-r--r--mesonbuild/scripts/fakeall.py71
-rw-r--r--modtest/main.cpp8
-rw-r--r--modtest/meson.build111
-rw-r--r--modtest/src0.ixx9
-rw-r--r--modtest/src1.ixx9
-rw-r--r--modtest/src10.ixx9
-rw-r--r--modtest/src11.ixx9
-rw-r--r--modtest/src12.ixx9
-rw-r--r--modtest/src13.ixx9
-rw-r--r--modtest/src14.ixx9
-rw-r--r--modtest/src15.ixx9
-rw-r--r--modtest/src16.ixx9
-rw-r--r--modtest/src17.ixx9
-rw-r--r--modtest/src18.ixx9
-rw-r--r--modtest/src19.ixx9
-rw-r--r--modtest/src2.ixx9
-rw-r--r--modtest/src20.ixx9
-rw-r--r--modtest/src21.ixx9
-rw-r--r--modtest/src22.ixx9
-rw-r--r--modtest/src23.ixx9
-rw-r--r--modtest/src24.ixx9
-rw-r--r--modtest/src25.ixx9
-rw-r--r--modtest/src26.ixx9
-rw-r--r--modtest/src27.ixx9
-rw-r--r--modtest/src28.ixx9
-rw-r--r--modtest/src29.ixx9
-rw-r--r--modtest/src3.ixx9
-rw-r--r--modtest/src30.ixx9
-rw-r--r--modtest/src31.ixx9
-rw-r--r--modtest/src32.ixx9
-rw-r--r--modtest/src33.ixx9
-rw-r--r--modtest/src34.ixx9
-rw-r--r--modtest/src35.ixx9
-rw-r--r--modtest/src36.ixx9
-rw-r--r--modtest/src37.ixx9
-rw-r--r--modtest/src38.ixx9
-rw-r--r--modtest/src39.ixx9
-rw-r--r--modtest/src4.ixx9
-rw-r--r--modtest/src40.ixx9
-rw-r--r--modtest/src41.ixx9
-rw-r--r--modtest/src42.ixx9
-rw-r--r--modtest/src43.ixx9
-rw-r--r--modtest/src44.ixx9
-rw-r--r--modtest/src45.ixx9
-rw-r--r--modtest/src46.ixx9
-rw-r--r--modtest/src47.ixx9
-rw-r--r--modtest/src48.ixx9
-rw-r--r--modtest/src49.ixx9
-rw-r--r--modtest/src5.ixx9
-rw-r--r--modtest/src50.ixx9
-rw-r--r--modtest/src51.ixx9
-rw-r--r--modtest/src52.ixx9
-rw-r--r--modtest/src53.ixx9
-rw-r--r--modtest/src54.ixx9
-rw-r--r--modtest/src55.ixx9
-rw-r--r--modtest/src56.ixx9
-rw-r--r--modtest/src57.ixx9
-rw-r--r--modtest/src58.ixx9
-rw-r--r--modtest/src59.ixx9
-rw-r--r--modtest/src6.ixx9
-rw-r--r--modtest/src60.ixx9
-rw-r--r--modtest/src61.ixx9
-rw-r--r--modtest/src62.ixx9
-rw-r--r--modtest/src63.ixx9
-rw-r--r--modtest/src64.ixx9
-rw-r--r--modtest/src65.ixx9
-rw-r--r--modtest/src66.ixx9
-rw-r--r--modtest/src67.ixx9
-rw-r--r--modtest/src68.ixx9
-rw-r--r--modtest/src69.ixx9
-rw-r--r--modtest/src7.ixx9
-rw-r--r--modtest/src70.ixx9
-rw-r--r--modtest/src71.ixx9
-rw-r--r--modtest/src72.ixx9
-rw-r--r--modtest/src73.ixx9
-rw-r--r--modtest/src74.ixx9
-rw-r--r--modtest/src75.ixx9
-rw-r--r--modtest/src76.ixx9
-rw-r--r--modtest/src77.ixx9
-rw-r--r--modtest/src78.ixx9
-rw-r--r--modtest/src79.ixx9
-rw-r--r--modtest/src8.ixx9
-rw-r--r--modtest/src80.ixx9
-rw-r--r--modtest/src81.ixx9
-rw-r--r--modtest/src82.ixx9
-rw-r--r--modtest/src83.ixx9
-rw-r--r--modtest/src84.ixx9
-rw-r--r--modtest/src85.ixx9
-rw-r--r--modtest/src86.ixx9
-rw-r--r--modtest/src87.ixx9
-rw-r--r--modtest/src88.ixx9
-rw-r--r--modtest/src89.ixx9
-rw-r--r--modtest/src9.ixx9
-rw-r--r--modtest/src90.ixx9
-rw-r--r--modtest/src91.ixx9
-rw-r--r--modtest/src92.ixx9
-rw-r--r--modtest/src93.ixx9
-rw-r--r--modtest/src94.ixx9
-rw-r--r--modtest/src95.ixx9
-rw-r--r--modtest/src96.ixx9
-rw-r--r--modtest/src97.ixx9
-rw-r--r--modtest/src98.ixx9
-rw-r--r--modtest/src99.ixx5
105 files changed, 1098 insertions, 2 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 417f6d9..6323830 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -328,11 +328,14 @@ int dummy;
self.write_rules(outfile)
self.write_builds(outfile)
- default = 'default all\n\n'
+
+ default = 'default fakeall\n\n'
outfile.write(default)
# Only overwrite the old build file after the new one has been
# fully created.
os.replace(tempfilename, outfilename)
+ import shutil
+ shutil.copy(outfilename, outfilename + '.hackbak')
self.generate_compdb()
# http://clang.llvm.org/docs/JSONCompilationDatabase.html
@@ -2685,6 +2688,13 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485'''))
self.add_build(elem)
# Alias that runs the target defined above
self.create_target_alias('meson-uninstall')
+ cmd = self.environment.get_build_command() + ['--internal', 'scanhack']
+ elem = NinjaBuildElement(self.all_outputs, 'meson-fakeall', 'CUSTOM_COMMAND', 'PHONY')
+ elem.add_item('COMMAND', cmd)
+ elem.add_item('pool', 'console')
+ self.add_build(elem)
+ # Alias that runs the target defined above
+ self.create_target_alias('meson-fakeall')
def generate_ending(self):
targetlist = []
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index bb698fc..63aea8d 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -44,7 +44,7 @@ lib_suffixes = ('a', 'lib', 'dll', 'dylib', 'so')
# This means we can't include .h headers here since they could be C, C++, ObjC, etc.
lang_suffixes = {
'c': ('c',),
- 'cpp': ('cpp', 'cc', 'cxx', 'c++', 'hh', 'hpp', 'ipp', 'hxx'),
+ 'cpp': ('cpp', 'cc', 'cxx', 'c++', 'hh', 'hpp', 'ipp', 'hxx', 'ixx'),
'cuda': ('cu',),
# f90, f95, f03, f08 are for free-form fortran ('f90' recommended)
# f, for, ftn, fpp are for fixed-form fortran ('f' or 'for' recommended)
diff --git a/mesonbuild/scripts/fakeall.py b/mesonbuild/scripts/fakeall.py
new file mode 100644
index 0000000..1630c10
--- /dev/null
+++ b/mesonbuild/scripts/fakeall.py
@@ -0,0 +1,71 @@
+# Copyright 2019 The Meson development team
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import json, os, sys, subprocess
+
+def scan_file(src):
+ moddeps = []
+ for line in open(src):
+ if line.startswith('import '):
+ line = line.strip()
+ modnum = line.split('M')[-1][:-1]
+ d = 'src{}.ixx'.format(modnum)
+ if d not in moddeps:
+ moddeps.append(d)
+ return moddeps
+
+def scan_deps():
+ compdb = json.load(open('compile_commands.json'))
+ src2obj = {}
+ name2path = {}
+ mmap = {}
+ obj_deps = {} # AWFUL HACK! Should put the dep on the generated ifc file instead but can't because of Ninja limitation of one output per rule if you need dep files as well.
+ for o in compdb:
+ full_srcname = o['file']
+ srcname = os.path.split(full_srcname)[1]
+ objname = o['output']
+ assert(srcname.endswith('.ixx') or srcname.endswith('.cpp'))
+ src2obj[srcname] = objname
+ name2path[srcname] = full_srcname
+ for o in compdb:
+ full_srcname = o['file']
+ objname = o['output']
+ srcname = os.path.split(full_srcname)[1]
+ mod_deps = scan_file(full_srcname)
+ obj_deps[objname] = [src2obj[x] for x in mod_deps]
+ #for k, v in obj_deps.items():
+ # print(k, '=>', v)
+ return obj_deps
+
+def rewrite_ninja(obj_deps):
+ ifilename = 'build.ninja.hackbak'
+ ofilename = 'build.ninja'
+ ofile = open(ofilename, 'w')
+ for line in open(ifilename):
+ if line.startswith('build '):
+ line = line.strip()
+ out, deps = line.split(':', 1)
+ out_obj = out.split(' ', 1)[1]
+ dep_objs = obj_deps.get(out_obj, [])
+ if len(dep_objs) > 0:
+ deps += ' | ' + ' '.join(dep_objs)
+ line = out + ':' + deps + '\n'
+ ofile.write(line)
+
+def run(args):
+ print('Scanning and rewriting Ninja file.')
+ obj_deps = scan_deps()
+ rewrite_ninja(obj_deps)
+ sys.exit(subprocess.run(['ninja', 'all']).returncode)
+
diff --git a/modtest/main.cpp b/modtest/main.cpp
new file mode 100644
index 0000000..063d9bc
--- /dev/null
+++ b/modtest/main.cpp
@@ -0,0 +1,8 @@
+import M0;
+
+#include<cstdio>
+
+int main(int argc, char **argv) {
+ printf("Got number %d.\n", f0());
+ return 0;
+}
diff --git a/modtest/meson.build b/modtest/meson.build
new file mode 100644
index 0000000..5dcb71f
--- /dev/null
+++ b/modtest/meson.build
@@ -0,0 +1,111 @@
+project('vs modtest', 'cpp')
+
+assert(meson.get_compiler('cpp').get_id() == 'msvc', 'This only works with the VS compiler.')
+
+add_project_arguments('/experimental:module', language: 'cpp')
+
+sources = files(
+ 'main.cpp',
+ 'src0.ixx',
+ 'src1.ixx',
+ 'src10.ixx',
+ 'src11.ixx',
+ 'src12.ixx',
+ 'src13.ixx',
+ 'src14.ixx',
+ 'src15.ixx',
+ 'src16.ixx',
+ 'src17.ixx',
+ 'src18.ixx',
+ 'src19.ixx',
+ 'src2.ixx',
+ 'src20.ixx',
+ 'src21.ixx',
+ 'src22.ixx',
+ 'src23.ixx',
+ 'src24.ixx',
+ 'src25.ixx',
+ 'src26.ixx',
+ 'src27.ixx',
+ 'src28.ixx',
+ 'src29.ixx',
+ 'src3.ixx',
+ 'src30.ixx',
+ 'src31.ixx',
+ 'src32.ixx',
+ 'src33.ixx',
+ 'src34.ixx',
+ 'src35.ixx',
+ 'src36.ixx',
+ 'src37.ixx',
+ 'src38.ixx',
+ 'src39.ixx',
+ 'src4.ixx',
+ 'src40.ixx',
+ 'src41.ixx',
+ 'src42.ixx',
+ 'src43.ixx',
+ 'src44.ixx',
+ 'src45.ixx',
+ 'src46.ixx',
+ 'src47.ixx',
+ 'src48.ixx',
+ 'src49.ixx',
+ 'src5.ixx',
+ 'src50.ixx',
+ 'src51.ixx',
+ 'src52.ixx',
+ 'src53.ixx',
+ 'src54.ixx',
+ 'src55.ixx',
+ 'src56.ixx',
+ 'src57.ixx',
+ 'src58.ixx',
+ 'src59.ixx',
+ 'src6.ixx',
+ 'src60.ixx',
+ 'src61.ixx',
+ 'src62.ixx',
+ 'src63.ixx',
+ 'src64.ixx',
+ 'src65.ixx',
+ 'src66.ixx',
+ 'src67.ixx',
+ 'src68.ixx',
+ 'src69.ixx',
+ 'src7.ixx',
+ 'src70.ixx',
+ 'src71.ixx',
+ 'src72.ixx',
+ 'src73.ixx',
+ 'src74.ixx',
+ 'src75.ixx',
+ 'src76.ixx',
+ 'src77.ixx',
+ 'src78.ixx',
+ 'src79.ixx',
+ 'src8.ixx',
+ 'src80.ixx',
+ 'src81.ixx',
+ 'src82.ixx',
+ 'src83.ixx',
+ 'src84.ixx',
+ 'src85.ixx',
+ 'src86.ixx',
+ 'src87.ixx',
+ 'src88.ixx',
+ 'src89.ixx',
+ 'src9.ixx',
+ 'src90.ixx',
+ 'src91.ixx',
+ 'src92.ixx',
+ 'src93.ixx',
+ 'src94.ixx',
+ 'src95.ixx',
+ 'src96.ixx',
+ 'src97.ixx',
+ 'src98.ixx',
+ 'src99.ixx',
+)
+
+executable('modtest', sources)
diff --git a/modtest/src0.ixx b/modtest/src0.ixx
new file mode 100644
index 0000000..a4788a2
--- /dev/null
+++ b/modtest/src0.ixx
@@ -0,0 +1,9 @@
+export module M0;
+
+// Import statements here.
+import M5;
+import M5;
+
+export int f0() {
+ return f5() + f5();
+}
diff --git a/modtest/src1.ixx b/modtest/src1.ixx
new file mode 100644
index 0000000..89e492f
--- /dev/null
+++ b/modtest/src1.ixx
@@ -0,0 +1,9 @@
+export module M1;
+
+// Import statements here.
+import M4;
+import M2;
+
+export int f1() {
+ return f4() + f2();
+}
diff --git a/modtest/src10.ixx b/modtest/src10.ixx
new file mode 100644
index 0000000..50b4188
--- /dev/null
+++ b/modtest/src10.ixx
@@ -0,0 +1,9 @@
+export module M10;
+
+// Import statements here.
+import M11;
+import M12;
+
+export int f10() {
+ return f11() + f12();
+}
diff --git a/modtest/src11.ixx b/modtest/src11.ixx
new file mode 100644
index 0000000..731cdd7
--- /dev/null
+++ b/modtest/src11.ixx
@@ -0,0 +1,9 @@
+export module M11;
+
+// Import statements here.
+import M16;
+import M14;
+
+export int f11() {
+ return f16() + f14();
+}
diff --git a/modtest/src12.ixx b/modtest/src12.ixx
new file mode 100644
index 0000000..64996ce
--- /dev/null
+++ b/modtest/src12.ixx
@@ -0,0 +1,9 @@
+export module M12;
+
+// Import statements here.
+import M15;
+import M16;
+
+export int f12() {
+ return f15() + f16();
+}
diff --git a/modtest/src13.ixx b/modtest/src13.ixx
new file mode 100644
index 0000000..6948409
--- /dev/null
+++ b/modtest/src13.ixx
@@ -0,0 +1,9 @@
+export module M13;
+
+// Import statements here.
+import M17;
+import M15;
+
+export int f13() {
+ return f17() + f15();
+}
diff --git a/modtest/src14.ixx b/modtest/src14.ixx
new file mode 100644
index 0000000..82255a1
--- /dev/null
+++ b/modtest/src14.ixx
@@ -0,0 +1,9 @@
+export module M14;
+
+// Import statements here.
+import M17;
+import M17;
+
+export int f14() {
+ return f17() + f17();
+}
diff --git a/modtest/src15.ixx b/modtest/src15.ixx
new file mode 100644
index 0000000..9698e24
--- /dev/null
+++ b/modtest/src15.ixx
@@ -0,0 +1,9 @@
+export module M15;
+
+// Import statements here.
+import M16;
+import M17;
+
+export int f15() {
+ return f16() + f17();
+}
diff --git a/modtest/src16.ixx b/modtest/src16.ixx
new file mode 100644
index 0000000..3d45d12
--- /dev/null
+++ b/modtest/src16.ixx
@@ -0,0 +1,9 @@
+export module M16;
+
+// Import statements here.
+import M17;
+import M21;
+
+export int f16() {
+ return f17() + f21();
+}
diff --git a/modtest/src17.ixx b/modtest/src17.ixx
new file mode 100644
index 0000000..e882748
--- /dev/null
+++ b/modtest/src17.ixx
@@ -0,0 +1,9 @@
+export module M17;
+
+// Import statements here.
+import M18;
+import M19;
+
+export int f17() {
+ return f18() + f19();
+}
diff --git a/modtest/src18.ixx b/modtest/src18.ixx
new file mode 100644
index 0000000..1b079db
--- /dev/null
+++ b/modtest/src18.ixx
@@ -0,0 +1,9 @@
+export module M18;
+
+// Import statements here.
+import M23;
+import M22;
+
+export int f18() {
+ return f23() + f22();
+}
diff --git a/modtest/src19.ixx b/modtest/src19.ixx
new file mode 100644
index 0000000..95624fe
--- /dev/null
+++ b/modtest/src19.ixx
@@ -0,0 +1,9 @@
+export module M19;
+
+// Import statements here.
+import M24;
+import M22;
+
+export int f19() {
+ return f24() + f22();
+}
diff --git a/modtest/src2.ixx b/modtest/src2.ixx
new file mode 100644
index 0000000..537ca00
--- /dev/null
+++ b/modtest/src2.ixx
@@ -0,0 +1,9 @@
+export module M2;
+
+// Import statements here.
+import M6;
+import M3;
+
+export int f2() {
+ return f6() + f3();
+}
diff --git a/modtest/src20.ixx b/modtest/src20.ixx
new file mode 100644
index 0000000..9cdf5b2
--- /dev/null
+++ b/modtest/src20.ixx
@@ -0,0 +1,9 @@
+export module M20;
+
+// Import statements here.
+import M23;
+import M24;
+
+export int f20() {
+ return f23() + f24();
+}
diff --git a/modtest/src21.ixx b/modtest/src21.ixx
new file mode 100644
index 0000000..825fc7a
--- /dev/null
+++ b/modtest/src21.ixx
@@ -0,0 +1,9 @@
+export module M21;
+
+// Import statements here.
+import M23;
+import M22;
+
+export int f21() {
+ return f23() + f22();
+}
diff --git a/modtest/src22.ixx b/modtest/src22.ixx
new file mode 100644
index 0000000..0b8a04a
--- /dev/null
+++ b/modtest/src22.ixx
@@ -0,0 +1,9 @@
+export module M22;
+
+// Import statements here.
+import M24;
+import M23;
+
+export int f22() {
+ return f24() + f23();
+}
diff --git a/modtest/src23.ixx b/modtest/src23.ixx
new file mode 100644
index 0000000..4dd416c
--- /dev/null
+++ b/modtest/src23.ixx
@@ -0,0 +1,9 @@
+export module M23;
+
+// Import statements here.
+import M26;
+import M26;
+
+export int f23() {
+ return f26() + f26();
+}
diff --git a/modtest/src24.ixx b/modtest/src24.ixx
new file mode 100644
index 0000000..37f7215
--- /dev/null
+++ b/modtest/src24.ixx
@@ -0,0 +1,9 @@
+export module M24;
+
+// Import statements here.
+import M29;
+import M27;
+
+export int f24() {
+ return f29() + f27();
+}
diff --git a/modtest/src25.ixx b/modtest/src25.ixx
new file mode 100644
index 0000000..c96074a
--- /dev/null
+++ b/modtest/src25.ixx
@@ -0,0 +1,9 @@
+export module M25;
+
+// Import statements here.
+import M29;
+import M28;
+
+export int f25() {
+ return f29() + f28();
+}
diff --git a/modtest/src26.ixx b/modtest/src26.ixx
new file mode 100644
index 0000000..ad7192e
--- /dev/null
+++ b/modtest/src26.ixx
@@ -0,0 +1,9 @@
+export module M26;
+
+// Import statements here.
+import M30;
+import M27;
+
+export int f26() {
+ return f30() + f27();
+}
diff --git a/modtest/src27.ixx b/modtest/src27.ixx
new file mode 100644
index 0000000..a05154c
--- /dev/null
+++ b/modtest/src27.ixx
@@ -0,0 +1,9 @@
+export module M27;
+
+// Import statements here.
+import M28;
+import M30;
+
+export int f27() {
+ return f28() + f30();
+}
diff --git a/modtest/src28.ixx b/modtest/src28.ixx
new file mode 100644
index 0000000..8b321c9
--- /dev/null
+++ b/modtest/src28.ixx
@@ -0,0 +1,9 @@
+export module M28;
+
+// Import statements here.
+import M33;
+import M30;
+
+export int f28() {
+ return f33() + f30();
+}
diff --git a/modtest/src29.ixx b/modtest/src29.ixx
new file mode 100644
index 0000000..e3df196
--- /dev/null
+++ b/modtest/src29.ixx
@@ -0,0 +1,9 @@
+export module M29;
+
+// Import statements here.
+import M31;
+import M32;
+
+export int f29() {
+ return f31() + f32();
+}
diff --git a/modtest/src3.ixx b/modtest/src3.ixx
new file mode 100644
index 0000000..e32300e
--- /dev/null
+++ b/modtest/src3.ixx
@@ -0,0 +1,9 @@
+export module M3;
+
+// Import statements here.
+import M8;
+import M4;
+
+export int f3() {
+ return f8() + f4();
+}
diff --git a/modtest/src30.ixx b/modtest/src30.ixx
new file mode 100644
index 0000000..524611c
--- /dev/null
+++ b/modtest/src30.ixx
@@ -0,0 +1,9 @@
+export module M30;
+
+// Import statements here.
+import M33;
+import M31;
+
+export int f30() {
+ return f33() + f31();
+}
diff --git a/modtest/src31.ixx b/modtest/src31.ixx
new file mode 100644
index 0000000..19286a4
--- /dev/null
+++ b/modtest/src31.ixx
@@ -0,0 +1,9 @@
+export module M31;
+
+// Import statements here.
+import M32;
+import M34;
+
+export int f31() {
+ return f32() + f34();
+}
diff --git a/modtest/src32.ixx b/modtest/src32.ixx
new file mode 100644
index 0000000..5b112ec
--- /dev/null
+++ b/modtest/src32.ixx
@@ -0,0 +1,9 @@
+export module M32;
+
+// Import statements here.
+import M34;
+import M35;
+
+export int f32() {
+ return f34() + f35();
+}
diff --git a/modtest/src33.ixx b/modtest/src33.ixx
new file mode 100644
index 0000000..cc97cbc
--- /dev/null
+++ b/modtest/src33.ixx
@@ -0,0 +1,9 @@
+export module M33;
+
+// Import statements here.
+import M34;
+import M37;
+
+export int f33() {
+ return f34() + f37();
+}
diff --git a/modtest/src34.ixx b/modtest/src34.ixx
new file mode 100644
index 0000000..be3987d
--- /dev/null
+++ b/modtest/src34.ixx
@@ -0,0 +1,9 @@
+export module M34;
+
+// Import statements here.
+import M36;
+import M38;
+
+export int f34() {
+ return f36() + f38();
+}
diff --git a/modtest/src35.ixx b/modtest/src35.ixx
new file mode 100644
index 0000000..1677945
--- /dev/null
+++ b/modtest/src35.ixx
@@ -0,0 +1,9 @@
+export module M35;
+
+// Import statements here.
+import M38;
+import M40;
+
+export int f35() {
+ return f38() + f40();
+}
diff --git a/modtest/src36.ixx b/modtest/src36.ixx
new file mode 100644
index 0000000..4aaab31
--- /dev/null
+++ b/modtest/src36.ixx
@@ -0,0 +1,9 @@
+export module M36;
+
+// Import statements here.
+import M41;
+import M41;
+
+export int f36() {
+ return f41() + f41();
+}
diff --git a/modtest/src37.ixx b/modtest/src37.ixx
new file mode 100644
index 0000000..999ed36
--- /dev/null
+++ b/modtest/src37.ixx
@@ -0,0 +1,9 @@
+export module M37;
+
+// Import statements here.
+import M39;
+import M38;
+
+export int f37() {
+ return f39() + f38();
+}
diff --git a/modtest/src38.ixx b/modtest/src38.ixx
new file mode 100644
index 0000000..6d9a394
--- /dev/null
+++ b/modtest/src38.ixx
@@ -0,0 +1,9 @@
+export module M38;
+
+// Import statements here.
+import M40;
+import M41;
+
+export int f38() {
+ return f40() + f41();
+}
diff --git a/modtest/src39.ixx b/modtest/src39.ixx
new file mode 100644
index 0000000..7c352aa
--- /dev/null
+++ b/modtest/src39.ixx
@@ -0,0 +1,9 @@
+export module M39;
+
+// Import statements here.
+import M41;
+import M42;
+
+export int f39() {
+ return f41() + f42();
+}
diff --git a/modtest/src4.ixx b/modtest/src4.ixx
new file mode 100644
index 0000000..4e14ce5
--- /dev/null
+++ b/modtest/src4.ixx
@@ -0,0 +1,9 @@
+export module M4;
+
+// Import statements here.
+import M7;
+import M9;
+
+export int f4() {
+ return f7() + f9();
+}
diff --git a/modtest/src40.ixx b/modtest/src40.ixx
new file mode 100644
index 0000000..a8e407c
--- /dev/null
+++ b/modtest/src40.ixx
@@ -0,0 +1,9 @@
+export module M40;
+
+// Import statements here.
+import M44;
+import M43;
+
+export int f40() {
+ return f44() + f43();
+}
diff --git a/modtest/src41.ixx b/modtest/src41.ixx
new file mode 100644
index 0000000..fb53e47
--- /dev/null
+++ b/modtest/src41.ixx
@@ -0,0 +1,9 @@
+export module M41;
+
+// Import statements here.
+import M45;
+import M43;
+
+export int f41() {
+ return f45() + f43();
+}
diff --git a/modtest/src42.ixx b/modtest/src42.ixx
new file mode 100644
index 0000000..1a01543
--- /dev/null
+++ b/modtest/src42.ixx
@@ -0,0 +1,9 @@
+export module M42;
+
+// Import statements here.
+import M47;
+import M46;
+
+export int f42() {
+ return f47() + f46();
+}
diff --git a/modtest/src43.ixx b/modtest/src43.ixx
new file mode 100644
index 0000000..b8fe8d4
--- /dev/null
+++ b/modtest/src43.ixx
@@ -0,0 +1,9 @@
+export module M43;
+
+// Import statements here.
+import M44;
+import M44;
+
+export int f43() {
+ return f44() + f44();
+}
diff --git a/modtest/src44.ixx b/modtest/src44.ixx
new file mode 100644
index 0000000..df59112
--- /dev/null
+++ b/modtest/src44.ixx
@@ -0,0 +1,9 @@
+export module M44;
+
+// Import statements here.
+import M45;
+import M47;
+
+export int f44() {
+ return f45() + f47();
+}
diff --git a/modtest/src45.ixx b/modtest/src45.ixx
new file mode 100644
index 0000000..fd6dbea
--- /dev/null
+++ b/modtest/src45.ixx
@@ -0,0 +1,9 @@
+export module M45;
+
+// Import statements here.
+import M50;
+import M48;
+
+export int f45() {
+ return f50() + f48();
+}
diff --git a/modtest/src46.ixx b/modtest/src46.ixx
new file mode 100644
index 0000000..a7b9e74
--- /dev/null
+++ b/modtest/src46.ixx
@@ -0,0 +1,9 @@
+export module M46;
+
+// Import statements here.
+import M47;
+import M51;
+
+export int f46() {
+ return f47() + f51();
+}
diff --git a/modtest/src47.ixx b/modtest/src47.ixx
new file mode 100644
index 0000000..f914f60
--- /dev/null
+++ b/modtest/src47.ixx
@@ -0,0 +1,9 @@
+export module M47;
+
+// Import statements here.
+import M49;
+import M51;
+
+export int f47() {
+ return f49() + f51();
+}
diff --git a/modtest/src48.ixx b/modtest/src48.ixx
new file mode 100644
index 0000000..0aeb0cb
--- /dev/null
+++ b/modtest/src48.ixx
@@ -0,0 +1,9 @@
+export module M48;
+
+// Import statements here.
+import M49;
+import M51;
+
+export int f48() {
+ return f49() + f51();
+}
diff --git a/modtest/src49.ixx b/modtest/src49.ixx
new file mode 100644
index 0000000..68fedbf
--- /dev/null
+++ b/modtest/src49.ixx
@@ -0,0 +1,9 @@
+export module M49;
+
+// Import statements here.
+import M53;
+import M53;
+
+export int f49() {
+ return f53() + f53();
+}
diff --git a/modtest/src5.ixx b/modtest/src5.ixx
new file mode 100644
index 0000000..3724c9a
--- /dev/null
+++ b/modtest/src5.ixx
@@ -0,0 +1,9 @@
+export module M5;
+
+// Import statements here.
+import M6;
+import M8;
+
+export int f5() {
+ return f6() + f8();
+}
diff --git a/modtest/src50.ixx b/modtest/src50.ixx
new file mode 100644
index 0000000..4e47bf9
--- /dev/null
+++ b/modtest/src50.ixx
@@ -0,0 +1,9 @@
+export module M50;
+
+// Import statements here.
+import M55;
+import M51;
+
+export int f50() {
+ return f55() + f51();
+}
diff --git a/modtest/src51.ixx b/modtest/src51.ixx
new file mode 100644
index 0000000..75c80ea
--- /dev/null
+++ b/modtest/src51.ixx
@@ -0,0 +1,9 @@
+export module M51;
+
+// Import statements here.
+import M53;
+import M56;
+
+export int f51() {
+ return f53() + f56();
+}
diff --git a/modtest/src52.ixx b/modtest/src52.ixx
new file mode 100644
index 0000000..e32fa72
--- /dev/null
+++ b/modtest/src52.ixx
@@ -0,0 +1,9 @@
+export module M52;
+
+// Import statements here.
+import M57;
+import M53;
+
+export int f52() {
+ return f57() + f53();
+}
diff --git a/modtest/src53.ixx b/modtest/src53.ixx
new file mode 100644
index 0000000..df485d3
--- /dev/null
+++ b/modtest/src53.ixx
@@ -0,0 +1,9 @@
+export module M53;
+
+// Import statements here.
+import M57;
+import M56;
+
+export int f53() {
+ return f57() + f56();
+}
diff --git a/modtest/src54.ixx b/modtest/src54.ixx
new file mode 100644
index 0000000..bb25b05
--- /dev/null
+++ b/modtest/src54.ixx
@@ -0,0 +1,9 @@
+export module M54;
+
+// Import statements here.
+import M55;
+import M59;
+
+export int f54() {
+ return f55() + f59();
+}
diff --git a/modtest/src55.ixx b/modtest/src55.ixx
new file mode 100644
index 0000000..062a1fa
--- /dev/null
+++ b/modtest/src55.ixx
@@ -0,0 +1,9 @@
+export module M55;
+
+// Import statements here.
+import M58;
+import M57;
+
+export int f55() {
+ return f58() + f57();
+}
diff --git a/modtest/src56.ixx b/modtest/src56.ixx
new file mode 100644
index 0000000..565d723
--- /dev/null
+++ b/modtest/src56.ixx
@@ -0,0 +1,9 @@
+export module M56;
+
+// Import statements here.
+import M57;
+import M60;
+
+export int f56() {
+ return f57() + f60();
+}
diff --git a/modtest/src57.ixx b/modtest/src57.ixx
new file mode 100644
index 0000000..a5be20d
--- /dev/null
+++ b/modtest/src57.ixx
@@ -0,0 +1,9 @@
+export module M57;
+
+// Import statements here.
+import M62;
+import M61;
+
+export int f57() {
+ return f62() + f61();
+}
diff --git a/modtest/src58.ixx b/modtest/src58.ixx
new file mode 100644
index 0000000..735a632
--- /dev/null
+++ b/modtest/src58.ixx
@@ -0,0 +1,9 @@
+export module M58;
+
+// Import statements here.
+import M63;
+import M61;
+
+export int f58() {
+ return f63() + f61();
+}
diff --git a/modtest/src59.ixx b/modtest/src59.ixx
new file mode 100644
index 0000000..b4b1be0
--- /dev/null
+++ b/modtest/src59.ixx
@@ -0,0 +1,9 @@
+export module M59;
+
+// Import statements here.
+import M61;
+import M64;
+
+export int f59() {
+ return f61() + f64();
+}
diff --git a/modtest/src6.ixx b/modtest/src6.ixx
new file mode 100644
index 0000000..29cbfd4
--- /dev/null
+++ b/modtest/src6.ixx
@@ -0,0 +1,9 @@
+export module M6;
+
+// Import statements here.
+import M7;
+import M11;
+
+export int f6() {
+ return f7() + f11();
+}
diff --git a/modtest/src60.ixx b/modtest/src60.ixx
new file mode 100644
index 0000000..6f10709
--- /dev/null
+++ b/modtest/src60.ixx
@@ -0,0 +1,9 @@
+export module M60;
+
+// Import statements here.
+import M64;
+import M62;
+
+export int f60() {
+ return f64() + f62();
+}
diff --git a/modtest/src61.ixx b/modtest/src61.ixx
new file mode 100644
index 0000000..40e7dd0
--- /dev/null
+++ b/modtest/src61.ixx
@@ -0,0 +1,9 @@
+export module M61;
+
+// Import statements here.
+import M66;
+import M66;
+
+export int f61() {
+ return f66() + f66();
+}
diff --git a/modtest/src62.ixx b/modtest/src62.ixx
new file mode 100644
index 0000000..869070e
--- /dev/null
+++ b/modtest/src62.ixx
@@ -0,0 +1,9 @@
+export module M62;
+
+// Import statements here.
+import M67;
+import M65;
+
+export int f62() {
+ return f67() + f65();
+}
diff --git a/modtest/src63.ixx b/modtest/src63.ixx
new file mode 100644
index 0000000..274d92b
--- /dev/null
+++ b/modtest/src63.ixx
@@ -0,0 +1,9 @@
+export module M63;
+
+// Import statements here.
+import M65;
+import M65;
+
+export int f63() {
+ return f65() + f65();
+}
diff --git a/modtest/src64.ixx b/modtest/src64.ixx
new file mode 100644
index 0000000..fd5eef4
--- /dev/null
+++ b/modtest/src64.ixx
@@ -0,0 +1,9 @@
+export module M64;
+
+// Import statements here.
+import M68;
+import M66;
+
+export int f64() {
+ return f68() + f66();
+}
diff --git a/modtest/src65.ixx b/modtest/src65.ixx
new file mode 100644
index 0000000..17f5880
--- /dev/null
+++ b/modtest/src65.ixx
@@ -0,0 +1,9 @@
+export module M65;
+
+// Import statements here.
+import M68;
+import M70;
+
+export int f65() {
+ return f68() + f70();
+}
diff --git a/modtest/src66.ixx b/modtest/src66.ixx
new file mode 100644
index 0000000..2f7b83d
--- /dev/null
+++ b/modtest/src66.ixx
@@ -0,0 +1,9 @@
+export module M66;
+
+// Import statements here.
+import M71;
+import M67;
+
+export int f66() {
+ return f71() + f67();
+}
diff --git a/modtest/src67.ixx b/modtest/src67.ixx
new file mode 100644
index 0000000..7d3d380
--- /dev/null
+++ b/modtest/src67.ixx
@@ -0,0 +1,9 @@
+export module M67;
+
+// Import statements here.
+import M71;
+import M72;
+
+export int f67() {
+ return f71() + f72();
+}
diff --git a/modtest/src68.ixx b/modtest/src68.ixx
new file mode 100644
index 0000000..edbd628
--- /dev/null
+++ b/modtest/src68.ixx
@@ -0,0 +1,9 @@
+export module M68;
+
+// Import statements here.
+import M71;
+import M73;
+
+export int f68() {
+ return f71() + f73();
+}
diff --git a/modtest/src69.ixx b/modtest/src69.ixx
new file mode 100644
index 0000000..200ffa8
--- /dev/null
+++ b/modtest/src69.ixx
@@ -0,0 +1,9 @@
+export module M69;
+
+// Import statements here.
+import M70;
+import M72;
+
+export int f69() {
+ return f70() + f72();
+}
diff --git a/modtest/src7.ixx b/modtest/src7.ixx
new file mode 100644
index 0000000..eeabaeb
--- /dev/null
+++ b/modtest/src7.ixx
@@ -0,0 +1,9 @@
+export module M7;
+
+// Import statements here.
+import M12;
+import M9;
+
+export int f7() {
+ return f12() + f9();
+}
diff --git a/modtest/src70.ixx b/modtest/src70.ixx
new file mode 100644
index 0000000..81aa167
--- /dev/null
+++ b/modtest/src70.ixx
@@ -0,0 +1,9 @@
+export module M70;
+
+// Import statements here.
+import M74;
+import M74;
+
+export int f70() {
+ return f74() + f74();
+}
diff --git a/modtest/src71.ixx b/modtest/src71.ixx
new file mode 100644
index 0000000..06da82b
--- /dev/null
+++ b/modtest/src71.ixx
@@ -0,0 +1,9 @@
+export module M71;
+
+// Import statements here.
+import M75;
+import M75;
+
+export int f71() {
+ return f75() + f75();
+}
diff --git a/modtest/src72.ixx b/modtest/src72.ixx
new file mode 100644
index 0000000..24b3cc7
--- /dev/null
+++ b/modtest/src72.ixx
@@ -0,0 +1,9 @@
+export module M72;
+
+// Import statements here.
+import M75;
+import M76;
+
+export int f72() {
+ return f75() + f76();
+}
diff --git a/modtest/src73.ixx b/modtest/src73.ixx
new file mode 100644
index 0000000..2088cd1
--- /dev/null
+++ b/modtest/src73.ixx
@@ -0,0 +1,9 @@
+export module M73;
+
+// Import statements here.
+import M75;
+import M77;
+
+export int f73() {
+ return f75() + f77();
+}
diff --git a/modtest/src74.ixx b/modtest/src74.ixx
new file mode 100644
index 0000000..0601e71
--- /dev/null
+++ b/modtest/src74.ixx
@@ -0,0 +1,9 @@
+export module M74;
+
+// Import statements here.
+import M77;
+import M79;
+
+export int f74() {
+ return f77() + f79();
+}
diff --git a/modtest/src75.ixx b/modtest/src75.ixx
new file mode 100644
index 0000000..bd12bd4
--- /dev/null
+++ b/modtest/src75.ixx
@@ -0,0 +1,9 @@
+export module M75;
+
+// Import statements here.
+import M80;
+import M78;
+
+export int f75() {
+ return f80() + f78();
+}
diff --git a/modtest/src76.ixx b/modtest/src76.ixx
new file mode 100644
index 0000000..9a86141
--- /dev/null
+++ b/modtest/src76.ixx
@@ -0,0 +1,9 @@
+export module M76;
+
+// Import statements here.
+import M77;
+import M79;
+
+export int f76() {
+ return f77() + f79();
+}
diff --git a/modtest/src77.ixx b/modtest/src77.ixx
new file mode 100644
index 0000000..39cdc54
--- /dev/null
+++ b/modtest/src77.ixx
@@ -0,0 +1,9 @@
+export module M77;
+
+// Import statements here.
+import M81;
+import M82;
+
+export int f77() {
+ return f81() + f82();
+}
diff --git a/modtest/src78.ixx b/modtest/src78.ixx
new file mode 100644
index 0000000..e3adc0b
--- /dev/null
+++ b/modtest/src78.ixx
@@ -0,0 +1,9 @@
+export module M78;
+
+// Import statements here.
+import M80;
+import M81;
+
+export int f78() {
+ return f80() + f81();
+}
diff --git a/modtest/src79.ixx b/modtest/src79.ixx
new file mode 100644
index 0000000..14fd370
--- /dev/null
+++ b/modtest/src79.ixx
@@ -0,0 +1,9 @@
+export module M79;
+
+// Import statements here.
+import M83;
+import M82;
+
+export int f79() {
+ return f83() + f82();
+}
diff --git a/modtest/src8.ixx b/modtest/src8.ixx
new file mode 100644
index 0000000..2d6fa26
--- /dev/null
+++ b/modtest/src8.ixx
@@ -0,0 +1,9 @@
+export module M8;
+
+// Import statements here.
+import M13;
+import M13;
+
+export int f8() {
+ return f13() + f13();
+}
diff --git a/modtest/src80.ixx b/modtest/src80.ixx
new file mode 100644
index 0000000..0a6ecb8
--- /dev/null
+++ b/modtest/src80.ixx
@@ -0,0 +1,9 @@
+export module M80;
+
+// Import statements here.
+import M84;
+import M81;
+
+export int f80() {
+ return f84() + f81();
+}
diff --git a/modtest/src81.ixx b/modtest/src81.ixx
new file mode 100644
index 0000000..02333a0
--- /dev/null
+++ b/modtest/src81.ixx
@@ -0,0 +1,9 @@
+export module M81;
+
+// Import statements here.
+import M86;
+import M82;
+
+export int f81() {
+ return f86() + f82();
+}
diff --git a/modtest/src82.ixx b/modtest/src82.ixx
new file mode 100644
index 0000000..bf1672b
--- /dev/null
+++ b/modtest/src82.ixx
@@ -0,0 +1,9 @@
+export module M82;
+
+// Import statements here.
+import M87;
+import M83;
+
+export int f82() {
+ return f87() + f83();
+}
diff --git a/modtest/src83.ixx b/modtest/src83.ixx
new file mode 100644
index 0000000..7dba177
--- /dev/null
+++ b/modtest/src83.ixx
@@ -0,0 +1,9 @@
+export module M83;
+
+// Import statements here.
+import M87;
+import M88;
+
+export int f83() {
+ return f87() + f88();
+}
diff --git a/modtest/src84.ixx b/modtest/src84.ixx
new file mode 100644
index 0000000..c898582
--- /dev/null
+++ b/modtest/src84.ixx
@@ -0,0 +1,9 @@
+export module M84;
+
+// Import statements here.
+import M86;
+import M85;
+
+export int f84() {
+ return f86() + f85();
+}
diff --git a/modtest/src85.ixx b/modtest/src85.ixx
new file mode 100644
index 0000000..d471c23
--- /dev/null
+++ b/modtest/src85.ixx
@@ -0,0 +1,9 @@
+export module M85;
+
+// Import statements here.
+import M86;
+import M86;
+
+export int f85() {
+ return f86() + f86();
+}
diff --git a/modtest/src86.ixx b/modtest/src86.ixx
new file mode 100644
index 0000000..825d76c
--- /dev/null
+++ b/modtest/src86.ixx
@@ -0,0 +1,9 @@
+export module M86;
+
+// Import statements here.
+import M88;
+import M89;
+
+export int f86() {
+ return f88() + f89();
+}
diff --git a/modtest/src87.ixx b/modtest/src87.ixx
new file mode 100644
index 0000000..2749435
--- /dev/null
+++ b/modtest/src87.ixx
@@ -0,0 +1,9 @@
+export module M87;
+
+// Import statements here.
+import M89;
+import M90;
+
+export int f87() {
+ return f89() + f90();
+}
diff --git a/modtest/src88.ixx b/modtest/src88.ixx
new file mode 100644
index 0000000..55f0313
--- /dev/null
+++ b/modtest/src88.ixx
@@ -0,0 +1,9 @@
+export module M88;
+
+// Import statements here.
+import M89;
+import M92;
+
+export int f88() {
+ return f89() + f92();
+}
diff --git a/modtest/src89.ixx b/modtest/src89.ixx
new file mode 100644
index 0000000..6a9650e
--- /dev/null
+++ b/modtest/src89.ixx
@@ -0,0 +1,9 @@
+export module M89;
+
+// Import statements here.
+import M92;
+import M94;
+
+export int f89() {
+ return f92() + f94();
+}
diff --git a/modtest/src9.ixx b/modtest/src9.ixx
new file mode 100644
index 0000000..7887281
--- /dev/null
+++ b/modtest/src9.ixx
@@ -0,0 +1,9 @@
+export module M9;
+
+// Import statements here.
+import M12;
+import M13;
+
+export int f9() {
+ return f12() + f13();
+}
diff --git a/modtest/src90.ixx b/modtest/src90.ixx
new file mode 100644
index 0000000..770301b
--- /dev/null
+++ b/modtest/src90.ixx
@@ -0,0 +1,9 @@
+export module M90;
+
+// Import statements here.
+import M91;
+import M91;
+
+export int f90() {
+ return f91() + f91();
+}
diff --git a/modtest/src91.ixx b/modtest/src91.ixx
new file mode 100644
index 0000000..9ac2b0c
--- /dev/null
+++ b/modtest/src91.ixx
@@ -0,0 +1,9 @@
+export module M91;
+
+// Import statements here.
+import M96;
+import M92;
+
+export int f91() {
+ return f96() + f92();
+}
diff --git a/modtest/src92.ixx b/modtest/src92.ixx
new file mode 100644
index 0000000..018da53
--- /dev/null
+++ b/modtest/src92.ixx
@@ -0,0 +1,9 @@
+export module M92;
+
+// Import statements here.
+import M94;
+import M94;
+
+export int f92() {
+ return f94() + f94();
+}
diff --git a/modtest/src93.ixx b/modtest/src93.ixx
new file mode 100644
index 0000000..38fa020
--- /dev/null
+++ b/modtest/src93.ixx
@@ -0,0 +1,9 @@
+export module M93;
+
+// Import statements here.
+import M97;
+import M95;
+
+export int f93() {
+ return f97() + f95();
+}
diff --git a/modtest/src94.ixx b/modtest/src94.ixx
new file mode 100644
index 0000000..fcdb40d
--- /dev/null
+++ b/modtest/src94.ixx
@@ -0,0 +1,9 @@
+export module M94;
+
+// Import statements here.
+import M95;
+import M98;
+
+export int f94() {
+ return f95() + f98();
+}
diff --git a/modtest/src95.ixx b/modtest/src95.ixx
new file mode 100644
index 0000000..72da9b9
--- /dev/null
+++ b/modtest/src95.ixx
@@ -0,0 +1,9 @@
+export module M95;
+
+// Import statements here.
+import M99;
+import M97;
+
+export int f95() {
+ return f99() + f97();
+}
diff --git a/modtest/src96.ixx b/modtest/src96.ixx
new file mode 100644
index 0000000..150964e
--- /dev/null
+++ b/modtest/src96.ixx
@@ -0,0 +1,9 @@
+export module M96;
+
+// Import statements here.
+import M99;
+import M99;
+
+export int f96() {
+ return f99() + f99();
+}
diff --git a/modtest/src97.ixx b/modtest/src97.ixx
new file mode 100644
index 0000000..26f19b3
--- /dev/null
+++ b/modtest/src97.ixx
@@ -0,0 +1,9 @@
+export module M97;
+
+// Import statements here.
+import M99;
+import M99;
+
+export int f97() {
+ return f99() + f99();
+}
diff --git a/modtest/src98.ixx b/modtest/src98.ixx
new file mode 100644
index 0000000..d506d47
--- /dev/null
+++ b/modtest/src98.ixx
@@ -0,0 +1,9 @@
+export module M98;
+
+// Import statements here.
+import M99;
+import M99;
+
+export int f98() {
+ return f99() + f99();
+}
diff --git a/modtest/src99.ixx b/modtest/src99.ixx
new file mode 100644
index 0000000..2d4685f
--- /dev/null
+++ b/modtest/src99.ixx
@@ -0,0 +1,5 @@
+export module M99;
+
+export int f99() {
+ return 1;
+}