fix: noconfirm auto-selects first AUR match
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
#include"gen_func.h"
|
||||
|
||||
int main(void) {
|
||||
unsigned int i = (unsigned int) gen_func_in_lib();
|
||||
unsigned int j = (unsigned int) gen_func_in_obj();
|
||||
unsigned int k = (unsigned int) gen_func_in_src();
|
||||
return (int)(i + j + k);
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
project('manygen', 'c')
|
||||
|
||||
if meson.is_cross_build()
|
||||
# FIXME error out with skip message once cross test runner
|
||||
# recognizes it.
|
||||
message('Not running this test during cross build.')
|
||||
else
|
||||
subdir('subdir')
|
||||
|
||||
exe = executable('depuser', 'depuser.c',
|
||||
generated)
|
||||
|
||||
test('depuser test', exe)
|
||||
endif
|
||||
@@ -0,0 +1 @@
|
||||
gen_func
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
|
||||
# Generates a static library, object file, source
|
||||
# file and a header file.
|
||||
|
||||
import sys, os
|
||||
import subprocess
|
||||
|
||||
with open(sys.argv[1]) as f:
|
||||
funcname = f.readline().strip()
|
||||
outdir = sys.argv[2]
|
||||
buildtype_args = sys.argv[3]
|
||||
compiler_type = sys.argv[4]
|
||||
compiler = sys.argv[5:]
|
||||
|
||||
if not os.path.isdir(outdir):
|
||||
print('Outdir does not exist.')
|
||||
sys.exit(1)
|
||||
|
||||
if compiler_type == 'msvc':
|
||||
libsuffix = '.lib'
|
||||
is_vs = True
|
||||
if any(['clang-cl' in c for c in compiler]):
|
||||
linker = 'llvm-lib'
|
||||
else:
|
||||
linker = 'lib'
|
||||
else:
|
||||
libsuffix = '.a'
|
||||
is_vs = False
|
||||
linker = 'ar'
|
||||
|
||||
objsuffix = '.o'
|
||||
|
||||
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')
|
||||
|
||||
tmpc = 'diibadaaba.c'
|
||||
tmpo = 'diibadaaba' + objsuffix
|
||||
|
||||
with open(outc, 'w') as f:
|
||||
f.write('''#include"{}.h"
|
||||
int {}_in_src(void) {{
|
||||
return 0;
|
||||
}}
|
||||
'''.format(funcname, funcname))
|
||||
|
||||
with open(outh, 'w') as f:
|
||||
f.write('''#pragma once
|
||||
int {}_in_lib(void);
|
||||
int {}_in_obj(void);
|
||||
int {}_in_src(void);
|
||||
'''.format(funcname, funcname, funcname))
|
||||
|
||||
with open(tmpc, 'w') as f:
|
||||
f.write('''int %s_in_obj(void) {
|
||||
return 0;
|
||||
}
|
||||
''' % funcname)
|
||||
|
||||
if is_vs:
|
||||
subprocess.check_call(compiler + ['/nologo', '/c', buildtype_args, '/Fo' + outo, tmpc])
|
||||
else:
|
||||
subprocess.check_call(compiler + ['-c', '-o', outo, tmpc])
|
||||
|
||||
with open(tmpc, 'w') as f:
|
||||
f.write('''int %s_in_lib() {
|
||||
return 0;
|
||||
}
|
||||
''' % funcname)
|
||||
|
||||
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)
|
||||
@@ -0,0 +1,26 @@
|
||||
gen = files('manygen.py')
|
||||
py3_bin = import('python3').find_python()
|
||||
|
||||
buildtype = get_option('buildtype')
|
||||
buildtype_args = '-Dfooxxx' # a useless compiler argument
|
||||
cc = meson.get_compiler('c')
|
||||
if cc.get_argument_syntax() == 'msvc'
|
||||
# We need our manually generated code to use the same CRT as the executable.
|
||||
# Taken from compilers.py since build files do not have access to this.
|
||||
if buildtype == 'debug'
|
||||
buildtype_args = '/MDd'
|
||||
elif buildtype == 'debugoptimized'
|
||||
buildtype_args = '/MDd'
|
||||
elif buildtype == 'release'
|
||||
buildtype_args = '/MD'
|
||||
endif
|
||||
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 : outfiles,
|
||||
input : ['funcinfo.def'],
|
||||
command : [py3_bin, gen[0], '@INPUT@', '@OUTDIR@', buildtype_args, cc.get_argument_syntax(), cc.cmd_array()],
|
||||
)
|
||||
Reference in New Issue
Block a user