示例#1
0
    static string make_cb_path_mac(
        WhichLib lib
        )
    {
        var dir_name = lib.AsString_basename_in_cb();
        var lib_name = lib.AsString_libname_in_cb(LibSuffix.DYLIB);

        return(Path.Combine("$cb_bin_path$", dir_name, "mac", lib_name));
    }
示例#2
0
    static string make_cb_path_linux(
        WhichLib lib,
        string cpu
        )
    {
        var dir_name = lib.AsString_basename_in_cb();
        var lib_name = lib.AsString_libname_in_cb(LibSuffix.SO);

        return(Path.Combine("$cb_bin_path$", dir_name, "linux", cpu, lib_name));
    }
示例#3
0
    static string AsString_basename_in_nupkg(this WhichLib e)
    {
        switch (e)
        {
        case WhichLib.E_SQLITE3: return("e_sqlite3");

        case WhichLib.E_SQLCIPHER: return("e_sqlcipher");

        default:
            throw new NotImplementedException(string.Format("WhichLib.AsString for {0}", e));
        }
    }
示例#4
0
    static string make_cb_path_win(
        WhichLib lib,
        string toolset,
        string flavor,
        string arch
        )
    {
        var dir_name = lib.AsString_basename_in_cb();
        var lib_name = lib.AsString_libname_in_cb(LibSuffix.DLL);

        return(Path.Combine("$cb_bin_path$", dir_name, "win", toolset, flavor, arch, lib_name));
    }
示例#5
0
    static void write_nuspec_file_entry_native_mac(
        WhichLib lib,
        XmlWriter f
        )
    {
        var filename = lib.AsString_libname_in_nupkg(LibSuffix.DYLIB);

        write_nuspec_file_entry_native(
            make_cb_path_mac(lib),
            "osx-x64",
            filename,
            f
            );
    }
示例#6
0
    static void write_nuspec_file_entry_native_linux(
        WhichLib lib,
        string cpu_in_cb,
        string rid,
        XmlWriter f
        )
    {
        var filename = lib.AsString_libname_in_nupkg(LibSuffix.SO);

        write_nuspec_file_entry_native(
            make_cb_path_linux(lib, cpu_in_cb),
            rid,
            filename,
            f
            );
    }
示例#7
0
    static void write_nuget_target_item(
        string rid,
        WhichLib lib,
        XmlWriter f
        )
    {
        var suffix   = get_lib_suffix_from_rid(rid);
        var filename = lib.AsString_libname_in_nupkg(suffix);

        f.WriteStartElement("Content");
        f.WriteAttributeString("Include", string.Format("$(MSBuildThisFileDirectory)..\\..\\runtimes\\{0}\\native\\{1}", rid, filename));
        f.WriteElementString("Link", string.Format("runtimes\\{0}\\native\\{1}", rid, filename));
        f.WriteElementString("CopyToOutputDirectory", "PreserveNewest");
        f.WriteElementString("Pack", "false");
        f.WriteEndElement(); // Content
    }
示例#8
0
    static void write_nuspec_file_entry_native_win(
        WhichLib lib,
        string toolset,
        string flavor,
        string cpu,
        string rid,
        XmlWriter f
        )
    {
        var filename = lib.AsString_libname_in_nupkg(LibSuffix.DLL);

        write_nuspec_file_entry_native(
            make_cb_path_win(lib, toolset, flavor, cpu),
            rid,
            filename,
            f
            );
    }
示例#9
0
    private static void gen_nuget_targets(string dest, WhichLib lib)
    {
        var settings = XmlWriterSettings_default();

        settings.OmitXmlDeclaration = false;

        using (XmlWriter f = XmlWriter.Create(dest, settings))
        {
            f.WriteStartDocument();
            f.WriteComment("Automatically generated");

            f.WriteStartElement("Project", "http://schemas.microsoft.com/developer/msbuild/2003");
            f.WriteAttributeString("ToolsVersion", "4.0");

            f.WriteStartElement("ItemGroup");
            f.WriteAttributeString("Condition", " '$(OS)' == 'Windows_NT' ");
            write_nuget_target_item("win-x86", lib, f);
            write_nuget_target_item("win-x64", lib, f);
            write_nuget_target_item("win-arm", lib, f);
            f.WriteEndElement(); // ItemGroup

            f.WriteStartElement("ItemGroup");
            f.WriteAttributeString("Condition", " '$(OS)' == 'Unix' AND Exists('/Library/Frameworks') ");
            write_nuget_target_item("osx-x64", lib, f);
            f.WriteEndElement(); // ItemGroup

            f.WriteStartElement("ItemGroup");
            f.WriteAttributeString("Condition", " '$(OS)' == 'Unix' AND !Exists('/Library/Frameworks') ");
            write_nuget_target_item("linux-x86", lib, f);
            write_nuget_target_item("linux-x64", lib, f);
            write_nuget_target_item("linux-arm", lib, f);
            write_nuget_target_item("linux-armel", lib, f);
            write_nuget_target_item("linux-arm64", lib, f);
            write_nuget_target_item("linux-x64", lib, f);
            f.WriteEndElement(); // ItemGroup

            f.WriteEndElement(); // Project

            f.WriteEndDocument();
        }
    }
