Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add local build for System.Globalization shim #72896

Merged
merged 28 commits into from
Sep 6, 2022
Merged

Commits on Jul 26, 2022

  1. Add local build for System.Globalization shim

    Bundle the System.Globalization.Native shim sources into the native AOT toolchain package and compile them automatically using C/C++ compiler on the target machine.
    
    Compiling of the shim sources using C/C++ compiler is done during dotnet publish as follows:
      dotnet publish  /p:LocalSystemGlobalizationNative=1 -bl -r linux-x64
    
    This change is 'opt-in', it is enabled only by using /p:LocalSystemGlobalizationNative=1
    Samiullah Mohammed authored and smhmhmd committed Jul 26, 2022
    Configuration menu
    Copy the full SHA
    aed8b64 View commit details
    Browse the repository at this point in the history

Commits on Aug 2, 2022

  1. Configuration menu
    Copy the full SHA
    ec90686 View commit details
    Browse the repository at this point in the history
  2. Incorporate review feedback

    * Copy shim source code into users Obj directory at IntermediateOutputPath and compile
    ** $ ls -al obj/Debug/net7.0/linux-x64/shim_source_code/libs/System.Globalization.Native/build/libSystem.Globalization.Native-Static.a
    
    * Add shell script for readability
    
    * Add copyright headers
    smhmhmd committed Aug 2, 2022
    Configuration menu
    Copy the full SHA
    f2fa736 View commit details
    Browse the repository at this point in the history
  3. Fix IlCompilerPackagePath

    Add change that was part of previous commit
    smhmhmd committed Aug 2, 2022
    Configuration menu
    Copy the full SHA
    d8dabf2 View commit details
    Browse the repository at this point in the history
  4. Address review feedback

    * Include existing pal_icushim_static.c by using STATIC_ICU define
    * Use IlcSdkPath to copy shim source code
    smhmhmd committed Aug 2, 2022
    Configuration menu
    Copy the full SHA
    e548415 View commit details
    Browse the repository at this point in the history

Commits on Aug 4, 2022

  1. Incorporate review feedback

    * Remove USE_ICUSHIM_STATIC_BUILD in pal_icushim.c
    * Rename shim_source_code to source_code in Microsoft.DotNet.ILCompiler.pkgproj and script
    * Regular config is used, config-standalone.h is removed
    * IlcPath/.. is replaced to make the ".." go away
    smhmhmd committed Aug 4, 2022
    Configuration menu
    Copy the full SHA
    6075e03 View commit details
    Browse the repository at this point in the history

Commits on Aug 8, 2022

  1. Configuration menu
    Copy the full SHA
    5256276 View commit details
    Browse the repository at this point in the history
  2. Address feedback from 08/04

    * Rename option to ICUStaticLinking
    * Remove <Message ..
    * Compile without copying sources
    * Trim list of defines
    * Emit error when run on Linux in CMakeLists.txt
    * Move StaticICULibs to near licucore on Mac
    * Use only IlcHostPackagePath
    smhmhmd authored and smhmhmd committed Aug 8, 2022
    Configuration menu
    Copy the full SHA
    3fcba3d View commit details
    Browse the repository at this point in the history

Commits on Aug 16, 2022

  1. Configuration menu
    Copy the full SHA
    3eba2de View commit details
    Browse the repository at this point in the history
  2. Fix DirectPInvoke for library built by user

    smhmhmd authored and smhmhmd committed Aug 16, 2022
    Configuration menu
    Copy the full SHA
    2f440a0 View commit details
    Browse the repository at this point in the history

Commits on Aug 22, 2022

  1. Configuration menu
    Copy the full SHA
    9bf52ca View commit details
    Browse the repository at this point in the history

