# File lib/compass/compiler.rb, line 166
    def  compilecompile(sass_filename, css_filename, sourcemap_filename = nil)
      css_content, sourcemap = logger.red do
        timed(lambda {|r| r[0]}) do
          engine = engine(sass_filename, css_filename, sourcemap_filename)
          if sourcemap_filename && options[:sourcemap]
            engine.render_with_sourcemap(relative_path(css_filename, sourcemap_filename))
          else
            [engine.render, nil]
          end
        end
      end
      duration = options[:time] ? "(#{(css_content.__duration * 1000).round / 1000.0}s)" : ""
      write_file(css_filename, css_content, options.merge(:force => true, :extra => duration), sass_options[:unix_newlines])
      Compass.configuration.run_stylesheet_saved(css_filename)
      if sourcemap && sourcemap_filename
        sourcemap_content = sourcemap.to_json(:css_path => css_filename,
                                              :sourcemap_path => sourcemap_filename)
        write_file(sourcemap_filename, sourcemap_content, options.merge(:force => true), sass_options[:unix_newlines])
        Compass.configuration.run_sourcemap_saved(sourcemap_filename)
      elsif sourcemap_filename && File.exist?(sourcemap_filename)
        remove sourcemap_filename
        Compass.configuration.run_sourcemap_removed(sourcemap_filename)
      end
    end