Closed
Description
I was investigating how easy it would be to create bindings for Windows 32-bit with different calling conventions and so I ran the example in the ./bindgen-integration
directory.
System
> rustup show
Default host: x86_64-pc-windows-msvc
installed toolchains
--------------------
stable-i686-pc-windows-msvc
stable-x86_64-pc-windows-msvc (default)
nightly-i686-pc-windows-msvc
nightly-x86_64-pc-windows-msvc
active toolchain
----------------
stable-i686-pc-windows-msvc (directory override for 'C:\Repos\rust-bindgen\bindgen-integration')
rustc 1.15.1 (021bd294c 2017-02-08)
> clang -v
clang version 3.9.1 (branches/release_39)
Target: i686-pc-windows-msvc
Input C/C++ Header
#pragma once
class Test {
int m_int;
double m_double;
public:
static const char* name();
Test(int foo);
Test(double foo);
static const int COUNTDOWN[];
static const int* COUNTDOWN_PTR;
static const int* countdown();
};
namespace testing {
typedef Test TypeAlias;
} // namespace testing
typedef testing::TypeAlias TypeAlias;
Bindgen Invokation
let bindings = Builder::default()
.no_unstable_rust()
.enable_cxx_namespaces()
.raw_line("pub use self::root::*;")
.header("cpp/Test.h")
.clang_arg("-x")
.clang_arg("c++")
.clang_arg("-std=c++11")
.generate()
.expect("Unable to generate bindings");
Actual Results
error: failed to run custom build command for `bindgen-integration v0.1.0 (file:///C:/Repos/rust-bindgen/bindgen-integration)`
process didn't exit successfully: `C:\Repos\rust-bindgen\bindgen-integration\target\debug\build\bindgen-integration-a1a8c12a2facefae\build-script-build` (exit code: 101)
--- stdout
TARGET = Some("i686-pc-windows-msvc")
OPT_LEVEL = Some("0")
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
TARGET = Some("i686-pc-windows-msvc")
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
CXX_i686-pc-windows-msvc = None
CXX_i686_pc_windows_msvc = None
HOST_CXX = None
CXX = None
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
CXXFLAGS_i686-pc-windows-msvc = None
CXXFLAGS_i686_pc_windows_msvc = None
HOST_CXXFLAGS = None
CXXFLAGS = None
PROFILE = Some("debug")
running: "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64_x86\\cl.exe" "/nologo" "/MD" "/Z7" "/FoC:\\Repos\\rust-bindgen\\bindgen-integration\\target\\debug\\build\
\bindgen-integration-89b7af89d851f38d\\out\\cpp\\Test.o" "/c" "cpp/Test.cc"
ExitStatus(ExitStatus(0))
TARGET = Some("i686-pc-windows-msvc")
running: "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64_x86\\lib.exe" "/OUT:C:\\Repos\\rust-bindgen\\bindgen-integration\\target\\debug\\build\\bindgen-integratio
n-89b7af89d851f38d\\out\\libtest.a" "/nologo" "C:\\Repos\\rust-bindgen\\bindgen-integration\\target\\debug\\build\\bindgen-integration-89b7af89d851f38d\\out\\cpp\\Test.o"
ExitStatus(ExitStatus(0))
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
TARGET = Some("i686-pc-windows-msvc")
TARGET = Some("i686-pc-windows-msvc")
HOST = Some("i686-pc-windows-msvc")
CXX_i686-pc-windows-msvc = None
CXX_i686_pc_windows_msvc = None
HOST_CXX = None
CXX = None
cargo:rustc-link-search=native=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib\
cargo:rustc-link-lib=static=test
cargo:rustc-link-search=native=C:\Repos\rust-bindgen\bindgen-integration\target\debug\build\bindgen-integration-89b7af89d851f38d\out
TARGET = Some("i686-pc-windows-msvc")
cpp/Test.h:1:9: warning: #pragma once in main file [-Wpragma-once-outside-header], err: false
--- stderr
thread 'main' panicked at 'unsupported calling convention: 4', C:\Repos\rust-bindgen\src\ir\function.rs:103
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Steps to reproduce
- Install clang 3.9.1 for Windows 32-bit
> git clone https://github.com/servo/rust-bindgen.git
> cd rust-bindgen\bindgen-integration
> rustup override set stable-i686-pc-windows-msvc
> cargo build