#!/usr/bin/env perl
# Compiler wrapper with stack-cleaner support (enabled by default).
# Usage: ./compiler-wrapper target-compiler args [-f[no-]stack-cleaner]

use warnings;

use File::Basename;

my $compiler = shift(@ARGV);

my $enable = 1;

my @args;
my $arg;
while($arg=shift(@ARGV)) {
  if ($arg eq "-fno-stack-cleaner") {
    $enable = 0;    
  } elsif ($arg eq "-fstack-cleaner") {
    $enable = 1;
  }
  else {
    push @args, $arg;
  }
}

if ($enable) {
  if (basename($0) =~ /^clang/) {
    unshift @args, "-no-integrated-as"
  }
  unshift @args, dirname($0);
  unshift @args, "-B";
}

exec $compiler, @args
