[PATCH] D82265: [llvm-rc] Implement the language id option
Martin Storsjö via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 20 13:46:10 PDT 2020
mstorsjo created this revision.
mstorsjo added reviewers: amccarth, thakis.
Herald added a project: LLVM.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D82265
Files:
llvm/test/tools/llvm-rc/Inputs/language.rc
llvm/test/tools/llvm-rc/language.test
llvm/tools/llvm-rc/Opts.td
llvm/tools/llvm-rc/llvm-rc.cpp
Index: llvm/tools/llvm-rc/llvm-rc.cpp
===================================================================
--- llvm/tools/llvm-rc/llvm-rc.cpp
+++ llvm/tools/llvm-rc/llvm-rc.cpp
@@ -187,7 +187,17 @@
ExitOnErr(NullResource().visit(Visitor.get()));
// Set the default language; choose en-US arbitrarily.
- ExitOnErr(LanguageResource(0x09, 0x01).visit(Visitor.get()));
+ unsigned PrimaryLangId = 0x09, SubLangId = 0x01;
+ if (InputArgs.hasArg(OPT_LANG_ID)) {
+ unsigned LangId;
+ if (InputArgs.getLastArgValue(OPT_LANG_ID)
+ .getAsInteger(16, LangId))
+ fatalError("Invalid language id: " +
+ InputArgs.getLastArgValue(OPT_LANG_ID));
+ PrimaryLangId = LangId & 0x3ff;
+ SubLangId = LangId >> 10;
+ }
+ ExitOnErr(LanguageResource(PrimaryLangId, SubLangId).visit(Visitor.get()));
}
rc::RCParser Parser{std::move(Tokens)};
Index: llvm/tools/llvm-rc/Opts.td
===================================================================
--- llvm/tools/llvm-rc/Opts.td
+++ llvm/tools/llvm-rc/Opts.td
@@ -12,7 +12,7 @@
def UNDEF : Separate<[ "/", "-" ], "U">,
HelpText<"Undefine a symbol for the C preprocessor.">;
-def LANG_ID : Separate<[ "/", "-" ], "L">,
+def LANG_ID : JoinedOrSeparate<[ "/", "-" ], "L">,
HelpText<"Set the default language identifier.">;
def LANG_NAME : Separate<[ "/", "-" ], "LN">,
HelpText<"Set the default language name.">;
Index: llvm/test/tools/llvm-rc/language.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-rc/language.test
@@ -0,0 +1,19 @@
+; RUN: llvm-rc /l 40A /FO %t.res -- %p/Inputs/language.rc
+; RUN: llvm-readobj %t.res | FileCheck %s
+; RUN: llvm-rc /l40A /FO %t.res -- %p/Inputs/language.rc
+; RUN: llvm-readobj %t.res | FileCheck %s
+
+; CHECK: Resource name (int): 1
+; CHECK-NEXT: Data version:
+; CHECK-NEXT: Memory flags:
+; CHECK-NEXT: Language ID: 2049
+
+; CHECK: Resource name (int): 2
+; CHECK-NEXT: Data version:
+; CHECK-NEXT: Memory flags:
+; CHECK-NEXT: Language ID: 1034
+
+; CHECK: Resource name (int): 3
+; CHECK-NEXT: Data version:
+; CHECK-NEXT: Memory flags:
+; CHECK-NEXT: Language ID: 4099
Index: llvm/test/tools/llvm-rc/Inputs/language.rc
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-rc/Inputs/language.rc
@@ -0,0 +1,15 @@
+1 MENU
+LANGUAGE 1, 2
+{
+ MENUITEM "foo", 1
+}
+
+2 MENU {
+ MENUITEM "bar", 2
+}
+
+LANGUAGE 3, 4
+
+3 MENU {
+ MENUITEM "baz", 3
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82265.272270.patch
Type: text/x-patch
Size: 2588 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200620/30344d5c/attachment.bin>
More information about the llvm-commits
mailing list