From a0733f8fd477f901fa0785cd5ce3f692b03ae30f Mon Sep 17 00:00:00 2001 From: Rune Date: Sun, 7 Jun 2026 19:47:58 +0200 Subject: [PATCH] migrate to new Cpp2Beef --- BeefProj.toml | 64 ++++++++++++- BeefSpace.toml | 5 +- BeefSpace_Lock.toml | 6 ++ Setup/BeefProj.toml | 63 +------------ Setup/BeefSpace.toml | 5 +- Setup/BeefSpace_Lock.toml | 4 +- Setup/src/Program.bf | 14 --- src/Expat.bf | 186 ++++++++++++++++++-------------------- src/Library.bf | 33 +++++++ 9 files changed, 200 insertions(+), 180 deletions(-) create mode 100644 BeefSpace_Lock.toml create mode 100644 src/Library.bf diff --git a/BeefProj.toml b/BeefProj.toml index 03e9757..1811221 100644 --- a/BeefProj.toml +++ b/BeefProj.toml @@ -1,11 +1,71 @@ FileVersion = 1 -Dependencies = {corlib = "*", corlib = "*"} [Project] Name = "Expat" TargetType = "BeefLib" StartupObject = "Expat.Program" +[Dependencies] +corlib = "*" +corlib = "*" +"CxxBuildTool.git" = {Git = "https://git.unicon-gmbh.de/Rune/CxxBuildTool.git"} + [Configs.Debug.Win64] LibPaths = ["$(BuildDir)/libexpat.lib"] -PreBuildCmds = ["ReadFile(\"$(ProjectDir)/CxxBuilderPath.txt\", \"CxxBuilderPath\")", "Execute(\"$(Var CxxBuilderPath) *.c -- \\\"src=$(ProjectDir)/libexpat/expat/lib\\\" \\\"builddir=$(BuildDir)\\\" target=$(TargetTriple) \\\"cflags=-I$(ProjectDir)/expat_config\\\" config=$(Configuration) output=libexpat\")"] + +[Configs.Debug.Win32] +LibPaths = ["$(BuildDir)/libexpat.lib"] + +[Configs.Debug.Linux32] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Debug.Linux64] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Debug.macOS] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Release.Win32] +LibPaths = ["$(BuildDir)/libexpat.lib"] + +[Configs.Release.Win64] +LibPaths = ["$(BuildDir)/libexpat.lib"] + +[Configs.Release.Linux32] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Release.Linux64] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Release.macOS] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Paranoid.Win32] +LibPaths = ["$(BuildDir)/libexpat.lib"] + +[Configs.Paranoid.Win64] +LibPaths = ["$(BuildDir)/libexpat.lib"] + +[Configs.Paranoid.Linux32] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Paranoid.Linux64] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Paranoid.macOS] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Test.Win32] +LibPaths = ["$(BuildDir)/libexpat.lib"] + +[Configs.Test.Win64] +LibPaths = ["$(BuildDir)/libexpat.lib"] + +[Configs.Test.Linux32] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Test.Linux64] +LibPaths = ["$(BuildDir)/libexpat.a"] + +[Configs.Test.macOS] +LibPaths = ["$(BuildDir)/libexpat.a"] diff --git a/BeefSpace.toml b/BeefSpace.toml index 62404f3..009526a 100644 --- a/BeefSpace.toml +++ b/BeefSpace.toml @@ -1,6 +1,9 @@ FileVersion = 1 -Projects = {Expat = {Path = "."}} ExtraPlatforms = ["Linux32", "Linux64", "macOS"] [Workspace] StartupProject = "Expat" + +[Projects] +Expat = {Path = "."} +"CxxBuildTool.git" = {Git = "https://git.unicon-gmbh.de/Rune/CxxBuildTool.git"} diff --git a/BeefSpace_Lock.toml b/BeefSpace_Lock.toml new file mode 100644 index 0000000..15da856 --- /dev/null +++ b/BeefSpace_Lock.toml @@ -0,0 +1,6 @@ +FileVersion = 1 + +[Locks."CxxBuildTool.git".Git] +URL = "https://git.unicon-gmbh.de/Rune/CxxBuildTool.git" +Tag = "" +Hash = "b64a6221b8cb235a5e040c8597365dabeef849ca" diff --git a/Setup/BeefProj.toml b/Setup/BeefProj.toml index 79b3c6b..17ec32b 100644 --- a/Setup/BeefProj.toml +++ b/Setup/BeefProj.toml @@ -1,66 +1,9 @@ FileVersion = 1 -Dependencies = {corlib = "*", "Cpp2Beef.git" = {Git = "https://git.unicon-gmbh.de/BeefBindings/Cpp2Beef.git"}} [Project] Name = "Expat.Setup" StartupObject = "Expat.Setup.Program" -[Configs.Debug.Win32] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Debug.Win64] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Debug.Linux32] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Debug.Linux64] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Debug.macOS] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Release.Win32] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Release.Win64] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Release.Linux32] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Release.Linux64] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Release.macOS] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Paranoid.Win32] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Paranoid.Win64] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Paranoid.Linux32] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Paranoid.Linux64] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Paranoid.macOS] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Test.Win32] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Test.Win64] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Test.Linux32] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Test.Linux64] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] - -[Configs.Test.macOS] -PostBuildCmds = ["cp $(ProjectDir Cpp2Beef.git)/CxxBuilder/dist/CxxBuilderPath.txt $(WorkspaceDir)/../CxxBuilderPath.txt"] +[Dependencies] +corlib = "*" +"Cpp2Beef.git" = {Git = "https://git.unicon-gmbh.de/Rune/Cpp2Beef.git"} \ No newline at end of file diff --git a/Setup/BeefSpace.toml b/Setup/BeefSpace.toml index 84b3b66..7fd0c02 100644 --- a/Setup/BeefSpace.toml +++ b/Setup/BeefSpace.toml @@ -1,6 +1,9 @@ FileVersion = 1 -Projects = {"Expat.Setup" = {Path = "."}, "Cpp2Beef.git" = {Git = "https://git.unicon-gmbh.de/BeefBindings/Cpp2Beef.git"}} ExtraPlatforms = ["Linux32", "Linux64", "macOS"] [Workspace] StartupProject = "Expat.Setup" + +[Projects] +"Expat.Setup" = {Path = "."} +"Cpp2Beef.git" = {Git = "https://git.unicon-gmbh.de/Rune/Cpp2Beef.git"} diff --git a/Setup/BeefSpace_Lock.toml b/Setup/BeefSpace_Lock.toml index 7e22164..0a2a8f5 100644 --- a/Setup/BeefSpace_Lock.toml +++ b/Setup/BeefSpace_Lock.toml @@ -6,6 +6,6 @@ Tag = "" Hash = "86db0167f15d08a63a91a19e46f983a5511bac1a" [Locks."Cpp2Beef.git".Git] -URL = "https://git.unicon-gmbh.de/BeefBindings/Cpp2Beef.git" +URL = "https://git.unicon-gmbh.de/Rune/Cpp2Beef.git" Tag = "" -Hash = "69ed2da6254b9d76d0dd48cf20eb6174dde903e2" +Hash = "91ddcd4f79cf6df28adff5abfc59cbdc489c7deb" diff --git a/Setup/src/Program.bf b/Setup/src/Program.bf index 069baa6..e5eab5e 100644 --- a/Setup/src/Program.bf +++ b/Setup/src/Program.bf @@ -21,20 +21,6 @@ class ExpatGenerator : Cpp2BeefGenerator, this(Span args) namespace Expat; - static class XML - { - public typealias Char = c_char; - public typealias LChar = c_char; - public typealias Index = c_long; - public typealias Size = c_ulong; - - public struct Bool : c_uchar - { - public static operator bool(Self b) => b != FALSE; - public static operator Self(bool b) => b ? TRUE : FALSE; - } - } - """) ~ delete _; diff --git a/src/Expat.bf b/src/Expat.bf index 869032e..97a5916 100644 --- a/src/Expat.bf +++ b/src/Expat.bf @@ -5,20 +5,6 @@ using System.Interop; namespace Expat; -static class XML -{ - public typealias Char = c_char; - public typealias LChar = c_char; - public typealias Index = c_long; - public typealias Size = c_ulong; - - public struct Bool : c_uchar - { - public static operator bool(Self b) => b != FALSE; - public static operator Self(bool b) => b ? TRUE : FALSE; - } -} - extension XML { /* @@ -96,83 +82,83 @@ public const let FALSE = ((Bool)0); dropped. */ [AllowDuplicates] public enum Status : c_int { - Error = 0, + Error = 0, - Ok = 1, + Ok = 1, - Suspended = 2, + Suspended = 2, } [AllowDuplicates] public enum Error : c_int { - None, - NoMemory, - Syntax, - NoElements, - InvalidToken, - UnclosedToken, - PartialChar, - TagMismatch, - DuplicateAttribute, - JunkAfterDocElement, - ParamEntityRef, - UndefinedEntity, - RecursiveEntityRef, - AsyncEntity, - BadCharRef, - BinaryEntityRef, - AttributeExternalEntityRef, - MisplacedXmlPi, - UnknownEncoding, - IncorrectEncoding, - UnclosedCdataSection, - ExternalEntityHandling, - NotStandalone, - UnexpectedState, - EntityDeclaredInPe, - FeatureRequiresXmlDtd, - CantChangeFeatureOnceParsing, + None, + NoMemory, + Syntax, + NoElements, + InvalidToken, + UnclosedToken, + PartialChar, + TagMismatch, + DuplicateAttribute, + JunkAfterDocElement, + ParamEntityRef, + UndefinedEntity, + RecursiveEntityRef, + AsyncEntity, + BadCharRef, + BinaryEntityRef, + AttributeExternalEntityRef, + MisplacedXmlPi, + UnknownEncoding, + IncorrectEncoding, + UnclosedCdataSection, + ExternalEntityHandling, + NotStandalone, + UnexpectedState, + EntityDeclaredInPe, + FeatureRequiresXmlDtd, + CantChangeFeatureOnceParsing, /* Added in 1.95.7. */ - UnboundPrefix, + UnboundPrefix, /* Added in 1.95.8. */ - UndeclaringPrefix, - IncompletePe, - XmlDecl, - TextDecl, - Publicid, - Suspended, - NotSuspended, - Aborted, - Finished, - SuspendPe, + UndeclaringPrefix, + IncompletePe, + XmlDecl, + TextDecl, + Publicid, + Suspended, + NotSuspended, + Aborted, + Finished, + SuspendPe, /* Added in 2.0. */ - ReservedPrefixXml, - ReservedPrefixXmlns, - ReservedNamespaceUri, + ReservedPrefixXml, + ReservedPrefixXmlns, + ReservedNamespaceUri, /* Added in 2.2.1. */ - InvalidArgument, + InvalidArgument, /* Added in 2.3.0. */ - NoBuffer, + NoBuffer, /* Added in 2.4.0. */ - AmplificationLimitBreach, + AmplificationLimitBreach, /* Added in 2.6.4. */ - NotStarted, + NotStarted, } [AllowDuplicates] public enum Content_Type : c_int { - Empty = 1, - Any, - Mixed, - Name, - Choice, - Seq, + Empty = 1, + Any, + Mixed, + Name, + Choice, + Seq, } [AllowDuplicates] public enum Content_Quant : c_int { - None, - Opt, - Rep, - Plus, + None, + Opt, + Rep, + Plus, } /* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be @@ -193,15 +179,15 @@ public const let FALSE = ((Bool)0); The EMPTY, ANY, and MIXED types will only occur at top level. */ -public typealias Content = cp; +[CRepr] public struct cp; public typealias Content = cp; + + + + + + + -[CRepr] public struct cp { - public Content_Type type; - public Content_Quant quant; - public Char* name; - public c_uint numchildren; - public Content* children; -} /* This is called for an element declaration. See above for description of the model argument. It's the user code's responsibility @@ -805,7 +791,7 @@ public function c_int UnknownEncodingHandler(void* encodingHandlerData, Char* na [LinkName("XML_ResumeParser")] public static extern Status ResumeParser(Parser parser); -[AllowDuplicates] public enum Parsing : c_int { XmlInitialized, XmlParsing, XmlFinished, XmlSuspended, } +[AllowDuplicates] public enum Parsing : c_int { XmlInitialized, XmlParsing, XmlFinished, XmlSuspended, } [CRepr] public struct ParsingStatus { public Parsing parsing; @@ -840,9 +826,9 @@ public function c_int UnknownEncodingHandler(void* encodingHandlerData, Char* na [LinkName("XML_ExternalEntityParserCreate")] public static extern Parser ExternalEntityParserCreate(Parser parser, Char* context, Char* encoding); [AllowDuplicates] public enum ParamEntityParsing : c_int { - Never, - UnlessStandalone, - Always, + Never, + UnlessStandalone, + Always, } /* Controls parsing of parameter entities (including the external DTD @@ -978,25 +964,25 @@ public function c_int UnknownEncodingHandler(void* encodingHandlerData, Char* na /* Added in Expat 1.95.5. */ [AllowDuplicates] public enum FeatureEnum : c_int { - End = 0, - Unicode, - UnicodeWcharT, - Dtd, - ContextBytes, - MinSize, - SizeofXmlChar, - SizeofXmlLchar, - Ns, - LargeSize, - AttrInfo, + End = 0, + Unicode, + UnicodeWcharT, + Dtd, + ContextBytes, + MinSize, + SizeofXmlChar, + SizeofXmlLchar, + Ns, + LargeSize, + AttrInfo, /* Added in Expat 2.4.0. */ - BillionLaughsAttackProtectionMaximumAmplificationDefault, - BillionLaughsAttackProtectionActivationThresholdDefault, + BillionLaughsAttackProtectionMaximumAmplificationDefault, + BillionLaughsAttackProtectionActivationThresholdDefault, /* Added in Expat 2.6.0. */ - Ge, + Ge, /* Added in Expat 2.7.2. */ - AllocTrackerMaximumAmplificationDefault, - AllocTrackerActivationThresholdDefault, + AllocTrackerMaximumAmplificationDefault, + AllocTrackerActivationThresholdDefault, /* Additional features must be added to the end of this enum. */ } diff --git a/src/Library.bf b/src/Library.bf new file mode 100644 index 0000000..f8e1e8e --- /dev/null +++ b/src/Library.bf @@ -0,0 +1,33 @@ +using System; +using System.Interop; + +using CxxBuildTool; + +namespace Expat; + +static class XML +{ + public typealias Char = c_char; + public typealias LChar = c_char; + public typealias Index = c_long; + public typealias Size = c_ulong; + + public struct Bool : c_uchar + { + public static operator bool(Self b) => b != FALSE; + public static operator Self(bool b) => b ? TRUE : FALSE; + } + + [OnCompile(.TypeDone)] + private static void Build() + { + if (!Compiler.IsBuilding) return; + CxxBuildTool.Ninja(Compiler.ProjectDir + "/libexpat/expat/lib", Compiler.BuildDir + "/" + Compiler.ProjectName, "libexpat", "-I" + Compiler.ProjectDir + "/expat_config", + "xmlparse.c", + "xmlrole.c", + "xmltok.c", + "xmltok_impl.c", + "xmltok_ns.c" + ); + } +}