inequation / cppbuild Goto Github PK
View Code? Open in Web Editor NEWA toy self-hosting build system for C++ written in C++14
License: MIT License
A toy self-hosting build system for C++ written in C++14
License: MIT License
This was the root cause of #11 and is "fixed" as of now by printing an error message. However, as of now, cppbuild will still attempt to execute the build graph. It should stop instead as early as possible (or as configured).
Too many times I pass these things around as params.
Also take the opportunity to verify whether the graph execution tasks really need to keep a copy of the context, perhaps a reference would be sufficient?
Calling override_options(string_vector{ "-j2" });
from describe()
has no effect. I'm not sure it really needs to; doing so will require restarting the task scheduler. Leaving this here just for tracking.
Even if (or especially if?) those have their own, separate build.cpp
files.
Mock-up:
namespace library
{
#include "../src/library/build.cpp"
};
std::pair<std::string, std::string> describe(target_map& targets, configuration_map& configs, toolchain_map& toolchains)
{
add_dependency(library::describe); // Automatically builds library before us and optionally adds its products to our target.
// ...
}
The __FILE__
macro may be abused to properly & automatically detect target root directories.
Some relatively unintrusive choices (I really don't want to bundle another big library, MSVC discovery is already insane as is) would be ETW/Concurrency Visualizer on Windows (cvmarkersobj.h
) and DTrace/perf
markers on Linux.
References:
https://docs.microsoft.com/en-us/visualstudio/profiling/concurrency-visualizer-sdk?view=vs-2017
http://dtrace.org/guide/chp-usdt.html
https://github.com/jlfwong/speedscope/wiki/Importing-from-perf-(linux)
Probably want to exclude it from the enumerated sources list.
Your usual thing for command line programs: switches, options etc. We need:
I can see a possible use for a mode where cppbuild cannot rebuild itself, but can still build the project it was originally compiled to build.
Using response files will allow detection of targets in need of rebuild when their command lines change due to e.g. changed configuration.
The @file
syntax is supported by all three major compilers (gcc, clang, MSVC).
Only old traces remain, not logs.
This happened when deleting cbl_detail.h
and building on Linux.
Potentially also an exponential back-off.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.