From ebc5b84a2c6a197f04111b09a958ab59bf4947e5 Mon Sep 17 00:00:00 2001 From: "w.pomp" Date: Fri, 7 Aug 2026 13:28:01 +0200 Subject: [PATCH] - do not edit source files in build.rs --- build.rs | 43 ++----------------------------------------- 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/build.rs b/build.rs index 386d77b..c51c52e 100644 --- a/build.rs +++ b/build.rs @@ -74,46 +74,6 @@ impl Error { } } -fn restore_importexport(libcziapi_inc: &Path) -> Result<(), Box> { - let header = libcziapi_inc.join("importexport.h"); - let relative = header.strip_prefix("libczi").unwrap_or(&header); - let status = std::process::Command::new("git") - .args(["checkout", "HEAD", "--", relative.to_str().unwrap()]) - .current_dir("libczi") - .status()?; - if !status.success() { - return Err(Error::msg("failed to restore importexport.h")); - } - Ok(()) -} - -struct ImportExportGuard<'a> { - libcziapi_inc: &'a Path, -} - -impl<'a> Drop for ImportExportGuard<'a> { - fn drop(&mut self) { - if let Err(e) = restore_importexport(self.libcziapi_inc) { - eprintln!("warning: failed to restore importexport.h: {e}"); - } - } -} - -fn patch_importexport( - libcziapi_inc: &Path, -) -> Result, Box> { - let path = libcziapi_inc.join("importexport.h"); - let original = std::fs::read_to_string(&path)?; - let patched = original.replace( - "#define EXTERNALLIBCZIAPI_API(_returntype_) _returntype_", - "#define EXTERNALLIBCZIAPI_API(_returntype_) extern \"C\" _returntype_", - ); - if patched != original { - std::fs::write(&path, &patched)?; - } - Ok(ImportExportGuard { libcziapi_inc }) -} - fn fix_xwin_lib_case() -> Result<(), Box> { let toolchain_key = format!( "CMAKE_TOOLCHAIN_FILE_{}", @@ -174,6 +134,7 @@ fn main() -> Result<(), Box> { let mut cmake_config = cmake::Config::new(&libczi_dir); cmake_config .cxxflag("-fms-extensions") + .cxxflag("-DLIBCZIAPI_EXPORTS_SHARED") .define("ADDITIONAL_LIBS_REQUIRED_FOR_ATOMIC", "") .define("LIBCZI_BUILD_UNITTESTS", "OFF") .define("LIBCZI_BUILD_CZICMD", "OFF") @@ -226,13 +187,13 @@ fn main() -> Result<(), Box> { cmake_config.build_target("libCZIAPIStatic"); } - let _importexport_guard = patch_importexport(&libcziapi_inc)?; let dst = cmake_config.build(); let bindings = bindgen::Builder::default() .merge_extern_blocks(true) .clang_args([ "-fms-extensions", + "-DLIBCZIAPI_EXPORTS_SHARED", "-x", "c++", "-std=c++14",