anv: added proper handling for input argument in intel_clc
That was previously listed on the getopt_long struct but not actually being used. This makes intel_clc argument processing easier as now all of its arguments are handled with getopt and anything after the special argument '--' is passed along to clang to form the final build command. Thanks to Dylan Baker for help with changes to the meson file. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19153>
This commit is contained in:

committed by
Marge Bot

parent
8de02ff980
commit
eff1517cd7
@@ -258,13 +258,14 @@ static void
|
|||||||
print_usage(char *exec_name, FILE *f)
|
print_usage(char *exec_name, FILE *f)
|
||||||
{
|
{
|
||||||
fprintf(f,
|
fprintf(f,
|
||||||
"Usage: %s [options] -- [clang args | input file]\n"
|
"Usage: %s [options] -- [clang args]\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
" -h --help Print this help.\n"
|
" -h --help Print this help.\n"
|
||||||
" -e, --entrypoint <name> Specify the entry-point name.\n"
|
" -e, --entrypoint <name> Specify the entry-point name.\n"
|
||||||
" -p, --platform <name> Specify the target platform name.\n"
|
" -p, --platform <name> Specify the target platform name.\n"
|
||||||
" --prefix <prefix> Prefix for variable names in generated C code.\n"
|
" --prefix <prefix> Prefix for variable names in generated C code.\n"
|
||||||
" -o, --out <filename> Specify the output filename.\n"
|
" -o, --out <filename> Specify the output filename.\n"
|
||||||
|
" -i, --in <filename> Specify one input filename. Accepted multiple times.\n"
|
||||||
" -s, --spv <filename> Specify the output filename for spirv.\n"
|
" -s, --spv <filename> Specify the output filename for spirv.\n"
|
||||||
" -v, --verbose Print more information during compilation.\n"
|
" -v, --verbose Print more information during compilation.\n"
|
||||||
, exec_name);
|
, exec_name);
|
||||||
@@ -319,7 +320,7 @@ int main(int argc, char **argv)
|
|||||||
util_dynarray_init(&spirv_ptr_objs, mem_ctx);
|
util_dynarray_init(&spirv_ptr_objs, mem_ctx);
|
||||||
|
|
||||||
int ch;
|
int ch;
|
||||||
while ((ch = getopt_long(argc, argv, "he:p:s:o:v", long_options, NULL)) != -1)
|
while ((ch = getopt_long(argc, argv, "he:p:s:i:o:v", long_options, NULL)) != -1)
|
||||||
{
|
{
|
||||||
switch (ch)
|
switch (ch)
|
||||||
{
|
{
|
||||||
@@ -335,6 +336,9 @@ int main(int argc, char **argv)
|
|||||||
case 'o':
|
case 'o':
|
||||||
outfile = optarg;
|
outfile = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'i':
|
||||||
|
util_dynarray_append(&input_files, char *, optarg);
|
||||||
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
spv_outfile = optarg;
|
spv_outfile = optarg;
|
||||||
break;
|
break;
|
||||||
@@ -352,10 +356,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = optind; i < argc; i++) {
|
for (int i = optind; i < argc; i++) {
|
||||||
if (argv[i][0] == '-')
|
util_dynarray_append(&clang_args, char *, argv[i]);
|
||||||
util_dynarray_append(&clang_args, char *, argv[i]);
|
|
||||||
else
|
|
||||||
util_dynarray_append(&input_files, char *, argv[i]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (util_dynarray_num_elements(&input_files, char *) == 0) {
|
if (util_dynarray_num_elements(&input_files, char *) == 0) {
|
||||||
|
@@ -122,6 +122,10 @@ foreach t : [['125', 'gfx125', 'dg2']]
|
|||||||
input_args += [ lib_file ]
|
input_args += [ lib_file ]
|
||||||
endforeach
|
endforeach
|
||||||
endif
|
endif
|
||||||
|
prepended_input_args = []
|
||||||
|
foreach input_arg : input_args
|
||||||
|
prepended_input_args += ['--in', input_arg]
|
||||||
|
endforeach
|
||||||
outfile = kernel_prefix + '.h'
|
outfile = kernel_prefix + '.h'
|
||||||
grl_compiled_cl_kernels += custom_target(
|
grl_compiled_cl_kernels += custom_target(
|
||||||
outfile,
|
outfile,
|
||||||
@@ -129,12 +133,12 @@ foreach t : [['125', 'gfx125', 'dg2']]
|
|||||||
output : outfile,
|
output : outfile,
|
||||||
command : [
|
command : [
|
||||||
prog_intel_clc, '-p', platform, '--prefix', kernel_prefix,
|
prog_intel_clc, '-p', platform, '--prefix', kernel_prefix,
|
||||||
'-e', entrypoint, input_args, '-o', '@OUTPUT@', '--',
|
'-e', entrypoint, prepended_input_args, '-o', '@OUTPUT@', '--',
|
||||||
'-cl-std=cl2.0', '-D__OPENCL_VERSION__=200',
|
'-cl-std=cl2.0', '-D__OPENCL_VERSION__=200',
|
||||||
'-DMAX_HW_SIMD_WIDTH=16', '-DMAX_WORKGROUP_SIZE=16',
|
'-DMAX_HW_SIMD_WIDTH=16', '-DMAX_WORKGROUP_SIZE=16',
|
||||||
'-I' + join_paths(meson.current_source_dir(), 'gpu'),
|
'-I' + join_paths(meson.current_source_dir(), 'gpu'),
|
||||||
'-I' + join_paths(meson.current_source_dir(), 'include'),
|
'-I' + join_paths(meson.current_source_dir(), 'include'),
|
||||||
'-include' + 'opencl-c.h', # added to bypass build failure from clang15
|
'-include', 'opencl-c.h', # added to bypass build failure from clang15
|
||||||
# without modifying grl source code, remove
|
# without modifying grl source code, remove
|
||||||
# if fixed there
|
# if fixed there
|
||||||
],
|
],
|
||||||
|
Reference in New Issue
Block a user