diff options
-rwxr-xr-x | run_tests.py | 65 | ||||
-rw-r--r-- | test cases/prebuilt/1 object/main.c (renamed from test cases/prebuilt object/1 basic/main.c) | 0 | ||||
-rw-r--r-- | test cases/prebuilt/1 object/meson.build (renamed from test cases/prebuilt object/1 basic/meson.build) | 0 | ||||
-rw-r--r-- | test cases/prebuilt/1 object/source.c (renamed from test cases/prebuilt object/1 basic/source.c) | 0 | ||||
-rw-r--r-- | test cases/prebuilt/2 static/libdir/best.c | 3 | ||||
-rw-r--r-- | test cases/prebuilt/2 static/libdir/best.h | 3 | ||||
-rw-r--r-- | test cases/prebuilt/2 static/libdir/meson.build | 5 | ||||
-rw-r--r-- | test cases/prebuilt/2 static/main.c | 7 | ||||
-rw-r--r-- | test cases/prebuilt/2 static/meson.build | 5 |
9 files changed, 68 insertions, 20 deletions
diff --git a/run_tests.py b/run_tests.py index b0d666f..34258d8 100755 --- a/run_tests.py +++ b/run_tests.py @@ -308,7 +308,7 @@ def detect_tests_to_run(): all_tests = [] all_tests.append(('common', gather_tests('test cases/common'), False)) all_tests.append(('failing', gather_tests('test cases/failing'), False)) - all_tests.append(('prebuilt object', gather_tests('test cases/prebuilt object'), False)) + all_tests.append(('prebuilt', gather_tests('test cases/prebuilt'), False)) all_tests.append(('platform-osx', gather_tests('test cases/osx'), False if mesonlib.is_osx() else True)) all_tests.append(('platform-windows', gather_tests('test cases/windows'), False if mesonlib.is_windows() else True)) @@ -405,27 +405,51 @@ def check_format(): fullname = os.path.join(root, file) check_file(fullname) -def generate_prebuilt_object(): - source = 'test cases/prebuilt object/1 basic/source.c' - objectbase = 'test cases/prebuilt object/1 basic/prebuilt.' - if shutil.which('cl'): - objectfile = objectbase + 'obj' - cmd = ['cl', '/nologo', '/Fo'+objectfile, '/c', source] +def pbcompile(compiler, source, objectfile): + if compiler == 'cl': + cmd = [compiler, '/nologo', '/Fo'+objectfile, '/c', source] else: - if mesonlib.is_windows(): - objectfile = objectbase + 'obj' - else: - objectfile = objectbase + 'o' - if shutil.which('cc'): - cmd = 'cc' - elif shutil.which('gcc'): - cmd = 'gcc' - else: - raise RuntimeError("Could not find C compiler.") - cmd = [cmd, '-c', source, '-o', objectfile] + cmd = [compiler, '-c', source, '-o', objectfile] subprocess.check_call(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + +def generate_pb_object(compiler, object_suffix): + source = 'test cases/prebuilt/1 object/source.c' + objectfile = 'test cases/prebuilt/1 object/prebuilt.' + object_suffix + pbcompile(compiler, source, objectfile) return objectfile +def generate_pb_static(compiler, object_suffix, static_suffix): + source = 'test cases/prebuilt/2 static/libdir/best.c' + objectfile = 'test cases/prebuilt/2 static/libdir/best.' + object_suffix + stlibfile = 'test cases/prebuilt/2 static/libdir/libbest.' + static_suffix + pbcompile(compiler, source, objectfile) + if compiler == 'cl': + linker = ['lib', '/NOLOGO', '/OUT:' + stlibfile, objectfile] + else: + linker = ['ar', 'csr', stlibfile, objectfile] + subprocess.check_call(linker) + os.unlink(objectfile) + return stlibfile + +def generate_prebuilt(): + static_suffix = 'a' + if shutil.which('cl'): + compiler = 'cl' + static_suffix = 'lib' + elif shutil.which('cc'): + compiler = 'cc' + elif shutil.which('gcc'): + compiler = 'gcc' + else: + raise RuntimeError("Could not find C compiler.") + if mesonlib.is_windows(): + object_suffix = 'obj' + else: + object_suffix = 'o' + objectfile = generate_pb_object(compiler, object_suffix) + stlibfile = generate_pb_static(compiler, object_suffix, static_suffix) + return (objectfile, stlibfile) + if __name__ == '__main__': parser = argparse.ArgumentParser(description="Run the test suite of Meson.") parser.add_argument('extra_args', nargs='*', @@ -439,12 +463,13 @@ if __name__ == '__main__': if script_dir != '': os.chdir(script_dir) check_format() - pbfile = generate_prebuilt_object() + pbfiles = generate_prebuilt() try: run_tests(options.extra_args) except StopException: pass - os.unlink(pbfile) + for f in pbfiles: + os.unlink(f) print('\nTotal passed tests:', passing_tests) print('Total failed tests:', failing_tests) print('Total skipped tests:', skipped_tests) diff --git a/test cases/prebuilt object/1 basic/main.c b/test cases/prebuilt/1 object/main.c index 480bda5..480bda5 100644 --- a/test cases/prebuilt object/1 basic/main.c +++ b/test cases/prebuilt/1 object/main.c diff --git a/test cases/prebuilt object/1 basic/meson.build b/test cases/prebuilt/1 object/meson.build index 92f966b..92f966b 100644 --- a/test cases/prebuilt object/1 basic/meson.build +++ b/test cases/prebuilt/1 object/meson.build diff --git a/test cases/prebuilt object/1 basic/source.c b/test cases/prebuilt/1 object/source.c index f39b4f3..f39b4f3 100644 --- a/test cases/prebuilt object/1 basic/source.c +++ b/test cases/prebuilt/1 object/source.c diff --git a/test cases/prebuilt/2 static/libdir/best.c b/test cases/prebuilt/2 static/libdir/best.c new file mode 100644 index 0000000..ab774e1 --- /dev/null +++ b/test cases/prebuilt/2 static/libdir/best.c @@ -0,0 +1,3 @@ +const char *msg() { + return "I am the best."; +} diff --git a/test cases/prebuilt/2 static/libdir/best.h b/test cases/prebuilt/2 static/libdir/best.h new file mode 100644 index 0000000..063017f --- /dev/null +++ b/test cases/prebuilt/2 static/libdir/best.h @@ -0,0 +1,3 @@ +#pragma once + +const char *msg(); diff --git a/test cases/prebuilt/2 static/libdir/meson.build b/test cases/prebuilt/2 static/libdir/meson.build new file mode 100644 index 0000000..8d74ccf --- /dev/null +++ b/test cases/prebuilt/2 static/libdir/meson.build @@ -0,0 +1,5 @@ +cc = meson.get_compiler('c') +stlib = cc.find_library('best', dirs : meson.current_source_dir()) + +best_dep = declare_dependency(dependencies : stlib, + include_directories : include_directories('.')) diff --git a/test cases/prebuilt/2 static/main.c b/test cases/prebuilt/2 static/main.c new file mode 100644 index 0000000..d172625 --- /dev/null +++ b/test cases/prebuilt/2 static/main.c @@ -0,0 +1,7 @@ +#include<stdio.h> +#include<best.h> + +int main(int argc, char **argv) { + printf("%s\n", msg()); + return 0; +} diff --git a/test cases/prebuilt/2 static/meson.build b/test cases/prebuilt/2 static/meson.build new file mode 100644 index 0000000..9ea1d0d --- /dev/null +++ b/test cases/prebuilt/2 static/meson.build @@ -0,0 +1,5 @@ +project('prebuilt static lib', 'c') + +subdir('libdir') + +test('static', executable('mainprog', 'main.c', dependencies : best_dep)) |