Skip to content

Commit aeaf1f2

Browse files
authored
[WSLC] add WSLC CMake file in NuGet (#14543)
Add WSLC SDK Config.cmake file. Enable developers to consume the library with CMake.
1 parent 0fffa89 commit aeaf1f2

1 file changed

Lines changed: 57 additions & 0 deletions

File tree

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
if(TARGET Microsoft.WSL.Containers::SDK)
2+
return()
3+
endif()
4+
5+
if(NOT WIN32)
6+
message(FATAL_ERROR "Microsoft.WSL.Containers: This package only supports Windows.")
7+
endif()
8+
9+
# Determine target architecture
10+
if(CMAKE_GENERATOR_PLATFORM)
11+
string(TOLOWER "${CMAKE_GENERATOR_PLATFORM}" _wslcsdk_platform)
12+
if(_wslcsdk_platform STREQUAL "x64")
13+
set(_wslcsdk_arch "x64")
14+
elseif(_wslcsdk_platform STREQUAL "arm64")
15+
set(_wslcsdk_arch "arm64")
16+
else()
17+
message(FATAL_ERROR
18+
"Microsoft.WSL.Containers: Unsupported platform '${CMAKE_GENERATOR_PLATFORM}'."
19+
" Supported: x64, ARM64.")
20+
endif()
21+
unset(_wslcsdk_platform)
22+
elseif(CMAKE_SYSTEM_PROCESSOR)
23+
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" _wslcsdk_platform)
24+
if(_wslcsdk_platform MATCHES "amd64|x86_64|x64")
25+
set(_wslcsdk_arch "x64")
26+
elseif(_wslcsdk_platform MATCHES "arm64|aarch64")
27+
set(_wslcsdk_arch "arm64")
28+
else()
29+
message(FATAL_ERROR
30+
"Microsoft.WSL.Containers: Unsupported architecture '${CMAKE_SYSTEM_PROCESSOR}'."
31+
" Supported: x64, ARM64.")
32+
endif()
33+
unset(_wslcsdk_platform)
34+
else()
35+
message(FATAL_ERROR
36+
"Microsoft.WSL.Containers: Could not determine target architecture."
37+
" Set CMAKE_GENERATOR_PLATFORM or CMAKE_SYSTEM_PROCESSOR.")
38+
endif()
39+
40+
# Compute paths relative to package root (<root>/cmake/ -> <root>/)
41+
get_filename_component(_wslcsdk_root "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE)
42+
set(_wslcsdk_include_dir "${_wslcsdk_root}/include")
43+
set(_wslcsdk_lib_dir "${_wslcsdk_root}/runtimes/win-${_wslcsdk_arch}")
44+
45+
# Create imported target
46+
add_library(Microsoft.WSL.Containers::SDK SHARED IMPORTED GLOBAL)
47+
set_target_properties(Microsoft.WSL.Containers::SDK PROPERTIES
48+
INTERFACE_INCLUDE_DIRECTORIES "${_wslcsdk_include_dir}"
49+
IMPORTED_IMPLIB "${_wslcsdk_lib_dir}/wslcsdk.lib"
50+
IMPORTED_LOCATION "${_wslcsdk_lib_dir}/wslcsdk.dll"
51+
)
52+
53+
# Clean up temporary variables
54+
unset(_wslcsdk_arch)
55+
unset(_wslcsdk_root)
56+
unset(_wslcsdk_include_dir)
57+
unset(_wslcsdk_lib_dir)

0 commit comments

Comments
 (0)