Skip to content

Commit 7b269d1

Browse files
lochelOpenModelica-Hudson
authored andcommitted
Add special cases to enable/disable additional opt modules
1 parent 9f85289 commit 7b269d1

File tree

1 file changed

+79
-4
lines changed

1 file changed

+79
-4
lines changed

Compiler/Util/Flags.mo

Lines changed: 79 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1629,27 +1629,60 @@ algorithm
16291629
end try;
16301630
end lookupConfigFlag;
16311631

1632+
protected function configFlagEq
1633+
input ConfigFlag inFlag1;
1634+
input ConfigFlag inFlag2;
1635+
output Boolean eq;
1636+
algorithm
1637+
eq := match(inFlag1, inFlag2)
1638+
local
1639+
Integer index1, index2;
1640+
case(CONFIG_FLAG(index=index1), CONFIG_FLAG(index=index2))
1641+
then index1 == index2;
1642+
end match;
1643+
end configFlagEq;
1644+
1645+
protected function setAdditionalOptModules
1646+
input ConfigFlag inFlag;
1647+
input ConfigFlag inOppositeFlag;
1648+
input list<String> inValues;
1649+
protected
1650+
list<String> values;
1651+
algorithm
1652+
for value in inValues loop
1653+
// remove value from inOppositeFlag
1654+
values := getConfigStringList(inOppositeFlag);
1655+
values := List.removeOnTrue(value, stringEq, values);
1656+
setConfigStringList(inOppositeFlag, values);
1657+
1658+
// add value to inFlag
1659+
values := getConfigStringList(inFlag);
1660+
values := List.removeOnTrue(value, stringEq, values);
1661+
setConfigStringList(inFlag, value::values);
1662+
end for;
1663+
end setAdditionalOptModules;
1664+
16321665
protected function evaluateConfigFlag
16331666
"Evaluates a given flag and it's arguments."
16341667
input ConfigFlag inFlag;
16351668
input list<String> inValues;
16361669
input Flags inFlags;
16371670
algorithm
1638-
_ := match(inFlag, inValues, inFlags)
1671+
_ := match(inFlag, inFlags)
16391672
local
16401673
array<Boolean> debug_flags;
16411674
array<FlagData> config_flags;
16421675
list<String> values;
16431676

16441677
// Special case for +d, +debug, set the given debug flags.
1645-
case (CONFIG_FLAG(index = 1), _, FLAGS(debugFlags = debug_flags))
1678+
case (CONFIG_FLAG(index = 1), FLAGS(debugFlags = debug_flags))
16461679
equation
16471680
List.map1_0(inValues, setDebugFlag, debug_flags);
16481681
then
16491682
();
16501683

16511684
// Special case for +h, +help, show help text.
1652-
case (CONFIG_FLAG(index = 2), _, _)
1685+
case (CONFIG_FLAG(index = 2), _)
16531686
equation
16541687
values = List.map(inValues, System.tolower);
16551688
System.gettextInit(if getConfigString(RUNNING_TESTSUITE) == "" then getConfigString(LOCALE_FLAG) else "C");
@@ -1658,8 +1691,50 @@ algorithm
16581691
then
16591692
();
16601693

1694+
// Special case for --preOptModules+=<value>
1695+
case (_, FLAGS(configFlags = config_flags)) guard(configFlagEq(inFlag, PRE_OPT_MODULES_ADD))
1696+
equation
1697+
setAdditionalOptModules(PRE_OPT_MODULES_ADD, PRE_OPT_MODULES_SUB, inValues);
1698+
then
1699+
();
1700+
1701+
// Special case for --preOptModules-=<value>
1702+
case (_, FLAGS(configFlags = config_flags)) guard(configFlagEq(inFlag, PRE_OPT_MODULES_SUB))
1703+
equation
1704+
setAdditionalOptModules(PRE_OPT_MODULES_SUB, PRE_OPT_MODULES_ADD, inValues);
1705+
then
1706+
();
1707+
1708+
// Special case for --postOptModules+=<value>
1709+
case (_, FLAGS(configFlags = config_flags)) guard(configFlagEq(inFlag, POST_OPT_MODULES_ADD))
1710+
equation
1711+
setAdditionalOptModules(POST_OPT_MODULES_ADD, POST_OPT_MODULES_SUB, inValues);
1712+
then
1713+
();
1714+
1715+
// Special case for --postOptModules-=<value>
1716+
case (_, FLAGS(configFlags = config_flags)) guard(configFlagEq(inFlag, POST_OPT_MODULES_SUB))
1717+
equation
1718+
setAdditionalOptModules(POST_OPT_MODULES_SUB, POST_OPT_MODULES_ADD, inValues);
1719+
then
1720+
();
1721+
1722+
// Special case for --initOptModules+=<value>
1723+
case (_, FLAGS(configFlags = config_flags)) guard(configFlagEq(inFlag, INIT_OPT_MODULES_ADD))
1724+
equation
1725+
setAdditionalOptModules(INIT_OPT_MODULES_ADD, INIT_OPT_MODULES_SUB, inValues);
1726+
then
1727+
();
1728+
1729+
// Special case for --initOptModules-=<value>
1730+
case (_, FLAGS(configFlags = config_flags)) guard(configFlagEq(inFlag, INIT_OPT_MODULES_SUB))
1731+
equation
1732+
setAdditionalOptModules(INIT_OPT_MODULES_SUB, INIT_OPT_MODULES_ADD, inValues);
1733+
then
1734+
();
1735+
16611736
// All other configuration flags, set the flag to the given values.
1662-
case (_, _, FLAGS(configFlags = config_flags))
1737+
case (_, FLAGS(configFlags = config_flags))
16631738
equation
16641739
setConfigFlag(inFlag, config_flags, inValues);
16651740
then

0 commit comments

Comments
 (0)