3 ms·
Of course it will be hard, but most build tools often do the same thing - no matter the language or ecosystem. I haven't seen any real effort to try to standar
by wink 9y ago
Of course it will be hard, but most build tools often do the same thing - no matter the language or ecosystem.
I haven't seen any real effort to try to standardize on APIs, so you could write your "plugins" in your language of choice and the "glue" code would be this language-independent build tool.
I'd say I've mostly given up on this. I have a Makefile for every project, which in turn of course uses the language-specific build tool, but for example when I wanted to use webpack (migrating from a mess of gulp+bower+npm from angular.js to just webpack for angular) I wrote a simple PoC Makefile with hacky sed-/awk-/lines and a lot of cp and cat in just a few hours (massive build script).
Then the result was working as intended and I could refactor all the stuff where there's a nice webpack plugin and get rid of my Makefile hacks. Now in the end the Makefile just provides a common starting point that has "executable docs" for every language specific tool. "make bootstrap/test/run/build", no matter what language the project is in - for the low cost of having to update the Makefile when you change something major or some arguments. Not advocating this for all orgs (please use what makes YOUR team happy) but I've heard nothing but positive things about this from my team.
- Someone 9y agohttps://github.com/apple/swift-llbuild https://github.com/apple/swift-llbuild may be too low-level for what you envision, but captures a lot of your ideas, I think. https://llvm.org/devmtg/2016-11/#abstracts https://llvm.org/devmtg/2016-11/#abstracts has a presentation. It focuses on compiling with clang, but the system is more flexible. Slides at https://llvm.org/devmtg/2016-11/Slides/Dunbar-NewArchitectureForBuildingSoftware.pdf https://llvm.org/devmtg/2016-11/Slides/Dunbar-NewArchitectur..., matching video is at https://youtu.be/b_T-eCToX1I https://youtu.be/b_T-eCToX1I.