package CDT6ProjectCreator;

# ************************************************************
# Description   : Eclipse CDT 6 generator
# Author        : Chris Cleeland, Object Computing, Inc.
# Create Date   : 23-Apr-2010
# ************************************************************

# ************************************************************
# Pragmas
# ************************************************************

use strict;

use ProjectCreator;

use vars qw(@ISA);
@ISA = qw(ProjectCreator);

# ************************************************************
# Data Section
# ************************************************************

my %templates = ('cdt6project'   => '.project',
                 'cdt6cproject'  => '.cproject' );

my @tkeys = sort keys %templates;

# ************************************************************
# Subroutine Section
# ************************************************************

sub crlf {
  #my $self = shift;
  return "\n";
}

sub project_file_name {
  my($self, $name, $template) = @_;

  ## Fill in the name and template if they weren't provided
  $name = $self->project_name() if (!defined $name);
  $template = 'cdt6project' if (!defined $template ||
                                !defined $templates{$template});

  if ($self->{'make_coexistence'}) {
    return $self->get_modified_project_file_name("cdt_$name",
                                                 '/' . $templates{$template});
  }
  else {
    return $templates{$template};
  }
}

sub fill_value {
  my($self, $name) = @_;

  if ($name eq 'platforms') {
    if (defined $ENV{'MPC_CDT_PLATFORMS'}) {
      return $ENV{'MPC_CDT_PLATFORMS'};
    }
    elsif ($^O eq 'darwin') {
      return 'macosx';
    }
    elsif ($^O eq 'MSWin32') {
      return 'win32';
    }
    else {
      return $^O; # cygwin, solaris, linux match what we expect
    }
  }
  elsif ($name eq 'nocross') {
    # return the value of the 'nocross' element from the project_info array
    return $self->get_project_info()->[ProjectCreator::NO_CROSS_COMPILE];
  }

  return $self->get_configurable($name);
}

sub get_configurable {
  #my($self, $name) = @_;
  return undef;
}

sub get_template {
  #my $self = shift;
  return @tkeys;
}

sub dependency_is_filename {
  #my $self = shift;
  return 0;
}

sub requires_forward_slashes {
  return 1;
}

sub file_visible {
  ## We only want the project file visible to the workspace creator.
  ## There can only be one and this is it.
  #my($self, $template) = @_;
  return $_[1] eq 'cdt6project';
}

sub get_dll_exe_template_input_file {
  #my $self = shift;
  return 'cdt6exe';
}

sub get_dll_template_input_file {
  #my $self = shift;
  #print "in get_dll_template_input_file\n";
  return 'cdt6dll';
}

sub get_lib_template_input_file {
  #my $self = shift;
  #print "in get_lib_template_input_file\n";
  return 'cdt6lib';
}

sub use_win_compatibility_commands {
  return (defined $ENV{'MPC_CDT_HOST_WIN32'})
      ? $ENV{'MPC_CDT_HOST_WIN32'} : ($^O eq 'MSWin32' || $^O eq 'cygwin');
}

sub pre_write_output_file {
  my $self = shift;
  if ($self->{'assign'}->{'custom_only'}) {
    return 1;
  }
  return $self->combine_custom_types();
}

1;
