diff --git a/changelog.md b/changelog.md index ce4c9d207ef..5556fcad5c0 100644 --- a/changelog.md +++ b/changelog.md @@ -5,6 +5,9 @@ when upgrading from a version of rust-sdl2 to another. * Add patch to fix metal detection (https://bugzilla.libsdl.org/show_bug.cgi?id=4988) * Changed signature of TimerSubsystem::ticks to accept `&self`. + +[PR #1081](https://github.com/Rust-SDL2/rust-sdl2/pull/1081): Allow bundled build to be built in debug mode. Fixes issue when linking binary with mixed debug+release CRT dependencies. + [PR #1080](https://github.com/Rust-SDL2/rust-sdl2/pull/1080): Fix line endings of patches to lf so patching of sources works on Windows. ### v0.34.4 diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 3dba6cbd7f0..4cfda7a6834 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -304,7 +304,6 @@ fn patch_sdl2(sdl2_source_path: &Path) { #[cfg(feature = "bundled")] fn compile_sdl2(sdl2_build_path: &Path, target_os: &str) -> PathBuf { let mut cfg = cmake::Config::new(sdl2_build_path); - cfg.profile("release"); #[cfg(target_os = "linux")] { @@ -416,11 +415,24 @@ fn link_sdl2(target_os: &str) { #[cfg(feature = "static-link")] { + // There's no way to extract this from `cmake::Config` so we have to emulate their + // behaviour here (see the source for `cmake::Config::build`). + let debug_postfix = match ( + &env::var("OPT_LEVEL").unwrap_or_default()[..], + &env::var("PROFILE").unwrap_or_default()[..], + ) { + ("1", _) | ("2", _) | ("3", _) | ("s", _) | ("z", _) => "", + ("0", _) => "d", + (_, "debug") => "d", + // ("0", _) => "", + // (_, "debug") => "", + (_, _) => "", + }; if cfg!(feature = "bundled") || (cfg!(feature = "use-pkgconfig") == false && cfg!(feature = "use-vcpkg") == false) { - println!("cargo:rustc-link-lib=static=SDL2main"); - println!("cargo:rustc-link-lib=static=SDL2"); + println!("cargo:rustc-link-lib=static=SDL2main{}", debug_postfix); + println!("cargo:rustc-link-lib=static=SDL2{}", debug_postfix); } // Also linked to any required libraries for each supported platform