From 34411bf63e399d66e6541b5e17ed0781e23d572a Mon Sep 17 00:00:00 2001 From: Mihai Dinculescu Date: Sat, 22 Oct 2022 10:04:16 +0100 Subject: [PATCH] Fix the docs.rs build take 2 --- CHANGELOG.md | 4 +++ simconnect-sdk-derive/Cargo.toml | 3 ++- simconnect-sdk/Cargo.toml | 6 ++--- simconnect-sdk/build.rs | 17 +++++++++---- simconnect-sdk/ffi/include/SimConnect.h | 2 -- simconnect-sdk/ffi/include/Wrapper.h | 2 ++ simconnect-sdk/ffi/include/WrapperFake.h | 31 ++++++++++++++++++++++++ simconnect-sdk/src/lib.rs | 3 --- 8 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 simconnect-sdk/ffi/include/Wrapper.h create mode 100644 simconnect-sdk/ffi/include/WrapperFake.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 027a90f..9446a5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ file. This change log follows the conventions of ## [Unreleased] +### Fixed + +- Docs.rs build should now pass. Take #2. + ## [v0.1.1] - 2022-10-23 ### Fixed diff --git a/simconnect-sdk-derive/Cargo.toml b/simconnect-sdk-derive/Cargo.toml index 34e2180..0f14c90 100644 --- a/simconnect-sdk-derive/Cargo.toml +++ b/simconnect-sdk-derive/Cargo.toml @@ -30,4 +30,5 @@ simconnect-sdk = { path = "../simconnect-sdk" } trybuild = { version = "1.0", features = ["diff"] } [package.metadata.docs.rs] -targets = ["x86_64-pc-windows-msvc"] +default-target = "x86_64-pc-windows-msvc" +targets = [] diff --git a/simconnect-sdk/Cargo.toml b/simconnect-sdk/Cargo.toml index 4436dd1..a321c6e 100644 --- a/simconnect-sdk/Cargo.toml +++ b/simconnect-sdk/Cargo.toml @@ -25,6 +25,6 @@ thiserror = "1.0" simconnect-sdk-derive = { version = "=0.1.1", path = "../simconnect-sdk-derive", optional = true } [package.metadata.docs.rs] -all-features = true -rustdoc-args = ["--cfg", "docsrs"] -targets = ["x86_64-pc-windows-msvc"] +features = ["derive"] +default-target = "x86_64-pc-windows-msvc" +targets = [] diff --git a/simconnect-sdk/build.rs b/simconnect-sdk/build.rs index 1a57582..a424a96 100644 --- a/simconnect-sdk/build.rs +++ b/simconnect-sdk/build.rs @@ -2,16 +2,23 @@ use std::env; use std::path::PathBuf; fn main() { - println!("cargo:rerun-if-changed=simconnect-sdk/ffi/include/SimConnect.h"); - println!("cargo:rerun-if-changed=simconnect-sdk/ffi/lib/SimConnect.lib"); - println!("cargo:rerun-if-changed=simconnect-sdk/ffi/lib/SimConnect.dll"); + println!("cargo:rerun-if-changed=ffi/include/Wrapper.h"); + println!("cargo:rerun-if-changed=ffi/include/WrapperFake.h"); + println!("cargo:rerun-if-changed=ffi/include/SimConnect.h"); + println!("cargo:rerun-if-changed=ffi/lib/SimConnect.lib"); + println!("cargo:rerun-if-changed=ffi/lib/SimConnect.dll"); let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); println!("cargo:rustc-link-search={}", out_path.to_string_lossy()); println!("cargo:rustc-link-lib=static=SimConnect"); - let bindings = bindgen::Builder::default() - .header("ffi/include/SimConnect.h") + let builder = if let Ok(_) = env::var("DOCS_RS") { + bindgen::Builder::default().header("ffi/include/WrapperFake.h") + } else { + bindgen::Builder::default().header("ffi/include/Wrapper.h") + }; + + let bindings = builder .parse_callbacks(Box::new(bindgen::CargoCallbacks)) .clang_args(&["-x", "c++"]) .allowlist_function("SimConnect_Open") diff --git a/simconnect-sdk/ffi/include/SimConnect.h b/simconnect-sdk/ffi/include/SimConnect.h index 68056db..2a73f38 100644 --- a/simconnect-sdk/ffi/include/SimConnect.h +++ b/simconnect-sdk/ffi/include/SimConnect.h @@ -4,8 +4,6 @@ // //----------------------------------------------------------------------------- -#include "Windows.h" - #ifndef _SIMCONNECT_H_ #define _SIMCONNECT_H_ diff --git a/simconnect-sdk/ffi/include/Wrapper.h b/simconnect-sdk/ffi/include/Wrapper.h new file mode 100644 index 0000000..ec78172 --- /dev/null +++ b/simconnect-sdk/ffi/include/Wrapper.h @@ -0,0 +1,2 @@ +#include +#include "SimConnect.h" diff --git a/simconnect-sdk/ffi/include/WrapperFake.h b/simconnect-sdk/ffi/include/WrapperFake.h new file mode 100644 index 0000000..13be2e3 --- /dev/null +++ b/simconnect-sdk/ffi/include/WrapperFake.h @@ -0,0 +1,31 @@ +// fake defs in lieu of Windows.h that is used for the docs.rs build +#define MAX_PATH 260 +#define FALSE 0 +#define CONST const +#define CALLBACK __stdcall +#define DECLARE_HANDLE(name) \ + struct name##__ \ + { \ + int unused; \ + }; \ + typedef struct name##__ *name + +typedef unsigned long DWORD; +typedef unsigned char BYTE; +typedef int BOOL; +typedef long LONG; +typedef LONG HRESULT; +typedef void *HANDLE; +typedef char CHAR; +typedef CONST CHAR *LPCSTR; +typedef struct _GUID +{ + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID; + +DECLARE_HANDLE(HWND); + +#include "SimConnect.h" diff --git a/simconnect-sdk/src/lib.rs b/simconnect-sdk/src/lib.rs index e2c8da9..ef7a108 100644 --- a/simconnect-sdk/src/lib.rs +++ b/simconnect-sdk/src/lib.rs @@ -2,7 +2,6 @@ //! SimConnect SDK in Rust. //! //! ## Usage - //! ```toml //! [dependencies] //! simconnect-sdk = { version = "0.1", features = ["derive"] } @@ -97,8 +96,6 @@ pub use simconnect::SimConnect; pub use simconnect_object_ext::SimConnectObjectExt; #[cfg(feature = "simconnect-sdk-derive")] -#[cfg_attr(docsrs, doc(cfg(feature = "simconnect-sdk-derive")))] extern crate simconnect_sdk_derive; #[cfg(feature = "simconnect-sdk-derive")] -#[cfg_attr(docsrs, doc(cfg(feature = "simconnect-sdk-derive")))] pub use simconnect_sdk_derive::*;