code: @Override
    protected String[] prepareArguments(final CCTask task, final String outputDir, final String outputName,
        final String[] sourceFiles, final CommandLineLinkerConfiguration config) {
      final String[] preargs = config.getPreArguments();
      final String[] endargs = config.getEndArguments();
      final StringBuffer buf = new StringBuffer();
      final Vector<String> execArgs = new Vector<>(preargs.length + endargs.length + 10 + sourceFiles.length);
  
      execArgs.addElement(this.getCommand());
      final String outputFileName = new File(outputDir, outputName).toString();
      execArgs.addElement(quoteFilename(buf, outputFileName));
  
      for (final String prearg : preargs) {
        execArgs.addElement(prearg);
      }
  
      //
      // add a place-holder for page size
      //
      final int pageSizeIndex = execArgs.size();
      execArgs.addElement(null);
  
      int objBytes = 0;
  
      for (final String sourceFile : sourceFiles) {
        final String last4 = sourceFile.substring(sourceFile.length() - 4).toLowerCase();
        if (last4.equals(".def")) {
        } else {
          if (last4.equals(".res")) {
          } else {
            if (last4.equals(".lib")) {
            } else {
              execArgs.addElement("+" + quoteFilename(buf, sourceFile));
              objBytes += new File(sourceFile).length();
            }
          }
        }
      }
  
      for (final String endarg : endargs) {
        execArgs.addElement(endarg);
      }
  
      final String[] execArguments = new String[execArgs.size()];
      execArgs.copyInto(execArguments);
  
      final int minPageSize = objBytes >> 16;
      int pageSize = 0;
      for (int i = 4; i <= 15; i++) {
        pageSize = 1 << i;
        if (pageSize > minPageSize) {
          break;
        }
      }
      execArguments[pageSizeIndex] = "/P" + Integer.toString(pageSize);
  
      return execArguments;
    }
docs: Prepares argument list for exec command.
  
  @param outputDir
  linker output directory
  @param outputName
  linker output name
  @param sourceFiles
  linker input files (.obj, .o, .res)
  @param config
  linker configuration
  @return arguments for runTask