code: def _compile(self, dirpath, makename, compiler, debug, profile):
          
          from os import path
          options = ""
          if debug:
              options += " DEBUG=true"
          if profile:
              options += " GPROF=true"
  
          from os import system
          codestr = "cd {}; make -f '{}' F90={} FAM={}" + options
          code = system(codestr.format(dirpath, makename, compiler, compiler[0]))
  
          #It turns out that the compiler still returns a code of zero, even if the compile
          #failed because the actual compiler didn't fail; it did its job properly. We need to
          #check for the existence of errors in the 'compile.log' file.
          lcount = 0
          errors = []
          log = path.join(dirpath, "compile.log")
          with open(log) as f:
              for line in f:
                  lcount += 1
                  if lcount > 21 and lcount < 32:
                      errors.append(line)
                  elif lcount > 21:
                      break
  
          if len(errors) > 0:
              #There are 21 lines in the compile.log file when everything runs correctly
              #Overwrite code with a bad exit value since we have some other problems.
              code = 1
              #We want to write the first couple of errors to the console and give them the
              #option to still execute if the compile only generated warnings.
              msg.warn("compile generated some errors or warnings:")
              msg.blank()
              msg.info(''.join(errors))
  
          return code
docs: Compiles the makefile at the specified location with 'compiler'.
  
          :arg dirpath: the full path to the directory where the makefile lives.
          :arg compiler: one of ['ifort', 'gfortran'].
          :arg makename: the name of the make file to compile.