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)); }
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)); }
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)); } }
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)); }
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 ); }
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 ); }
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 }
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 ); }
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(); } }
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); }
static string AsString_libname_in_nupkg(this WhichLib e, LibSuffix suffix) { var basename = e.AsString_basename_in_nupkg(); return(basename_to_libname(basename, suffix)); }
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 }