Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restructure Gamma include files required for the generated compiler #8

Open
kuniss opened this issue Nov 14, 2021 · 2 comments
Open

Comments

@kuniss
Copy link
Collaborator

kuniss commented Nov 14, 2021

Currently the implicitly called dmd D compiler fail due to missing gamma includes:

dmd S.d SLex.d -g include/runtime.d src/io.d src/log.d src/epsilon/soag/listacks.d
Error: module runtime is in file 'include/runtime.d' which cannot be read
import path[0] = /usr/include/dmd/phobos
import path[1] = /usr/include/dmd/druntime/import
Error: module io is in file 'src/io.d' which cannot be read
import path[0] = /usr/include/dmd/phobos
import path[1] = /usr/include/dmd/druntime/import
Error: module log is in file 'src/log.d' which cannot be read
import path[0] = /usr/include/dmd/phobos
import path[1] = /usr/include/dmd/druntime/import
Error: module listacks is in file 'src/epsilon/soag/listacks.d' which cannot be read
import path[0] = /usr/include/dmd/phobos
import path[1] = /usr/include/dmd/druntime/import

It would be nice, if the gamma gets an additional command line parameter for specifying D include paths.
Or, the gamma include files are included relative the directory where the generated source code has been created, such that the implicit call would be done as:
dmd S.d SLex.d -g ./runtime.d ./io.d ./log.d ./listacks.d

In that case the gamma vscode extension could copy the include files alongside the generated source code and the implicit compilation could work seamlessly.

@kuniss
Copy link
Collaborator Author

kuniss commented Nov 20, 2021

@linkrope What to you think about moving all those files to src/gruntime - "gruntime" for gamma runtime, similar to druntime?

The dmd compiler call then could be adjusted to
dmd S.d SLex.d -I=src/gruntime;
and at the generated compiler compilation
dmd S.d SLex.d -I=build/gruntime.

This schema is more flexible for the case the gamma compiler generator is carried with the VScode extension or the Eclipse plugin and temporary extracted to an arbitrary configurable project directory structure.

...I would take over to make this change. Just would like to agree with you, first.

@kuniss
Copy link
Collaborator Author

kuniss commented Nov 25, 2021

Just thought on how to implement this and it seems to me that having a different include path at the development project and at the generated compiler compilation is not a good idea.

So, maybe, it is better to have them all in include/gruntime. That way, the include directive for the D compiler would be always the same: dmd S.d SLex.d -I=include/gruntime
If the extension/plugin is creating the compiler source code at the build sub directory, e.g., then it only would need to copy all include files in the build/include/gruntime directory.

We could also put all include files directly under include where runtime.d is located today already.

Maybe the last option is the best? What do you think?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant