| 1 | set(TargetApp wslsettings) |
| 2 | |
| 3 | enable_language(CSharp) |
| 4 | |
| 5 | # needed for csharp_set_xaml_cs_properties |
| 6 | include(CSharpUtilities) |
| 7 | |
| 8 | # place wsl settings binaries/assets into |
| 9 | # separate directory to simplify packaging |
| 10 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TargetApp}") |
| 11 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/${TargetApp}) |
| 12 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/${TargetApp}) |
| 13 | |
| 14 | file(MAKE_DIRECTORY ${BIN}/${TargetApp}/Assets) |
| 15 | |
| 16 | # Symlink the icon in the output directory to make local development easier |
| 17 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/wsl.ico ${BIN}/${TargetApp}/Assets/wsl.ico) |
| 18 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/wslbw.ico ${BIN}/${TargetApp}/Assets/wslbw.ico) |
| 19 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEDockerIcon.png ${BIN}/${TargetApp}/Assets/SettingsOOBEDockerIcon.png) |
| 20 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEFileExplorerIcon.png ${BIN}/${TargetApp}/Assets/SettingsOOBEFileExplorerIcon.png) |
| 21 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEVSCodeIcon.png ${BIN}/${TargetApp}/Assets/SettingsOOBEVSCodeIcon.png) |
| 22 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEVSIcon.png ${BIN}/${TargetApp}/Assets/SettingsOOBEVSIcon.png) |
| 23 | |
| 24 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBECrossOSFileAccess.gif ${BIN}/${TargetApp}/Assets/SettingsOOBECrossOSFileAccess.gif) |
| 25 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEDistroManagement.png ${BIN}/${TargetApp}/Assets/SettingsOOBEDistroManagement.png) |
| 26 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEDockerDesktopIntegration.png ${BIN}/${TargetApp}/Assets/SettingsOOBEDockerDesktopIntegration.png) |
| 27 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEGeneral.png ${BIN}/${TargetApp}/Assets/SettingsOOBEGeneral.png) |
| 28 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEGPUAcceleration.gif ${BIN}/${TargetApp}/Assets/SettingsOOBEGPUAcceleration.gif) |
| 29 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEGUIApps.png ${BIN}/${TargetApp}/Assets/SettingsOOBEGUIApps.png) |
| 30 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBENetworkingIntegration.png ${BIN}/${TargetApp}/Assets/SettingsOOBENetworkingIntegration.png) |
| 31 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEVSCodeIntegration.png ${BIN}/${TargetApp}/Assets/SettingsOOBEVSCodeIntegration.png) |
| 32 | file(CREATE_LINK ${CMAKE_SOURCE_DIR}/images/SettingsOOBEVSIntegration.png ${BIN}/${TargetApp}/Assets/SettingsOOBEVSIntegration.png) |
| 33 | |
| 34 | file(GLOB STRINGS ${CMAKE_SOURCE_DIR}/localization/strings/**/*.resw) |
| 35 | |
| 36 | add_executable( |
| 37 | ${TargetApp} WIN32 |
| 38 | app.manifest |
| 39 | App.xaml |
| 40 | App.xaml.cs |
| 41 | Constants.cs |
| 42 | LibWsl.cs |
| 43 | Usings.cs |
| 44 | Activation/ActivationHandler.cs |
| 45 | Activation/DefaultActivationHandler.cs |
| 46 | Activation/IActivationHandler.cs |
| 47 | Activation/ProtocolActivationHandler.cs |
| 48 | Behaviors/NavigationViewHeaderBehavior.cs |
| 49 | Behaviors/NavigationViewHeaderMode.cs |
| 50 | Contracts/Services/IActivationService.cs |
| 51 | Contracts/Services/INavigationService.cs |
| 52 | Contracts/Services/INavigationViewService.cs |
| 53 | Contracts/Services/IPageService.cs |
| 54 | Contracts/Services/IWindowService.cs |
| 55 | Contracts/Services/IWslConfigService.cs |
| 56 | Contracts/ViewModels/INavigationAware.cs |
| 57 | Controls/HyperlinkTextBlock.xaml |
| 58 | Controls/HyperlinkTextBlock.xaml.cs |
| 59 | Controls/OOBEContent.xaml |
| 60 | Controls/OOBEContent.xaml.cs |
| 61 | Converters/BooleanToVisibilityConverter.cs |
| 62 | Converters/MegabyteNumberConverter.cs |
| 63 | Converters/MegabyteStringConverter.cs |
| 64 | Converters/MillisecondsStringConverter.cs |
| 65 | Helpers/FrameExtensions.cs |
| 66 | Helpers/NavigationHelper.cs |
| 67 | Helpers/ResourceExtensions.cs |
| 68 | Helpers/RuntimeHelper.cs |
| 69 | Helpers/TitleBarHelper.cs |
| 70 | Properties/AssemblyInfo.cs |
| 71 | Services/ActivationService.cs |
| 72 | Services/NavigationService.cs |
| 73 | Services/NavigationViewService.cs |
| 74 | Services/PageService.cs |
| 75 | Services/WindowService.cs |
| 76 | Services/WslConfigService.cs |
| 77 | Styles/Button.xaml |
| 78 | Styles/FontSizes.xaml |
| 79 | Styles/CommonStyles.xaml |
| 80 | Styles/Thickness.xaml |
| 81 | ViewModels/OOBE/DistroManagementViewModel.cs |
| 82 | ViewModels/OOBE/DockerDesktopIntegrationViewModel.cs |
| 83 | ViewModels/OOBE/GeneralViewModel.cs |
| 84 | ViewModels/OOBE/GPUAccelerationViewModel.cs |
| 85 | ViewModels/OOBE/GUIAppsViewModel.cs |
| 86 | ViewModels/OOBE/NetworkingIntegrationViewModel.cs |
| 87 | ViewModels/OOBE/VSCodeIntegrationViewModel.cs |
| 88 | ViewModels/OOBE/VSIntegrationViewModel.cs |
| 89 | ViewModels/OOBE/WorkingAcrossFileSystemsViewModel.cs |
| 90 | ViewModels/Settings/AboutViewModel.cs |
| 91 | ViewModels/Settings/DeveloperViewModel.cs |
| 92 | ViewModels/Settings/FileSystemViewModel.cs |
| 93 | ViewModels/Settings/MemAndProcViewModel.cs |
| 94 | ViewModels/Settings/NetworkingViewModel.cs |
| 95 | ViewModels/Settings/OptionalFeaturesViewModel.cs |
| 96 | ViewModels/Settings/WslConfigSettingViewModel.cs |
| 97 | ViewModels/ShellViewModel.cs |
| 98 | Views/OOBE/DistroManagementPage.xaml |
| 99 | Views/OOBE/DistroManagementPage.xaml.cs |
| 100 | Views/OOBE/DockerDesktopIntegrationPage.xaml |
| 101 | Views/OOBE/DockerDesktopIntegrationPage.xaml.cs |
| 102 | Views/OOBE/GeneralPage.xaml |
| 103 | Views/OOBE/GeneralPage.xaml.cs |
| 104 | Views/OOBE/GPUAccelerationPage.xaml |
| 105 | Views/OOBE/GPUAccelerationPage.xaml.cs |
| 106 | Views/OOBE/GUIAppsPage.xaml |
| 107 | Views/OOBE/GUIAppsPage.xaml.cs |
| 108 | Views/OOBE/NetworkingIntegrationPage.xaml |
| 109 | Views/OOBE/NetworkingIntegrationPage.xaml.cs |
| 110 | Views/OOBE/ShellPage.xaml |
| 111 | Views/OOBE/ShellPage.xaml.cs |
| 112 | Views/OOBE/VSCodeIntegrationPage.xaml |
| 113 | Views/OOBE/VSCodeIntegrationPage.xaml.cs |
| 114 | Views/OOBE/VSIntegrationPage.xaml |
| 115 | Views/OOBE/VSIntegrationPage.xaml.cs |
| 116 | Views/OOBE/WorkingAcrossFileSystemsPage.xaml |
| 117 | Views/OOBE/WorkingAcrossFileSystemsPage.xaml.cs |
| 118 | Views/Settings/AboutPage.xaml |
| 119 | Views/Settings/AboutPage.xaml.cs |
| 120 | Views/Settings/DeveloperPage.xaml |
| 121 | Views/Settings/DeveloperPage.xaml.cs |
| 122 | Views/Settings/FileSystemPage.xaml |
| 123 | Views/Settings/FileSystemPage.xaml.cs |
| 124 | Views/Settings/MemAndProcPage.xaml |
| 125 | Views/Settings/MemAndProcPage.xaml.cs |
| 126 | Views/Settings/NetworkingPage.xaml |
| 127 | Views/Settings/NetworkingPage.xaml.cs |
| 128 | Views/Settings/OptionalFeaturesPage.xaml |
| 129 | Views/Settings/OptionalFeaturesPage.xaml.cs |
| 130 | Views/Settings/SettingsApplyHelper.cs |
| 131 | Views/Settings/ShellPage.xaml |
| 132 | Views/Settings/ShellPage.xaml.cs |
| 133 | Windows/OOBEWindow.xaml |
| 134 | Windows/OOBEWindow.xaml.cs |
| 135 | Windows/MainWindow.xaml |
| 136 | Windows/MainWindow.xaml.cs |
| 137 | ${STRINGS} |
| 138 | ) |
| 139 | |
| 140 | csharp_set_xaml_cs_properties( |
| 141 | Controls/HyperlinkTextBlock.xaml |
| 142 | Controls/HyperlinkTextBlock.xaml.cs |
| 143 | Styles/Button.xaml |
| 144 | Styles/FontSizes.xaml |
| 145 | Styles/CommonStyles.xaml |
| 146 | Styles/Thickness.xaml |
| 147 | Windows/OOBEWindow.xaml |
| 148 | Windows/OOBEWindow.xaml.cs |
| 149 | Windows/MainWindow.xaml |
| 150 | Windows/MainWindow.xaml.cs |
| 151 | Views/OOBE/DistroManagementPage.xaml |
| 152 | Views/OOBE/DistroManagementPage.xaml.cs |
| 153 | Views/OOBE/DockerDesktopIntegrationPage.xaml |
| 154 | Views/OOBE/DockerDesktopIntegrationPage.xaml.cs |
| 155 | Views/OOBE/GeneralPage.xaml |
| 156 | Views/OOBE/GeneralPage.xaml.cs |
| 157 | Views/OOBE/GPUAccelerationPage.xaml |
| 158 | Views/OOBE/GPUAccelerationPage.xaml.cs |
| 159 | Views/OOBE/GUIAppsPage.xaml |
| 160 | Views/OOBE/GUIAppsPage.xaml.cs |
| 161 | Views/OOBE/NetworkingIntegrationPage.xaml |
| 162 | Views/OOBE/NetworkingIntegrationPage.xaml.cs |
| 163 | Views/OOBE/ShellPage.xaml |
| 164 | Views/OOBE/ShellPage.xaml.cs |
| 165 | Views/OOBE/VSCodeIntegrationPage.xaml |
| 166 | Views/OOBE/VSCodeIntegrationPage.xaml.cs |
| 167 | Views/OOBE/VSIntegrationPage.xaml |
| 168 | Views/OOBE/VSIntegrationPage.xaml.cs |
| 169 | Views/OOBE/WorkingAcrossFileSystemsPage.xaml |
| 170 | Views/OOBE/WorkingAcrossFileSystemsPage.xaml.cs |
| 171 | Views/Settings/AboutPage.xaml |
| 172 | Views/Settings/AboutPage.xaml.cs |
| 173 | Views/Settings/DeveloperPage.xaml |
| 174 | Views/Settings/DeveloperPage.xaml.cs |
| 175 | Views/Settings/FileSystemPage.xaml |
| 176 | Views/Settings/FileSystemPage.xaml.cs |
| 177 | Views/Settings/MemAndProcPage.xaml |
| 178 | Views/Settings/MemAndProcPage.xaml.cs |
| 179 | Views/Settings/NetworkingPage.xaml |
| 180 | Views/Settings/NetworkingPage.xaml.cs |
| 181 | Views/Settings/OptionalFeaturesPage.xaml |
| 182 | Views/Settings/OptionalFeaturesPage.xaml.cs |
| 183 | Views/Settings/ShellPage.xaml |
| 184 | Views/Settings/ShellPage.xaml.cs |
| 185 | ) |
| 186 | |
| 187 | configure_csharp_target(${TargetApp}) |
| 188 | |
| 189 | set_property( |
| 190 | SOURCE App.xaml |
| 191 | PROPERTY VS_XAML_TYPE |
| 192 | "ApplicationDefinition" |
| 193 | ) |
| 194 | |
| 195 | target_compile_options( |
| 196 | ${TargetApp} |
| 197 | PRIVATE "/unsafe" |
| 198 | ) |
| 199 | |
| 200 | if (${OFFICIAL_BUILD}) |
| 201 | add_compile_definitions(WSL_OFFICIAL_BUILD TELEMETRYEVENTSOURCE_PUBLIC) |
| 202 | endif() |
| 203 | |
| 204 | # Package References and versions per WinUI Template Studio Sample app |
| 205 | set_property( |
| 206 | TARGET ${TargetApp} |
| 207 | PROPERTY VS_PACKAGE_REFERENCES |
| 208 | "CommunityToolkit.Mvvm_${CTK_MVVM_VERSION};\ |
| 209 | CommunityToolkit.WinUI.Animations_${CTK_ANIMATIONS_VERSION};\ |
| 210 | CommunityToolkit.WinUI.Controls.SettingsControls_${CTK_STTNGS_CTRLS_VERSION};\ |
| 211 | Microsoft.Extensions.Hosting_${EXTS_HOSTING_VERSION};\ |
| 212 | Microsoft.WindowsAppSDK_${WIN_APP_SDK_VERSION};\ |
| 213 | Microsoft.Xaml.Behaviors.WinUI.Managed_${XAML_BEHAVIORS_VERSION};\ |
| 214 | WinUIEx_${WINUIEX_VERSION}" |
| 215 | ) |
| 216 | |
| 217 | set_target_properties( |
| 218 | ${TargetApp} PROPERTIES |
| 219 | # ----- Dotnet, Windows App SDK and WinUI stuff starts here ----- |
| 220 | VS_GLOBAL_RootNamespace wslsettings |
| 221 | VS_GLOBAL_AppContainerApplication false |
| 222 | VS_GLOBAL_AppxPackage false |
| 223 | VS_GLOBAL_UseWinUI true |
| 224 | VS_GLOBAL_WindowsPackageType None |
| 225 | VS_GLOBAL_SelfContained true |
| 226 | VS_GLOBAL_WindowsAppSDKSelfContained true |
| 227 | VS_GLOBAL_ApplicationIcon "${CMAKE_SOURCE_DIR}/images/wsl.ico" |
| 228 | VS_GLOBAL_ApplicationManifest "${CMAKE_CURRENT_SOURCE_DIR}/app.manifest" |
| 229 | VS_GLOBAL_RuntimeIdentifier "win-${TARGET_PLATFORM}" |
| 230 | VS_GLOBAL_RuntimeIdentifiers "win-${TARGET_PLATFORM}" |
| 231 | VS_GLOBAL_Platform "${TARGET_PLATFORM}" |
| 232 | VS_GLOBAL_Platforms "${TARGET_PLATFORM}" |
| 233 | VS_GLOBAL_PlatformTarget "${TARGET_PLATFORM}" |
| 234 | VS_GLOBAL_ImplicitUsings enable |
| 235 | VS_GLOBAL_Nullable enable |
| 236 | VS_GLOBAL_GenerateAssemblyInfo false |
| 237 | ) |
| 238 | |
| 239 | configure_file( |
| 240 | "${CMAKE_CURRENT_LIST_DIR}/directory.build.targets.in" |
| 241 | "${CMAKE_CURRENT_LIST_DIR}/directory.build.targets" |
| 242 | ) |
| 243 | |
| 244 | configure_file( |
| 245 | "${CMAKE_CURRENT_LIST_DIR}/Properties/AssemblyInfo.cs.in" |
| 246 | "${CMAKE_CURRENT_LIST_DIR}/Properties/AssemblyInfo.cs" |
| 247 | ) |
| 248 | |
| 249 | add_dependencies(wslsettings libwsl) |
| 250 | set_target_properties(wslsettings PROPERTIES FOLDER windows) |