You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+55-27Lines changed: 55 additions & 27 deletions
Original file line number
Diff line number
Diff line change
@@ -2,13 +2,10 @@
2
2
3
3
### Mbeddr
4
4
5
-
To install: please, visit http://mbeddr.com for instructions!
5
+
mbeddr aims at creating a different way of developing embedded software systems. Instead of using archaic modeling tools and manually written C code, we use the Open sSurce [JetBrains MPS](http://jetbrains.com/mps) language workbench to create an integrated approach to embedded development, where C programming, DSLs, domain specific extensions to C, product line variability, requirements traceability and model checking are supported directly.
6
6
7
-
mbeddr aims at creating a different way of developing embedded software systems. Instead of using archaic modeling tools and manually written C code, we use the open source [JetBrains MPS](http://jetbrains.com/mps) language workbench to create an integrated approach to embedded development, where C programming, DSLs, domain specific extensions to C, product line variability, requirements traceability and model checking are supported directly.
8
-
9
-
At this point we are well ahead in developing an implementation of C in MPS which can then be used as a basis for domain-specific extensions. The development progress can be see from our [blog page](http://mbeddr.com/blog/).
10
-
11
-
For more details please visit the [mbeddr landing page](https://github.com/mbeddr).
7
+
We developed an implementation of C in MPS, which can be used as a basis for domain-specific extensions. The old development progress is documented in our [blog page](http://mbeddr.com/blog/).
8
+
For some more information about the project, visit http://mbeddr.com/mps-platform-docs/mbeddr/ or the old homepage at http://mbeddr.com.
12
9
13
10
<detailsopen>
14
11
<summary>Old demos</summary>
@@ -26,9 +23,27 @@ For more details please visit the [mbeddr landing page](https://github.com/mbedd
The mbeddr platform provides various languages and extensions that can be used in all kinds of projects. Many extensions are briefly explained on [this page](http://mbeddr.com/mps-platform-docs/platform_essentials/mpsutils/). You most likely want to have `com.mbeddr.platform` as a dependency and not `com.mbeddr`. If you can't find a language here, make sure that it wasn't moved to [MPS-Extensions](https://jetbrains.github.io/MPS-extensions/extensions/full_extensions_list/). The mbeddr platform currently repackages all languages from MPS-Extensions. Some of the old languages that were moved have also still have the old com.mbeddr prefix Visit the page [Issue Tracker | MPS Platform Docs](http://mbeddr.com/mps-platform-docs/reference/issue_trackers/) for some more information on how to distinguish the various MPS repositories by package name.
29
+
30
+
### Project Structure
31
+
32
+
The project consists of the following subprojects in the `code/languages` subfolder:
33
+
34
+
-*com.mbeddr.build* contains all the build scripts except for the platform
35
+
-*com.mbeddr.cc* contains all cross-cutting languages, such as product line engineering or tracing.
36
+
-*com.mbeddr.core* contains the core languages of mbedd,r including all interfaces and the C implementation.
37
+
-*com.mbeddr.doc.aspect* contains the code for the `documentation` tool at the lower left corner.
38
+
-*com.mbeddr.doc* contains the code for the documentation language.
39
+
-*com.mbeddr.ext* contains extensions to the C language.
40
+
-*com.mbeddr.platform.build* contains the build script for the platform.
41
+
42
+
The `code/solutions` folder contains some examples for the mbeddr C languages.
43
+
29
44
### Maven Dependencies
30
45
31
-
To use mbeddr or the mbeddr platform in your own project, you one of the following dependencies in your maven or gradle build script. The latest support MPS version is 2024.1:
46
+
To use mbeddr or the mbeddr platform in your project, you need one of the following dependencies in your Maven or Gradle build script. The latest supported MPS version is 2024.1, the master branch builds against the MPS master.
When you open a PR, the build on TeamCity needs to be approved by a colleague at itemis, and a PR review is necessary. If this doesn't happen, please ask in the Slack channel. Often, builds fail at the following step: Check for dirty files.
90
+
If that happens, some migrations were not executed in the project. Run `./gradlew migrate remigrate` or `gradlew.bat migrate remigrate` on the command line to execute them and commit the changes. You can also copy the diff from the build log and apply it with `git apply` as a patch. You need to strip the line numbers, though:
- Linux solution 1: `xclip -o | sed 's/^.\{13\}//' | git apply`
94
+
- Linux solution 2: `xsel --clipboard --output | sed 's/^.\{13\}//' | git apply`
95
+
96
+
Please select the correct target branch for the PR. The master branch builds against the MPS master and is most likely not the branch you want to contribute to. After the PR is merged, a bot will automatically open a PR to merge the changes into the next maintenance branch. You don't have to do anything at the last step.
97
+
70
98
### Contributing to the mbeddr.platform
71
99
72
-
To contribute your module to the mbeddr platform for reuse, you probably want to add it to the mps utils (`com.mbeddr.mpsutils`). After some incubation time, it may be considered to move it to the MPS-extensions, if the motivation, and implementation have grown mature.
100
+
To contribute your module to the mbeddr platform for reuse, you probably want to add it to the mps utils (`com.mbeddr.mpsutils`). After some incubation time, it may be considered to move it to the MPS-extensions, if the motivation and implementation have grown mature.
73
101
74
-
- name your language "com.mbeddr.mpsutil.$yourLanguageName"
75
-
- add it to the MPS project in `code/languages/com.mbeddr.mpsutil` inside a virtual folder "$yourLanguageName"
76
-
- all dedicated modules (like the ones you create below) should go into this virtual folder "$yourLanguageName"
102
+
- name your language `com.mbeddr.mpsutil.$yourLanguageName`
103
+
- add it to the MPS project in `code/languages/com.mbeddr.mpsutil` inside a virtual folder `$yourLanguageName`
104
+
- all dedicated modules (like the ones you create below) should go into this virtual folder `$yourLanguageName`
77
105
- add a test solution with automated tests, named "test.com.mbeddr.mpsutil.$yourLanguageName" and make sure they pass
78
-
-if your module is an extension to an MPS language
79
-
- add a language named "com.mbeddr.mpsutil.$yourLanguageName.sandbox" that demos how to use your language
80
-
- add a "com.mbeddr.mpsutil.$yourLanguageName.sandbox.sandbox" solution that demonstrates the effect of what the sandbox language implemented
81
-
-open the MPS project "code/languages/com.mbeddr.build"
82
-
-open the build script at "com.mbeddr.platform" named "com.mbeddr.platform"
83
-
-add a group named "group.$yourLanguageName"
84
-
-add a plugin that bundles your extension based on this group with the needed dependencies
85
-
-add your plugin to the default layout
86
-
-open the test build script at "platform/com.mbeddr.platform/com.mbeddr.platform.mpsutils.ts.tests.build" and add your tests
87
-
-add your test solution and its dependencies to the group "com.mbeddr.platform.tests"
88
-
-add it to the default layout
89
-
-add it to the test modules configuration
90
-
-run the build locally with `./gradlew publishMbeddrPlatformPublicationToMavenLocal` and check if your project functions with it
106
+
-If your module is an extension to an MPS language
107
+
- add a language named `com.mbeddr.mpsutil.$yourLanguageName.sandbox` that demos how to use your language
108
+
- add a `com.mbeddr.mpsutil.$yourLanguageName.sandbox.sandbox` solution that demonstrates the effect of what the sandbox language implemented
109
+
-Open the MPS project "code/languages/com.mbeddr.platform.build"
110
+
-Open the build script named "com.mbeddr.platform"
111
+
-Add a group named "group.$yourLanguageName"
112
+
-Add a plugin that bundles your extension based on this group with the needed dependencies
113
+
-Add your plugin to the default layout
114
+
-Open the test build script at "platform/com.mbeddr.platform/com.mbeddr.platform.mpsutils.ts.tests.build" and add your tests
115
+
-Add your test solution and its dependencies to the group "com.mbeddr.platform.tests"
116
+
-Add it to the default layout
117
+
-Add it to the test modules configuration
118
+
-Run the build locally with `./gradlew publishMbeddrPlatformPublicationToMavenLocal` and check if your project works with it
0 commit comments