diff --git a/builder/src/arch/windows.rs b/builder/src/arch/windows.rs index 1d9313817f..b21030f80c 100644 --- a/builder/src/arch/windows.rs +++ b/builder/src/arch/windows.rs @@ -6,12 +6,13 @@ use std::fs; use std::path::PathBuf; pub const NATIVE_LIBS: &str = ""; -pub const PROF_DYNAMIC_LIB: &str = "datadog_profiling.dll"; -pub const PROF_STATIC_LIB: &str = "datadog_profiling.lib"; -pub const PROF_PDB: &str = "datadog_profiling.pdb"; +pub const PROF_DYNAMIC_LIB: &str = "datadog_profiling_ffi.dll"; +pub const PROF_STATIC_LIB: &str = "datadog_profiling_ffi.lib"; +pub const PROF_PDB: &str = "datadog_profiling_ffi.pdb"; pub const PROF_DYNAMIC_LIB_FFI: &str = "datadog_profiling_ffi.dll"; pub const PROF_STATIC_LIB_FFI: &str = "datadog_profiling_ffi.lib"; pub const PROF_PDB_FFI: &str = "datadog_profiling_ffi.pdb"; +pub const PROF_DLL_IMPORT_LIB_FFI: &str = "datadog_profiling_ffi.dll.lib"; pub const BUILD_CRASHTRACKER: bool = false; pub const RUSTFLAGS: [&str; 4] = [ "-C", @@ -25,6 +26,9 @@ pub fn strip_libraries(_lib_path: &str) {} pub fn add_additional_files(lib_path: &str, target_path: &OsStr) { let from_pdb: PathBuf = [lib_path, PROF_PDB_FFI].iter().collect(); let to_pdb: PathBuf = [target_path, OsStr::new(PROF_PDB)].iter().collect(); - fs::copy(from_pdb, to_pdb).expect("unable to copy pdb file"); + + let from_imp: PathBuf = [lib_path, PROF_DLL_IMPORT_LIB_FFI].iter().collect(); + let to_imp: PathBuf = [target_path, OsStr::new(PROF_DLL_IMPORT_LIB_FFI)].iter().collect(); + fs::copy(from_imp, to_imp).expect("unable to copy dll import lib"); } diff --git a/builder/src/builder.rs b/builder/src/builder.rs index 88169e71dc..bce396f102 100644 --- a/builder/src/builder.rs +++ b/builder/src/builder.rs @@ -116,11 +116,14 @@ impl Builder { fs::create_dir_all(Path::new(self.target_include.as_ref())) .expect("Failed to create include directory"); fs::create_dir_all(Path::new(self.target_lib.as_ref())) - .expect("Failed to create include directory"); - fs::create_dir_all(Path::new(self.target_bin.as_ref())) - .expect("Failed to create include directory"); - fs::create_dir_all(Path::new(self.target_pkconfig.as_ref())) - .expect("Failed to create include directory"); + .expect("Failed to create lib directory"); + #[cfg(not(target_os = "windows"))] + { + fs::create_dir_all(Path::new(self.target_bin.as_ref())) + .expect("Failed to create bin directory"); + fs::create_dir_all(Path::new(self.target_pkconfig.as_ref())) + .expect("Failed to create pkgconfig directory"); + } } pub fn add_cmake(&self) { diff --git a/builder/src/profiling.rs b/builder/src/profiling.rs index f3579be4d2..3e106b8187 100644 --- a/builder/src/profiling.rs +++ b/builder/src/profiling.rs @@ -118,6 +118,9 @@ impl Profiling { } fn add_pkg_config(&self) -> Result<()> { + #[cfg(target_os = "windows")] + return Ok(()); + let files: [&str; 3] = [ "datadog_profiling.pc", "datadog_profiling_with_rpath.pc", diff --git a/windows/build-artifacts.ps1 b/windows/build-artifacts.ps1 deleted file mode 100644 index 90a64dbef6..0000000000 --- a/windows/build-artifacts.ps1 +++ /dev/null @@ -1,89 +0,0 @@ -function Invoke-Call { - param ( - [scriptblock]$ScriptBlock - ) - & @ScriptBlock - if ($lastexitcode -ne 0) { - exit $lastexitcode - } -} - -function Add-DllImportToGlobals { - param ( - [string]$HeaderPath - ) - $content = [System.IO.File]::ReadAllText($HeaderPath) - $pattern = '(?m)^(\s*)extern\s+(?!\"C\")(?!.*LIBDD_DLLIMPORT)(?!.*\()(.+;)$' - $updated = [System.Text.RegularExpressions.Regex]::Replace( - $content, - $pattern, - '$1extern LIBDD_DLLIMPORT $2' - ) - if ($updated -ne $content) { - $utf8NoBom = New-Object System.Text.UTF8Encoding($false) - [System.IO.File]::WriteAllText($HeaderPath, $updated, $utf8NoBom) - } -} - -$output_dir = $args[0] - -if ([string]::IsNullOrEmpty($output_dir)) { - throw "You must specify an output directory. Ex: $($myInvocation.InvocationName) my_rust_project/ bin" -} - -if (![System.IO.Path]::IsPathRooted($output_dir)) { - $output_dir = [System.IO.Path]::Combine($(Get-Location), $output_dir) -} - -Write-Host "Building project into $($output_dir)" -ForegroundColor Magenta - -# build inside the crate to use the config.toml file -$features = @( - "data-pipeline-ffi", - "crashtracker-collector", - "crashtracker-receiver", - "ddtelemetry-ffi", - "demangler", - "datadog-library-config-ffi", - "datadog-ffe-ffi", - "datadog-log-ffi" -) -join "," - -Write-Host "Building for features: $features" -ForegroundColor Magenta - -pushd libdd-profiling-ffi -#i686 Release -Invoke-Call -ScriptBlock { cargo rustc --features $features --target i686-pc-windows-msvc --release --target-dir $output_dir --crate-type cdylib } -Invoke-Call -ScriptBlock { cargo rustc --features $features --target i686-pc-windows-msvc --release --target-dir $output_dir --crate-type staticlib } -#i686 Debug -Invoke-Call -ScriptBlock { cargo rustc --features $features --target i686-pc-windows-msvc --target-dir $output_dir --crate-type cdylib } -Invoke-Call -ScriptBlock { cargo rustc --features $features --target i686-pc-windows-msvc --target-dir $output_dir --crate-type staticlib } -#x86_64 Release -Invoke-Call -ScriptBlock { cargo rustc --features $features --target x86_64-pc-windows-msvc --release --target-dir $output_dir --crate-type cdylib} -Invoke-Call -ScriptBlock { cargo rustc --features $features --target x86_64-pc-windows-msvc --release --target-dir $output_dir --crate-type staticlib} -#x86_64 Debug -Invoke-Call -ScriptBlock { cargo rustc --features $features --target x86_64-pc-windows-msvc --target-dir $output_dir --crate-type cdylib} -Invoke-Call -ScriptBlock { cargo rustc --features $features --target x86_64-pc-windows-msvc --target-dir $output_dir --crate-type staticlib} -popd - -Write-Host "Building tools" -ForegroundColor Magenta -Set-Location tools -Invoke-Call -ScriptBlock { cargo build --release } -Set-Location .. - -Write-Host "Generating headers" -ForegroundColor Magenta -Invoke-Call -ScriptBlock { cbindgen --crate libdd-common-ffi --config libdd-common-ffi/cbindgen.toml --output $output_dir\common.h } -Invoke-Call -ScriptBlock { cbindgen --crate libdd-profiling-ffi --config libdd-profiling-ffi/cbindgen.toml --output $output_dir\profiling.h } -Invoke-Call -ScriptBlock { cbindgen --crate libdd-telemetry-ffi --config libdd-telemetry-ffi/cbindgen.toml --output $output_dir\telemetry.h } -Invoke-Call -ScriptBlock { cbindgen --crate libdd-data-pipeline-ffi --config libdd-data-pipeline-ffi/cbindgen.toml --output $output_dir"\data-pipeline.h" } -Invoke-Call -ScriptBlock { cbindgen --crate libdd-crashtracker-ffi --config libdd-crashtracker-ffi/cbindgen.toml --output $output_dir"\crashtracker.h" } -Invoke-Call -ScriptBlock { cbindgen --crate libdd-library-config-ffi --config libdd-library-config-ffi/cbindgen.toml --output $output_dir"\library-config.h" } -Add-DllImportToGlobals $output_dir"\common.h" -Add-DllImportToGlobals $output_dir"\profiling.h" -Add-DllImportToGlobals $output_dir"\telemetry.h" -Add-DllImportToGlobals $output_dir"\data-pipeline.h" -Add-DllImportToGlobals $output_dir"\crashtracker.h" -Add-DllImportToGlobals $output_dir"\library-config.h" -Invoke-Call -ScriptBlock { .\target\release\dedup_headers $output_dir"\common.h" $output_dir"\profiling.h" $output_dir"\telemetry.h" $output_dir"\data-pipeline.h" $output_dir"\crashtracker.h" $output_dir"\library-config.h"} - -Write-Host "Build finished" -ForegroundColor Magenta