示例#10
0
    static void write_nuspec_file_entries_from_cb(
        WhichLib lib,
        XmlWriter f
        )
    {
        write_nuspec_file_entry_native_win(lib, "v141", "plain", "x86", "win-x86", f);
        write_nuspec_file_entry_native_win(lib, "v141", "plain", "x64", "win-x64", f);
        write_nuspec_file_entry_native_win(lib, "v141", "plain", "arm", "win-arm", f);
        write_nuspec_file_entry_native_win(lib, "v141", "plain", "arm64", "win-arm64", f);
        write_nuspec_file_entry_native_uwp(lib, "v141", "appcontainer", "arm64", "win10-arm64", f);
        write_nuspec_file_entry_native_uwp(lib, "v141", "appcontainer", "arm", "win10-arm", f);
        write_nuspec_file_entry_native_uwp(lib, "v141", "appcontainer", "x64", "win10-x64", f);
        write_nuspec_file_entry_native_uwp(lib, "v141", "appcontainer", "x86", "win10-x86", f);

        write_nuspec_file_entry_native_mac(lib, f);

        write_nuspec_file_entry_native_linux(lib, "x64", "linux-x64", f);
        write_nuspec_file_entry_native_linux(lib, "x86", "linux-x86", f);
        write_nuspec_file_entry_native_linux(lib, "armhf", "linux-arm", f);
        write_nuspec_file_entry_native_linux(lib, "armsf", "linux-armel", f);
        write_nuspec_file_entry_native_linux(lib, "arm64", "linux-arm64", f);
        write_nuspec_file_entry_native_linux(lib, "musl-x64", "linux-musl-x64", f);
        write_nuspec_file_entry_native_linux(lib, "musl-x64", "alpine-x64", f);
    }
示例#11
0
    static string AsString_libname_in_nupkg(this WhichLib e, LibSuffix suffix)
    {
        var basename = e.AsString_basename_in_nupkg();

        return(basename_to_libname(basename, suffix));
    }
示例#12
0
    private static void write_bundle_dependency_group(
        XmlWriter f,
        WhichProvider prov,
        WhichLib what,
        TFM tfm
        )
    {
        f.WriteStartElement("group");
        if (tfm != TFM.NONE)
        {
            f.WriteAttributeString("targetFramework", tfm.AsString());
        }

        add_dep_core(f);

        f.WriteStartElement("dependency");
        f.WriteAttributeString("id", string.Format("{0}.provider.{1}", gen.ROOT_NAME, prov.AsString()));
        f.WriteAttributeString("version", "$version$");
        f.WriteEndElement(); // dependency

        if (what == WhichLib.E_SQLITE3)
        {
            string id;
            switch (tfm)
            {
            case TFM.IOS:
                id = string.Format("{0}.lib.e_sqlite3.ios", gen.ROOT_NAME);
                break;

            case TFM.TVOS:
                id = string.Format("{0}.lib.e_sqlite3.tvos", gen.ROOT_NAME);
                break;

            case TFM.ANDROID:
                id = string.Format("{0}.lib.e_sqlite3.android", gen.ROOT_NAME);
                break;

            default:
                id = string.Format("{0}.lib.e_sqlite3", gen.ROOT_NAME);
                break;
            }
            f.WriteStartElement("dependency");
            f.WriteAttributeString("id", id);
            f.WriteAttributeString("version", "$version$");
            f.WriteEndElement(); // dependency
        }
        else if (what == WhichLib.E_SQLCIPHER)
        {
            string id;
            switch (tfm)
            {
            case TFM.IOS:
                id = string.Format("{0}.lib.e_sqlcipher.ios", gen.ROOT_NAME);
                break;

            case TFM.TVOS:
                id = string.Format("{0}.lib.e_sqlcipher.tvos", gen.ROOT_NAME);
                break;

            case TFM.ANDROID:
                id = string.Format("{0}.lib.e_sqlcipher.android", gen.ROOT_NAME);
                break;

            default:
                id = string.Format("{0}.lib.e_sqlcipher", gen.ROOT_NAME);
                break;
            }
            f.WriteStartElement("dependency");
            f.WriteAttributeString("id", id);
            f.WriteAttributeString("version", "$version$");
            f.WriteEndElement(); // dependency
        }
        else if (what == WhichLib.NONE)
        {
        }
        else
        {
            throw new NotImplementedException();
        }

        f.WriteEndElement(); // group
    }