#!/usr/bin/env bash # Source file. src="$(printf %q "$1")" shift # Output file the compiler expects. out="$(printf %q "$1")" shift # Create the file the compiler expects. It will check syntax. >"$out" cpp='cpp' opts='' while test "$#" != 0; do case "$1" in # Extract the option for the path to cpp. --cpp) shift; cpp="$(printf %q "$1")" ;; # Extract the option for our own output file. --out) shift; out="$(printf %q "$1")" ;; # Collect the rest of the command line. *) opts="$opts $(printf %q "$1")" ;; esac shift done # Execute the real preprocessor tool. eval "exec $cpp $src $out $opts"