From ec0a73b1e21881a395a92a9d0a9676e1783fb651 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Mon, 28 Dec 2015 23:27:25 +0200 Subject: [PATCH] Fix manygen to work with msvc. --- .../common/103 manygen/subdir/manygen.py | 43 ++++++++++++------- .../common/103 manygen/subdir/meson.build | 8 +++- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/test cases/common/103 manygen/subdir/manygen.py b/test cases/common/103 manygen/subdir/manygen.py index fbf2eae40..3c692eee5 100755 --- a/test cases/common/103 manygen/subdir/manygen.py +++ b/test cases/common/103 manygen/subdir/manygen.py @@ -14,27 +14,30 @@ if not os.path.isdir(outdir): sys.exit(1) if shutil.which('cl'): - print('VS support not yet added.') - sys.exit(1) + libsuffix = '.lib' + is_vs = True + compiler = 'cl' + linker = 'lib' +else: + libsuffix = '.a' + is_vs = False + linker = 'ar' + compiler = shutil.which('gcc') + if compiler is None: + compiler = shutil.which('clang') + if compiler is None: + compiler = shutil.which('cc') + if compiler is None: + print('No known compilers found.') + sys.exit(1) objsuffix = '.o' -libsuffix = '.a' outo = os.path.join(outdir, funcname + objsuffix) outa = os.path.join(outdir, funcname + libsuffix) outh = os.path.join(outdir, funcname + '.h') outc = os.path.join(outdir, funcname + '.c') -compiler = shutil.which('gcc') -if compiler is None: - compiler = shutil.which('clang') -if compiler is None: - compiler = shutil.which('cc') -if compiler is None: - print('No known compilers found.') - sys.exit(1) -linker = 'ar' - tmpc = 'diibadaaba.c' tmpo = 'diibadaaba' + objsuffix @@ -55,15 +58,23 @@ open(tmpc, 'w').write('''int %s_in_obj() { } ''' % funcname) -subprocess.check_call([compiler, '-c', '-o', outo, tmpc]) +if is_vs: + subprocess.check_call([compiler, '/nologo', '/c', '/Fo' + outo, tmpc]) +else: + subprocess.check_call([compiler, '-c', '-o', outo, tmpc]) open(tmpc, 'w').write('''int %s_in_lib() { return 0; } ''' % funcname) -subprocess.check_call([compiler, '-c', '-o', tmpo, tmpc]) -subprocess.check_call([linker, 'csr', outa, tmpo]) +if is_vs: + subprocess.check_call([compiler, '/nologo', '/c', '/Fo' + tmpo, tmpc]) + subprocess.check_call([linker, '/NOLOGO', '/OUT:' + outa, tmpo]) +else: + subprocess.check_call([compiler, '-c', '-o', tmpo, tmpc]) + subprocess.check_call([linker, 'csr', outa, tmpo]) + os.unlink(tmpo) os.unlink(tmpc) diff --git a/test cases/common/103 manygen/subdir/meson.build b/test cases/common/103 manygen/subdir/meson.build index 4470d1a17..5c5d763dd 100644 --- a/test cases/common/103 manygen/subdir/meson.build +++ b/test cases/common/103 manygen/subdir/meson.build @@ -1,7 +1,13 @@ gen = find_program('manygen.py') +if meson.get_compiler('c').get_id() == 'msvc' + outfiles = ['gen_func.lib', 'gen_func.c', 'gen_func.h', 'gen_func.o'] +else + outfiles = ['gen_func.a', 'gen_func.c', 'gen_func.h', 'gen_func.o'] +endif + generated = custom_target('manygen', - output : ['gen_func.a', 'gen_func.c', 'gen_func.h', 'gen_func.o'], + output : outfiles, input : ['funcinfo.def'], command : [gen, '@INPUT@', '@OUTDIR@'], )