@@ -41,7 +41,58 @@ impl CrashTracker {
4141 config
4242 } ;
4343
44- let _dst = config. build ( ) ;
44+ let dst = config. build ( ) ;
45+
46+ // Copy the built binary to the target bin directory
47+ let binary_name = "libdatadog-crashtracking-receiver" ;
48+ let target_binary = PathBuf :: from ( self . target_dir . as_ref ( ) )
49+ . join ( "bin" )
50+ . join ( binary_name) ;
51+
52+ // The CMake install location depends on whether target_dir is absolute or relative
53+ let cmake_installed_binary = if PathBuf :: from ( self . target_dir . as_ref ( ) ) . is_absolute ( ) {
54+ // For absolute paths, CMake installs directly to target_dir/bin
55+ PathBuf :: from ( self . target_dir . as_ref ( ) )
56+ . join ( "bin" )
57+ . join ( binary_name)
58+ } else {
59+ // For relative paths, CMake installs to build/target_dir/bin
60+ dst. join ( "build" )
61+ . join ( self . target_dir . as_ref ( ) )
62+ . join ( "bin" )
63+ . join ( binary_name)
64+ } ;
65+
66+ // Check if source and target are the same path
67+ if cmake_installed_binary == target_binary {
68+ let metadata = fs:: metadata ( & cmake_installed_binary) ?;
69+ anyhow:: ensure!(
70+ metadata. len( ) > 0 ,
71+ "CMake built {} but it's empty" ,
72+ binary_name
73+ ) ;
74+ return Ok ( ( ) ) ;
75+ }
76+
77+ if cmake_installed_binary. exists ( ) {
78+ let metadata = fs:: metadata ( & cmake_installed_binary) ?;
79+ anyhow:: ensure!(
80+ metadata. len( ) > 0 ,
81+ "CMake built {} but it's empty" ,
82+ binary_name
83+ ) ;
84+
85+ fs:: copy ( & cmake_installed_binary, & target_binary) ?;
86+
87+ let target_metadata = fs:: metadata ( & target_binary) ?;
88+ anyhow:: ensure!( target_metadata. len( ) > 0 , "Copied {} is empty" , binary_name) ;
89+ } else {
90+ anyhow:: bail!(
91+ "CMake did not produce {} at {}" ,
92+ binary_name,
93+ cmake_installed_binary. display( )
94+ ) ;
95+ }
4596 }
4697
4798 Ok ( ( ) )
0 commit comments