Commits on Sep 1, 2022

  1. Configuration menu
    Copy the full SHA
    de4b4fc View commit details
    Browse the repository at this point in the history
  2. Feedback on 08/25: rename static-build, "source_code" and cleanup com…

    …pile defs
    
    * Remove IlcHostPackagePath check
    * StaticICULinking property is true/false
    * Remove -g and -fPIC from definitions
    * Use minimal warning level
    * Remove -DHOST_AMD64
    * Remove -O0
    * Remove -fms-extensions -fwrapv
    * Standardize on "local build"
    * Rename build-nativeaot-shim-standalone.sh to build.sh
    * Script name in the error message should match the actual script name
    * Rename source_code to native/src
    
    Test code:
    $ cat Program.cs
    using System.Globalization;
    
    namespace CurrentCulture
    {
    	class Program
    	{
    		static void Main(string[] args)
    		{
    			double val = 1235.56;
    
    			Console.WriteLine($"Current culture: {CultureInfo.CurrentCulture.Name}");
    			Console.WriteLine(val);
    
    			CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
    
    			Console.WriteLine($"Current culture: {CultureInfo.CurrentCulture.Name}");
    			Console.WriteLine(val);
    		}
    	}
    }
    
    $ cat hello-4.csproj
    <Project Sdk="Microsoft.NET.Sdk">
     <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net7.0</TargetFramework>
      <RootNamespace>hello_4</RootNamespace>
      <ImplicitUsings>enable</ImplicitUsings>
      <Nullable>enable</Nullable>
     </PropertyGroup>
    
    $ cat nuget.config
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     <packageSources>
      <!--To inherit the global NuGet package sources remove the <clear/> line below -->
      <clear />
        <add key="repositoryPath" value="/home/ubuntu/runtime/artifacts/packages/Debug/Shipping" />
        <add key="dotnet7" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json" />
     </packageSources>
    </configuration>
    
    Test code build:
    rm ./bin/Debug/net7.0/linux-arm64/native/hello-4
    ~/dotnet-sdk/dotnet clean
    ~/dotnet-sdk/dotnet publish /p:PublishAot=true /p:StaticICULinking=true -bl -r linux-arm64 --self-contained -v d 2>&1 > log
    ./bin/Debug/net7.0/linux-arm64/native/hello-4
    
    Tested on x86-64 and arm64
    smhmhmd authored and smhmhmd committed Sep 1, 2022
    Configuration menu
    Copy the full SHA
    e59cc03 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    b51f34c View commit details
    Browse the repository at this point in the history

Commits on Sep 2, 2022

  1. Configuration menu
    Copy the full SHA
    1acc76f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    556dcf3 View commit details
    Browse the repository at this point in the history

Commits on Sep 3, 2022

  1. Feedback on 09/02

    *  Incorporated change to use only src/native/libs/System.Globalization.Native/CMakeLists.txt
    *  Conditionalized CMakeLists.txt for local build
    *  Moved the build.sh into parent as local_build.sh and removed local-build directory.
    *  Rename STATIC_SHIM_COMPILE to LOCAL_BUILD
    Ubuntu authored and smhmhmd committed Sep 3, 2022
    Configuration menu
    Copy the full SHA
    4a67db0 View commit details
    Browse the repository at this point in the history

Commits on Sep 4, 2022

  1. Move file includes to previous itemgroup

    Move the includes in Microsoft.DotNet.ILCompiler.pkgproj to
    <ItemGroup Condition="'$(PackageTargetRuntime)' != ''">
    Ubuntu authored and smhmhmd committed Sep 4, 2022
    Configuration menu
    Copy the full SHA
    ff907cf View commit details
    Browse the repository at this point in the history
  2. Move file includes to previous itemgroup

    Move the includes in Microsoft.DotNet.ILCompiler.pkgproj to
    <ItemGroup Condition="'$(PackageTargetRuntime)' != ''">
    smhmhmd committed Sep 4, 2022
    Configuration menu
    Copy the full SHA
    0a11c50 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    68eac73 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    907c322 View commit details
    Browse the repository at this point in the history
  5. Update section in compiling.md

    * Add "Using statically linked ICU" to compiling.md
    * Remove define check for LOCAL_BUILD in CMakeLists.txt
    smhmhmd committed Sep 4, 2022
    Configuration menu
    Copy the full SHA
    e5c2c51 View commit details
    Browse the repository at this point in the history

Commits on Sep 5, 2022

  1. Configuration menu
    Copy the full SHA
    40bf9be View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    5f9e7a7 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e4fdcfa View commit details
    Browse the repository at this point in the history
  4. Update src/coreclr/nativeaot/docs/compiling.md

    Co-authored-by: Michal Strehovský <[email protected]>
    smhmhmd and MichalStrehovsky authored Sep 5, 2022
    Configuration menu
    Copy the full SHA
    7a96d14 View commit details
    Browse the repository at this point in the history
  5. Update src/installer/pkg/projects/Microsoft.DotNet.ILCompiler/Microso…

    …ft.DotNet.ILCompiler.pkgproj
    
    Co-authored-by: Michal Strehovský <[email protected]>
    smhmhmd and MichalStrehovsky authored Sep 5, 2022
    Configuration menu
    Copy the full SHA
    8323197 View commit details
    Browse the repository at this point in the history

Commits on Sep 6, 2022

  1. Configuration menu
    Copy the full SHA
    bca6da8 View commit details
    Browse the repository at this point in the history