diff options
author | dotnet-bot <dotnet-bot@microsoft.com> | 2015-01-30 14:14:42 -0800 |
---|---|---|
committer | dotnet-bot <dotnet-bot@microsoft.com> | 2015-01-30 14:14:42 -0800 |
commit | ef1e2ab328087c61a6878c1e84f4fc5d710aebce (patch) | |
tree | dee1bbb89e9d722e16b0d1485e3cdd1b6c8e2cfa /clr.props | |
download | coreclr-ef1e2ab328087c61a6878c1e84f4fc5d710aebce.tar.gz coreclr-ef1e2ab328087c61a6878c1e84f4fc5d710aebce.tar.bz2 coreclr-ef1e2ab328087c61a6878c1e84f4fc5d710aebce.zip |
Initial commit to populate CoreCLR repo
[tfs-changeset: 1407945]
Diffstat (limited to 'clr.props')
-rw-r--r-- | clr.props | 339 |
1 files changed, 339 insertions, 0 deletions
diff --git a/clr.props b/clr.props new file mode 100644 index 0000000000..ff317d2d9d --- /dev/null +++ b/clr.props @@ -0,0 +1,339 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <!--*****************************************************--> + <!--This MSBuild project file was automatically generated--> + <!--from the original SOURCES/DIRS file by the KBC tool.--> + <!--*****************************************************--> + <!--Import the settings--> + <Import Project="$(_NTDRIVE)$(_NTROOT)\InternalAPIs\NDP_Common\inc\Microsoft.Ndp.Settings.targets" /> + + <!--Leaf project Properties--> + <PropertyGroup> + <Clrbase>$(_NTDRIVE)$(_NTROOT)\ndp\clr</Clrbase> + <ClrSrcDirectory>$(Clrbase)\src\</ClrSrcDirectory> + + <ClrLibDest Condition="('$(BuildProjectName)' == '')">$(IntraPartitionAPIsPath)\$(LibSubPath)</ClrLibDest> + <ClrLibDest Condition="('$(BuildProjectName)' == 'CoreCLR' or '$(BuildProjectName)' == 'CoreSys')">$(IntraPartitionAPIsPath)\CORElib\$(InterApiType)\$(RealBuildArchitecture)</ClrLibDest> + <ClrLibPath>$(ClrLibDest)</ClrLibPath> + + <!-- Use IntermediateOutputDirectory as our Output, and also set BinplaceRoot to the BinariesDirectory. + This prevents us publishing a bunch of files we don't really need into the BinariesDirectory, + such as extra PDBs, .mt files, etc. See clr.targets for the managed story which works differently. + --> + <BinariesDirectory Condition="'$(BinariesSubDirectory)' != ''">$(BinariesDirectory)\$(BinariesSubDirectory)</BinariesDirectory> + <OutputPath>$(IntermediateOutputDirectory)\</OutputPath> + <BinplaceRoot>$(BinariesDirectory)</BinplaceRoot> + <BinplaceSymbols>true</BinplaceSymbols> + <OutputLibPath>$(ClrLibPath)</OutputLibPath> + <UsePdbToCompile>true</UsePdbToCompile> + <UseIncrementalCompiling>true</UseIncrementalCompiling> + <RootOutputPath>$(BinariesDirectory)</RootOutputPath> + + <!-- Tags to detect illegal usage --> + <ObjectDirectory>**##ILLEGAL_ ObjectDirectory##**</ObjectDirectory> + <ObjectDirectoryPhase0>**##ILLEGAL_ ObjectDirectory0##**</ObjectDirectoryPhase0> + <ObjectDirectoryPhase1>**##ILLEGAL_ ObjectDirectory1##**</ObjectDirectoryPhase1> + <ObjectDirectoryPhase2>**##ILLEGAL_ ObjectDirectory2##**</ObjectDirectoryPhase2> + + + <!-- Enable this when we're ready to handle P2P --> + <BuildProjectReferences>true</BuildProjectReferences> + + <!-- Use the CLR warning suppression instead of the devdiv one--> + <ClEnforceStandardScoping>true</ClEnforceStandardScoping> + <ForcedIncludeFiles>WarningControl.h</ForcedIncludeFiles> + + <ClForcedIncludeFiles>$(ForcedIncludeFiles)</ClForcedIncludeFiles> + <Fullcxxeh>Async</Fullcxxeh> + <Synccxxeh>Sync</Synccxxeh> + <Sehonly>Disabled</Sehonly> + <ClNativeExceptionHandling>$(Fullcxxeh)</ClNativeExceptionHandling> + <ClExternCNeverThrowsException>false</ClExternCNeverThrowsException> + + <!-- Use iso volatile semantics for better performance --> + <ClIsoVolatile>true</ClIsoVolatile> + + <!-- Originally, src\tools\I386mk.inc turned FPO off by default because it makes ETW stack crawling bad. --> + <Fpo>0</Fpo> + + <!-- Ensure that we're not setting /DNT_UP=1 which disables multiprocessor builds --> + <NtUp Condition="'$(NtUp)' == ''">0</NtUp> + + <ClrBuildError>*** CLR Build Error:</ClrBuildError> + <ClrBuildTrace>*** CLR Trace:</ClrBuildTrace> + + <ClAdditionalOptions Condition="'$(NoClMpFlag)'!='true'">$(ClAdditionalOptions) /MP</ClAdditionalOptions> + <ClAdditionalOptions>$(ClAdditionalOptions) /GS /d2Zi+</ClAdditionalOptions> + <ClBufferSecurityCheck>true</ClBufferSecurityCheck> + + + <!-- In Dbg and Chk builds, set /homeparams on x64 --> + <ClAdditionalOptions Condition="'$(BuildArchitecture)' == 'amd64' and ('$(BuildType)' == 'Checked' or '$(BuildType)' == 'Debug')">$(ClAdditionalOptions) /homeparams</ClAdditionalOptions> + + <!-- Warning Try not use _BuildArch if is not specific to build system. Cross-compilation requires to make distiction between build arhitecture + and target arhitecture. + Use _BuildArch only when you need to trigger, use the tools of some arhitecture. + Use TargetArch for anything else: feature selection, files selection, etc. + --> + <_BuildArch>$(_BUILDARCH)</_BuildArch> + + <TargetArch Condition="'$(TargetArch)' == '' and '$(CrossTargetArchitecture)'!=''">$(CrossTargetArchitecture)</TargetArch> + <TargetArch Condition="'$(TargetArch)' == ''">$(BuildArchitecture)</TargetArch> + + <TargetArch Condition="'$(TargetArch)'=='AMD64'">amd64</TargetArch> + + <!-- Enable X86-ARM cross-plat defines --> + <CDefines Condition="'$(TargetArch)' == 'i386'">$(CDefines);_TARGET_X86_=1;</CDefines> + <CDefines Condition="'$(TargetArch)' == 'amd64'">$(CDefines);_TARGET_AMD64_=1;</CDefines> + <CDefines Condition="'$(TargetArch)' == 'arm'">$(CDefines);_TARGET_ARM_=1;</CDefines> + <CDefines Condition="'$(TargetArch)' == 'arm64'">$(CDefines);_TARGET_ARM64_=1;</CDefines> + + <AsmSuffix Condition="'$(BuildArchitecture)' == 'i386' or '$(BuildArchitecture)' == 'amd64'">asm</AsmSuffix> + + <!-- Note: ClrProduct can be set prior to this file to 'Standalone'. --> + <ClrProduct Condition="(('$(BuildProjectName)' == 'CoreCLR' or '$(BuildProjectName)' == 'CoreSys')) and ('$(ClrProduct)' == '' or '$(CoreTarget)' == 'true')">core_clr</ClrProduct> + <ClrProduct Condition="('$(BuildProjectName)' == '') and ('$(ClrProduct)' == '')">desktop_clr</ClrProduct> + + <ClAdditionalOptions>$(ClAdditionalOptions) /Zm200</ClAdditionalOptions> + <TargetDefines Condition="'$(BuildArchitecture)'=='i386'">$(BuildArchitecture);_X86_</TargetDefines> + <TargetDefines Condition="'$(BuildArchitecture)'=='amd64'">$(BuildArchitecture);_AMD64_</TargetDefines> + <TargetDefines Condition="'$(BuildArchitecture)'=='arm'">$(BuildArchitecture);_ARM_</TargetDefines> + <TargetDefines Condition="'$(BuildArchitecture)'=='arm64'">$(BuildArchitecture);_ARM64_</TargetDefines> + + <TargetCpu Condition="('$(TargetArch)' == 'i386') or ('$(TargetArch)' == 'rotor_x86')">i386</TargetCpu> + <TargetCpu Condition="('$(TargetArch)' == 'amd64') or ('$(TargetArch)' == 'rotor_amd64')">amd64</TargetCpu> + <TargetCpu Condition="('$(TargetArch)' == 'arm')">arm</TargetCpu> + <TargetCpu Condition="('$(TargetArch)' == 'arm64')">arm64</TargetCpu> + + <GeneratePlacefileFromFilelist>true</GeneratePlacefileFromFilelist> + + </PropertyGroup> + + + <PropertyGroup Condition="'$(DoPrefastBuild)' == 'true'"> + <PrefastClToolPath>$(ToolsPath)\$(ToolsArchitecture)\prefast\scripts</PrefastClToolPath> + <PrefastClToolExe>prefast.exe $(ClToolPath)\$(ClToolExe)</PrefastClToolExe> + </PropertyGroup> + + + <!-- CLR Feature Settings. We set the default values here, allow leaf projects to override, and then + set the CDefines based on these properties in clr.targets + --> + <Import Project="$(MSBuildThisFileDirectory)clr.desktop.props" /> + <Import Project="$(MSBuildThisFileDirectory)clr.coreclr.props" /> + + <PropertyGroup Condition="'$(CrossGenCompile)'=='true'"> + <!-- Override settings of certain features to disable them for crossgen unconditionally --> + <!-- If you add new features to this list make sure that they are not affecting codegen or content of datastructures persisted in NGen image --> + <EnCSupported>false</EnCSupported> + <PerfcountersSupportedBuild>false</PerfcountersSupportedBuild> + <FeatureAppXBinder>false</FeatureAppXBinder> + <FeatureCasPolicy>false</FeatureCasPolicy> + <FeatureEventTrace>false</FeatureEventTrace> + <FeatureFusion>false</FeatureFusion> + <FeatureIncludeAllInterfaces>false</FeatureIncludeAllInterfaces> + <FeatureLoaderOptimization>false</FeatureLoaderOptimization> + <FeatureMdaSupported>false</FeatureMdaSupported> + <FeatureMergeJitAndEngine>true</FeatureMergeJitAndEngine> + <FeatureMulticoreJIT>false</FeatureMulticoreJIT> + <FeatureRandomizedStringHashing>false</FeatureRandomizedStringHashing> + <FeatureReflectionOnlyLoad>false</FeatureReflectionOnlyLoad> + <FeatureStackProbe>false</FeatureStackProbe> + <FeatureReJIT>false</FeatureReJIT> + <FeaturePls>false</FeaturePls> + <FeatureVersioningLog>false</FeatureVersioningLog> + <FeatureNativeImageGeneration>true</FeatureNativeImageGeneration> + <FeatureReadyToRunCompiler Condition="'$(FeatureReadyToRun)' == 'true'">true</FeatureReadyToRunCompiler> + <!-- Turn on MDIL generation support in crossgen for phone --> + <MDILGenerator Condition="'$(BuildForCoreSystem)' == 'true' and '$(TargetArch)'=='arm'">true</MDILGenerator> + <!-- Link crossgen with static CRT to make it standalone .exe --> + <LinkUseCMT>true</LinkUseCMT> + <UseMsvcrt>false</UseMsvcrt> + </PropertyGroup> + + <PropertyGroup Condition="'$(ClrProduct)'=='Standalone'"> + <!-- + No features enabled by design - turn them on in your project file either: + - before including this file, or + - after via <ClAdditionalOptions>$(ClAdditionalOptions) -DFEATURE_YourFeatureName</ClAdditionalOptions>. + Created primarily for standalone MetaData DLLs for WinRT - file:src\DLLs\StandaloneMD-RO and file:src\DLLs\StandaloneMD-RW + + By default uses statically linked CRT: + <UseMsvcrt>false</UseMsvcrt> + <LinkUseCMT>true</LinkUseCMT> + --> + </PropertyGroup> + + <PropertyGroup> + <MainClrModuleName Condition="'$(FeatureCoreclr)'=='true'">coreclr</MainClrModuleName> + <MainClrModuleName Condition="'$(FeatureCoreclr)'!='true'">clr</MainClrModuleName> + <MainDacMouleName Condition="'$(FeatureCoreclr)'=='true'">mscordaccore</MainDacMouleName> + <MainDacMouleName Condition="'$(FeatureCoreclr)'!='true'">mscordacwks</MainDacMouleName> + </PropertyGroup> + + <PropertyGroup> + <DebugBuild Condition="'$(NTDEBUG)' == '' or '$(NTDEBUG)'=='ntsdnodbg'">false</DebugBuild> + <DebugBuild Condition="'$(NTDEBUG)' != '' and '$(NTDEBUG)'!='ntsdnodbg'">true</DebugBuild> + </PropertyGroup> + + <Choose> + <When Condition="$(DebugBuild)"> + <PropertyGroup> + <CDefines>$(CDefines);NTMAKEENV;_DEBUG</CDefines> + <DebugCrts>true</DebugCrts> + </PropertyGroup> + + <PropertyGroup Condition="'$(_BUILDOPT)' == 'no opt'"> + <CDefines>$(CDefines);WRITE_BARRIER_CHECK=1</CDefines> + <Optimize>false</Optimize> + </PropertyGroup> + </When> + <Otherwise> + <PropertyGroup> + <CDefines>$(CDefines);NTMAKEENV;NDEBUG;PERF_TRACKING</CDefines> + </PropertyGroup> + </Otherwise> + </Choose> + + <PropertyGroup> + <!-- "/Oi" --> + <ClIntrinsicFunctions>true</ClIntrinsicFunctions> + + <!-- "Disabled"=="/Od" "MinSpace"=="/O1" "MaxSpeed"=="/O2" --> + <ClOptimization Condition="'$(_BUILDOPT)' == 'full opt'">MinSpace</ClOptimization> + <ClOptimization Condition="'$(_BUILDOPT)' != 'full opt'">Disabled</ClOptimization> + + <!-- Size == "/Os" Speed == "/Ot" Disabled == "" --> + <ClFavorSizeOrSpeed>Disabled</ClFavorSizeOrSpeed> + </PropertyGroup> + + <PropertyGroup> + <CDefines>$(CDefines);_BLD_CLR</CDefines> + + <ClAdditionalOptions>$(ExceptionHandling) $(ClAdditionalOptions) /we4640</ClAdditionalOptions> + + <!-- Desktop CLR, starting with version 4.5, supports Win2k8 R1 and higher on server, and Win7 and higher on client. + So across server & client, 0x0600 is the default minimum required WINVER --> + <Win32WinNt>0x0600</Win32WinNt> + + <!-- CoreSys supports Win8 and higher --> + <Win32WinNt Condition="'$(BuildForCoreSystem)' == 'true' and '$(CrossTargetArchitecture)' == ''">0x0602</Win32WinNt> + + <!-- When building cross-target binaries, they must be able to run on pre-Win8 OS and thus, should have subsystem version 6.00. so, override the Subsystem setting + specified in tools\Microsoft.DevDiv.targets. + --> + <SubsystemVersion Condition="'$(BuildForCoreSystem)' == 'true' and '$(AllowCrossTargeting)' == 'true'">6.00</SubsystemVersion> + + <!-- Some special projects under CLR, like clr\src\DLLS\culture\mscorwks\culture.nativeproj and + clr\src\DLLS\normalization\mscorwks\normalization.nativeproj need to be compiled with + a special WINVER, so respect their requests --> + <Win32WinNt Condition="'$(ClrOverriddenWin32WinNt)' != ''">$(ClrOverriddenWin32WinNt)</Win32WinNt> + + <!-- Now make sure WINVER matches Win32WinNt --> + <CDefines Condition="'$(Win32WinNt)' != ''">$(CDefines);WINVER=$(Win32WinNt)</CDefines> + + + <LinkLibIgnore Condition="'$(TargetArch)' == 'i386'">4013</LinkLibIgnore> + <ClrBuildLeanAndMean>true</ClrBuildLeanAndMean> + <LinkLibIgnore Condition="!('$(TargetArch)' == 'i386')">4197,4013</LinkLibIgnore> + <LinkLibIgnore>$(LinkLibIgnore);4254</LinkLibIgnore> + <UseVsVersion Condition="'$(UseVsVersion)' == ''">false</UseVsVersion> + <LibWarnAsError>true</LibWarnAsError> + + <CoreSystemSdkPath Condition="'$(TargetArch)' != 'arm64'">$(ExternalAPIsPath)\Win8CoreSystem</CoreSystemSdkPath> + <CoreSystemSdkPath Condition="'$(TargetArch)' == 'arm64'">$(ExternalAPIsPath)\Win9CoreSystem</CoreSystemSdkPath> + + <UserIncludes>$(Clrbase)\src\inc; $(Clrbase)\src\strongname\inc; $(IntraPartitionAPIsPath)\inc; $(UserIncludes); $(ClrIncPath)</UserIncludes> + <UserIncludes Condition="'$(BuildForCoreSystem)' != 'true' or '$(CrossTargetArchitecture)' != ''">$(UserIncludes); $(VCToolsIncPath); $(VCPublicIncPath);</UserIncludes> + <UserIncludes Condition="'$(BuildForCoreSystem)' == 'true' and '$(CrossTargetArchitecture)' == ''">$(UserIncludes); $(CoreSystemSdkPath)\inc; $(CoreSystemSdkPath)\inc\crt;</UserIncludes> + <UserIncludes Condition="'$(UseVsVersion)' == 'false'">$(UserIncludes); $(NdpRootIncPath); $(NDP_CommonIncPath)</UserIncludes> + <UserIncludes Condition="'$(FeatureCominterop)' == 'true'">$(Clrbase)\src\inc\WinRT; $(UserIncludes)</UserIncludes> + + <PogoInstrument>false</PogoInstrument> + <PogoOptimize>false</PogoOptimize> + <PogoUpdate>false</PogoUpdate> + <PogoExePhase>1</PogoExePhase> + + <ResgenDefines Condition="'$(FeatureImpersonation)' == '1'">$(ResgenDefines) /define:FEATURE_IMPERSONATION</ResgenDefines> + <ResgenDefines Condition="'$(FeatureCrypto)' == '1'">$(ResgenDefines) /define:FEATURE_CRYPTO</ResgenDefines> + <ResgenDefines Condition="'$(FeatureIsostore)' == '1'">$(ResgenDefines) /define:FEATURE_ISOSTORE</ResgenDefines> + <ResgenDefines Condition="'$(FeatureMacl)' == '1'">$(ResgenDefines) /define:FEATURE_MACL</ResgenDefines> + <ResgenDefines Condition="'$(FeatureCasPolicy)' == '1'">$(ResgenDefines) /define:FEATURE_CAS_POLICY</ResgenDefines> + <ResgenDefines Condition="'$(FeatureRemoting)' == '1'">$(ResgenDefines) /define:FEATURE_REMOTING</ResgenDefines> + <ResgenDefines Condition="'$(FeatureSerialization)' == '1'">$(ResgenDefines) /define:FEATURE_SERIALIZATION</ResgenDefines> + <ResgenDefines Condition="'$(FeatureIdentityReference)' == '1'">$(ResgenDefines) /define:FEATURE_IDENTITY_REFERENCE</ResgenDefines> + <ResgenDefines Condition="'$(FeatureDisplayCultureInfo)' == '1'">$(ResgenDefines) /define:FEATURE_DISPLAY_CULTURE_INFO</ResgenDefines> + <ResgenDefines Condition="'$(FeatureDisplayRegionInfo)' == '1'">$(ResgenDefines) /define:FEATURE_DISPLAY_REGION_INFO</ResgenDefines> + + <RootOutputPath>$(BinariesDirectory)</RootOutputPath> + + + <!-- Explicitly disable UninitializedVariableCheck and StackFrameCheck since the DevDiv targets sets them as default on and it + breaks the build when optimizations are enabled + --> + <NoRtc>true</NoRtc> + <NoBuildTypeDefines>true</NoBuildTypeDefines> + + <!-- + The DevDiv targets define these to stuff we don't use if they're left blank and there's no easy way to keep them off + of the CL.exe command line. + --> + <OakIncPath >.</OakIncPath> + <ConfigIncPath >.</ConfigIncPath> + <VSCommonIncPath >.</VSCommonIncPath> + + <!-- Devdiv targets have a slightly different semantics for debug defines like DBG. Defined as + BuildType == Debug || BuildType == Checked && DebugBuild == True. In CLR, Checked has DBG + defined so we override to preserve ntbuild behaviour + --> + <CDefines Condition="'$(BuildType)' == 'Checked' or '$(BuildType)' == 'Debug'">$(CDefines);DBG=1</CDefines> + + <!-- Note: This defines only name of the lib 'ClrCrtLib'. Project has to use it explicitly like this: <LibCLib>$(ClrCrtLib)</LibCLib> --> + <ClrCrtLib Condition="'$(BuildForCoreSystem)' != 'true'">$(CrtLibPath)\msvcrt$(BuildSuffix)_clr.lib</ClrCrtLib> + + <RefAsmOutputDirectory>$(BinariesDirectory)\ref\</RefAsmOutputDirectory> + + </PropertyGroup> + + <PropertyGroup Condition="'$(BuildForCoreSystem)' == 'true' and ('$(HostMachineOS)'=='' or '$(HostMachineOS)' == 'OneCore' or '$(HostMachineOS)'=='OneCoreWin7Compat')"> + <!-- + For the most part we build against CoreSystem in the same way as we do against full Windows. But + linking is very different. There are a different set of import libraries (in sdk\lib\CoreSystem) and + we pick up the system CRT (from sdk rather than vc). + + There are 3 different variations of linking we might use: + CoreSystem forwarder libraries - This links against mincore_fw.lib, which causes the binaries to reference + a bunch of small forwarder dlls at runtime. These forwarders redirect CoreSystem api-set imports back + to standard win32 API exports. Binaries linked this way can run on any CoreSystem OS + Win7, however + all the forwarder dlls must be present on the LoadLibrary search path. + CoreSystem stand alone libraries - This links against mincore.lib (and maybe others like mincore_legacy.lib). + These binaries can run on OneCore OS or Win8+ and don't have any dependency on forwarders. + Win32 APIs - This links against the traditional win32 libraries such as kernel32 and the VC CRT. These + binaries run on Win7+ but don't work on pure OneCore SKUs. + + Most of the binaries we build in the CoreSystem build get linked using the forwarder libraries. To do + that we need to set $(BuildForCoreSystem)=true and $(BuildForWindows7)=true. All the binaries in this + group have never set the $(HostMachineOS) property. On ARM we don't support win7, so in that case we + use the stand alone library linkage, $(BuildForWindows7)=false. + + Some of the binaries we build are cross compiled, such as some debugging related binaries. In this scenario + we are debugging a CoreSystem coreclr, but the debugger may be running on a different machine. Because + these libraries can be loaded via LoadLibrary and won't have forwarder libraries available, we use some of + the alternate linkages. All binaries in this set have set the $(HostMachineOS) to something... + $(HostMachineOS)=='windows' => we want Win32 API and won't enter this conditional + $(HostMachineOS)=='OneCore' => we want the stand alone libraries + $(HostMachineOS)=='OneCoreWin7Compat' => we want the forwarders + --> + <BuildForWindows7 Condition="'$(BuildForWindows7)'==''">true</BuildForWindows7> + <BuildForWindows7 Condition="'$(HostMachineOS)'=='OneCore'">false</BuildForWindows7> + <BuildForWindows7 Condition="'$(TargetArch)'=='arm' or '$(TargetArch)'=='arm64'">false</BuildForWindows7> + + <SdkLibPath>$(CoreSystemSdkPath)\sdk\lib\mincore\$(BuildArchitecture)</SdkLibPath> + <SdkLibPath Condition="'$(BuildForWindows7)' == 'true'">$(ExternalAPIsPath)\Windows\Win7\$(BuildArchitecture)</SdkLibPath> + + <CoreSystemCrt>$(SdkLibPath)\msvcrt.lib</CoreSystemCrt> + <CrtSecureDeprecate>true</CrtSecureDeprecate> + <LinkNoLibraries>true</LinkNoLibraries> + <LinkNoWin32Libraries>true</LinkNoWin32Libraries> + <NoWinXPSP3NXCompat>true</NoWinXPSP3NXCompat> + </PropertyGroup> +</Project> |