cgcc: add a configuration file for cgcc
PATCH 10/10 cgcc: add a configuration file for cgcc
The configuration file, ~/.cgccrc, allows a user to use perl syntax to set the $gcc_base_dir and $multiarch_dir variables, which would then suppress two compiler invocations. This can result in a marked performance boost on platforms for which the fork/exec costs are high (e.g. cygwin).
For example, on a multiarch system the file might look like:
$ cat ~/.cgccrc
$gcc_base_dir = "/usr/lib/gcc/x86_64-linux-gnu/4.8/";
$multiarch_dir = "x86_64-linux-gnu";
$whereas for a non-multiarch system (e.g. cygwin):
$ cat ~/.cgccrc
$gcc_base_dir = "/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/";
$multiarch_dir = "";
$For me, on linux the difference in performance measured between 3-4% (e.g. 17.053s -> 16.379s to run sparse over the git sources), whereas on cygwin it measured about 20% (94.890s -> 76.207s).
Signed-off-by Ramsay Jones <[email protected]>
--- cgcc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
cgcc +8 -2
@@ -11,10 +11,16 @@ my $has_specs = 0; my $gendeps = 0; my $do_check = 0; my $do_compile = 1; -my $gcc_base_dir; -my $multiarch_dir; +our $gcc_base_dir; +our $multiarch_dir; my $verbose = 0; +my $cgccrc_file = $ENV{'HOME'}."/.cgccrc" if $ENV{'HOME'}; +if (-e $cgccrc_file) { + do $cgccrc_file; + die $@ if $@; +} + while (@ARGV) { $_ = shift(@ARGV); # Look for a .c file. We don't want to run the checker on .o or .so files
Signature · 1 line
2.0.0