meson: make cpp invocations cross-compilation friendly

This implementation assumes that the arguments in compiler.cmd_array()
don't contain any spaces. Since we are only interested in compilation
on Linux, I think this is a safe assumption.

Solution suggested by Nirbheek Chauhan.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2017-04-11 10:25:34 -04:00
parent 3131bfe302
commit 9cc0e6e99c
10 changed files with 18 additions and 12 deletions

View File

@ -295,6 +295,8 @@ foreach arg : ['-Wl,-z,relro',
endif
endforeach
cpp = ' '.join(cc.cmd_array()) + ' -E'
#####################################################################
# compilation result tests

View File

@ -1,5 +1,5 @@
#!/bin/sh
cpp -dM -include sys/socket.h - </dev/null | \
$1 -E -dM -include sys/socket.h - </dev/null | \
grep -Ev 'AF_UNSPEC|AF_MAX' | \
awk '/^#define[ \t]+AF_[^ \t]+[ \t]+PF_[^ \t]/ { print $2; }'

View File

@ -1,5 +1,5 @@
#!/bin/sh -e
cpp -dM -include net/if_arp.h - </dev/null | \
$1 -dM -include net/if_arp.h - </dev/null | \
awk '/^#define[ \t]+ARPHRD_[^ \t]+[ \t]+[^ \t]/ { print $2; }' | \
sed -e 's/ARPHRD_//'

View File

@ -1,5 +1,5 @@
#!/bin/sh -e
cpp -dM -include linux/capability.h -include "$1" -include "$2" - </dev/null | \
$1 -dM -include linux/capability.h -include "$2" -include "$3" - </dev/null | \
awk '/^#define[ \t]+CAP_[A-Z_]+[ \t]+/ { print $2; }' | \
grep -v CAP_LAST_CAP

View File

@ -1,4 +1,4 @@
#!/bin/sh -e
cpp -dM -include errno.h - </dev/null | \
$1 -dM -include errno.h - </dev/null | \
awk '/^#define[ \t]+E[^ _]+[ \t]+/ { print $2; }'

View File

@ -206,28 +206,28 @@ generate_af_list = find_program('generate-af-list.sh')
af_list_txt = custom_target(
'af-list.txt',
output : 'af-list.txt',
command : [generate_af_list],
command : [generate_af_list, cpp],
capture : true)
generate_arphrd_list = find_program('generate-arphrd-list.sh')
arphrd_list_txt = custom_target(
'arphrd-list.txt',
output : 'arphrd-list.txt',
command : [generate_arphrd_list],
command : [generate_arphrd_list, cpp],
capture : true)
generate_cap_list = find_program('generate-cap-list.sh')
cap_list_txt = custom_target(
'cap-list.txt',
output : 'cap-list.txt',
command : [generate_cap_list, config_h, missing_h],
command : [generate_cap_list, cpp, config_h, missing_h],
capture : true)
generate_errno_list = find_program('generate-errno-list.sh')
errno_list_txt = custom_target(
'errno-list.txt',
output : 'errno-list.txt',
command : [generate_errno_list],
command : [generate_errno_list, cpp],
capture : true)
generated_gperf_headers = []

View File

@ -1,10 +1,14 @@
#!/bin/sh -e
cpp="$1"
shift
includes=""
for i in "$@"; do
includes="$includes -include $i"
done
cpp -dM $includes - </dev/null | \
$cpp -dM $includes - </dev/null | \
grep -vE 'AUDIT_.*(FIRST|LAST)_' | \
sed -r -n 's/^#define\s+AUDIT_(\w+)\s+([0-9]{4})\s*$$/\1\t\2/p' | \
sort -k2

View File

@ -35,7 +35,7 @@ generate_audit_type_list = find_program('generate-audit_type-list.sh')
audit_type_list_txt = custom_target(
'audit_type-list.txt',
output : 'audit_type-list.txt',
command : [generate_audit_type_list] + audit_type_includes,
command : [generate_audit_type_list, cpp] + audit_type_includes,
capture : true)
audit_type_to_name = custom_target(

View File

@ -1,4 +1,4 @@
#!/bin/sh -e
cpp -dM -include linux/input.h - </dev/null | \
$1 -dM -include linux/input.h - </dev/null | \
awk '/^#define[ \t]+KEY_[^ ]+[ \t]+[0-9K]/ { if ($2 != "KEY_MAX") { print $2 } }'

View File

@ -58,7 +58,7 @@ generate_keyboard_keys_list = find_program('generate-keyboard-keys-list.sh')
keyboard_keys_list_txt = custom_target(
'keyboard-keys-list.txt',
output : 'keyboard-keys-list.txt',
command : [generate_keyboard_keys_list],
command : [generate_keyboard_keys_list, cpp],
capture : true)
fname = 'keyboard-keys-from-name.gperf'