So if you want a configuration with some flags like that, then you can have a separate file for it. Each compiler is different after all, some will need different options.
385 karma · joined February 12, 2018
So if you want a configuration with some flags like that, then you can have a separate file for it. Each compiler is different after all, some will need different options.
If you are using anything advanced, then it will become unreadable for beginners too. Try to explain delayed and immediate variable interpolation to beginners, that their "VAR = foo" doesn't always work the way they think it does.
On the other hand, yes, the CMake sample above is self explanatory, works on all platforms (more than Make itself), all compilers without having you to write low level compiler invocations, supports IDE for easier debugging (sure, you can also tell your users they have to learn how to use GDB by hand, just... good luck). It will automatically rebuild the right files when their dependencies or command line changes, you don't have to code that by hand for each compiler (and probably have many subtle bugs in your implementation too).
Make has a place for simple things, not for build systems, we have way better ways to do them now, even if you refuse to use them.
Not saying it's not available there, not all platforms have all software available right away or up to date.
Even then, upgrading CMake is the easiest thing ever: "pip install cmake". Or fetch it from the Github releases page quickly, it's always available as static binaries for all major platforms.
Sure, everything in CMake is not super intuitive, but I've led workshops were people got the hang of it pretty quickly for simple to advanced cases (including multiple targets and some scripting). Keep it simple, most of the time, you don't need the advanced features at all!
Can't say the same for Make, apparently, people need to write about it still today! And most of the Makefiles are just plain wrong and won't make any reproducible and reliable builds. That's a big no in my book for a build system!
The Make language is the assembly language of build systems. Do you really enjoy writing assembly all the time?
And if you have segmented your tests in fast and slow, you can always invest in the proper infrastructure to only require fast tests to pass before CI and have some degree of automatic rollbacks (or supervised) when slow tests break.
Also, considering I make exactly $0 per month from it, it's either be patient or use another service that had more capacity and faster builders.
I believe that Travis-CI had a higher limit for parallel jobs, but your builds would most often end up queued because of a low capacity for a certain type of agents. Also, something quite noticeable was their lower limits on build time, which is why for some builds a cache was necessary. It got a bit hairy when you needed a full successful build to properly populate the cache but they would never finish in time. And of course, the biggest drawback from Travis-CI back then was the lack of Windows support.
As for Azure CI, I believe there's something like a 10 parallel builds limit. And I've got exactly 10 configurations!
So sure, I'm missing caching that I've had on Travis. But honestly, it builds reliably fast anyway. On Travis, I always needed to wait a LONG time to get macOS agents, on Appveyor, we were limited to 2 parallel builds. Here, everything starts all at once, completes under 10 minutes (there's quite a lot to build and test).
If I could, I would love to have an sccache ( https://github.com/mozilla/sccache ) compatible distributed free caching solution for my C++ projects. That'd be a killer feature!
It is also a bit similar for expats who, under certain conditions, can't apply for a Swedish person number (think SSN) and thus get a fully activated bank account. No bank account? Good luck doing anything!
Since the mobile apps and desktop app share a lot of code, you could if you wanted profile the desktop app in similar scenarios to guesstimate usage patterns. As long as you remember that the desktop app will also load more data (bigger screen, so more data to handle), it should be fine.
Somehow, you could compare it to a browser usage pattern. There's some index, some various files that are cached... My guess in your case is bad quality SD card or bad SD drivers / reader.
The current focus right now is to deliver WebRTC 1.0, when this is done, we may reconsider it.
A modern build system by default should be able to provide utilities to make sure your build is correct and reproducible. Those features need to be coded into your Makefile and aren't available easily or by default.
If you need to code those rules, then you don't have a build system, just a way to run commands and possibly add some (usually poor) logic around them.
A typical example that most handcrafted Makefiles will fail is that changing a build flag should only rebuild the files affected. Most will either require a full clean (aka ignoring the flag change) or rebuild everything.
If you want to implement ORTC, fine, but you should probably do it in another package and make sure you don't expose fields in WebRTC that aren't part of the standard. Some fields (like the SSRC field) is not exposed for good reasons.
For example, RTCRtpSender.getParameters is missing and the setParameters seems to be missing (unless that's the send function). And as far as I can tell, you are not supposed to call setParameters without getParameters first, so that's not spec compliant ;)
And of course, the sendEncodings property of the init parameters in addTransceiver is missing. It is required to setup simulcast (and later SVC when we standardize it).
But I can only notice quite a bit of mismatch between your APIs and the current spec. Do you plan on updating your implementation to match it?
Source: Google employee, in the WebRTC WG.
The APIs are there to ensure the behavior won't change and break anything. In a monorepo, that is easier to check by running all the tests that are affected by your code changes. The actual programming "syntax" is a detail though, and that can be changed (atomically everywhere) anytime with proper tooling.
It's only in the old traditional split model that APIs are supposed to be a guarantee for syntax + behavior (+ sometimes ABI).
Or just the regular Steam app. Check the screenshot page on the AppStore and you'll see the store with prices and all.
The tricky part was to make sure they only targeted what was in the ocean. You didn't want them to start propagating into the oil tanks in boats, or start processing all the random plastics that make up boats or various infrastructure.
I remember on my last day, they had some really good results with some samples that processed some oil really well and were quite excited. I then left, and have no idea if they managed to reproduce the results or not.
I once complained to Sufjan Stevens' label about his albums missing in Spotify. They basically told me the deal with their distributor in Europe expired and they didn't look for a new one yet. "woops". It took them many months to get the tracks back.
I wouldn't worry about Apple too much, the market will become saturated in some countries after some years where they are popular. But in other countries, where they only use Android, who do you think will win the market?