Currently most D repositories require build tools that are specific to flavors of Unix, and those tools are not portable to all platforms that D supports. For Windows specifically, users have quite a bit of difficulty setting up their environment so they can build DMD, Phobos, and druntime. But there is a solution. We have a tool that allows us to automate just about anything on all platforms that D supports: The D Programming Language. Therefore, this project proposes converting all makefiles and other build tooling for DMD, Phobos, and druntime to D.
Finish porting the remaining makefile targets in DMD to build.d
Write a similar build.d for druntime
Write a similar build.d for Phobos
How does this project help the D community?
The D programming language is an extremely powerful and expressive language to program in. The DMD, Phobos, and druntime repositories already require a D host compiler, so utilizing D to implement the build system will require no additional dependencies and will ultimately remove several unnecessary dependencies. Contributors working on Linux, Windows, or any other platform D supports will have the same experience when building DMD, Phobos, and druntime. There will no longer be any need for separate "How to build on Linux" instructions, "How to build on Windows" instructions, etc; there will only be "How to build" instructions.
Furthermore, D is a tool all D contributors have in common despite their background or platform of choice. Contributors will already know how to modify, compile, debug and test D programs, so it will lower the barrier to entry and learning curve for anyone modifying, enhancing, or otherwise improving D's build infrastructure and will make the D programming language development effort less dependent on specialists.
Recommended skills
Familiarity with the D programming language and the general procedures for how to build and test DMD, Phobos, and druntime
Familiarity with makefiles
Point of Contact
This project was proposed by @JinShil and can be contacted for further information about the project.
Description
Currently most D repositories require build tools that are specific to flavors of Unix, and those tools are not portable to all platforms that D supports. For Windows specifically, users have quite a bit of difficulty setting up their environment so they can build DMD, Phobos, and druntime. But there is a solution. We have a tool that allows us to automate just about anything on all platforms that D supports: The D Programming Language. Therefore, this project proposes converting all makefiles and other build tooling for DMD, Phobos, and druntime to D.
This project has already been started. A working (though incomplete) build.d can be found in the DMD repository. It just needs someone to take it to completion.
What are rough milestones of this project?
How does this project help the D community?
The D programming language is an extremely powerful and expressive language to program in. The DMD, Phobos, and druntime repositories already require a D host compiler, so utilizing D to implement the build system will require no additional dependencies and will ultimately remove several unnecessary dependencies. Contributors working on Linux, Windows, or any other platform D supports will have the same experience when building DMD, Phobos, and druntime. There will no longer be any need for separate "How to build on Linux" instructions, "How to build on Windows" instructions, etc; there will only be "How to build" instructions. Furthermore, D is a tool all D contributors have in common despite their background or platform of choice. Contributors will already know how to modify, compile, debug and test D programs, so it will lower the barrier to entry and learning curve for anyone modifying, enhancing, or otherwise improving D's build infrastructure and will make the D programming language development effort less dependent on specialists.
Recommended skills
Point of Contact
This project was proposed by @JinShil and can be contacted for further information about the project.
References