I'm using make to automate a project that generates lots of data, then processes it, with recipes roughly like this:processed-data: data    data-processing-program $^ > $@data:    output-data > $@The data has its own recipe, because various other targets process it too.The output-data-program runs for a while. Once it's done, the data-processing-program begins, and eventually produces processed-data:That could clearly be faster, by running both in parallel, streaming data to the data-processing-program before the file is complete:How do I express such a relationship in a Makefile?Options I've considered:I tried using --jobs/-j to execute multiple recipes in parallel, but make still waits for any recipe to complete before executing its dependents.I observed that if I were doing this manually, I'd just write a pipeline:output-data | data-processing-program > processed-dataThat would process the data as soon as any of it is available.I toyed with a recipe to emulate that, by having the data recipe create a named pipe instead of a file, and spawn a background process to write the data to it.  However, the data in the pipe can only be read once, making it impossible to process the same data with multiple recipes.
In a Makefile, how can I begin processing a file before it has finished building?
make;streaming;parallelism