#!/usr/bin/perl
use strict;
use Getopt::Long;

my $cflags;
my $libs;
my $include_path = $ENV{'MOZILLA_INCLUDE_PATH'};
my $lib_prefix;
my $util_prefix;
my $idlflags;
my $mozilla_config_bin;

GetOptions(
	"cflags" => \$cflags,
	"libs=s" => \$libs,
	"lib-prefix" => \$lib_prefix,
	"util-prefix" => \$util_prefix,
	"idlflags" => \$idlflags,
	"real-config=s" => \$mozilla_config_bin,
);

$mozilla_config_bin = "mozilla-config"
	if (!$mozilla_config_bin);
my $mozilla_config_prefix = $ENV{'MOZILLA_CONFIG_PREFIX'};
my $mozilla_config = 
	$mozilla_config_prefix ?
		"$mozilla_config_prefix/$mozilla_config_bin" :
		$mozilla_config_bin;

if ($libs)
{
	system("$mozilla_config", "--libs" => $libs);
}

if ($idlflags)
{
	my $libs = `$mozilla_config --libs`;
	chomp $libs;
	$libs =~ m{.*/(.*)$};
	my $PRODUCT_NAME = $1;

	my $exec_prefix = `$mozilla_config --exec-prefix`;
	chomp $exec_prefix;
	
	$idlflags = `$mozilla_config --idlflags`;
	chomp $idlflags;
	$idlflags =~ s(%{idldir})(/usr/share/idl/$PRODUCT_NAME);
	print $idlflags . " -I" . $exec_prefix . "/idl";
}

if ($cflags)
{
	if (!$include_path)
	{
		$cflags = `$mozilla_config --cflags`;
		chomp $cflags;
		$cflags =~ /^-I(.*?)(\s|$)/
			or die "Could not retrieve include path.\n";
		$include_path = $1;
	}
	my @component_paths = glob("$include_path/*/");
	push(@component_paths, $include_path);
	print join(' ', map { s{/$}{}; "-I$_"; } @component_paths);
}

if ($util_prefix)
{
	my $exec_prefix = `$mozilla_config --exec-prefix`;
	chomp $exec_prefix;
	$util_prefix = $exec_prefix."/bin";
	if (-f "$util_prefix/xpidl")
	{
		print $util_prefix;
	}
	else
	{
		$libs = `$mozilla_config --libs`;
		chomp $libs;
	
		if ($libs =~ /^-L(.*?)(\s|$)/)
		{
			$util_prefix = $1;
			print $util_prefix;
		}
	}
}

if ($lib_prefix)
{
	$libs = `$mozilla_config --libs`;
	chomp $libs;
	
	if ($libs =~ /^-L(.*?)(\s|$)/)
	{
		print $1;
	}
}


syntax highlighted by Code2HTML, v. 0.9.1