Skip to content

Commit a4a3276

Browse files
authored
Allow dynamic linking on Windows (#746)
* Allow dynamic linking on Windows * Adjust test for dyn linking * Fix test * Make it better
1 parent ce9ae28 commit a4a3276

File tree

3 files changed

+43
-5
lines changed

3 files changed

+43
-5
lines changed

tests/windows_package/windows_package.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<ProjectGuid>{d4ac517d-369b-40ef-889a-13ce58966a55}</ProjectGuid>
2929
<RootNamespace>windowspackage</RootNamespace>
3030
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
31+
<LibDatadogDynamicLink>true</LibDatadogDynamicLink>
3132
</PropertyGroup>
3233
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
3334
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

windows/libdatadog.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,35 @@
3939
PackagePath="include\native\datadog\data-pipeline.h" />
4040

4141
<None Include="$(LibDatadogBinariesOutputDir)\x86_64-pc-windows-msvc\debug\datadog_profiling_ffi.lib"
42+
Pack="true" PackagePath="build\native\lib\x64\debug\static\datadog_profiling_ffi.lib" />
43+
<None Include="$(LibDatadogBinariesOutputDir)\x86_64-pc-windows-msvc\debug\datadog_profiling_ffi.dll.lib"
4244
Pack="true" PackagePath="build\native\lib\x64\debug\datadog_profiling_ffi.lib" />
4345
<None Include="$(LibDatadogBinariesOutputDir)\x86_64-pc-windows-msvc\debug\datadog_profiling_ffi.dll"
4446
Pack="true" PackagePath="build\native\lib\x64\debug\datadog_profiling_ffi.dll" />
4547
<None Include="$(LibDatadogBinariesOutputDir)\x86_64-pc-windows-msvc\debug\datadog_profiling_ffi.pdb"
4648
Pack="true" PackagePath="build\native\lib\x64\debug\datadog_profiling_ffi.pdb" />
4749

4850
<None Include="$(LibDatadogBinariesOutputDir)\x86_64-pc-windows-msvc\release\datadog_profiling_ffi.lib"
51+
Pack="true" PackagePath="build\native\lib\x64\release\static\datadog_profiling_ffi.lib" />
52+
<None Include="$(LibDatadogBinariesOutputDir)\x86_64-pc-windows-msvc\release\datadog_profiling_ffi.dll.lib"
4953
Pack="true" PackagePath="build\native\lib\x64\release\datadog_profiling_ffi.lib" />
5054
<None Include="$(LibDatadogBinariesOutputDir)\x86_64-pc-windows-msvc\release\datadog_profiling_ffi.dll"
5155
Pack="true" PackagePath="build\native\lib\x64\release\datadog_profiling_ffi.dll" />
5256
<None Include="$(LibDatadogBinariesOutputDir)\x86_64-pc-windows-msvc\release\datadog_profiling_ffi.pdb"
5357
Pack="true" PackagePath="build\native\lib\x64\release\datadog_profiling_ffi.pdb" />
5458

5559
<None Include="$(LibDatadogBinariesOutputDir)\i686-pc-windows-msvc\debug\datadog_profiling_ffi.lib"
60+
Pack="true" PackagePath="build\native\lib\x86\debug\static\datadog_profiling_ffi.lib" />
61+
<None Include="$(LibDatadogBinariesOutputDir)\i686-pc-windows-msvc\debug\datadog_profiling_ffi.dll.lib"
5662
Pack="true" PackagePath="build\native\lib\x86\debug\datadog_profiling_ffi.lib" />
5763
<None Include="$(LibDatadogBinariesOutputDir)\i686-pc-windows-msvc\debug\datadog_profiling_ffi.dll"
5864
Pack="true" PackagePath="build\native\lib\x86\debug\datadog_profiling_ffi.dll" />
5965
<None Include="$(LibDatadogBinariesOutputDir)\i686-pc-windows-msvc\debug\datadog_profiling_ffi.pdb"
6066
Pack="true" PackagePath="build\native\lib\x86\debug\datadog_profiling_ffi.pdb" />
6167

6268
<None Include="$(LibDatadogBinariesOutputDir)\i686-pc-windows-msvc\release\datadog_profiling_ffi.lib"
69+
Pack="true" PackagePath="build\native\lib\x86\release\static\datadog_profiling_ffi.lib" />
70+
<None Include="$(LibDatadogBinariesOutputDir)\i686-pc-windows-msvc\release\datadog_profiling_ffi.dll.lib"
6371
Pack="true" PackagePath="build\native\lib\x86\release\datadog_profiling_ffi.lib" />
6472
<None Include="$(LibDatadogBinariesOutputDir)\i686-pc-windows-msvc\release\datadog_profiling_ffi.dll"
6573
Pack="true" PackagePath="build\native\lib\x86\release\datadog_profiling_ffi.dll" />

windows/libdatadog.props

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,48 @@
66
<LIBDATADOG-PLATFORM Condition="'$(Platform)'=='Win32' OR '$(Platform)'=='x86'">x86</LIBDATADOG-PLATFORM>
77
</PropertyGroup>
88
<ItemGroup>
9-
<LibdatadogLibs Include="$(MSBuildThisFileDirectory)..\..\build\native\lib\$(LIBDATADOG-PLATFORM)\$(Configuration)\*.lib" />
9+
<LibDatadogStaticLibs Include="$(MSBuildThisFileDirectory)..\..\build\native\lib\$(LIBDATADOG-PLATFORM)\$(Configuration)\static\*.lib" />
10+
<LibDatadogDynLibs Include="$(MSBuildThisFileDirectory)..\..\build\native\lib\$(LIBDATADOG-PLATFORM)\$(Configuration)\*.lib" />
11+
<LibDatadogDlls Include="$(MSBuildThisFileDirectory)..\..\build\native\lib\$(LIBDATADOG-PLATFORM)\$(Configuration)\*.dll" />
12+
<LibDatadogPdbs Include="$(MSBuildThisFileDirectory)..\..\build\native\lib\$(LIBDATADOG-PLATFORM)\$(Configuration)\*.pdb" />
1013
</ItemGroup>
1114
<PropertyGroup>
1215
<!-- Expland the items to a property -->
13-
<LibdatadogLibraries>@(LibdatadogLibs)</LibdatadogLibraries>
14-
<LibdatadogDependencies>PowrProf.lib;NtDll.lib;UserEnv.lib;Bcrypt.lib;crypt32.lib;wsock32.lib;ws2_32.lib;shlwapi.lib;Secur32.lib;Ncrypt.lib</LibdatadogDependencies>
16+
<LibDatadogStaticLibraries>@(LibDatadogStaticLibs)</LibDatadogStaticLibraries>
17+
<LibDatadogDynLibraries>@(LibDatadogDynLibs)</LibDatadogDynLibraries>
18+
<LibDatadogDependencies>PowrProf.lib;NtDll.lib;UserEnv.lib;Bcrypt.lib;crypt32.lib;wsock32.lib;ws2_32.lib;shlwapi.lib;Secur32.lib;Ncrypt.lib</LibDatadogDependencies>
1519
</PropertyGroup>
1620
<ItemDefinitionGroup>
1721
<ClCompile>
1822
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)..\..\include\native;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
1923
</ClCompile>
2024
<Link>
21-
<AdditionalDependencies>$(LibdatadogLibraries);$(LibdatadogDependencies);%(AdditionalDependencies)</AdditionalDependencies>
25+
<AdditionalDependencies Condition="'$(LibDatadogDynamicLink)' == 'true' OR '$(LibDatadogDynamicLink)' == ''">$(LibDatadogDynLibraries);$(LibDatadogDependencies);%(AdditionalDependencies)</AdditionalDependencies>
26+
<AdditionalDependencies Condition="'$(LibDatadogDynamicLink)' == 'false'">$(LibDatadogStaticLibraries);$(LibDatadogDependencies);%(AdditionalDependencies)</AdditionalDependencies>
2227
</Link>
2328
</ItemDefinitionGroup>
24-
</Project>
29+
<ItemGroup>
30+
<LibDatadogFiles Include="@(LibDatadogDlls)" />
31+
<LibDatadogFiles Include="@(LibDatadogPdbs)" />
32+
</ItemGroup>
33+
<Target Name="CopyLibDatadogDlls" AfterTargets="Build" Condition="'$(LibDatadogDynamicLink)' == 'true' OR '$(LibDatadogDynamicLink)' == ''">
34+
<Copy
35+
SourceFiles="@(LibDatadogFiles)"
36+
DestinationFolder="$(OutDir)"
37+
SkipUnchangedFiles="true" />
38+
</Target>
39+
<Target Name="RemoveLibDatadogDlls" AfterTargets="Clean">
40+
<ItemGroup>
41+
<FilesToDelete Include="@(LibDatadogFiles->'$(OutDir)%(Filename)%(Extension)')" />
42+
</ItemGroup>
43+
<Delete Files="@(FilesToDelete)"
44+
TreatErrorsAsWarnings="true"
45+
ContinueOnError="true">
46+
<Output TaskParameter="DeletedFiles" ItemName="RemoveLibDatadogDlls" />
47+
</Delete>
48+
49+
<Message Text="Deleted files: @(FilesToDelete)"
50+
Importance="high"
51+
Condition="'@(FilesToDelete)' != ''" />
52+
</Target>
53+
</Project>

0 commit comments

Comments
 (0)