Compare commits
497 Commits
ub_coverag
...
develop
Author | SHA1 | Date | |
---|---|---|---|
1075d381f1 | |||
b2049d3df1 | |||
5a3ef5575c | |||
acb9c85abd | |||
5b86f90bbf | |||
f0cf3ea154 | |||
9acaeff409 | |||
565958c631 | |||
6a3e32ac50 | |||
8efb009adf | |||
28e332c527 | |||
b7c0f20db6 | |||
a272a1ee39 | |||
eb861daf9c | |||
a5e6948487 | |||
64d97ae834 | |||
785428fb09 | |||
3492a72128 | |||
3eb3ebd795 | |||
ff89ccdfdb | |||
9e42487366 | |||
b9ba205a52 | |||
85982a0d1c | |||
44682cdf0e | |||
b8e5b38e3a | |||
fc8f95da51 | |||
bd3139b623 | |||
6fe60e03cd | |||
8d6fdb6ba7 | |||
4a74a73bee | |||
5d78cdf4df | |||
e192c71104 | |||
140c2d67b1 | |||
7d41bb9525 | |||
b2f87e8fad | |||
27b23dce8d | |||
2ff133732d | |||
dee78d1279 | |||
dfad138010 | |||
de4a6124e6 | |||
d063650904 | |||
8eed85377b | |||
fabceb7a93 | |||
88ad16ec94 | |||
abef96d93d | |||
478d1d4ac5 | |||
5f43bb9c0f | |||
d9706c58f9 | |||
45b55d5c24 | |||
bacc9a8296 | |||
b6e22e863a | |||
aad4a27516 | |||
e6b34cfad9 | |||
3fb45df48c | |||
3489fd1516 | |||
8d199ba7ca | |||
30dd1044b0 | |||
d27cbcc05b | |||
020a4d793f | |||
ed08913f26 | |||
17773cf9b1 | |||
ae71682920 | |||
5cfbbbc9ca | |||
7d71ebca30 | |||
0b7969becf | |||
5bb29d2d3a | |||
46128e395f | |||
3dc80460ac | |||
5d9d146aa2 | |||
a4ac323306 | |||
97190a133c | |||
c09fda3f25 | |||
47d7357ed9 | |||
78245ec817 | |||
4058eed106 | |||
1fee44c084 | |||
497b1d33d4 | |||
db0d125651 | |||
c365d4f822 | |||
6ce8eada3e | |||
6ee4840d8d | |||
2a0899a671 | |||
c0e557316f | |||
c4a746d4c8 | |||
45e5ab6133 | |||
8811f13d1c | |||
c2056c30f3 | |||
3da38170ff | |||
5c31d06a58 | |||
99e36acbae | |||
21ca5aee7a | |||
c99a7982b7 | |||
3d657d42bc | |||
8de84ca4be | |||
fa1c960247 | |||
ab4a0eeb6e | |||
cc61e0b476 | |||
856e251be4 | |||
b118b43988 | |||
e8037b9c27 | |||
c0bae483c1 | |||
d7d072bb0b | |||
d488581e3a | |||
97b52b9e05 | |||
6dbce5cb23 | |||
c19e7c6a46 | |||
bfea2374b4 | |||
2825646edc | |||
c1e0379f7b | |||
d602c61dfe | |||
4b65d31b89 | |||
bbe7e7525e | |||
ac23db44cf | |||
4964fe3f79 | |||
bea38f761d | |||
405bae926c | |||
9c0cb351fe | |||
3b6f7b5e83 | |||
dc8e631824 | |||
e67306b781 | |||
f8152e8ca5 | |||
2dc4409928 | |||
558d5849a6 | |||
aa69088189 | |||
92283be000 | |||
73c9934708 | |||
ff649a9d97 | |||
4c2d8f2d97 | |||
6e3bbad01b | |||
ae03038323 | |||
b8fa095940 | |||
d4a2e133eb | |||
17b8e4a7fc | |||
ddec62b3a3 | |||
5a7ab89f43 | |||
36487d1b75 | |||
c65cf3a804 | |||
e03001dd91 | |||
3d216107d9 | |||
ff1fe0f1af | |||
493b8be2ed | |||
b347393ff6 | |||
bdb7cbd36d | |||
646452e0ea | |||
f41056924c | |||
bc1e82952a | |||
03bb12efdb | |||
7b6c0291b2 | |||
bd30872ed3 | |||
74abd3032a | |||
2e14223e1e | |||
4a09f1c634 | |||
d322c7c9d8 | |||
bc6eed67e8 | |||
57ce6aab92 | |||
734522f6c3 | |||
9c7b95ae23 | |||
cf8472f2fc | |||
cc23e02b89 | |||
f21461e1ab | |||
13094e78ce | |||
7bb4c283a3 | |||
86f58adaa4 | |||
4efcbfbd35 | |||
ac08908336 | |||
60e6fec07d | |||
061b21ed51 | |||
406cec6d27 | |||
95096fe98a | |||
5bbdb3bfa2 | |||
6c304055bf | |||
6ef27d8c58 | |||
4c64d076fc | |||
538406e9f3 | |||
0d5eb6c1ce | |||
c785b0e33c | |||
dd47d9d9d1 | |||
c9ce22379b | |||
607aca574c | |||
247bed12ee | |||
b7ee50dc21 | |||
417921fc55 | |||
e0e9a207e8 | |||
de56a5c5a3 | |||
1baed20dbb | |||
246fbdefb6 | |||
afff028374 | |||
070f179ca8 | |||
b157d916cb | |||
eb98e7525f | |||
a817b7b47b | |||
5545f58f85 | |||
11d7a731ce | |||
37a47b0f83 | |||
cbdf6aab01 | |||
0050dfd523 | |||
262df83e8e | |||
5c6732f1ae | |||
4c107e03a0 | |||
862b852f96 | |||
7a70f103f2 | |||
9d647b72d7 | |||
bd23b776bd | |||
fa79e3f0c9 | |||
17f9f06dae | |||
8393aa568f | |||
e4ee3fc7d8 | |||
5bc46da768 | |||
6c0d7d91aa | |||
3c6c0337e5 | |||
4bcad78a22 | |||
5a121af14a | |||
e38d3e3b13 | |||
d4f71de938 | |||
6418867a28 | |||
8902d96ad4 | |||
c8d6537fde | |||
0690f07fca | |||
5e0c19f7a0 | |||
940b05e71d | |||
a9d2b5b564 | |||
a8c9b5fe18 | |||
9b1f8de430 | |||
d5f5eae880 | |||
d07614989e | |||
614c8702bf | |||
5bec3c33b0 | |||
9235848c6a | |||
4ef49674ec | |||
a703188c8b | |||
864ccd9165 | |||
b48d2b76d2 | |||
b1c78c19bd | |||
eda55ae93e | |||
bff845d5dc | |||
9560956e8d | |||
fbcabc4fd5 | |||
edb8c6ef5b | |||
9fa17e41e5 | |||
6a00ef075d | |||
49165b2120 | |||
4f67fd47c2 | |||
74f8d71645 | |||
292bc1d92a | |||
4cb8ca3f61 | |||
73476e4c90 | |||
92d96af651 | |||
b7c3379e19 | |||
5198c5f91b | |||
b406743206 | |||
d29c2bca04 | |||
5493c3030c | |||
2b15c90bc1 | |||
31fdf14b23 | |||
e17e463cf3 | |||
4061cde25c | |||
20a4706289 | |||
f85825c3cd | |||
5883ef1e8d | |||
4c508e218a | |||
7e3b296201 | |||
cd256bbf69 | |||
5e35336825 | |||
55a0846dc7 | |||
6ee7159ee7 | |||
af015e0fe8 | |||
b12da49384 | |||
79073759d3 | |||
2e21148f37 | |||
ef9f479b43 | |||
02169317fd | |||
dd43191eb3 | |||
56ce60318b | |||
75935ff9c4 | |||
d68ad400cc | |||
a21c59868d | |||
d8b64a32a8 | |||
4c7410c06b | |||
32c5bd4989 | |||
087a1af261 | |||
10db99f130 | |||
77dc5b9f52 | |||
329818adf3 | |||
f56cad7148 | |||
f9082e70d4 | |||
3a5d549f46 | |||
d4eef1060f | |||
c4460dfeee | |||
b8645312eb | |||
e6e3dc3f13 | |||
cac68ac8c2 | |||
97538fce12 | |||
ca0d7da4fc | |||
af2473b7a4 | |||
02abdbfe7f | |||
f2cc43c226 | |||
78026158d1 | |||
70006f7b5f | |||
7f04090efe | |||
1fad8b6e04 | |||
671ab49353 | |||
e65af50c39 | |||
6b9d52ff80 | |||
bd6a864bc5 | |||
46607eb4c2 | |||
0b01677bcb | |||
033fa1eede | |||
1e73127950 | |||
1437c3b3e6 | |||
f7350d7b3d | |||
460863d7a1 | |||
01b0b2231d | |||
33aa2339c8 | |||
0529275428 | |||
5c9b33f65f | |||
ef6d996045 | |||
b4a1e2273f | |||
30e67eb0e0 | |||
d987681e88 | |||
060706c61f | |||
93d3810a7f | |||
1ed5c228bf | |||
824700bd1b | |||
312cf3c4da | |||
e2cb1697ec | |||
bf46e5eec7 | |||
a7f4e93c1d | |||
c22e85d30d | |||
f8306b2473 | |||
8c00e89bf5 | |||
3ec2934fe1 | |||
4bd81ca676 | |||
0bdda6182b | |||
4e86e71771 | |||
76657668fc | |||
65a5d6b7c1 | |||
4fe8b02f56 | |||
a933105f08 | |||
9341523103 | |||
8a9d1e2b46 | |||
561bb598f7 | |||
255b8e5d71 | |||
0d97d02da1 | |||
ad88a71797 | |||
520b4313ae | |||
c055515f0b | |||
ccc3253844 | |||
6b28548fef | |||
fb8aabb31c | |||
8a51b233ef | |||
616ea16991 | |||
ef1856957a | |||
d1db9825c9 | |||
7cf08b9c7b | |||
015f03e312 | |||
d0b7560c0b | |||
bc2bf6143b | |||
4a911a3bd3 | |||
0a49b91436 | |||
e166fd4b9e | |||
a4216facfc | |||
63faebadc5 | |||
e5854d1707 | |||
5b0b2b1d58 | |||
a5887d015d | |||
8196778453 | |||
436ed6ca08 | |||
e4d1bb1224 | |||
76e58eee1c | |||
43c1c5be88 | |||
151cc8cb7c | |||
84ca04427d | |||
bfbd4ad271 | |||
1e5ddbf1cc | |||
4a0ad84621 | |||
6e0cbcfdd7 | |||
1e11b401f8 | |||
da05ec4478 | |||
91a3a35dff | |||
6ec8a1b9cb | |||
0dee6cc485 | |||
0d1b7a5cdb | |||
a987e1a12f | |||
8da2a7881b | |||
5c908a29f5 | |||
20ae2af4e5 | |||
cb6af695b9 | |||
0fd9c94067 | |||
41116a975e | |||
17241844f8 | |||
fb12440c83 | |||
2c8cc745c8 | |||
f0bdfbe970 | |||
9108da6b4a | |||
8dd499a88f | |||
cc9a94c3b8 | |||
9200a3bbef | |||
8da5dc278d | |||
56435e44ec | |||
cf7ed3e752 | |||
8f1cadfacf | |||
4661129b8b | |||
fd037c1b40 | |||
6cec3f1634 | |||
e4c2d3083b | |||
6f1813d153 | |||
d9986b66c9 | |||
1a8566be34 | |||
b4ac62ab5a | |||
60d0cef378 | |||
933747abb7 | |||
d1fdd972e0 | |||
a51173c4a8 | |||
92d3c75db0 | |||
a66d15e69e | |||
4bcf6ebc08 | |||
f5d4598162 | |||
74e08ae011 | |||
34dd7db4fe | |||
20cf5796ad | |||
64e55dc7d5 | |||
aa2fc8c99b | |||
80f8da4e31 | |||
8564228d46 | |||
9465b2c7e3 | |||
a02492db51 | |||
5ed197ef1b | |||
825e2afd4d | |||
9ee6d6f09b | |||
6d4bc98651 | |||
4dc6de3625 | |||
47e6582498 | |||
fe0e4571ec | |||
c2484b8ec8 | |||
557829a975 | |||
6c47979039 | |||
69131bb324 | |||
40d93d5df4 | |||
41f1b30d42 | |||
0f9deb24c7 | |||
6566148975 | |||
1ed351f199 | |||
b5d154c04d | |||
28da255535 | |||
d7ef4b4728 | |||
bf3e5fab4d | |||
0a931d4f0f | |||
c87b68e006 | |||
d3fab7306c | |||
6beef03e5f | |||
705e100bb0 | |||
f829d18635 | |||
42f8642234 | |||
f84ada1347 | |||
e95a5782ce | |||
da76464bd2 | |||
7e45a0afe2 | |||
ba8be555ec | |||
91e2329abb | |||
cdae9e75f8 | |||
f13ac8e652 | |||
4b0c42c1bf | |||
3dc98ed21e | |||
c15fef05d0 | |||
d2ca747507 | |||
4619016f01 | |||
248cb2ac21 | |||
b5d6a0e4d3 | |||
9523b275a6 | |||
b64ac814c1 | |||
db3a373abb | |||
c62a633685 | |||
300e3d86d6 | |||
e62a67cfdb | |||
c842327546 | |||
dd483ccc22 | |||
e7a84e2afe | |||
e9baa5be0f | |||
f0bce2fc13 | |||
48d925a229 | |||
fda630a893 | |||
81aa30224b | |||
ec831d2da1 | |||
cdf6954ee5 | |||
2d8acfdbe1 | |||
aed35a1c25 | |||
c4a6a77002 | |||
552a4a1be6 | |||
1781adc5c7 | |||
04ebd82f18 | |||
8200b5d948 | |||
d0cae79b35 | |||
7ccc443ee4 | |||
8e8ca9e2e7 | |||
d92fa7813e | |||
9659d17496 | |||
163d9406d1 |
96
.clang-format
Normal file
96
.clang-format
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
Language: Cpp
|
||||||
|
# BasedOnStyle: LLVM
|
||||||
|
# should be in line with IndentWidth
|
||||||
|
AccessModifierOffset: -4
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: false
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignEscapedNewlinesLeft: false
|
||||||
|
AlignOperands: true
|
||||||
|
AlignTrailingComments: true
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: true
|
||||||
|
AllowShortBlocksOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: All
|
||||||
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: false
|
||||||
|
BinPackArguments: true
|
||||||
|
BinPackParameters: true
|
||||||
|
BraceWrapping:
|
||||||
|
AfterClass: false
|
||||||
|
AfterControlStatement: false
|
||||||
|
AfterEnum: false
|
||||||
|
AfterFunction: false
|
||||||
|
AfterNamespace: false
|
||||||
|
AfterObjCDeclaration: false
|
||||||
|
AfterStruct: false
|
||||||
|
AfterUnion: false
|
||||||
|
BeforeCatch: false
|
||||||
|
BeforeElse: false
|
||||||
|
IndentBraces: false
|
||||||
|
BreakBeforeBinaryOperators: None
|
||||||
|
BreakBeforeBraces: Attach
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializersBeforeComma: true
|
||||||
|
BreakAfterJavaFieldAnnotations: false
|
||||||
|
BreakStringLiterals: true
|
||||||
|
ColumnLimit: 140
|
||||||
|
CommentPragmas: '^( IWYU pragma:| @suppress)'
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||||
|
ConstructorInitializerIndentWidth: 0
|
||||||
|
ContinuationIndentWidth: 4
|
||||||
|
Cpp11BracedListStyle: true
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
ExperimentalAutoDetectBinPacking: false
|
||||||
|
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||||
|
IncludeCategories:
|
||||||
|
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||||
|
Priority: 2
|
||||||
|
- Regex: '^(<|"(gtest|isl|json)/)'
|
||||||
|
Priority: 3
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 1
|
||||||
|
IncludeIsMainRegex: '$'
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentWidth: 4
|
||||||
|
IndentWrappedFunctionNames: false
|
||||||
|
JavaScriptQuotes: Leave
|
||||||
|
JavaScriptWrapImports: true
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||||
|
MacroBlockBegin: ''
|
||||||
|
MacroBlockEnd: ''
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation: None
|
||||||
|
ObjCBlockIndentWidth: 2
|
||||||
|
ObjCSpaceAfterProperty: false
|
||||||
|
ObjCSpaceBeforeProtocolList: true
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 19
|
||||||
|
PenaltyBreakComment: 300
|
||||||
|
PenaltyBreakFirstLessLess: 120
|
||||||
|
PenaltyBreakString: 1000
|
||||||
|
PenaltyExcessCharacter: 1000000
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 60
|
||||||
|
PointerAlignment: Left
|
||||||
|
ReflowComments: true
|
||||||
|
SortIncludes: true
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceAfterTemplateKeyword: true
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeParens: Never
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInContainerLiterals: true
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
Standard: Cpp11
|
||||||
|
TabWidth: 4
|
||||||
|
UseTab: Never
|
||||||
|
...
|
||||||
|
|
225
.cproject
225
.cproject
@ -14,11 +14,14 @@
|
|||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1336041151" name="Debug" optionalBuildProperties="" parent="org.eclipse.cdt.build.core.emptycfg">
|
<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1336041151" name="Debug" optionalBuildProperties="" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1336041151.1615713914" name="/" resourcePath="">
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1336041151.1615713914" name="/" resourcePath="">
|
||||||
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1297474963" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
|
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1297474963" name="Linux GCC" nonInternalBuilderId="cmake4eclipse.mbs.builder" superClass="cdt.managedbuild.toolchain.gnu.base">
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.1141103737" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.1141103737" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
||||||
<builder buildPath="/TGC-ISS/build/Debug" id="de.marw.cdt.cmake.core.genscriptbuilder.1100382234" keepEnvironmentInBuildfile="false" name="CMake Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="de.marw.cdt.cmake.core.genscriptbuilder"/>
|
<builder buildPath="/TGC-ISS/build/Debug" id="cmake4eclipse.mbs.builder.1295402556" keepEnvironmentInBuildfile="false" name="CMake Builder" superClass="cmake4eclipse.mbs.builder"/>
|
||||||
<tool id="cdt.managedbuild.tool.gnu.archiver.base.740869785" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
<tool id="cdt.managedbuild.tool.gnu.archiver.base.740869785" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1934077203" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1934077203" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
||||||
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1599133325" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="CWR_SYSTEMC=1"/>
|
||||||
|
</option>
|
||||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.17118862" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.17118862" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1699395860" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1699395860" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
||||||
@ -42,10 +45,196 @@
|
|||||||
<storageModule buildDir="build/${ConfigName}" moduleId="de.marw.cdt.cmake.core.settings">
|
<storageModule buildDir="build/${ConfigName}" moduleId="de.marw.cdt.cmake.core.settings">
|
||||||
<options/>
|
<options/>
|
||||||
<defs>
|
<defs>
|
||||||
<def name="ENABLE_CODEGEN" type="BOOL" val="ON"/>
|
|
||||||
<def name="CMAKE_BUILD_TYPE" type="STRING" val="${ConfigName}"/>
|
<def name="CMAKE_BUILD_TYPE" type="STRING" val="${ConfigName}"/>
|
||||||
</defs>
|
</defs>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
|
<storageModule buildDir="build/${ConfigName}" dirtyTs="1746805637052" moduleId="de.marw.cmake4eclipse.mbs.settings">
|
||||||
|
<options otherArguments="--preset RelWithDebInfo"/>
|
||||||
|
<defs>
|
||||||
|
<def name="CMAKE_BUILD_TYPE" type="STRING" val="RelWithDebInfo"/>
|
||||||
|
<def name="CMAKE_INSTALL_PREFIX" type="FILEPATH" val="${ProjDirPath}/install"/>
|
||||||
|
<def name="WITH_TCC" type="BOOL" val="ON"/>
|
||||||
|
<def name="FW_BUILD" type="BOOL" val="ON"/>
|
||||||
|
<def name="ENABLE_CLANG_TIDY" type="BOOL" val="ON"/>
|
||||||
|
<def name="WITH_LLVM" type="BOOL" val="ON"/>
|
||||||
|
</defs>
|
||||||
|
</storageModule>
|
||||||
|
</cconfiguration>
|
||||||
|
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1336041151.1436777338">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1436777338" moduleId="org.eclipse.cdt.core.settings" name="Debug-PA">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1436777338" name="Debug-PA" optionalBuildProperties="" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1336041151.1436777338." name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1293780030" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.1970512769" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
||||||
|
<builder buildPath="/TGC-ISS/_build/Debug-PA" id="cmake4eclipse.mbs.builder.928900702" keepEnvironmentInBuildfile="false" name="CMake Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cmake4eclipse.mbs.builder"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.archiver.base.207730824" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1262643605" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
||||||
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.766346102" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="CWR_SYSTEMC=1"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1887588287" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.934550669" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.435160258" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1246571083" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1000595204" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1443403714" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.assembler.base.1058800350" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1915245436" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule buildDir="build/${ConfigName}" moduleId="de.marw.cdt.cmake.core.settings">
|
||||||
|
<options/>
|
||||||
|
<defs>
|
||||||
|
<def name="CMAKE_BUILD_TYPE" type="STRING" val="${ConfigName}"/>
|
||||||
|
</defs>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule dirtyTs="1681455316836" moduleId="de.marw.cmake4eclipse.mbs.settings">
|
||||||
|
<options/>
|
||||||
|
<defs>
|
||||||
|
<def name="CMAKE_BUILD_TYPE" type="STRING" val="Debug"/>
|
||||||
|
<def name="USE_CWR_SYSTEMC" type="BOOL" val="ON"/>
|
||||||
|
<def name="BUILD_SHARED_LIBS" type="BOOL" val="ON"/>
|
||||||
|
<def name="CMAKE_INSTALL_PREFIX" type="FILEPATH" val="${ProjDirPath}/install"/>
|
||||||
|
<def name="FW_BUILD" type="BOOL" val="ON"/>
|
||||||
|
</defs>
|
||||||
|
</storageModule>
|
||||||
|
</cconfiguration>
|
||||||
|
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382" moduleId="org.eclipse.cdt.core.settings" name="RelWithDebInfo">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382" name="RelWithDebInfo" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382." name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1009994445" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.1023431687" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
||||||
|
<builder buildPath="/TGC-ISS/_build/Debug" id="cmake4eclipse.mbs.builder.87414385" keepEnvironmentInBuildfile="false" name="CMake Builder" parallelBuildOn="true" parallelizationNumber="unlimited" superClass="cmake4eclipse.mbs.builder"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.archiver.base.40272694" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.288344887" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
||||||
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1881910565" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="CWR_SYSTEMC=1"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1745748578" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1398015713" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1810687689" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.120562679" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1158166201" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.120238241" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.assembler.base.1253632883" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.502601048" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule buildDir="build/${ConfigName}" moduleId="de.marw.cdt.cmake.core.settings">
|
||||||
|
<options/>
|
||||||
|
<defs>
|
||||||
|
<def name="CMAKE_BUILD_TYPE" type="STRING" val="${ConfigName}"/>
|
||||||
|
</defs>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule buildDir="build/${ConfigName}" dirtyTs="1746805637052" moduleId="de.marw.cmake4eclipse.mbs.settings">
|
||||||
|
<options otherArguments="--preset RelWithDebInfo"/>
|
||||||
|
<defs>
|
||||||
|
<def name="CMAKE_BUILD_TYPE" type="STRING" val="RelWithDebInfo"/>
|
||||||
|
<def name="CMAKE_INSTALL_PREFIX" type="FILEPATH" val="${ProjDirPath}/install"/>
|
||||||
|
<def name="WITH_TCC" type="BOOL" val="ON"/>
|
||||||
|
<def name="FW_BUILD" type="BOOL" val="ON"/>
|
||||||
|
<def name="ENABLE_CLANG_TIDY" type="BOOL" val="ON"/>
|
||||||
|
<def name="WITH_LLVM" type="BOOL" val="ON"/>
|
||||||
|
</defs>
|
||||||
|
</storageModule>
|
||||||
|
</cconfiguration>
|
||||||
|
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.761803221">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.761803221" moduleId="org.eclipse.cdt.core.settings" name="RelWithDebInfo4Prof">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.761803221" name="RelWithDebInfo4Prof" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.761803221." name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1676282966" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.199403809" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
||||||
|
<builder buildPath="/TGC-ISS/_build/Debug" id="cmake4eclipse.mbs.builder.1047317958" keepEnvironmentInBuildfile="false" name="CMake Builder" parallelBuildOn="true" parallelizationNumber="unlimited" superClass="cmake4eclipse.mbs.builder"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1763962491" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.300429051" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
||||||
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.934487129" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="CWR_SYSTEMC=1"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1430696020" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.9511508" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.695529941" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1813114373" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1557756316" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.536309197" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.assembler.base.587229911" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1060210827" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule buildDir="build/${ConfigName}" moduleId="de.marw.cdt.cmake.core.settings">
|
||||||
|
<options/>
|
||||||
|
<defs>
|
||||||
|
<def name="CMAKE_BUILD_TYPE" type="STRING" val="${ConfigName}"/>
|
||||||
|
</defs>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule buildDir="build/${ConfigName}" dirtyTs="1727093289061" moduleId="de.marw.cmake4eclipse.mbs.settings">
|
||||||
|
<options/>
|
||||||
|
<defs>
|
||||||
|
<def name="CMAKE_BUILD_TYPE" type="STRING" val="RelWithDebInfo"/>
|
||||||
|
<def name="CMAKE_INSTALL_PREFIX" type="FILEPATH" val="${ProjDirPath}/install"/>
|
||||||
|
<def name="WITH_TCC" type="BOOL" val="ON"/>
|
||||||
|
<def name="FW_BUILD" type="BOOL" val="ON"/>
|
||||||
|
<def name="ENABLE_CLANG_TIDY" type="BOOL" val="ON"/>
|
||||||
|
<def name="ENABLE_GPROF" type="BOOL" val="ON"/>
|
||||||
|
</defs>
|
||||||
|
</storageModule>
|
||||||
</cconfiguration>
|
</cconfiguration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
@ -53,6 +242,11 @@
|
|||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
<storageModule moduleId="refreshScope" versionNumber="2">
|
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||||
|
<configuration configurationName="RelWithDebInfo4Prof"/>
|
||||||
|
<configuration configurationName="Debug-PA">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/TGC-ISS"/>
|
||||||
|
</configuration>
|
||||||
|
<configuration configurationName="RelWithDebInfo"/>
|
||||||
<configuration configurationName="Default">
|
<configuration configurationName="Default">
|
||||||
<resource resourceType="PROJECT" workspacePath="/TGC-ISS"/>
|
<resource resourceType="PROJECT" workspacePath="/TGC-ISS"/>
|
||||||
</configuration>
|
</configuration>
|
||||||
@ -60,14 +254,37 @@
|
|||||||
<resource resourceType="PROJECT" workspacePath="/TGC-ISS"/>
|
<resource resourceType="PROJECT" workspacePath="/TGC-ISS"/>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
|
<storageModule cmakelistsFolder="" moduleId="de.marw.cmake4eclipse.mbs.settings">
|
||||||
|
<targets>
|
||||||
|
<target name=""/>
|
||||||
|
</targets>
|
||||||
|
</storageModule>
|
||||||
<storageModule moduleId="scannerConfiguration">
|
<storageModule moduleId="scannerConfiguration">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151;cdt.managedbuild.toolchain.gnu.base.1336041151.1615713914;cdt.managedbuild.tool.gnu.c.compiler.base.1699395860;cdt.managedbuild.tool.gnu.c.compiler.input.1583122935">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151;cdt.managedbuild.toolchain.gnu.base.1336041151.1615713914;cdt.managedbuild.tool.gnu.c.compiler.base.1699395860;cdt.managedbuild.tool.gnu.c.compiler.input.1583122935">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382;cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.;cdt.managedbuild.tool.gnu.cpp.compiler.base.288344887;cdt.managedbuild.tool.gnu.cpp.compiler.input.1745748578">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151;cdt.managedbuild.toolchain.gnu.base.1336041151.1615713914;cdt.managedbuild.tool.gnu.cpp.compiler.base.1934077203;cdt.managedbuild.tool.gnu.cpp.compiler.input.17118862">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151;cdt.managedbuild.toolchain.gnu.base.1336041151.1615713914;cdt.managedbuild.tool.gnu.cpp.compiler.base.1934077203;cdt.managedbuild.tool.gnu.cpp.compiler.input.17118862">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382;cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.;cdt.managedbuild.tool.gnu.c.compiler.base.1398015713;cdt.managedbuild.tool.gnu.c.compiler.input.1810687689">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
|
||||||
|
<buildTargets>
|
||||||
|
<target name="format" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||||
|
<buildCommand>make</buildCommand>
|
||||||
|
<buildArguments>$<cmake4eclipse_dyn></buildArguments>
|
||||||
|
<buildTarget>format</buildTarget>
|
||||||
|
<stopOnError>true</stopOnError>
|
||||||
|
<useDefaultCommand>true</useDefaultCommand>
|
||||||
|
<runAllBuilders>true</runAllBuilders>
|
||||||
|
</target>
|
||||||
|
</buildTargets>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
</cproject>
|
</cproject>
|
10
.envrc
Normal file
10
.envrc
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
module load ./Modulefile
|
||||||
|
distro=`/bin/lsb_release -i -s`
|
||||||
|
if [ $distro == "CentOS" ]; then
|
||||||
|
. /opt/rh/devtoolset-8/enable
|
||||||
|
. /opt/rh/rh-python38/enable
|
||||||
|
elif [ $distro == "Rocky" ]; then
|
||||||
|
. /opt/rh/gcc-toolset-11/enable
|
||||||
|
fi
|
||||||
|
layout python3
|
||||||
|
[ -f .envrc.$USER ] && . .envrc.$USER
|
27
.gitignore
vendored
27
.gitignore
vendored
@ -1,3 +1,26 @@
|
|||||||
/build/
|
/build/
|
||||||
/Debug/
|
.settings
|
||||||
.settings
|
/.venv*
|
||||||
|
/Debug-PA/
|
||||||
|
/_build/
|
||||||
|
/install/
|
||||||
|
/analysis_results
|
||||||
|
.vscode
|
||||||
|
*.log
|
||||||
|
*tcc_jit*.c
|
||||||
|
*.disass
|
||||||
|
*.dis
|
||||||
|
*.objdump
|
||||||
|
*.asm
|
||||||
|
*.signature
|
||||||
|
*.elf
|
||||||
|
*.trc
|
||||||
|
/*.core_desc
|
||||||
|
/fasterDecoding/
|
||||||
|
*.ll
|
||||||
|
/dbt-rise-plugins
|
||||||
|
/.direnv
|
||||||
|
/TGC_C_XRB/
|
||||||
|
/.envrc.eyck
|
||||||
|
/.cache
|
||||||
|
CMakeUserPresets.json
|
||||||
|
18
.gitmodules
vendored
18
.gitmodules
vendored
@ -1,12 +1,6 @@
|
|||||||
[submodule "scc"]
|
[submodule "dbt-rise-core"]
|
||||||
path = scc
|
path = dbt-rise-core
|
||||||
url = https://github.com/Minres/SystemC-Components.git
|
url = https://github.com/Minres/DBT-RISE-Core.git
|
||||||
[submodule "tgfs"]
|
[submodule "dbt-rise-tgc"]
|
||||||
path = tgfs
|
path = dbt-rise-tgc
|
||||||
url = https://git.minres.com/DBT-RISE/DBT-RISE-TGFS.git
|
url = https://git.minres.com/DBT-RISE/DBT-RISE-TGC.git
|
||||||
[submodule "dbt-core"]
|
|
||||||
path = dbt-core
|
|
||||||
url = https://git.minres.com/DBT-RISE/DBT-RISE-Core.git
|
|
||||||
[submodule "coredsl"]
|
|
||||||
path = coredsl
|
|
||||||
url = https://git.minres.com/DBT-RISE/CoreDSL.git
|
|
||||||
|
11
.project
11
.project
@ -30,4 +30,15 @@
|
|||||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
|
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
|
<filteredResources>
|
||||||
|
<filter>
|
||||||
|
<id>1683227853345</id>
|
||||||
|
<name></name>
|
||||||
|
<type>10</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||||
|
<arguments>1.0-name-matches-false-false-install</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
</filteredResources>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
188
CMakeLists.txt
188
CMakeLists.txt
@ -1,65 +1,141 @@
|
|||||||
cmake_minimum_required(VERSION 3.12)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_CURRENT_SOURCE_DIR}/scc/cmake)
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||||
|
|
||||||
project(TGFS-ISS VERSION 1.0.0 LANGUAGES CXX)
|
project(TGC-ISS VERSION 1.0.0 LANGUAGES CXX)
|
||||||
|
|
||||||
set(CORE_NAME TGC_C CACHE STRING "The core to build the ISS for" )
|
|
||||||
set(WITH_LLVM FALSE CACHE BOOL "Build LLVM based backend")
|
set(WITH_LLVM FALSE CACHE BOOL "Build LLVM based backend")
|
||||||
|
if(CMAKE_PROJECT_NAME STREQUAL "TGC-ISS")
|
||||||
|
###########################################################################
|
||||||
|
# stand alone build settings
|
||||||
|
###########################################################################
|
||||||
|
set(CORE_NAME TGC5C CACHE STRING "The core to build the ISS for" )
|
||||||
|
option(ENABLE_SANITIZER "Enable address sanitizer" OFF)
|
||||||
|
option(ENABLE_GRPOF "Enable gprof instrumentation" OFF)
|
||||||
|
option(ENABLE_CLANG_TIDY "Add clang-tidy and clang-format automatically to builds" OFF)
|
||||||
|
option(WITH_TCC "Build TCC backend" OFF)
|
||||||
|
option(WITH_LLVM "Build LLVM backend" OFF)
|
||||||
|
option(WITH_ASMJIT "Build ASMJIT backend" ON)
|
||||||
|
option(PORTABLE "Build executable without platform specific optimizations" OFF)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
include(Conan)
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_INSTALL_RPATH "${ORIGIN}")
|
||||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
include(CheckCXXCompilerFlag)
|
||||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
|
||||||
include(CheckCXXCompilerFlag)
|
if(COMPILER_SUPPORTS_MARCH_NATIVE AND NOT PORTABLE)
|
||||||
|
message(STATUS "Applying platform specific optimizations")
|
||||||
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
|
||||||
if(COMPILER_SUPPORTS_MARCH_NATIVE)
|
endif()
|
||||||
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
elseif(NOT(${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo"))
|
set(warnings "-Wall -Wextra -Werror")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
|
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
||||||
endif()
|
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
|
||||||
endif()
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
|
set(warnings "/W4 /WX /EHsc")
|
||||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
endif()
|
||||||
set(warnings "-Wall -Wextra -Werror")
|
if(ENABLE_SANITIZER)
|
||||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")
|
list(APPEND CMAKE_C_FLAGS "-fsanitize=address")
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
list(APPEND CMAKE_CXX_FLAGS "-fsanitize=address")
|
||||||
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
|
list(APPEND CMAKE_EXE_LINKER_FLAGS "-fsanitize=address")
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
list(APPEND CMAKE_SHARED_LINKER_FLAGS "-fsanitize=address")
|
||||||
set(warnings "/W4 /WX /EHsc")
|
endif()
|
||||||
endif()
|
if(ENABLE_GPROF)
|
||||||
|
list(APPEND CMAKE_C_FLAGS "-pg")
|
||||||
setup_conan(TARGETS)
|
list(APPEND CMAKE_CXX_FLAGS "-pg")
|
||||||
|
list(APPEND CMAKE_EXE_LINKER_FLAGS "-pg")
|
||||||
# This line finds the boost lib and headers.
|
list(APPEND CMAKE_SHARED_LINKER_FLAGS "-pg")
|
||||||
set(Boost_NO_BOOST_CMAKE ON) # Don't do a find_package in config mode before searching for a regular boost install.
|
endif()
|
||||||
set(BOOST_ROOT ${CONAN_BOOST_ROOT})
|
include(GNUInstallDirs)
|
||||||
find_package(Threads)
|
if(BUILD_SHARED_LIBS)
|
||||||
find_package(ZLIB)
|
set(SHARED_FLAG "True")
|
||||||
|
|
||||||
include(clang-format)
|
|
||||||
set(ENABLE_CLANG_TIDY OFF CACHE BOOL "Add clang-tidy automatically to builds")
|
|
||||||
if (ENABLE_CLANG_TIDY)
|
|
||||||
find_program (CLANG_TIDY_EXE NAMES "clang-tidy" PATHS /usr/local/opt/llvm/bin )
|
|
||||||
if (CLANG_TIDY_EXE)
|
|
||||||
message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
|
|
||||||
set(CLANG_TIDY_CHECKS "-*,modernize-*")
|
|
||||||
set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-checks=${CLANG_TIDY_CHECKS};-header-filter='${CMAKE_SOURCE_DIR}/*';-fix"
|
|
||||||
CACHE STRING "" FORCE)
|
|
||||||
else()
|
else()
|
||||||
message(AUTHOR_WARNING "clang-tidy not found!")
|
set(SHARED_FLAG "False")
|
||||||
set(CMAKE_CXX_CLANG_TIDY "" CACHE STRING "" FORCE) # delete it
|
endif()
|
||||||
|
|
||||||
|
set(B2_VERSION 4.9.6)
|
||||||
|
set(CM_VERSION 3.20.5)
|
||||||
|
set(LLVM_VERSION 13.0.0)
|
||||||
|
|
||||||
|
find_package(fmt)
|
||||||
|
find_package(spdlog)
|
||||||
|
find_package(lz4)
|
||||||
|
find_package(gsl-lite)
|
||||||
|
find_package(yaml-cpp)
|
||||||
|
set(Boost_NO_BOOST_CMAKE ON) # Don't do a find_package in config mode before searching for a regular boost install.
|
||||||
|
set(BOOST_ROOT ${CONAN_BOOST_ROOT})
|
||||||
|
find_package(Threads)
|
||||||
|
find_package(ZLIB)
|
||||||
|
|
||||||
|
if(USE_CWR_SYSTEMC)
|
||||||
|
include(SystemCPackage)
|
||||||
|
endif()
|
||||||
|
###############################################################################
|
||||||
|
# setup clang-format and clang-tidy
|
||||||
|
###############################################################################
|
||||||
|
if (ENABLE_CLANG_TIDY)
|
||||||
|
set(CLANG_FORMAT_EXCLUDE_PATTERNS "build" "install")
|
||||||
|
find_package(ClangFormat)
|
||||||
|
find_program (CLANG_TIDY_EXE NAMES "clang-tidy" PATHS /usr/bin )
|
||||||
|
if (CLANG_TIDY_EXE)
|
||||||
|
message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
|
||||||
|
set(CLANG_TIDY_CHECKS "-*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-avoid-bind.PermissiveParameterList")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-loop-convert.*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-make-shared.")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-make-unique.")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-pass-by-value.*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-raw-string-literal.*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-replace-auto-ptr.IncludeStyle")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-replace-disallow-copy-and-assign-macro.MacroName")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-replace-random-shuffle.IncludeStyle")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-auto.*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-bool-literals.IgnoreMacros")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-default-member-init.*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-emplace.*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-equals-default.IgnoreMacros")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-equals-delete.IgnoreMacros")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-nodiscard.ReplacementString")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-noexcept.*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-nullptr.NullMacros")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-override.*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-transparent-functors.SafeMode")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-using.IgnoreMacros")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors")
|
||||||
|
#set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},cppcoreguidelines-*")
|
||||||
|
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},clang-diagnostic-*,clang-analyzer-*")
|
||||||
|
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE};-checks=${CLANG_TIDY_CHECKS};-header-filter='${CMAKE_SOURCE_DIR}/*';-fix"
|
||||||
|
CACHE STRING "" FORCE)
|
||||||
|
else()
|
||||||
|
message(WARNING "clang-tidy not found!")
|
||||||
|
set(CMAKE_CXX_CLANG_TIDY "" CACHE STRING "" FORCE) # delete it
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(FW_BUILD)
|
||||||
|
include(FetchContent)
|
||||||
|
set(FETCHCONTENT_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}/..)
|
||||||
|
FetchContent_Declare(
|
||||||
|
riscvfw
|
||||||
|
GIT_REPOSITORY https://git.minres.com/Firmware/Firmwares.git
|
||||||
|
GIT_TAG develop
|
||||||
|
GIT_SHALLOW OFF
|
||||||
|
UPDATE_DISCONNECTED ON
|
||||||
|
)
|
||||||
|
FetchContent_GetProperties(riscvfw)
|
||||||
|
if(NOT riscvfw_POPULATED)
|
||||||
|
FetchContent_Populate(riscvfw)
|
||||||
|
endif()
|
||||||
|
add_subdirectory(${riscvfw_SOURCE_DIR})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(CodeGen)
|
add_subdirectory(dbt-rise-core)
|
||||||
gen_coredsl(${CORE_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/tgfs/gen_input/TGFS.core_desc interp)
|
add_subdirectory(dbt-rise-tgc)
|
||||||
|
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dbt-rise-plugins)
|
||||||
add_subdirectory(dbt-core)
|
add_subdirectory(dbt-rise-plugins)
|
||||||
add_subdirectory(scc)
|
endif()
|
||||||
add_subdirectory(tgfs)
|
|
||||||
|
|
||||||
|
include(CTest)
|
||||||
|
52
CMakePresets.json
Normal file
52
CMakePresets.json
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"vendor": {
|
||||||
|
"conan": {}
|
||||||
|
},
|
||||||
|
"cmakeMinimumRequired": {
|
||||||
|
"major": 3,
|
||||||
|
"minor": 24,
|
||||||
|
"patch": 0
|
||||||
|
},
|
||||||
|
"configurePresets": [
|
||||||
|
{
|
||||||
|
"name": "Debug",
|
||||||
|
"displayName": "Debug build",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"binaryDir": "${sourceDir}/build/${presetName}",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_POLICY_DEFAULT_CMP0091": "NEW",
|
||||||
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
|
"CMAKE_CXX_STANDARD": "17",
|
||||||
|
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}",
|
||||||
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||||
|
"CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "cmake/conan_provider.cmake"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "RelWithDebInfo",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_POLICY_DEFAULT_CMP0091": "NEW",
|
||||||
|
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
|
||||||
|
"CMAKE_CXX_STANDARD": "17",
|
||||||
|
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}",
|
||||||
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||||
|
"CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "cmake/conan_provider.cmake"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Release",
|
||||||
|
"displayName": "Release build",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"binaryDir": "${sourceDir}/build/${presetName}",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_POLICY_DEFAULT_CMP0091": "NEW",
|
||||||
|
"CMAKE_BUILD_TYPE": "Release",
|
||||||
|
"CMAKE_CXX_STANDARD": "17",
|
||||||
|
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}",
|
||||||
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||||
|
"CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "cmake/conan_provider.cmake"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
114
Jenkinsfile
vendored
Normal file
114
Jenkinsfile
vendored
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
void checkout_project(String repoUrl, String branch = 'develop') {
|
||||||
|
checkout([
|
||||||
|
$class: 'GitSCM',
|
||||||
|
branches: [
|
||||||
|
[name: "*/${branch}"]
|
||||||
|
],
|
||||||
|
extensions: [
|
||||||
|
[$class: 'CleanBeforeCheckout'],
|
||||||
|
[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: true, recursiveSubmodules: true, reference: '', trackingSubmodules: false, shallow: true]
|
||||||
|
],
|
||||||
|
submoduleCfg: [],
|
||||||
|
userRemoteConfigs: [
|
||||||
|
[credentialsId: 'gitea-jenkins', url: repoUrl]
|
||||||
|
]
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline {
|
||||||
|
agent any
|
||||||
|
stages {
|
||||||
|
stage("Checkout and build"){
|
||||||
|
agent {docker { image 'ubuntu-riscv' }}
|
||||||
|
stages{
|
||||||
|
stage("Checkout TGC-Compliance and TGC-GEN"){
|
||||||
|
steps {
|
||||||
|
sh 'rm -rf * .??* '
|
||||||
|
checkout_project("https://git.minres.com/TGFS/TGC-ISS.git", "develop")
|
||||||
|
dir("TGC-COMPLIANCE"){
|
||||||
|
checkout_project("https://git.minres.com/TGFS/TGC-COMPLIANCE.git", "master")
|
||||||
|
}
|
||||||
|
dir("TGC-GEN"){
|
||||||
|
checkout_project("https://git.minres.com/TGFS/TGC-GEN.git", "develop")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage("Generate cores and build TGC-ISS"){
|
||||||
|
steps {
|
||||||
|
sh '''
|
||||||
|
for core in TGC5A TGC5B TGC5D TGC5E TGC5F RV32GC; do
|
||||||
|
for backend in interp 'llvm' tcc asmjit; do
|
||||||
|
TGC-GEN/scripts/generate_iss.sh -o dbt-rise-tgc/ -c $core -b ${backend} TGC-GEN/CoreDSL/${core}.core_desc
|
||||||
|
done
|
||||||
|
done
|
||||||
|
for core in TGC6B TGC6C TGC6D TGC6E RV64GC; do
|
||||||
|
for backend in interp 'llvm' asmjit; do
|
||||||
|
TGC-GEN/scripts/generate_iss.sh -o dbt-rise-tgc/ -c $core -b ${backend} TGC-GEN/CoreDSL/${core}.core_desc
|
||||||
|
done
|
||||||
|
done
|
||||||
|
'''
|
||||||
|
sh 'conan profile detect --force'
|
||||||
|
sh 'rm -rf build'
|
||||||
|
sh 'cmake -S . -B build --preset Release -DWITH_ASMJIT=ON -DWITH_TCC=ON -DWITH_LLVM=OFF'
|
||||||
|
sh 'cmake --build build -j'
|
||||||
|
sh 'build/dbt-rise-tgc/tgc-sim --isa ?'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage("Run test suite") {
|
||||||
|
agent {
|
||||||
|
docker {
|
||||||
|
image 'git.minres.com/tooling/riscof_sail:latest'
|
||||||
|
args ' -e CONAN_USER_HOME=/var/jenkins_home/workspace/riscof_sail'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stages {
|
||||||
|
stage('ACT 32bit') {
|
||||||
|
matrix {
|
||||||
|
axes {
|
||||||
|
axis {
|
||||||
|
name 'CORE'
|
||||||
|
values 'TGC5A', 'TGC5B', 'TGC5C', 'TGC5D', 'TGC5E', 'TGC5F', 'RV32GC'
|
||||||
|
}
|
||||||
|
axis {
|
||||||
|
name 'BACKEND'
|
||||||
|
values 'interp', /*'llvm',*/ 'tcc', 'asmjit'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stages {
|
||||||
|
stage('Run riscof') {
|
||||||
|
steps {
|
||||||
|
sh "mkdir -p ${BACKEND}"
|
||||||
|
sh "python3 TGC-COMPLIANCE/run_act.py -core ${CORE} -sim build/dbt-rise-tgc/tgc-sim -w ${BACKEND} --backend ${BACKEND}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('ACT 64bit') {
|
||||||
|
matrix {
|
||||||
|
axes {
|
||||||
|
axis {
|
||||||
|
name 'CORE'
|
||||||
|
values 'TGC6B', 'TGC6C', 'TGC6D', 'TGC6E', 'RV64GC'
|
||||||
|
}
|
||||||
|
axis {
|
||||||
|
name 'BACKEND'
|
||||||
|
values 'interp', /*'llvm',*/ 'asmjit'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stages {
|
||||||
|
stage('Run riscof') {
|
||||||
|
steps {
|
||||||
|
sh "mkdir -p ${BACKEND}"
|
||||||
|
sh "python3 TGC-COMPLIANCE/run_act.py -core ${CORE} -sim build/dbt-rise-tgc/tgc-sim -w ${BACKEND} --backend ${BACKEND}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
29
LICENSE
Normal file
29
LICENSE
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
BSD 3-Clause License
|
||||||
|
|
||||||
|
Copyright (c) 2016, MINRES Technologies GmbH
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
* Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
19
Modulefile
19
Modulefile
@ -13,21 +13,10 @@ if { $distro == "CentOS" && ![info exists ::env(PROJECT)] && ![info exists ::env
|
|||||||
puts stderr "Don't forget to execute 'scl enable devtoolset-7 bash'"
|
puts stderr "Don't forget to execute 'scl enable devtoolset-7 bash'"
|
||||||
}
|
}
|
||||||
|
|
||||||
if {![info exists ::env(PROJECT)] && [file exists $::env(HOME)/.sdkman/candidates/java/11.0.9.hs-adpt/] != 1} {
|
module load tools/utilities
|
||||||
puts stderr "Please install java via 'sdk install java 11.0.9.hs-adpt'!"
|
module load tools/cmake
|
||||||
prereq java/11.0.9
|
module load tools/clang
|
||||||
} else {
|
module load tools/gcc-riscv64-unknown-elf/13
|
||||||
prepend-path PATH $::env(HOME)/.sdkman/candidates/java/11.0.9.hs-adpt/bin
|
|
||||||
}
|
|
||||||
|
|
||||||
if {![info exists ::env(PROJECT)] && [file exists $::env(HOME)/.sdkman/candidates/maven/3.6.3] != 1} {
|
|
||||||
puts stderr "Please install mvn via 'sdk install maven 3.6.3'!"
|
|
||||||
prereq maven/3.6.3
|
|
||||||
} else {
|
|
||||||
prepend-path PATH $::env(HOME)/.sdkman/candidates/sbt/1.4.4/bin
|
|
||||||
}
|
|
||||||
|
|
||||||
module load tools/cmake tools/gcc-riscv64/9.2.0
|
|
||||||
|
|
||||||
setenv PROJECT TGFS-ISS
|
setenv PROJECT TGFS-ISS
|
||||||
|
|
||||||
|
88
README.md
Normal file
88
README.md
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
# TGC-ISS
|
||||||
|
|
||||||
|
The ISS for the cores of The Good Folk Series (TGFS) of MINRES.
|
||||||
|
|
||||||
|
This ISS is based in DBT-RISE, a library to allow rapid ISS creation.
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
|
||||||
|
* you need to have a C++14 capable compiler, make or ninja, python, and cmake installed
|
||||||
|
> **Warning:** With the Usage of conan2 the LLVM backend became deprecated as there is no conan package available yet.
|
||||||
|
|
||||||
|
### common setup
|
||||||
|
|
||||||
|
* install conan.io (see also http://docs.conan.io/en/latest/installation.html):
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
pip3 install --user 'conan'
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Another option is to use a Python VENV to isolate the used models from the system.
|
||||||
|
In case of please run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
|
||||||
|
python -mvenv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
pip3 install conan
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Using conan for the first time you need to create a profile:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
|
||||||
|
conan profile new --detect default
|
||||||
|
conan remote add gitea https://git.minres.com/api/packages/Tooling/conan
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
* checkout source from git
|
||||||
|
|
||||||
|
```sh
|
||||||
|
|
||||||
|
git clone --recursive -b develop https://git.minres.com/TGFS/TGC-ISS.git
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Standalone (C++) build
|
||||||
|
|
||||||
|
* start an out-of-source build:
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
cd TGC-ISS
|
||||||
|
cmake --preset Debug -S . -B build/Debug
|
||||||
|
cmake --build build/Debug -j10
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Synopsys Platform Architect build
|
||||||
|
|
||||||
|
Assuming environment for Platform Architect is properly set up.
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
cd TGC-ISS/
|
||||||
|
export TGFS_INSTALL_ROOT=`pwd`/install
|
||||||
|
export SNPS_ENABLE_MEM_ON_DEMAND_IN_GENERIC_MEM=1
|
||||||
|
source $COWAREHOME/SLS/linux/setup.sh pae
|
||||||
|
export CC=$COWAREHOME/SLS/linux/common/bin/gcc
|
||||||
|
export CXX=$COWAREHOME/SLS/linux/common/bin/g++
|
||||||
|
cmake --preset Debug -S . -B build/PA -DUSE_CWR_SYSTEMC=ON \
|
||||||
|
-DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=${TGFS_INSTALL_ROOT}
|
||||||
|
cmake --build build/PA --target install -j16
|
||||||
|
|
||||||
|
```
|
||||||
|
The Synopsys PA installation requirements may vary on your system.
|
||||||
|
Now you may change to the directory dbt-rise-tgc/contrib to import the core model
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
cd dbt-rise-tgc/contrib
|
||||||
|
pct tgc_import.tcl
|
||||||
|
|
||||||
|
```
|
13
build.sh
Normal file
13
build.sh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
export TGFS_INSTALL_ROOT=`pwd`/install
|
||||||
|
module load tools/pa/T-2022.06
|
||||||
|
module load tools/cmake
|
||||||
|
export SNPS_ENABLE_MEM_ON_DEMAND_IN_GENERIC_MEM=1
|
||||||
|
export CC=$COWAREHOME/common/bin/gcc
|
||||||
|
export CXX=$COWAREHOME/common/bin/g++
|
||||||
|
cmake -S . -B build/PA -DCMAKE_BUILD_TYPE=Debug -DUSE_CWR_SYSTEMC=ON -DBUILD_SHARED_LIBS=ON \
|
||||||
|
-DCODEGEN=OFF -DCMAKE_INSTALL_PREFIX=${TGFS_INSTALL_ROOT}
|
||||||
|
cmake --build build/PA --target install -j16
|
||||||
|
#cd dbt-rise-tgc/contrib
|
||||||
|
# import the TGC core itself
|
||||||
|
#pct tgc_import.tcl
|
||||||
|
|
@ -1,110 +0,0 @@
|
|||||||
cmake_minimum_required(VERSION 3.11)
|
|
||||||
option(ENABLE_CODEGEN "Enable code generation for supported cores" ON)
|
|
||||||
|
|
||||||
set(ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
|
|
||||||
set(DBT_CORE_TGC_DIR ${ROOT_DIR}/tgfs)
|
|
||||||
|
|
||||||
#helper to setup code generation and generate outputs
|
|
||||||
set(GENERATOR_JAR ${ROOT_DIR}/coredsl/com.minres.coredsl.generator.repository/target/com.minres.coredsl.generator-2.0.0-SNAPSHOT.jar)
|
|
||||||
|
|
||||||
if(EXISTS ${ROOT_DIR}/coredsl/pom.xml AND NOT EXISTS ${GENERATOR_JAR})
|
|
||||||
execute_process(
|
|
||||||
COMMAND mvn package
|
|
||||||
WORKING_DIRECTORY ${ROOT_DIR}/coredsl
|
|
||||||
OUTPUT_VARIABLE StdOut
|
|
||||||
ERROR_VARIABLE StdErr
|
|
||||||
RESULT_VARIABLE Status
|
|
||||||
ERROR_QUIET)
|
|
||||||
if(Status AND NOT Status EQUAL 0)
|
|
||||||
message(STATUS "mvn package call failed: ${Status}, ${StdOut}, ${StdErr}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(JAVA_OPTS --add-modules ALL-SYSTEM --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.lang.annotation=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.lang.module=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.net.spi=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.nio.charset.spi=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.nio.file.attribute=ALL-UNNAMED --add-opens=java.base/java.nio.file.spi=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.security.acl=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.security.interfaces=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.security.spec=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.text.spi=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.time.chrono=ALL-UNNAMED --add-opens=java.base/java.time.format=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.time.temporal=ALL-UNNAMED --add-opens=java.base/java.time.zone=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.util.function=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.spi=ALL-UNNAMED
|
|
||||||
--add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED
|
|
||||||
--add-opens=java.datatransfer/java.awt.datatransfer=ALL-UNNAMED --add-opens=java.desktop/java.applet=ALL-UNNAMED
|
|
||||||
--add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/java.awt.color=ALL-UNNAMED
|
|
||||||
--add-opens=java.desktop/java.awt.desktop=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd=ALL-UNNAMED
|
|
||||||
--add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.event=ALL-UNNAMED
|
|
||||||
--add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/java.awt.geom=ALL-UNNAMED
|
|
||||||
--add-opens=java.desktop/java.awt.im=ALL-UNNAMED --add-opens=java.desktop/java.awt.im.spi=ALL-UNNAMED
|
|
||||||
--add-opens=java.desktop/java.awt.image=ALL-UNNAMED --add-opens=java.desktop/java.awt.image.renderable=ALL-UNNAMED
|
|
||||||
--add-opens=java.desktop/java.awt.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.print=ALL-UNNAMED
|
|
||||||
--add-opens=java.desktop/java.beans=ALL-UNNAMED --add-opens=java.desktop/java.beans.beancontext=ALL-UNNAMED
|
|
||||||
--add-opens=java.instrument/java.lang.instrument=ALL-UNNAMED --add-opens=java.logging/java.util.logging=ALL-UNNAMED
|
|
||||||
--add-opens=java.management/java.lang.management=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED
|
|
||||||
--add-opens=java.rmi/java.rmi=ALL-UNNAMED --add-opens=java.rmi/java.rmi.activation=ALL-UNNAMED
|
|
||||||
--add-opens=java.rmi/java.rmi.dgc=ALL-UNNAMED --add-opens=java.rmi/java.rmi.registry=ALL-UNNAMED
|
|
||||||
--add-opens=java.rmi/java.rmi.server=ALL-UNNAMED --add-opens=java.sql/java.sql=ALL-UNNAMED)
|
|
||||||
set(GENERATOR java ${JAVA_OPTS} -jar ${GENERATOR_JAR})
|
|
||||||
|
|
||||||
set(INPUT_DIR ${DBT_CORE_TGC_DIR}/gen_input)
|
|
||||||
set(REPO_DIR ${DBT_CORE_TGC_DIR}/gen_input/CoreDSL-Instruction-Set-Description)
|
|
||||||
set(TMPL_DIR ${DBT_CORE_TGC_DIR}/gen_input/templates/)
|
|
||||||
|
|
||||||
if(ENABLE_CODEGEN AND EXISTS ${GENERATOR_JAR})
|
|
||||||
macro(gen_coredsl CORE_NAME INPUT_FILE BACKEND)
|
|
||||||
message(STATUS "Adding generation steps for ${CORE_NAME} in ${DBT_CORE_TGC_DIR} for ${BACKEND}")
|
|
||||||
|
|
||||||
string(TOUPPER ${BACKEND} BE_UPPER)
|
|
||||||
string(TOLOWER ${CORE_NAME} CORE_NAMEL)
|
|
||||||
|
|
||||||
if(EXISTS ${DBT_CORE_TGC_DIR}/generate.sh AND NOT EXISTS ${DBT_CORE_TGC_DIR}/incl/iss/arch/${CORE_NAMEL}.h)
|
|
||||||
# make sure source file exist initially
|
|
||||||
execute_process(
|
|
||||||
COMMAND /bin/bash ${DBT_CORE_TGC_DIR}/../generate.sh $CORE_NAME $BACKEND
|
|
||||||
WORKING_DIRECTORY ${DBT_CORE_TGC_DIR}/..
|
|
||||||
RESULT_VARIABLE return_code)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND ${CORE_NAME}_MAPPING -m "${TMPL_DIR}/CORENAME.h.gtl:${DBT_CORE_TGC_DIR}/incl/iss/arch/${CORE_NAMEL}.h")
|
|
||||||
list(APPEND ${CORE_NAME}_MAPPING -m "${TMPL_DIR}/CORENAME.cpp.gtl:${DBT_CORE_TGC_DIR}/src/iss/${CORE_NAMEL}.cpp")
|
|
||||||
list(APPEND ${CORE_NAME}_MAPPING -m "${TMPL_DIR}/${BACKEND}/CORENAME.cpp.gtl:${DBT_CORE_TGC_DIR}/src/vm/interp/vm_${CORE_NAMEL}.cpp")
|
|
||||||
set(${CORE_NAME}_OUTPUT_FILES ${DBT_CORE_TGC_DIR}/incl/iss/arch/${CORE_NAMEL}.h ${DBT_CORE_TGC_DIR}/src/iss/${CORE_NAMEL}.cpp ${DBT_CORE_TGC_DIR}/src/vm/interp/vm_${CORE_NAMEL}.cpp)
|
|
||||||
#add_custom_command(
|
|
||||||
# COMMAND ${GENERATOR} -b ${BE_UPPER} -c ${CORE_NAME} -r ${REPO_DIR} ${${CORE_NAME}_MAPPING} ${INPUT_FILE}
|
|
||||||
# DEPENDS ${GENERATOR_JAR} ${INPUT_FILE} ${TMPL_DIR}/CORENAME.h.gtl ${TMPL_DIR}/CORENAME.cpp.gtl ${TMPL_DIR}/${BACKEND}/CORENAME.cpp.gtl
|
|
||||||
# OUTPUT ${${CORE_NAME}_OUTPUT_FILES}
|
|
||||||
# COMMENT "Generating code for ${CORE_NAME}."
|
|
||||||
# USES_TERMINAL VERBATIM
|
|
||||||
#)
|
|
||||||
#add_custom_target(${CORE_NAME}_cpp DEPENDS ${${CORE_NAME}_OUTPUT_FILES})
|
|
||||||
add_custom_target(${CORE_NAME}_cpp
|
|
||||||
COMMAND ${GENERATOR} -b ${BE_UPPER} -c ${CORE_NAME} -r ${REPO_DIR} ${${CORE_NAME}_MAPPING} ${INPUT_FILE}
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
||||||
COMMENT "Generating ISS sources"
|
|
||||||
BYPRODUCTS ${${CORE_NAME}_OUTPUT_FILES}
|
|
||||||
USES_TERMINAL
|
|
||||||
)
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${GENERATOR} -b ${BE_UPPER} -c ${CORE_NAME} -r ${REPO_DIR} ${${CORE_NAME}_MAPPING} ${INPUT_FILE}
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
||||||
RESULT_VARIABLE return_code)
|
|
||||||
endmacro()
|
|
||||||
else()
|
|
||||||
macro(gen_coredsl CORE_NAME INPUT_FILE BACKEND)
|
|
||||||
add_custom_target(${CORE_NAME}_cpp)
|
|
||||||
message(STATUS "Not adding generation steps for ${CORE_NAME}(${ENABLE_CODEGEN}, ${GENERATOR_JAR})")
|
|
||||||
if(NOT EXISTS ${GENERATOR_JAR})
|
|
||||||
message(STATUS "CoreDSL Generator ${GENERATOR_JAR} does not exists")
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
endif()
|
|
107
cmake/ConanInline.cmake
Normal file
107
cmake/ConanInline.cmake
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
|
||||||
|
set(CONAN_CMAKE_LIST_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
macro(conan_check)
|
||||||
|
# for backwards compatibility
|
||||||
|
cmake_parse_arguments(MARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||||
|
|
||||||
|
find_program(CONAN conan)
|
||||||
|
if(NOT EXISTS ${CONAN})
|
||||||
|
message(FATAL_ERROR "Conan is required. Please see README.md")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
execute_process(COMMAND ${CONAN} --version
|
||||||
|
OUTPUT_VARIABLE CONAN_VERSION_OUTPUT)
|
||||||
|
string(REGEX MATCHALL "[0-9.]+" CONAN_VERSION ${CONAN_VERSION_OUTPUT})
|
||||||
|
if (NOT (CONAN_VERSION VERSION_GREATER_EQUAL 1.36.0))
|
||||||
|
message(FATAL_ERROR "Please upgrade your conan to a version greater or equal 1.36")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT EXISTS ${CONAN_CMAKE_LIST_DIR}/conan.cmake)
|
||||||
|
message("Downloading conan.cmake to ${CONAN_CMAKE_LIST_DIR}")
|
||||||
|
set(URL https://raw.githubusercontent.com/conan-io/cmake-conan/0.18.1/conan.cmake)
|
||||||
|
file(DOWNLOAD ${URL} ${CONAN_CMAKE_LIST_DIR}/conan.cmake TIMEOUT 60 STATUS DOWNLOAD_STATUS)
|
||||||
|
list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
|
||||||
|
list(GET DOWNLOAD_STATUS 1 ERROR_MESSAGE)
|
||||||
|
if(NOT (${STATUS_CODE} EQUAL 0))
|
||||||
|
# Exit CMake if the download failed, printing the error message.
|
||||||
|
message(FATAL_ERROR "Error occurred during download: ${ERROR_MESSAGE}")
|
||||||
|
endif()
|
||||||
|
if(NOT EXISTS ${CONAN_CMAKE_LIST_DIR}/conan.cmake)
|
||||||
|
message(FATAL_ERROR "Could not download conan.cmake. Please check your internet connection or proxy settings")
|
||||||
|
endif()
|
||||||
|
file (SIZE ${CONAN_CMAKE_LIST_DIR}/conan.cmake CONAN_CMAKE_SIZE)
|
||||||
|
if(${CONAN_CMAKE_SIZE} EQUAL 0)
|
||||||
|
message(FATAL_ERROR "Could not download conan.cmake. Please check your internet connection or proxy settings")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
|
||||||
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
include(${CONAN_CMAKE_LIST_DIR}/conan.cmake)
|
||||||
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_BINARY_DIR})
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
macro(conan_setup)
|
||||||
|
set(options TARGETS)
|
||||||
|
cmake_parse_arguments(MARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||||
|
|
||||||
|
|
||||||
|
set(conanfile_cmake_paths ${CMAKE_BINARY_DIR}/conan_paths.cmake)
|
||||||
|
|
||||||
|
set(conanfile_cmake ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
|
||||||
|
if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo.cmake)
|
||||||
|
set(conanfile_cmake ${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo.cmake)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(EXISTS "${conanfile_cmake_paths}")
|
||||||
|
include(${conanfile_cmake_paths})
|
||||||
|
elseif(EXISTS "${conanfile_cmake}")
|
||||||
|
include(${conanfile_cmake})
|
||||||
|
if( MARGS_TARGETS)
|
||||||
|
conan_basic_setup(TARGETS)
|
||||||
|
else()
|
||||||
|
conan_basic_setup()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
function(conan_configure)
|
||||||
|
conan_cmake_generate_conanfile(OFF ${ARGV})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
macro(conan_install)
|
||||||
|
set(options BUILD_TYPE BUILD)
|
||||||
|
set(oneValueArgs BUILD_TYPE BUILD)
|
||||||
|
cmake_parse_arguments(MARGS "" "${oneValueArgs}" "" ${ARGN} )
|
||||||
|
if(MARGS_BUILD_TYPE)
|
||||||
|
conan_cmake_autodetect(settings BUILD_TYPE ${MARGS_BUILD_TYPE})
|
||||||
|
else()
|
||||||
|
conan_cmake_autodetect(settings BUILD_TYPE)
|
||||||
|
endif()
|
||||||
|
if(CMAKE_CXX_STANDARD)
|
||||||
|
list(APPEND settings compiler.cppstd=${CMAKE_CXX_STANDARD})
|
||||||
|
endif()
|
||||||
|
if(USE_NCSC_SYSTEMC)
|
||||||
|
list(APPEND settings compiler.libcxx=libstdc++)
|
||||||
|
endif()
|
||||||
|
if (NOT "$ENV{CONAN_PROFILE_NAME}" STREQUAL "")
|
||||||
|
set(CONAN_PROFILE "$ENV{CONAN_PROFILE_NAME}" CACHE INTERNAL "Copied from environment variable")
|
||||||
|
else()
|
||||||
|
set(CONAN_PROFILE "default" CACHE INTERNAL "Copied from environment variable")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(MARGS_BUILD)
|
||||||
|
conan_cmake_install(PATH_OR_REFERENCE .
|
||||||
|
BUILD ${MARGS_BUILD}
|
||||||
|
PROFILE_BUILD ${CONAN_PROFILE}
|
||||||
|
SETTINGS ${settings})
|
||||||
|
else()
|
||||||
|
conan_cmake_install(PATH_OR_REFERENCE .
|
||||||
|
BUILD missing
|
||||||
|
PROFILE_BUILD ${CONAN_PROFILE}
|
||||||
|
SETTINGS ${settings})
|
||||||
|
endif()
|
||||||
|
endmacro()
|
34
cmake/FindClangFormat.cmake
Normal file
34
cmake/FindClangFormat.cmake
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# Find Clang format
|
||||||
|
#
|
||||||
|
#
|
||||||
|
if(NOT CLANG_FORMAT_BIN_NAME)
|
||||||
|
set(CLANG_FORMAT_BIN_NAME clang-format)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# if custom path check there first
|
||||||
|
if(CLANG_FORMAT_ROOT_DIR)
|
||||||
|
find_program(CLANG_FORMAT_BIN
|
||||||
|
NAMES
|
||||||
|
${CLANG_FORMAT_BIN_NAME}
|
||||||
|
PATHS
|
||||||
|
"${CLANG_FORMAT_ROOT_DIR}"
|
||||||
|
NO_DEFAULT_PATH)
|
||||||
|
else()
|
||||||
|
find_program(CLANG_FORMAT_BIN NAMES ${CLANG_FORMAT_BIN_NAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
|
||||||
|
ClangFormat
|
||||||
|
DEFAULT_MSG
|
||||||
|
CLANG_FORMAT_BIN)
|
||||||
|
|
||||||
|
mark_as_advanced(
|
||||||
|
CLANG_FORMAT_BIN)
|
||||||
|
|
||||||
|
if(ClangFormat_FOUND)
|
||||||
|
# A CMake script to find all source files and setup clang-format targets for them
|
||||||
|
include(clang-format)
|
||||||
|
else()
|
||||||
|
message("clang-format not found. Not setting up format targets")
|
||||||
|
endif()
|
40
cmake/clang-format.cmake
Normal file
40
cmake/clang-format.cmake
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# additional target to perform clang-format run, requires clang-format
|
||||||
|
|
||||||
|
set(CLANG_FORMAT_CXX_FILE_EXTENSIONS ${CLANG_FORMAT_CXX_FILE_EXTENSIONS} *.cpp *.h *.cxx *.hxx *.hpp *.cc *.ipp)
|
||||||
|
file(GLOB_RECURSE ALL_SOURCE_FILES ${CLANG_FORMAT_CXX_FILE_EXTENSIONS})
|
||||||
|
|
||||||
|
# Don't include some common build folders
|
||||||
|
set(CLANG_FORMAT_EXCLUDE_PATTERNS ${CLANG_FORMAT_EXCLUDE_PATTERNS} "/CMakeFiles/" "cmake")
|
||||||
|
|
||||||
|
# get all project files file
|
||||||
|
foreach (SOURCE_FILE ${ALL_SOURCE_FILES})
|
||||||
|
foreach (EXCLUDE_PATTERN ${CLANG_FORMAT_EXCLUDE_PATTERNS})
|
||||||
|
string(FIND ${SOURCE_FILE} ${EXCLUDE_PATTERN} EXCLUDE_FOUND)
|
||||||
|
if (NOT ${EXCLUDE_FOUND} EQUAL -1)
|
||||||
|
list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE})
|
||||||
|
endif ()
|
||||||
|
endforeach ()
|
||||||
|
endforeach ()
|
||||||
|
|
||||||
|
set(FORMAT_TARGET_NAME format)
|
||||||
|
if(NOT CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
|
||||||
|
set(FORMAT_TARGET_NAME format-${PROJECT_NAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_custom_target(${FORMAT_TARGET_NAME}
|
||||||
|
COMMENT "Running clang-format to change files"
|
||||||
|
COMMAND ${CLANG_FORMAT_BIN} -style=file -i ${ALL_SOURCE_FILES}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
add_custom_target(${FORMAT_TARGET_NAME}-check
|
||||||
|
COMMENT "Checking clang-format changes"
|
||||||
|
# Use ! to negate the result for correct output
|
||||||
|
COMMAND !
|
||||||
|
${CLANG_FORMAT_BIN}
|
||||||
|
-style=file
|
||||||
|
-output-replacements-xml
|
||||||
|
${ALL_SOURCE_FILES}
|
||||||
|
| grep -q "replacement offset"
|
||||||
|
)
|
676
cmake/conan_provider.cmake
Normal file
676
cmake/conan_provider.cmake
Normal file
@ -0,0 +1,676 @@
|
|||||||
|
# The MIT License (MIT)
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 JFrog
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
|
set(CONAN_MINIMUM_VERSION 2.0.5)
|
||||||
|
|
||||||
|
# Create a new policy scope and set the minimum required cmake version so the
|
||||||
|
# features behind a policy setting like if(... IN_LIST ...) behaves as expected
|
||||||
|
# even if the parent project does not specify a minimum cmake version or a minimum
|
||||||
|
# version less than this module requires (e.g. 3.0) before the first project() call.
|
||||||
|
# (see: https://cmake.org/cmake/help/latest/variable/CMAKE_PROJECT_TOP_LEVEL_INCLUDES.html)
|
||||||
|
#
|
||||||
|
# The policy-affecting calls like cmake_policy(SET...) or `cmake_minimum_required` only
|
||||||
|
# affects the current policy scope, i.e. between the PUSH and POP in this case.
|
||||||
|
#
|
||||||
|
# https://cmake.org/cmake/help/book/mastering-cmake/chapter/Policies.html#the-policy-stack
|
||||||
|
cmake_policy(PUSH)
|
||||||
|
cmake_minimum_required(VERSION 3.24)
|
||||||
|
|
||||||
|
|
||||||
|
function(detect_os os os_api_level os_sdk os_subsystem os_version)
|
||||||
|
# it could be cross compilation
|
||||||
|
message(STATUS "CMake-Conan: cmake_system_name=${CMAKE_SYSTEM_NAME}")
|
||||||
|
if(CMAKE_SYSTEM_NAME AND NOT CMAKE_SYSTEM_NAME STREQUAL "Generic")
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
set(${os} Macos PARENT_SCOPE)
|
||||||
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "QNX")
|
||||||
|
set(${os} Neutrino PARENT_SCOPE)
|
||||||
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "CYGWIN")
|
||||||
|
set(${os} Windows PARENT_SCOPE)
|
||||||
|
set(${os_subsystem} cygwin PARENT_SCOPE)
|
||||||
|
elseif(CMAKE_SYSTEM_NAME MATCHES "^MSYS")
|
||||||
|
set(${os} Windows PARENT_SCOPE)
|
||||||
|
set(${os_subsystem} msys2 PARENT_SCOPE)
|
||||||
|
else()
|
||||||
|
set(${os} ${CMAKE_SYSTEM_NAME} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||||
|
if(DEFINED ANDROID_PLATFORM)
|
||||||
|
string(REGEX MATCH "[0-9]+" _os_api_level ${ANDROID_PLATFORM})
|
||||||
|
elseif(DEFINED CMAKE_SYSTEM_VERSION)
|
||||||
|
set(_os_api_level ${CMAKE_SYSTEM_VERSION})
|
||||||
|
endif()
|
||||||
|
message(STATUS "CMake-Conan: android api level=${_os_api_level}")
|
||||||
|
set(${os_api_level} ${_os_api_level} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
if(CMAKE_SYSTEM_NAME MATCHES "Darwin|iOS|tvOS|watchOS")
|
||||||
|
# CMAKE_OSX_SYSROOT contains the full path to the SDK for MakeFile/Ninja
|
||||||
|
# generators, but just has the original input string for Xcode.
|
||||||
|
if(NOT IS_DIRECTORY ${CMAKE_OSX_SYSROOT})
|
||||||
|
set(_os_sdk ${CMAKE_OSX_SYSROOT})
|
||||||
|
else()
|
||||||
|
if(CMAKE_OSX_SYSROOT MATCHES Simulator)
|
||||||
|
set(apple_platform_suffix simulator)
|
||||||
|
else()
|
||||||
|
set(apple_platform_suffix os)
|
||||||
|
endif()
|
||||||
|
if(CMAKE_OSX_SYSROOT MATCHES AppleTV)
|
||||||
|
set(_os_sdk "appletv${apple_platform_suffix}")
|
||||||
|
elseif(CMAKE_OSX_SYSROOT MATCHES iPhone)
|
||||||
|
set(_os_sdk "iphone${apple_platform_suffix}")
|
||||||
|
elseif(CMAKE_OSX_SYSROOT MATCHES Watch)
|
||||||
|
set(_os_sdk "watch${apple_platform_suffix}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(DEFINED os_sdk)
|
||||||
|
message(STATUS "CMake-Conan: cmake_osx_sysroot=${CMAKE_OSX_SYSROOT}")
|
||||||
|
set(${os_sdk} ${_os_sdk} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
if(DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||||
|
message(STATUS "CMake-Conan: cmake_osx_deployment_target=${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||||
|
set(${os_version} ${CMAKE_OSX_DEPLOYMENT_TARGET} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(detect_arch arch)
|
||||||
|
# CMAKE_OSX_ARCHITECTURES can contain multiple architectures, but Conan only supports one.
|
||||||
|
# Therefore this code only finds one. If the recipes support multiple architectures, the
|
||||||
|
# build will work. Otherwise, there will be a linker error for the missing architecture(s).
|
||||||
|
if(DEFINED CMAKE_OSX_ARCHITECTURES)
|
||||||
|
string(REPLACE " " ";" apple_arch_list "${CMAKE_OSX_ARCHITECTURES}")
|
||||||
|
list(LENGTH apple_arch_list apple_arch_count)
|
||||||
|
if(apple_arch_count GREATER 1)
|
||||||
|
message(WARNING "CMake-Conan: Multiple architectures detected, this will only work if Conan recipe(s) produce fat binaries.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(CMAKE_SYSTEM_NAME MATCHES "Darwin|iOS|tvOS|watchOS" AND NOT CMAKE_OSX_ARCHITECTURES STREQUAL "")
|
||||||
|
set(host_arch ${CMAKE_OSX_ARCHITECTURES})
|
||||||
|
elseif(MSVC)
|
||||||
|
set(host_arch ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID})
|
||||||
|
else()
|
||||||
|
set(host_arch ${CMAKE_SYSTEM_PROCESSOR})
|
||||||
|
endif()
|
||||||
|
if(host_arch MATCHES "aarch64|arm64|ARM64")
|
||||||
|
set(_arch armv8)
|
||||||
|
elseif(host_arch MATCHES "armv7|armv7-a|armv7l|ARMV7")
|
||||||
|
set(_arch armv7)
|
||||||
|
elseif(host_arch MATCHES armv7s)
|
||||||
|
set(_arch armv7s)
|
||||||
|
elseif(host_arch MATCHES "i686|i386|X86")
|
||||||
|
set(_arch x86)
|
||||||
|
elseif(host_arch MATCHES "AMD64|amd64|x86_64|x64")
|
||||||
|
set(_arch x86_64)
|
||||||
|
endif()
|
||||||
|
message(STATUS "CMake-Conan: cmake_system_processor=${_arch}")
|
||||||
|
set(${arch} ${_arch} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(detect_cxx_standard cxx_standard)
|
||||||
|
set(${cxx_standard} ${CMAKE_CXX_STANDARD} PARENT_SCOPE)
|
||||||
|
if(CMAKE_CXX_EXTENSIONS)
|
||||||
|
set(${cxx_standard} "gnu${CMAKE_CXX_STANDARD}" PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
macro(detect_gnu_libstdcxx)
|
||||||
|
# _conan_is_gnu_libstdcxx true if GNU libstdc++
|
||||||
|
check_cxx_source_compiles("
|
||||||
|
#include <cstddef>
|
||||||
|
#if !defined(__GLIBCXX__) && !defined(__GLIBCPP__)
|
||||||
|
static_assert(false);
|
||||||
|
#endif
|
||||||
|
int main(){}" _conan_is_gnu_libstdcxx)
|
||||||
|
|
||||||
|
# _conan_gnu_libstdcxx_is_cxx11_abi true if C++11 ABI
|
||||||
|
check_cxx_source_compiles("
|
||||||
|
#include <string>
|
||||||
|
static_assert(sizeof(std::string) != sizeof(void*), \"using libstdc++\");
|
||||||
|
int main () {}" _conan_gnu_libstdcxx_is_cxx11_abi)
|
||||||
|
|
||||||
|
set(_conan_gnu_libstdcxx_suffix "")
|
||||||
|
if(_conan_gnu_libstdcxx_is_cxx11_abi)
|
||||||
|
set(_conan_gnu_libstdcxx_suffix "11")
|
||||||
|
endif()
|
||||||
|
unset (_conan_gnu_libstdcxx_is_cxx11_abi)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
|
macro(detect_libcxx)
|
||||||
|
# _conan_is_libcxx true if LLVM libc++
|
||||||
|
check_cxx_source_compiles("
|
||||||
|
#include <cstddef>
|
||||||
|
#if !defined(_LIBCPP_VERSION)
|
||||||
|
static_assert(false);
|
||||||
|
#endif
|
||||||
|
int main(){}" _conan_is_libcxx)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
|
function(detect_lib_cxx lib_cxx)
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||||
|
message(STATUS "CMake-Conan: android_stl=${CMAKE_ANDROID_STL_TYPE}")
|
||||||
|
set(${lib_cxx} ${CMAKE_ANDROID_STL_TYPE} PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(CheckCXXSourceCompiles)
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||||
|
detect_gnu_libstdcxx()
|
||||||
|
set(${lib_cxx} "libstdc++${_conan_gnu_libstdcxx_suffix}" PARENT_SCOPE)
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
|
||||||
|
set(${lib_cxx} "libc++" PARENT_SCOPE)
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||||
|
# Check for libc++
|
||||||
|
detect_libcxx()
|
||||||
|
if(_conan_is_libcxx)
|
||||||
|
set(${lib_cxx} "libc++" PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Check for libstdc++
|
||||||
|
detect_gnu_libstdcxx()
|
||||||
|
if(_conan_is_gnu_libstdcxx)
|
||||||
|
set(${lib_cxx} "libstdc++${_conan_gnu_libstdcxx_suffix}" PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# TODO: it would be an error if we reach this point
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||||
|
# Do nothing - compiler.runtime and compiler.runtime_type
|
||||||
|
# should be handled separately: https://github.com/conan-io/cmake-conan/pull/516
|
||||||
|
return()
|
||||||
|
else()
|
||||||
|
# TODO: unable to determine, ask user to provide a full profile file instead
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(detect_compiler compiler compiler_version compiler_runtime compiler_runtime_type)
|
||||||
|
if(DEFINED CMAKE_CXX_COMPILER_ID)
|
||||||
|
set(_compiler ${CMAKE_CXX_COMPILER_ID})
|
||||||
|
set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT DEFINED CMAKE_C_COMPILER_ID)
|
||||||
|
message(FATAL_ERROR "C or C++ compiler not defined")
|
||||||
|
endif()
|
||||||
|
set(_compiler ${CMAKE_C_COMPILER_ID})
|
||||||
|
set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "CMake-Conan: CMake compiler=${_compiler}")
|
||||||
|
message(STATUS "CMake-Conan: CMake compiler version=${_compiler_version}")
|
||||||
|
|
||||||
|
if(_compiler MATCHES MSVC)
|
||||||
|
set(_compiler "msvc")
|
||||||
|
string(SUBSTRING ${MSVC_VERSION} 0 3 _compiler_version)
|
||||||
|
# Configure compiler.runtime and compiler.runtime_type settings for MSVC
|
||||||
|
if(CMAKE_MSVC_RUNTIME_LIBRARY)
|
||||||
|
set(_msvc_runtime_library ${CMAKE_MSVC_RUNTIME_LIBRARY})
|
||||||
|
else()
|
||||||
|
set(_msvc_runtime_library MultiThreaded$<$<CONFIG:Debug>:Debug>DLL) # default value documented by CMake
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_KNOWN_MSVC_RUNTIME_VALUES "")
|
||||||
|
list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreaded MultiThreadedDLL)
|
||||||
|
list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreadedDebug MultiThreadedDebugDLL)
|
||||||
|
list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreaded$<$<CONFIG:Debug>:Debug> MultiThreaded$<$<CONFIG:Debug>:Debug>DLL)
|
||||||
|
|
||||||
|
# only accept the 6 possible values, otherwise we don't don't know to map this
|
||||||
|
if(NOT _msvc_runtime_library IN_LIST _KNOWN_MSVC_RUNTIME_VALUES)
|
||||||
|
message(FATAL_ERROR "CMake-Conan: unable to map MSVC runtime: ${_msvc_runtime_library} to Conan settings")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Runtime is "dynamic" in all cases if it ends in DLL
|
||||||
|
if(_msvc_runtime_library MATCHES ".*DLL$")
|
||||||
|
set(_compiler_runtime "dynamic")
|
||||||
|
else()
|
||||||
|
set(_compiler_runtime "static")
|
||||||
|
endif()
|
||||||
|
message(STATUS "CMake-Conan: CMake compiler.runtime=${_compiler_runtime}")
|
||||||
|
|
||||||
|
# Only define compiler.runtime_type when explicitly requested
|
||||||
|
# If a generator expression is used, let Conan handle it conditional on build_type
|
||||||
|
if(NOT _msvc_runtime_library MATCHES "<CONFIG:Debug>:Debug>")
|
||||||
|
if(_msvc_runtime_library MATCHES "Debug")
|
||||||
|
set(_compiler_runtime_type "Debug")
|
||||||
|
else()
|
||||||
|
set(_compiler_runtime_type "Release")
|
||||||
|
endif()
|
||||||
|
message(STATUS "CMake-Conan: CMake compiler.runtime_type=${_compiler_runtime_type}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
unset(_KNOWN_MSVC_RUNTIME_VALUES)
|
||||||
|
|
||||||
|
elseif(_compiler MATCHES AppleClang)
|
||||||
|
set(_compiler "apple-clang")
|
||||||
|
string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION})
|
||||||
|
list(GET VERSION_LIST 0 _compiler_version)
|
||||||
|
elseif(_compiler MATCHES Clang)
|
||||||
|
set(_compiler "clang")
|
||||||
|
string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION})
|
||||||
|
list(GET VERSION_LIST 0 _compiler_version)
|
||||||
|
elseif(_compiler MATCHES GNU)
|
||||||
|
set(_compiler "gcc")
|
||||||
|
string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION})
|
||||||
|
list(GET VERSION_LIST 0 _compiler_version)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "CMake-Conan: [settings] compiler=${_compiler}")
|
||||||
|
message(STATUS "CMake-Conan: [settings] compiler.version=${_compiler_version}")
|
||||||
|
if (_compiler_runtime)
|
||||||
|
message(STATUS "CMake-Conan: [settings] compiler.runtime=${_compiler_runtime}")
|
||||||
|
endif()
|
||||||
|
if (_compiler_runtime_type)
|
||||||
|
message(STATUS "CMake-Conan: [settings] compiler.runtime_type=${_compiler_runtime_type}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(${compiler} ${_compiler} PARENT_SCOPE)
|
||||||
|
set(${compiler_version} ${_compiler_version} PARENT_SCOPE)
|
||||||
|
set(${compiler_runtime} ${_compiler_runtime} PARENT_SCOPE)
|
||||||
|
set(${compiler_runtime_type} ${_compiler_runtime_type} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(detect_build_type build_type)
|
||||||
|
get_property(multiconfig_generator GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
if(NOT multiconfig_generator)
|
||||||
|
# Only set when we know we are in a single-configuration generator
|
||||||
|
# Note: we may want to fail early if `CMAKE_BUILD_TYPE` is not defined
|
||||||
|
set(${build_type} ${CMAKE_BUILD_TYPE} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
macro(set_conan_compiler_if_appleclang lang command output_variable)
|
||||||
|
if(CMAKE_${lang}_COMPILER_ID STREQUAL "AppleClang")
|
||||||
|
execute_process(COMMAND xcrun --find ${command}
|
||||||
|
OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
cmake_path(GET _xcrun_out PARENT_PATH _xcrun_toolchain_path)
|
||||||
|
cmake_path(GET CMAKE_${lang}_COMPILER PARENT_PATH _compiler_parent_path)
|
||||||
|
if ("${_xcrun_toolchain_path}" STREQUAL "${_compiler_parent_path}")
|
||||||
|
set(${output_variable} "")
|
||||||
|
endif()
|
||||||
|
unset(_xcrun_out)
|
||||||
|
unset(_xcrun_toolchain_path)
|
||||||
|
unset(_compiler_parent_path)
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
|
macro(append_compiler_executables_configuration)
|
||||||
|
set(_conan_c_compiler "")
|
||||||
|
set(_conan_cpp_compiler "")
|
||||||
|
set(_conan_rc_compiler "")
|
||||||
|
set(_conan_compilers_list "")
|
||||||
|
if(CMAKE_C_COMPILER)
|
||||||
|
set(_conan_c_compiler "\"c\":\"${CMAKE_C_COMPILER}\"")
|
||||||
|
set_conan_compiler_if_appleclang(C cc _conan_c_compiler)
|
||||||
|
list(APPEND _conan_compilers_list ${_conan_c_compiler})
|
||||||
|
else()
|
||||||
|
message(WARNING "CMake-Conan: The C compiler is not defined. "
|
||||||
|
"Please define CMAKE_C_COMPILER or enable the C language.")
|
||||||
|
endif()
|
||||||
|
if(CMAKE_CXX_COMPILER)
|
||||||
|
set(_conan_cpp_compiler "\"cpp\":\"${CMAKE_CXX_COMPILER}\"")
|
||||||
|
set_conan_compiler_if_appleclang(CXX c++ _conan_cpp_compiler)
|
||||||
|
list(APPEND _conan_compilers_list ${_conan_cpp_compiler})
|
||||||
|
else()
|
||||||
|
message(WARNING "CMake-Conan: The C++ compiler is not defined. "
|
||||||
|
"Please define CMAKE_CXX_COMPILER or enable the C++ language.")
|
||||||
|
endif()
|
||||||
|
if(CMAKE_RC_COMPILER)
|
||||||
|
set(_conan_rc_compiler "\"rc\":\"${CMAKE_RC_COMPILER}\"")
|
||||||
|
list(APPEND _conan_compilers_list ${_conan_rc_compiler})
|
||||||
|
# Not necessary to warn if RC not defined
|
||||||
|
endif()
|
||||||
|
if(NOT "x${_conan_compilers_list}" STREQUAL "x")
|
||||||
|
string(REPLACE ";" "," _conan_compilers_list "${_conan_compilers_list}")
|
||||||
|
string(APPEND profile "tools.build:compiler_executables={${_conan_compilers_list}}\n")
|
||||||
|
endif()
|
||||||
|
unset(_conan_c_compiler)
|
||||||
|
unset(_conan_cpp_compiler)
|
||||||
|
unset(_conan_rc_compiler)
|
||||||
|
unset(_conan_compilers_list)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
|
function(detect_host_profile output_file)
|
||||||
|
detect_os(os os_api_level os_sdk os_subsystem os_version)
|
||||||
|
detect_arch(arch)
|
||||||
|
detect_compiler(compiler compiler_version compiler_runtime compiler_runtime_type)
|
||||||
|
detect_cxx_standard(compiler_cppstd)
|
||||||
|
detect_lib_cxx(compiler_libcxx)
|
||||||
|
detect_build_type(build_type)
|
||||||
|
|
||||||
|
set(profile "")
|
||||||
|
string(APPEND profile "[settings]\n")
|
||||||
|
if(arch)
|
||||||
|
string(APPEND profile arch=${arch} "\n")
|
||||||
|
endif()
|
||||||
|
if(os)
|
||||||
|
string(APPEND profile os=${os} "\n")
|
||||||
|
endif()
|
||||||
|
if(os_api_level)
|
||||||
|
string(APPEND profile os.api_level=${os_api_level} "\n")
|
||||||
|
endif()
|
||||||
|
if(os_version)
|
||||||
|
string(APPEND profile os.version=${os_version} "\n")
|
||||||
|
endif()
|
||||||
|
if(os_sdk)
|
||||||
|
string(APPEND profile os.sdk=${os_sdk} "\n")
|
||||||
|
endif()
|
||||||
|
if(os_subsystem)
|
||||||
|
string(APPEND profile os.subsystem=${os_subsystem} "\n")
|
||||||
|
endif()
|
||||||
|
if(compiler)
|
||||||
|
string(APPEND profile compiler=${compiler} "\n")
|
||||||
|
endif()
|
||||||
|
if(compiler_version)
|
||||||
|
string(APPEND profile compiler.version=${compiler_version} "\n")
|
||||||
|
endif()
|
||||||
|
if(compiler_runtime)
|
||||||
|
string(APPEND profile compiler.runtime=${compiler_runtime} "\n")
|
||||||
|
endif()
|
||||||
|
if(compiler_runtime_type)
|
||||||
|
string(APPEND profile compiler.runtime_type=${compiler_runtime_type} "\n")
|
||||||
|
endif()
|
||||||
|
if(compiler_cppstd)
|
||||||
|
string(APPEND profile compiler.cppstd=${compiler_cppstd} "\n")
|
||||||
|
endif()
|
||||||
|
if(compiler_libcxx)
|
||||||
|
string(APPEND profile compiler.libcxx=${compiler_libcxx} "\n")
|
||||||
|
endif()
|
||||||
|
if(build_type)
|
||||||
|
string(APPEND profile "build_type=${build_type}\n")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED output_file)
|
||||||
|
set(file_name "${CMAKE_BINARY_DIR}/profile")
|
||||||
|
else()
|
||||||
|
set(file_name ${output_file})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(APPEND profile "[conf]\n")
|
||||||
|
string(APPEND profile "tools.cmake.cmaketoolchain:generator=${CMAKE_GENERATOR}\n")
|
||||||
|
|
||||||
|
# propagate compilers via profile
|
||||||
|
append_compiler_executables_configuration()
|
||||||
|
|
||||||
|
if(os STREQUAL "Android")
|
||||||
|
string(APPEND profile "tools.android:ndk_path=${CMAKE_ANDROID_NDK}\n")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "CMake-Conan: Creating profile ${file_name}")
|
||||||
|
file(WRITE ${file_name} ${profile})
|
||||||
|
message(STATUS "CMake-Conan: Profile: \n${profile}")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(conan_profile_detect_default)
|
||||||
|
message(STATUS "CMake-Conan: Checking if a default profile exists")
|
||||||
|
execute_process(COMMAND ${CONAN_COMMAND} profile path default
|
||||||
|
RESULT_VARIABLE return_code
|
||||||
|
OUTPUT_VARIABLE conan_stdout
|
||||||
|
ERROR_VARIABLE conan_stderr
|
||||||
|
ECHO_ERROR_VARIABLE # show the text output regardless
|
||||||
|
ECHO_OUTPUT_VARIABLE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
if(NOT ${return_code} EQUAL "0")
|
||||||
|
message(STATUS "CMake-Conan: The default profile doesn't exist, detecting it.")
|
||||||
|
execute_process(COMMAND ${CONAN_COMMAND} profile detect
|
||||||
|
RESULT_VARIABLE return_code
|
||||||
|
OUTPUT_VARIABLE conan_stdout
|
||||||
|
ERROR_VARIABLE conan_stderr
|
||||||
|
ECHO_ERROR_VARIABLE # show the text output regardless
|
||||||
|
ECHO_OUTPUT_VARIABLE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(conan_install)
|
||||||
|
cmake_parse_arguments(ARGS conan_args ${ARGN})
|
||||||
|
set(conan_output_folder ${CMAKE_BINARY_DIR}/conan)
|
||||||
|
# Invoke "conan install" with the provided arguments
|
||||||
|
set(conan_args ${conan_args} -of=${conan_output_folder})
|
||||||
|
message(STATUS "CMake-Conan: conan install ${CMAKE_SOURCE_DIR} ${conan_args} ${ARGN}")
|
||||||
|
|
||||||
|
|
||||||
|
# In case there was not a valid cmake executable in the PATH, we inject the
|
||||||
|
# same we used to invoke the provider to the PATH
|
||||||
|
if(DEFINED PATH_TO_CMAKE_BIN)
|
||||||
|
set(old_path $ENV{PATH})
|
||||||
|
set(ENV{PATH} "$ENV{PATH}:${PATH_TO_CMAKE_BIN}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(COMMAND ${CONAN_COMMAND} install ${CMAKE_SOURCE_DIR} ${conan_args} ${ARGN} --format=json
|
||||||
|
RESULT_VARIABLE return_code
|
||||||
|
OUTPUT_VARIABLE conan_stdout
|
||||||
|
ERROR_VARIABLE conan_stderr
|
||||||
|
ECHO_ERROR_VARIABLE # show the text output regardless
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
if(DEFINED PATH_TO_CMAKE_BIN)
|
||||||
|
set(ENV{PATH} "${old_path}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT "${return_code}" STREQUAL "0")
|
||||||
|
message(FATAL_ERROR "Conan install failed='${return_code}'")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# the files are generated in a folder that depends on the layout used, if
|
||||||
|
# one is specified, but we don't know a priori where this is.
|
||||||
|
# TODO: this can be made more robust if Conan can provide this in the json output
|
||||||
|
string(JSON conan_generators_folder GET "${conan_stdout}" graph nodes 0 generators_folder)
|
||||||
|
cmake_path(CONVERT ${conan_generators_folder} TO_CMAKE_PATH_LIST conan_generators_folder)
|
||||||
|
|
||||||
|
message(STATUS "CMake-Conan: CONAN_GENERATORS_FOLDER=${conan_generators_folder}")
|
||||||
|
set_property(GLOBAL PROPERTY CONAN_GENERATORS_FOLDER "${conan_generators_folder}")
|
||||||
|
# reconfigure on conanfile changes
|
||||||
|
string(JSON conanfile GET "${conan_stdout}" graph nodes 0 label)
|
||||||
|
message(STATUS "CMake-Conan: CONANFILE=${CMAKE_SOURCE_DIR}/${conanfile}")
|
||||||
|
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/${conanfile}")
|
||||||
|
# success
|
||||||
|
set_property(GLOBAL PROPERTY CONAN_INSTALL_SUCCESS TRUE)
|
||||||
|
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(conan_get_version conan_command conan_current_version)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${conan_command} --version
|
||||||
|
OUTPUT_VARIABLE conan_output
|
||||||
|
RESULT_VARIABLE conan_result
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
if(conan_result)
|
||||||
|
message(FATAL_ERROR "CMake-Conan: Error when trying to run Conan")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" conan_version ${conan_output})
|
||||||
|
set(${conan_current_version} ${conan_version} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(conan_version_check)
|
||||||
|
set(options )
|
||||||
|
set(one_value_args MINIMUM CURRENT)
|
||||||
|
set(multi_value_args )
|
||||||
|
cmake_parse_arguments(conan_version_check
|
||||||
|
"${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
||||||
|
|
||||||
|
if(NOT conan_version_check_MINIMUM)
|
||||||
|
message(FATAL_ERROR "CMake-Conan: Required parameter MINIMUM not set!")
|
||||||
|
endif()
|
||||||
|
if(NOT conan_version_check_CURRENT)
|
||||||
|
message(FATAL_ERROR "CMake-Conan: Required parameter CURRENT not set!")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(conan_version_check_CURRENT VERSION_LESS conan_version_check_MINIMUM)
|
||||||
|
message(FATAL_ERROR "CMake-Conan: Conan version must be ${conan_version_check_MINIMUM} or later")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
macro(construct_profile_argument argument_variable profile_list)
|
||||||
|
set(${argument_variable} "")
|
||||||
|
if("${profile_list}" STREQUAL "CONAN_HOST_PROFILE")
|
||||||
|
set(_arg_flag "--profile:host=")
|
||||||
|
elseif("${profile_list}" STREQUAL "CONAN_BUILD_PROFILE")
|
||||||
|
set(_arg_flag "--profile:build=")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_profile_list "${${profile_list}}")
|
||||||
|
list(TRANSFORM _profile_list REPLACE "auto-cmake" "${CMAKE_BINARY_DIR}/conan_host_profile")
|
||||||
|
list(TRANSFORM _profile_list PREPEND ${_arg_flag})
|
||||||
|
set(${argument_variable} ${_profile_list})
|
||||||
|
|
||||||
|
unset(_arg_flag)
|
||||||
|
unset(_profile_list)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
|
macro(conan_provide_dependency method package_name)
|
||||||
|
set_property(GLOBAL PROPERTY CONAN_PROVIDE_DEPENDENCY_INVOKED TRUE)
|
||||||
|
get_property(_conan_install_success GLOBAL PROPERTY CONAN_INSTALL_SUCCESS)
|
||||||
|
if(NOT _conan_install_success)
|
||||||
|
find_program(CONAN_COMMAND "conan" REQUIRED)
|
||||||
|
conan_get_version(${CONAN_COMMAND} CONAN_CURRENT_VERSION)
|
||||||
|
conan_version_check(MINIMUM ${CONAN_MINIMUM_VERSION} CURRENT ${CONAN_CURRENT_VERSION})
|
||||||
|
message(STATUS "CMake-Conan: first find_package() found. Installing dependencies with Conan")
|
||||||
|
if("default" IN_LIST CONAN_HOST_PROFILE OR "default" IN_LIST CONAN_BUILD_PROFILE)
|
||||||
|
conan_profile_detect_default()
|
||||||
|
endif()
|
||||||
|
if("auto-cmake" IN_LIST CONAN_HOST_PROFILE)
|
||||||
|
detect_host_profile(${CMAKE_BINARY_DIR}/conan_host_profile)
|
||||||
|
endif()
|
||||||
|
construct_profile_argument(_host_profile_flags CONAN_HOST_PROFILE)
|
||||||
|
construct_profile_argument(_build_profile_flags CONAN_BUILD_PROFILE)
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/conanfile.py")
|
||||||
|
file(READ "${CMAKE_SOURCE_DIR}/conanfile.py" outfile)
|
||||||
|
if(NOT "${outfile}" MATCHES ".*CMakeDeps.*")
|
||||||
|
message(WARNING "Cmake-conan: CMakeDeps generator was not defined in the conanfile")
|
||||||
|
endif()
|
||||||
|
set(generator "")
|
||||||
|
elseif (EXISTS "${CMAKE_SOURCE_DIR}/conanfile.txt")
|
||||||
|
file(READ "${CMAKE_SOURCE_DIR}/conanfile.txt" outfile)
|
||||||
|
if(NOT "${outfile}" MATCHES ".*CMakeDeps.*")
|
||||||
|
message(WARNING "Cmake-conan: CMakeDeps generator was not defined in the conanfile. "
|
||||||
|
"Please define the generator as it will be mandatory in the future")
|
||||||
|
endif()
|
||||||
|
set(generator "-g;CMakeDeps")
|
||||||
|
endif()
|
||||||
|
get_property(_multiconfig_generator GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
if(NOT _multiconfig_generator)
|
||||||
|
message(STATUS "CMake-Conan: Installing single configuration ${CMAKE_BUILD_TYPE}")
|
||||||
|
conan_install(${_host_profile_flags} ${_build_profile_flags} ${CONAN_INSTALL_ARGS} ${generator})
|
||||||
|
else()
|
||||||
|
message(STATUS "CMake-Conan: Installing both Debug and Release")
|
||||||
|
conan_install(${_host_profile_flags} ${_build_profile_flags} -s build_type=Release ${CONAN_INSTALL_ARGS} ${generator})
|
||||||
|
conan_install(${_host_profile_flags} ${_build_profile_flags} -s build_type=Debug ${CONAN_INSTALL_ARGS} ${generator})
|
||||||
|
endif()
|
||||||
|
unset(_host_profile_flags)
|
||||||
|
unset(_build_profile_flags)
|
||||||
|
unset(_multiconfig_generator)
|
||||||
|
unset(_conan_install_success)
|
||||||
|
else()
|
||||||
|
message(STATUS "CMake-Conan: find_package(${ARGV1}) found, 'conan install' already ran")
|
||||||
|
unset(_conan_install_success)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_property(_conan_generators_folder GLOBAL PROPERTY CONAN_GENERATORS_FOLDER)
|
||||||
|
|
||||||
|
# Ensure that we consider Conan-provided packages ahead of any other,
|
||||||
|
# irrespective of other settings that modify the search order or search paths
|
||||||
|
# This follows the guidelines from the find_package documentation
|
||||||
|
# (https://cmake.org/cmake/help/latest/command/find_package.html):
|
||||||
|
# find_package (<PackageName> PATHS paths... NO_DEFAULT_PATH)
|
||||||
|
# find_package (<PackageName>)
|
||||||
|
|
||||||
|
# Filter out `REQUIRED` from the argument list, as the first call may fail
|
||||||
|
set(_find_args_${package_name} "${ARGN}")
|
||||||
|
list(REMOVE_ITEM _find_args_${package_name} "REQUIRED")
|
||||||
|
if(NOT "MODULE" IN_LIST _find_args_${package_name})
|
||||||
|
find_package(${package_name} ${_find_args_${package_name}} BYPASS_PROVIDER PATHS "${_conan_generators_folder}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
|
||||||
|
unset(_find_args_${package_name})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Invoke find_package a second time - if the first call succeeded,
|
||||||
|
# this will simply reuse the result. If not, fall back to CMake default search
|
||||||
|
# behaviour, also allowing modules to be searched.
|
||||||
|
if(NOT ${package_name}_FOUND)
|
||||||
|
list(FIND CMAKE_MODULE_PATH "${_conan_generators_folder}" _index)
|
||||||
|
if(_index EQUAL -1)
|
||||||
|
list(PREPEND CMAKE_MODULE_PATH "${_conan_generators_folder}")
|
||||||
|
endif()
|
||||||
|
unset(_index)
|
||||||
|
find_package(${package_name} ${ARGN} BYPASS_PROVIDER)
|
||||||
|
list(REMOVE_ITEM CMAKE_MODULE_PATH "${_conan_generators_folder}")
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
|
cmake_language(
|
||||||
|
SET_DEPENDENCY_PROVIDER conan_provide_dependency
|
||||||
|
SUPPORTED_METHODS FIND_PACKAGE
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
macro(conan_provide_dependency_check)
|
||||||
|
set(_conan_provide_dependency_invoked FALSE)
|
||||||
|
get_property(_conan_provide_dependency_invoked GLOBAL PROPERTY CONAN_PROVIDE_DEPENDENCY_INVOKED)
|
||||||
|
if(NOT _conan_provide_dependency_invoked)
|
||||||
|
message(WARNING "Conan is correctly configured as dependency provider, "
|
||||||
|
"but Conan has not been invoked. Please add at least one "
|
||||||
|
"call to `find_package()`.")
|
||||||
|
if(DEFINED CONAN_COMMAND)
|
||||||
|
# supress warning in case `CONAN_COMMAND` was specified but unused.
|
||||||
|
set(_conan_command ${CONAN_COMMAND})
|
||||||
|
unset(_conan_command)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
unset(_conan_provide_dependency_invoked)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
|
# Add a deferred call at the end of processing the top-level directory
|
||||||
|
# to check if the dependency provider was invoked at all.
|
||||||
|
cmake_language(DEFER DIRECTORY "${CMAKE_SOURCE_DIR}" CALL conan_provide_dependency_check)
|
||||||
|
|
||||||
|
# Configurable variables for Conan profiles
|
||||||
|
set(CONAN_HOST_PROFILE "default;auto-cmake" CACHE STRING "Conan host profile")
|
||||||
|
set(CONAN_BUILD_PROFILE "default" CACHE STRING "Conan build profile")
|
||||||
|
set(CONAN_INSTALL_ARGS "--build=missing" CACHE STRING "Command line arguments for conan install")
|
||||||
|
|
||||||
|
find_program(_cmake_program NAMES cmake NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH)
|
||||||
|
if(NOT _cmake_program)
|
||||||
|
get_filename_component(PATH_TO_CMAKE_BIN "${CMAKE_COMMAND}" DIRECTORY)
|
||||||
|
set(PATH_TO_CMAKE_BIN "${PATH_TO_CMAKE_BIN}" CACHE INTERNAL "Path where the CMake executable is")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
cmake_policy(POP)
|
57
conanfile.py
Normal file
57
conanfile.py
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
from conan import ConanFile
|
||||||
|
from conan.tools.cmake import cmake_layout
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
class Pkg(ConanFile):
|
||||||
|
settings = "os", "compiler", "build_type", "arch"
|
||||||
|
generators = (
|
||||||
|
"CMakeDeps",
|
||||||
|
"CMakeToolchain",
|
||||||
|
)
|
||||||
|
default_options = {
|
||||||
|
"llvm-core/*:targets": "X86",
|
||||||
|
"boost/*:fPIC": "True",
|
||||||
|
"boost/*:header_only": "False",
|
||||||
|
"boost/*:without_contract": "True",
|
||||||
|
"boost/*:without_fiber": "True",
|
||||||
|
"boost/*:without_graph": "True",
|
||||||
|
"boost/*:without_graph_parallel": "True",
|
||||||
|
"boost/*:without_iostreams": "True",
|
||||||
|
"boost/*:without_json": "True",
|
||||||
|
"boost/*:without_locale": "True",
|
||||||
|
"boost/*:without_log": "True",
|
||||||
|
"boost/*:without_math": "True",
|
||||||
|
"boost/*:without_mpi": "True",
|
||||||
|
"boost/*:without_nowide": "True",
|
||||||
|
"boost/*:without_python": "True",
|
||||||
|
"boost/*:without_random": "True",
|
||||||
|
"boost/*:without_regex": "True",
|
||||||
|
"boost/*:without_stacktrace": "True",
|
||||||
|
"boost/*:without_test": "True",
|
||||||
|
"boost/*:without_timer": "True",
|
||||||
|
"boost/*:without_type_erasure": "True",
|
||||||
|
"boost/*:without_wave": "True",
|
||||||
|
}
|
||||||
|
|
||||||
|
def requirements(self):
|
||||||
|
self.requires("fmt/8.0.1")
|
||||||
|
self.requires("spdlog/1.9.2")
|
||||||
|
self.requires("boost/1.85.0")
|
||||||
|
self.requires("abseil/20250127.0")
|
||||||
|
self.requires("elfio/3.11")
|
||||||
|
self.requires("lz4/1.9.3")
|
||||||
|
self.requires("yaml-cpp/0.7.0")
|
||||||
|
self.requires("jsoncpp/1.9.5")
|
||||||
|
self.requires("zlib/1.2.12")
|
||||||
|
self.requires("asmjit/cci.20240531")
|
||||||
|
if "WITH_LLVM" in os.environ:
|
||||||
|
self.requires("llvm-core/19.1.7")
|
||||||
|
if os.path.isdir("dbt-rise-plugins"):
|
||||||
|
self.requires("lua/5.4.3")
|
||||||
|
|
||||||
|
def build_requirements(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def layout(self):
|
||||||
|
cmake_layout(self)
|
@ -1,16 +0,0 @@
|
|||||||
[requires]
|
|
||||||
fmt/6.1.2
|
|
||||||
zlib/1.2.11
|
|
||||||
boost/1.75.0
|
|
||||||
gsl-lite/0.37.0
|
|
||||||
elfio/3.8
|
|
||||||
tcc/0.9.27
|
|
||||||
|
|
||||||
[generators]
|
|
||||||
cmake
|
|
||||||
|
|
||||||
[options]
|
|
||||||
boost:fPIC=True
|
|
||||||
boost:shared=False
|
|
||||||
boost:header_only=False
|
|
||||||
fmt:header_only=True
|
|
1
coredsl
1
coredsl
Submodule coredsl deleted from 62d95f8b3c
1
dbt-core
1
dbt-core
Submodule dbt-core deleted from 95267382cf
1
dbt-rise-core
Submodule
1
dbt-rise-core
Submodule
Submodule dbt-rise-core added at 8950a5e8a3
1
dbt-rise-tgc
Submodule
1
dbt-rise-tgc
Submodule
Submodule dbt-rise-tgc added at 047e2e12b0
5
docs/.gitignore
vendored
Normal file
5
docs/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
*.log
|
||||||
|
*.dis
|
||||||
|
*.asm
|
||||||
|
*.ll
|
||||||
|
*tcc_*
|
43
docs/offsets.txt
Normal file
43
docs/offsets.txt
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
X0 (zero) : 0 (0x00)
|
||||||
|
X1 (ra) : 4 (0x04)
|
||||||
|
X2 (sp) : 8 (0x08)
|
||||||
|
X3 (gp) : 12 (0x0c)
|
||||||
|
X4 (tp) : 16 (0x10)
|
||||||
|
X5 (t0) : 20 (0x14)
|
||||||
|
X6 (t1) : 24 (0x18)
|
||||||
|
X7 (t2) : 28 (0x1c)
|
||||||
|
X8 (s0/fp): 32 (0x20)
|
||||||
|
X9 (s1) : 36 (0x24)
|
||||||
|
X10 (a0) : 40 (0x28)
|
||||||
|
X11 (a1) : 44 (0x2c)
|
||||||
|
X12 (a2) : 48 (0x30)
|
||||||
|
X13 (a3) : 52 (0x34)
|
||||||
|
X14 (a4) : 56 (0x38)
|
||||||
|
X15 (a5) : 60 (0x3c)
|
||||||
|
X16 (a6) : 64 (0x40)
|
||||||
|
X17 (a7) : 68 (0x44)
|
||||||
|
X18 (s2) : 72 (0x48)
|
||||||
|
X19 (s3) : 76 (0x4c)
|
||||||
|
X20 (s4) : 80 (0x50)
|
||||||
|
X21 (s5) : 84 (0x54)
|
||||||
|
X22 (s6) : 88 (0x58)
|
||||||
|
X23 (s7) : 92 (0x5c)
|
||||||
|
X24 (s8) : 96 (0x60)
|
||||||
|
X25 (s9) : 100 (0x64)
|
||||||
|
X26 (s10) : 104 (0x68)
|
||||||
|
X27 (s11) : 108 (0x6c)
|
||||||
|
X28 (t3) : 112 (0x70)
|
||||||
|
X29 (t4) : 116 (0x74)
|
||||||
|
X30 (t5) : 120 (0x78)
|
||||||
|
X31 (t6) : 124 (0x7c)
|
||||||
|
PC : 128 (0x80)
|
||||||
|
NEXT_PC : 132 (0x84)
|
||||||
|
PRIV : 136 (0x88)
|
||||||
|
DPC : 137 (0x89)
|
||||||
|
trap_state : 141 (0x8d)
|
||||||
|
pending_trap : 145 (0x91)
|
||||||
|
icount : 149 (0x95)
|
||||||
|
cycle : 157 (0x9d)
|
||||||
|
instret : 165 (0xa5)
|
||||||
|
instruction : 173 (0xad)
|
||||||
|
last_branch : 177 (0xb1)
|
25
generate.sh
25
generate.sh
@ -1,25 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
##
|
|
||||||
|
|
||||||
|
|
||||||
JAVA_OPTS="--add-modules ALL-SYSTEM --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.annotation=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.module=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.net.spi=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.charset.spi=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.nio.file.attribute=ALL-UNNAMED --add-opens=java.base/java.nio.file.spi=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.security.acl=ALL-UNNAMED --add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.security.interfaces=ALL-UNNAMED --add-opens=java.base/java.security.spec=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.text.spi=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.time.chrono=ALL-UNNAMED --add-opens=java.base/java.time.format=ALL-UNNAMED --add-opens=java.base/java.time.temporal=ALL-UNNAMED --add-opens=java.base/java.time.zone=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.util.function=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.spi=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.datatransfer/java.awt.datatransfer=ALL-UNNAMED --add-opens=java.desktop/java.applet=ALL-UNNAMED --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/java.awt.color=ALL-UNNAMED --add-opens=java.desktop/java.awt.desktop=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.event=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/java.awt.geom=ALL-UNNAMED --add-opens=java.desktop/java.awt.im=ALL-UNNAMED --add-opens=java.desktop/java.awt.im.spi=ALL-UNNAMED --add-opens=java.desktop/java.awt.image=ALL-UNNAMED --add-opens=java.desktop/java.awt.image.renderable=ALL-UNNAMED --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.print=ALL-UNNAMED --add-opens=java.desktop/java.beans=ALL-UNNAMED --add-opens=java.desktop/java.beans.beancontext=ALL-UNNAMED --add-opens=java.instrument/java.lang.instrument=ALL-UNNAMED --add-opens=java.logging/java.util.logging=ALL-UNNAMED --add-opens=java.management/java.lang.management=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.rmi/java.rmi=ALL-UNNAMED --add-opens=java.rmi/java.rmi.activation=ALL-UNNAMED --add-opens=java.rmi/java.rmi.dgc=ALL-UNNAMED --add-opens=java.rmi/java.rmi.registry=ALL-UNNAMED --add-opens=java.rmi/java.rmi.server=ALL-UNNAMED --add-opens=java.sql/java.sql=ALL-UNNAMED"
|
|
||||||
|
|
||||||
GENERATOR="java $JAVA_OPTS -jar coredsl/com.minres.coredsl.generator.repository/target/com.minres.coredsl.generator-2.0.0-SNAPSHOT.jar "
|
|
||||||
|
|
||||||
CORE_NAME=$1
|
|
||||||
BACKEND=$2
|
|
||||||
CORE_NAME_LC=`echo $CORE_NAME | tr '[:upper:]' '[:lower:]' `
|
|
||||||
INPUT_FILE=tgfs/gen_input/TGFS.core_desc
|
|
||||||
|
|
||||||
REPO_DIR=tgfs/gen_input/CoreDSL-Instruction-Set-Description
|
|
||||||
TMPL_DIR=tgfs/gen_input/templates/interp
|
|
||||||
|
|
||||||
MAPPING=""
|
|
||||||
MAPPING="$MAPPING -m ${TMPL_DIR}/CORENAME.h.gtl:tgfs/incl/iss/arch/${CORE_NAME_LC}.h"
|
|
||||||
MAPPING="$MAPPING -m ${TMPL_DIR}/CORENAME.cpp.gtl:tgfs/src/iss/${CORE_NAME_LC}.cpp"
|
|
||||||
MAPPING="$MAPPING -m ${TMPL_DIR}/vm_CORENAME.cpp.gtl:tgfs/src/vm/${BACKEND}/vm_${CORE_NAME_LC}.cpp"
|
|
||||||
|
|
||||||
[ -f coredsl/com.minres.coredsl.generator.repository/target/com.minres.coredsl.generator-2.0.0-SNAPSHOT.jar ] || (cd coredsl; mvn package)
|
|
||||||
|
|
||||||
$GENERATOR -c $CORE_NAME -r $REPO_DIR $MAPPING $INPUT_FILE
|
|
||||||
|
|
1
requirements.txt
Normal file
1
requirements.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
conan
|
1
scc
1
scc
Submodule scc deleted from 9919e5a350
75
scripts/annotate_addr_to_signature.py
Normal file
75
scripts/annotate_addr_to_signature.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
|
def get_address_from_objdump(elf_file, symbol):
|
||||||
|
result = subprocess.run(
|
||||||
|
["riscv64-unknown-elf-objdump", "-t", elf_file], capture_output=True, text=True
|
||||||
|
)
|
||||||
|
for line in result.stdout.splitlines():
|
||||||
|
if symbol in line:
|
||||||
|
return int(line.split()[0], 16)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def annotate_dump(signature_file, elf_file):
|
||||||
|
begin_signature = get_address_from_objdump(elf_file, "begin_signature")
|
||||||
|
end_signature = get_address_from_objdump(elf_file, "end_signature")
|
||||||
|
|
||||||
|
if begin_signature is None or end_signature is None:
|
||||||
|
print(f"Symbols not found in {elf_file}")
|
||||||
|
return
|
||||||
|
|
||||||
|
address = begin_signature
|
||||||
|
annotated_lines = []
|
||||||
|
|
||||||
|
with open(signature_file, "r") as sig_file:
|
||||||
|
for line in sig_file:
|
||||||
|
annotated_lines.append(f"{hex(address)}: {line.strip()}")
|
||||||
|
address += 4
|
||||||
|
|
||||||
|
output_file = signature_file + ".annotated"
|
||||||
|
with open(output_file, "w") as out_file:
|
||||||
|
out_file.write("\n".join(annotated_lines))
|
||||||
|
print(f"Annotated file created: {output_file}")
|
||||||
|
|
||||||
|
|
||||||
|
def process_directory(root_dir):
|
||||||
|
for subdir, _, files in os.walk(root_dir):
|
||||||
|
elf_file = None
|
||||||
|
signature_file = None
|
||||||
|
|
||||||
|
for file in files:
|
||||||
|
if file.endswith(".elf"):
|
||||||
|
elf_file = os.path.join(subdir, file)
|
||||||
|
elif file.endswith(".signature"):
|
||||||
|
signature_file = os.path.join(subdir, file)
|
||||||
|
|
||||||
|
if elf_file and signature_file:
|
||||||
|
annotate_dump(signature_file, elf_file)
|
||||||
|
elif signature_file:
|
||||||
|
print(f"No ELF file found for {signature_file}")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="""
|
||||||
|
Annotate memory dumps with addresses. Parses all subdirectories from the given root.
|
||||||
|
Expects a .signature with a corresponding .elf in the same directory.
|
||||||
|
Designed to annotate riscof signatures."""
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"root_dir", type=str, help="Root directory to search for .signature files"
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if not os.path.isdir(args.root_dir):
|
||||||
|
print("Invalid root directory")
|
||||||
|
return
|
||||||
|
|
||||||
|
process_directory(args.root_dir)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
157
scripts/create_reg_traces.py
Normal file
157
scripts/create_reg_traces.py
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def validate_elf_file(filepath: str) -> str:
|
||||||
|
if not os.path.isfile(filepath):
|
||||||
|
raise argparse.ArgumentTypeError(f"{filepath} is not a valid file.")
|
||||||
|
|
||||||
|
# Use the 'file' command to check if it's an ELF file
|
||||||
|
result = subprocess.run(
|
||||||
|
["file", filepath], capture_output=True, text=True, check=False
|
||||||
|
)
|
||||||
|
if "ELF" not in result.stdout:
|
||||||
|
raise argparse.ArgumentTypeError(f"{filepath} is not a valid ELF file.")
|
||||||
|
|
||||||
|
return filepath
|
||||||
|
|
||||||
|
|
||||||
|
def run_test_and_move_output(elf_file: str, backend: str, isa: str = "tgc5c") -> None:
|
||||||
|
# Call 'test' with the specified backend mode
|
||||||
|
os.chdir(Path(__file__).parent.parent)
|
||||||
|
sim_path = "build/Debug/dbt-rise-tgc/tgc-sim"
|
||||||
|
run_command = [
|
||||||
|
sim_path,
|
||||||
|
"-f",
|
||||||
|
elf_file,
|
||||||
|
"--backend",
|
||||||
|
backend,
|
||||||
|
"--isa",
|
||||||
|
isa,
|
||||||
|
"-p",
|
||||||
|
"build/Debug/dbt-rise-plugins/pctrace/pctrace.so=dbt-rise-tgc/contrib/instr/TGC5C_instr.yaml",
|
||||||
|
"-i",
|
||||||
|
"10000",
|
||||||
|
]
|
||||||
|
print(f"Running: \n{' '.join(run_command)}")
|
||||||
|
try:
|
||||||
|
subprocess.run(run_command, check=False, timeout=10)
|
||||||
|
except subprocess.TimeoutExpired:
|
||||||
|
print("Execution timed out")
|
||||||
|
|
||||||
|
# Move the output.trc file
|
||||||
|
if os.path.exists("output.trc"):
|
||||||
|
shutil.move("output.trc", f"Debug/{backend}.trc")
|
||||||
|
else:
|
||||||
|
print(
|
||||||
|
f"output.trc does not exist after running with backend {backend}, so it cannot be renamed."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def create_shortened_diff_files(backend: str) -> None:
|
||||||
|
file1_path = "Debug/interp.trc"
|
||||||
|
file2_path = f"Debug/{backend}.trc"
|
||||||
|
|
||||||
|
def validate_file(filepath: str) -> str:
|
||||||
|
if not os.path.isfile(filepath):
|
||||||
|
raise ValueError(f"{filepath} is not a valid file.")
|
||||||
|
return filepath
|
||||||
|
|
||||||
|
file1_path = validate_file(file1_path)
|
||||||
|
file2_path = validate_file(file2_path)
|
||||||
|
|
||||||
|
with open(file1_path, "r", encoding="utf8") as file1, open(
|
||||||
|
file2_path, "r", encoding="utf8"
|
||||||
|
) as file2:
|
||||||
|
lines1 = file1.readlines()
|
||||||
|
lines2 = file2.readlines()
|
||||||
|
|
||||||
|
diff_index = -1
|
||||||
|
for index, (line1, line2) in enumerate(zip(lines1, lines2)):
|
||||||
|
if line1 != line2:
|
||||||
|
diff_index = index
|
||||||
|
break
|
||||||
|
|
||||||
|
if diff_index == -1:
|
||||||
|
print("The files are identical.")
|
||||||
|
return
|
||||||
|
|
||||||
|
start_index = max(0, diff_index - 5)
|
||||||
|
end_index = min(len(lines1), diff_index + 6)
|
||||||
|
|
||||||
|
shortened_lines1 = lines1[start_index:end_index]
|
||||||
|
shortened_lines2 = lines2[start_index:end_index]
|
||||||
|
|
||||||
|
with open("Debug/short_interp.trc", "w", encoding="utf8") as short_file1:
|
||||||
|
short_file1.writelines(shortened_lines1)
|
||||||
|
|
||||||
|
with open(f"Debug/short_{backend}.trc", "w", encoding="utf8") as short_file2:
|
||||||
|
short_file2.writelines(shortened_lines2)
|
||||||
|
|
||||||
|
|
||||||
|
def create_disassembly(elf_file_path: str) -> None:
|
||||||
|
def validate_file(filepath: str) -> str:
|
||||||
|
if not os.path.isfile(filepath):
|
||||||
|
raise ValueError(f"{filepath} is not a valid file.")
|
||||||
|
return filepath
|
||||||
|
|
||||||
|
elf_file_path = validate_file(elf_file_path)
|
||||||
|
|
||||||
|
output_file_path = "Debug/dut.dis"
|
||||||
|
with open(output_file_path, "w", encoding="utf8") as output_file:
|
||||||
|
subprocess.run(
|
||||||
|
[
|
||||||
|
"riscv64-unknown-elf-objdump",
|
||||||
|
"-d",
|
||||||
|
"-Mnumeric",
|
||||||
|
"-Mno-aliases",
|
||||||
|
elf_file_path,
|
||||||
|
],
|
||||||
|
stdout=output_file,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main(args: argparse.Namespace) -> None:
|
||||||
|
elf_file = args.elf_file
|
||||||
|
backend = args.backend
|
||||||
|
isa = args.isa
|
||||||
|
|
||||||
|
# Set environment variable
|
||||||
|
os.environ["REGDUMP"] = "True"
|
||||||
|
|
||||||
|
# Run the tests and move the output files
|
||||||
|
run_test_and_move_output(elf_file, "interp", isa)
|
||||||
|
run_test_and_move_output(elf_file, backend, isa)
|
||||||
|
create_shortened_diff_files(backend)
|
||||||
|
create_disassembly(elf_file)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# sys.exit(
|
||||||
|
# "This script needs to be adapted, it assumed to be in a directory named 'Debug'"
|
||||||
|
# )
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Process an ELF file with a specified backend. Generates register traces for interp and the specified backend"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"elf_file", type=validate_elf_file, help="The ELF file to be processed."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--backend",
|
||||||
|
type=str,
|
||||||
|
default="asmjit",
|
||||||
|
help="The backend to be used. Default is asmjit.",
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--isa",
|
||||||
|
type=str,
|
||||||
|
default="tgc5c",
|
||||||
|
help="The isa to be used. Default 'tgc5c'",
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
|
main(args=parser.parse_args())
|
26
scripts/makeJitOutputReadable.py
Normal file
26
scripts/makeJitOutputReadable.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import re
|
||||||
|
import os
|
||||||
|
'''
|
||||||
|
This script takes all files that get dumped by the tcc backend when using the --dump-ir
|
||||||
|
option and replaces the Integers of addresses with their hex representation to allow
|
||||||
|
for easier debugging.
|
||||||
|
'''
|
||||||
|
current_dir = os.getcwd() # Get the current directory
|
||||||
|
|
||||||
|
files_with_tcc_jit = [file for file in os.listdir(current_dir) if"jit" in file and not file.startswith("readable")]
|
||||||
|
|
||||||
|
for each in files_with_tcc_jit:
|
||||||
|
readable_file = f"readable_{each}"
|
||||||
|
if os.path.exists(readable_file):
|
||||||
|
os.remove(readable_file)
|
||||||
|
with open(each, "r") as file:
|
||||||
|
content = file.read()
|
||||||
|
for each in files_with_tcc_jit:
|
||||||
|
with open(each, "r") as file:
|
||||||
|
content = file.read()
|
||||||
|
|
||||||
|
# Replace numbers ending with "U" by their hex representation
|
||||||
|
content = re.sub(r'\b(\d+)U\b(?=U)?', lambda m: hex(int(m.group(1))), content)
|
||||||
|
|
||||||
|
with open(f"readable_{each}", "w") as file:
|
||||||
|
file.write(content)
|
91
scripts/run_riscv_tests.sh
Executable file
91
scripts/run_riscv_tests.sh
Executable file
@ -0,0 +1,91 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
##
|
||||||
|
|
||||||
|
# Absolute path to this script, e.g. /home/user/bin/foo.sh
|
||||||
|
SCRIPT=`readlink -f "$0"`
|
||||||
|
# Absolute path this script is in, thus /home/user/bin
|
||||||
|
SCRIPTDIR=`dirname "$SCRIPT"`
|
||||||
|
SCRIPTNAME=`basename "$SCRIPT"`
|
||||||
|
function print_help {
|
||||||
|
echo "Usage: $SCRIPTNAME [-b <backend>] [-s <sim args>]}"
|
||||||
|
echo "Run UCB risc-v compliance test suite on backends"
|
||||||
|
echo "Optional cli arguments:"
|
||||||
|
echo " -b backend type, default all"
|
||||||
|
echo " -s <args> simulator arguments"
|
||||||
|
echo " -h print help"
|
||||||
|
echo " -v increase verbosity"
|
||||||
|
echo " -t set build type"
|
||||||
|
}
|
||||||
|
SIM_ARGS="-v1"
|
||||||
|
BACKENDS=("interp" "tcc" "llvm" "asmjit")
|
||||||
|
DEBUG=0
|
||||||
|
BUILD_TYPE=Debug
|
||||||
|
while getopts 'b:s:hvt:' c
|
||||||
|
do
|
||||||
|
case $c in
|
||||||
|
b) BACKENDS=($OPTARG);;
|
||||||
|
s) SIM_ARGS=$OPTARG ;;
|
||||||
|
h) print_help; exit 0 ;;
|
||||||
|
v) DEBUG=1 ;;
|
||||||
|
t) BUILD_TYPE = $OPTARG;;
|
||||||
|
?)
|
||||||
|
print_help >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
||||||
|
ROOT_DIR="$(dirname "$DIR")"
|
||||||
|
|
||||||
|
RISCV_TEST=$ROOT_DIR/build/riscv-tests
|
||||||
|
# prepare riscv-test binaries
|
||||||
|
if [ ! -d $RISCV_TEST ]; then
|
||||||
|
mkdir -p $ROOT_DIR/build; cd $ROOT_DIR/build
|
||||||
|
git clone --recursive https://github.com/riscv/riscv-tests.git
|
||||||
|
cd $RISCV_TEST
|
||||||
|
autoconf
|
||||||
|
./configure --with-xlen=32
|
||||||
|
cd $ROOT_DIR
|
||||||
|
make -C $RISCV_TEST -j -k
|
||||||
|
fi
|
||||||
|
# check that we have an executable
|
||||||
|
RISCV_EXE=$ROOT_DIR/build/${BUILD_TYPE}/dbt-rise-tgc/tgc-sim
|
||||||
|
if [ ! -x $RISCV_EXE ]; then
|
||||||
|
mkdir -p build/${BUILD_TYPE}
|
||||||
|
echo "running cmake -B build/${BUILD_TYPE} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DWITH_TCC=ON -DWITH_LLVM=ON "
|
||||||
|
cmake -S . -B build/${BUILD_TYPE} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DWITH_TCC=ON -DWITH_LLVM=ON ../.. || exit 1
|
||||||
|
cmake --build build/${BUILD_TYPE} -j 20 || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
test_ui_list=`find ${RISCV_TEST}/isa -type f -name rv32ui-p-\* -executable | grep -v fence | grep -v ma_data |sort`
|
||||||
|
test_uc_list=`find ${RISCV_TEST}/isa -type f -name rv32uc-p-\* -executable | grep -v fence | sort`
|
||||||
|
test_um_list=`find ${RISCV_TEST}/isa -type f -name rv32um-p-\* -executable | grep -v fence | sort`
|
||||||
|
test_list="$test_ui_list $test_uc_list $test_um_list $test_mmode_list"
|
||||||
|
|
||||||
|
for backend in "${BACKENDS[@]}"; do
|
||||||
|
failed_list=()
|
||||||
|
for elf in $test_list; do
|
||||||
|
[ $DEBUG -eq 0 ] || echo Running "${RISCV_EXE} $SIM_ARGS -f $elf --backend $backend"
|
||||||
|
${RISCV_EXE} $SIM_ARGS -f $elf --backend $backend
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
failed_list+="$backend:$elf "
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
tcount=`echo $test_list | wc -w`
|
||||||
|
if [ ! -z "$failed_list" ]; then
|
||||||
|
fcount=`echo $failed_list | wc -w`
|
||||||
|
echo "($backend) $fcount of $tcount test(s) failed:"
|
||||||
|
echo $failed_list | tr ' ' '\n'
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo "($backend) All $tcount tests passed."
|
||||||
|
if [ $DEBUG -eq 1 ];then
|
||||||
|
echo "List of executed tests:"
|
||||||
|
for t in $test_list; do
|
||||||
|
name=`basename $t`
|
||||||
|
echo " $name"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
29
scripts/simplify_sail_trace.py
Normal file
29
scripts/simplify_sail_trace.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import argparse
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def simplify_trace(input_file, output_file):
|
||||||
|
with open(input_file, "r") as infile, open(output_file, "w") as outfile:
|
||||||
|
for line in infile:
|
||||||
|
# Enhanced regex to match the instruction number, mode, and PC
|
||||||
|
match = re.search(r"\[\d+\] \[[MI]\]: (0x[0-9A-Fa-f]+)", line)
|
||||||
|
if match:
|
||||||
|
pc = match.group(1).lower()
|
||||||
|
outfile.write(f"{pc}\n")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Simplify a trace from an instruction set simulator."
|
||||||
|
)
|
||||||
|
parser.add_argument("input_file", type=str, help="The input trace file")
|
||||||
|
parser.add_argument(
|
||||||
|
"output_file", type=str, help="The output file for the simplified trace"
|
||||||
|
)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
simplify_trace(args.input_file, args.output_file)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
26
scripts/simplify_tgc_trace.py
Normal file
26
scripts/simplify_tgc_trace.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import argparse
|
||||||
|
|
||||||
|
|
||||||
|
def simplify_trace(input_file, output_file):
|
||||||
|
with open(input_file, "r") as infile, open(output_file, "w") as outfile:
|
||||||
|
for line in infile:
|
||||||
|
# Split the line by the first comma and take the PC part
|
||||||
|
pc = line.split(",")[0].strip().lower()
|
||||||
|
outfile.write(f"{pc}\n")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Simplify traces from instruction set simulators."
|
||||||
|
)
|
||||||
|
parser.add_argument("input_file", type=str, help="The input trace file")
|
||||||
|
parser.add_argument(
|
||||||
|
"output_file", type=str, help="The output file for the simplified trace"
|
||||||
|
)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
simplify_trace(args.input_file, args.output_file)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
1
tgfs
1
tgfs
Submodule tgfs deleted from 9c8b72693e
Reference in New Issue
Block a user