use std::env; use anyhow::Result; fn main() -> Result<()> { println!("cargo:rerun-if-changed=build.rs"); let target = env::var("TARGET").expect("no TARGET found"); match target.as_str() { "x86_64-pc-windows-msvc" => build_x64_windows_msvc(), _ => panic!("unsupported target: {}", target), } } fn build_x64_windows_msvc() -> Result<()> { let wx = vcpkg::find_package("wxwidgets").unwrap(); cxx_build::bridge("src/lib.rs") .file("src/wx-sys.cpp") .includes(wx.include_paths) .flag_if_supported("-Wno-invalid-token-paste") .define("__WXMSW__", None) .define("wxMSVC_VERSION_AUTO", None) .define("wxMSVC_VERSION_ABI_COMPAT", None) .define("_UNICODE", None) .define("WXUSINGDLL", None) .flag_if_supported("-std=c++14") .flag_if_supported("/std:c++14") .compile("shit-wx-sys"); println!("cargo:rerun-if-changed=src/lib.rs"); println!("cargo:rerun-if-changed=src/wx-sys.h"); println!("cargo:rerun-if-changed=src/wx-sys.cpp"); let win32_libs = [ "kernel32", "user32", "gdi32", "comdlg32", "winspool", "shell32", "shlwapi", "ole32", "oleaut32", "uuid", "advapi32", "version", "comctl32", "rpcrt4", "wsock32", "wininet", "winmm", ]; for lib in win32_libs { // TODO dylib or static println!("cargo:rustc-link-lib={}", lib); } Ok(()) }