diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/headers/class_no_members.hpp | 2 | ||||
-rw-r--r-- | tests/headers/class_with_inner_struct.hpp | 2 | ||||
-rw-r--r-- | tests/headers/class_with_typedef.hpp | 2 | ||||
-rw-r--r-- | tests/headers/crtp.hpp | 2 | ||||
-rw-r--r-- | tests/headers/duplicated_constants_in_ns.hpp | 2 | ||||
-rw-r--r-- | tests/headers/enum_explicit_type.hpp | 2 | ||||
-rw-r--r-- | tests/headers/jsval_layout_opaque.hpp | 2 | ||||
-rw-r--r-- | tests/headers/namespace.hpp | 2 | ||||
-rw-r--r-- | tests/headers/only_bitfields.hpp | 2 | ||||
-rw-r--r-- | tests/headers/opaque_typedef.hpp | 2 | ||||
-rw-r--r-- | tests/headers/overflowed_enum.hpp | 2 | ||||
-rw-r--r-- | tests/headers/struct_with_bitfields.h | 2 | ||||
-rw-r--r-- | tests/headers/union_with_anon_struct_bitfield.h | 2 | ||||
-rw-r--r-- | tests/headers/using.hpp | 2 | ||||
-rw-r--r-- | tests/headers/vtable_recursive_sig.hpp | 2 | ||||
-rw-r--r-- | tests/headers/weird_bitfields.hpp | 2 | ||||
-rwxr-xr-x | tests/tools/run-bindgen.py | 35 |
17 files changed, 44 insertions, 23 deletions
diff --git a/tests/headers/class_no_members.hpp b/tests/headers/class_no_members.hpp index b8e1b2fa..a4483558 100644 --- a/tests/headers/class_no_members.hpp +++ b/tests/headers/class_no_members.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -std=c++11 +// bindgen-flags: -- -std=c++11 class whatever { }; diff --git a/tests/headers/class_with_inner_struct.hpp b/tests/headers/class_with_inner_struct.hpp index c96b0daf..ec729fe6 100644 --- a/tests/headers/class_with_inner_struct.hpp +++ b/tests/headers/class_with_inner_struct.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -std=c++11 +// bindgen-flags: -- -std=c++11 class A { unsigned c; diff --git a/tests/headers/class_with_typedef.hpp b/tests/headers/class_with_typedef.hpp index a9ad3823..f36c7b5d 100644 --- a/tests/headers/class_with_typedef.hpp +++ b/tests/headers/class_with_typedef.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -no-type-renaming +// bindgen-flags: --no-type-renaming typedef int AnotherInt; diff --git a/tests/headers/crtp.hpp b/tests/headers/crtp.hpp index 3a3eeb60..1f799b3d 100644 --- a/tests/headers/crtp.hpp +++ b/tests/headers/crtp.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -no-type-renaming +// bindgen-flags: --no-type-renaming template<class T> class Base {}; diff --git a/tests/headers/duplicated_constants_in_ns.hpp b/tests/headers/duplicated_constants_in_ns.hpp index 1f20af35..42197a16 100644 --- a/tests/headers/duplicated_constants_in_ns.hpp +++ b/tests/headers/duplicated_constants_in_ns.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -no-namespaced-constants +// bindgen-flags: --no-namespaced-constants namespace foo { const int FOO = 4; } diff --git a/tests/headers/enum_explicit_type.hpp b/tests/headers/enum_explicit_type.hpp index b99951ba..4acb3f15 100644 --- a/tests/headers/enum_explicit_type.hpp +++ b/tests/headers/enum_explicit_type.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -std=c++11 +// bindgen-flags: -- -std=c++11 enum Foo: unsigned char { Bar = 0, diff --git a/tests/headers/jsval_layout_opaque.hpp b/tests/headers/jsval_layout_opaque.hpp index db09cb54..d432d8d3 100644 --- a/tests/headers/jsval_layout_opaque.hpp +++ b/tests/headers/jsval_layout_opaque.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -std=c++11 -match jsval_layout_opaque.hpp -no-type-renaming -no-unstable-rust +// bindgen-flags: --match jsval_layout_opaque.hpp --no-type-renaming --no-unstable-rust -- -std=c++11 #include <stdint.h> #include <stddef.h> diff --git a/tests/headers/namespace.hpp b/tests/headers/namespace.hpp index e69158d7..65788539 100644 --- a/tests/headers/namespace.hpp +++ b/tests/headers/namespace.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -enable-cxx-namespaces +// bindgen-flags: --enable-cxx-namespaces void top_level(); diff --git a/tests/headers/only_bitfields.hpp b/tests/headers/only_bitfields.hpp index 30a75ebb..84db0586 100644 --- a/tests/headers/only_bitfields.hpp +++ b/tests/headers/only_bitfields.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -no-unstable-rust +// bindgen-flags: --no-unstable-rust class C { bool a: 1; bool b: 7; diff --git a/tests/headers/opaque_typedef.hpp b/tests/headers/opaque_typedef.hpp index 23bb363a..2d9a5781 100644 --- a/tests/headers/opaque_typedef.hpp +++ b/tests/headers/opaque_typedef.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -std=c++11 +// bindgen-flags: -- -std=c++11 template<typename T> class RandomTemplate; diff --git a/tests/headers/overflowed_enum.hpp b/tests/headers/overflowed_enum.hpp index 6ddc7349..1f2075a5 100644 --- a/tests/headers/overflowed_enum.hpp +++ b/tests/headers/overflowed_enum.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -std=c++11 -Wno-narrowing +// bindgen-flags: -- -std=c++11 -Wno-narrowing enum Foo { BAP_ARM = 0x93fcb9, diff --git a/tests/headers/struct_with_bitfields.h b/tests/headers/struct_with_bitfields.h index b994da4e..107fb136 100644 --- a/tests/headers/struct_with_bitfields.h +++ b/tests/headers/struct_with_bitfields.h @@ -1,4 +1,4 @@ -// bindgen-flags: -no-unstable-rust +// bindgen-flags: --no-unstable-rust struct bitfield { unsigned short a :1, diff --git a/tests/headers/union_with_anon_struct_bitfield.h b/tests/headers/union_with_anon_struct_bitfield.h index 5a6fc7bc..24c7dce8 100644 --- a/tests/headers/union_with_anon_struct_bitfield.h +++ b/tests/headers/union_with_anon_struct_bitfield.h @@ -1,4 +1,4 @@ -// bindgen-flags: -no-unstable-rust +// bindgen-flags: --no-unstable-rust union foo { int a; struct { diff --git a/tests/headers/using.hpp b/tests/headers/using.hpp index fb848fd6..ba07b9c8 100644 --- a/tests/headers/using.hpp +++ b/tests/headers/using.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -std=c++11 +// bindgen-flags: -- -std=c++11 template<typename T> class Point { diff --git a/tests/headers/vtable_recursive_sig.hpp b/tests/headers/vtable_recursive_sig.hpp index 4e5af806..1556f866 100644 --- a/tests/headers/vtable_recursive_sig.hpp +++ b/tests/headers/vtable_recursive_sig.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -std=c++11 -no-type-renaming +// bindgen-flags: --no-type-renaming -- -std=c++11 class Derived; class Base { diff --git a/tests/headers/weird_bitfields.hpp b/tests/headers/weird_bitfields.hpp index e8287507..755681c1 100644 --- a/tests/headers/weird_bitfields.hpp +++ b/tests/headers/weird_bitfields.hpp @@ -1,4 +1,4 @@ -// bindgen-flags: -no-unstable-rust +// bindgen-flags: --no-unstable-rust // You can guess where this is taken from... enum nsStyleSVGOpacitySource { eStyleSVGOpacitySource_Normal, diff --git a/tests/tools/run-bindgen.py b/tests/tools/run-bindgen.py index 2054924f..bb58bc3a 100755 --- a/tests/tools/run-bindgen.py +++ b/tests/tools/run-bindgen.py @@ -6,27 +6,48 @@ import subprocess import tempfile BINDGEN_FLAGS_PREFIX = "// bindgen-flags: "; +CLANG_FLAGS_SEPARATOR = "-- " COMMON_PRELUDE = """ #![allow(non_snake_case)] """ if len(sys.argv) != 4: print("Usage: {} [bindgen-path] [c-path] [rust-path]\n".format(sys.argv[0])) + sys.exit(1) + +[_, bindgen_path, c_path, rust_path] = sys.argv + +flags = [] +clang_flags = [] -flags = []; with open(sys.argv[2]) as f: for line in f: if line.startswith(BINDGEN_FLAGS_PREFIX): - flags = line.strip().split(BINDGEN_FLAGS_PREFIX)[1].split(' ') + flags = line.strip().split(BINDGEN_FLAGS_PREFIX)[1] + + try: + idx = flags.index(CLANG_FLAGS_SEPARATOR) + clang_flags = flags[idx + len(CLANG_FLAGS_SEPARATOR):].split(" ") + flags = flags[:idx] + except ValueError: + pass -base_command = [sys.argv[1], "-o", sys.argv[3]] + flags = flags.split(" ") + break -for line in COMMON_PRELUDE.split('\n'): - flags.append("-raw-line") +base_command = [bindgen_path, "-o", rust_path] + +for line in COMMON_PRELUDE.split("\n"): + flags.append("--raw-line") flags.append(line) -base_command.extend(flags); -base_command.append(sys.argv[2]); +base_command.extend(flags) +base_command.append(c_path) + +if len(clang_flags): + base_command.append("--") + base_command.extend(clang_flags) + env = os.environ.copy() # El Capitan likes to unset dyld variables |