summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/headers/class_no_members.hpp2
-rw-r--r--tests/headers/class_with_inner_struct.hpp2
-rw-r--r--tests/headers/class_with_typedef.hpp2
-rw-r--r--tests/headers/crtp.hpp2
-rw-r--r--tests/headers/duplicated_constants_in_ns.hpp2
-rw-r--r--tests/headers/enum_explicit_type.hpp2
-rw-r--r--tests/headers/jsval_layout_opaque.hpp2
-rw-r--r--tests/headers/namespace.hpp2
-rw-r--r--tests/headers/only_bitfields.hpp2
-rw-r--r--tests/headers/opaque_typedef.hpp2
-rw-r--r--tests/headers/overflowed_enum.hpp2
-rw-r--r--tests/headers/struct_with_bitfields.h2
-rw-r--r--tests/headers/union_with_anon_struct_bitfield.h2
-rw-r--r--tests/headers/using.hpp2
-rw-r--r--tests/headers/vtable_recursive_sig.hpp2
-rw-r--r--tests/headers/weird_bitfields.hpp2
-rwxr-xr-xtests/tools/run-bindgen.py35
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