1 /* 2 * #%L 3 * Native ARchive plugin for Maven 4 * %% 5 * Copyright (C) 2002 - 2014 NAR Maven Plugin developers. 6 * %% 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * #L% 19 */ 20 package com.github.maven_nar.cpptasks.compiler; 21 22 import com.github.maven_nar.cpptasks.ProcessorParam; 23 import com.github.maven_nar.cpptasks.VersionInfo; 24 25 /** 26 * A configuration for a C++ compiler, linker or other processor 27 * 28 * @author Curt Arnold 29 */ 30 public interface ProcessorConfiguration { 31 /** 32 * An indication of how much this compiler would like to process this file 33 * 34 * @return 0 is no interest to process, 100 is strong interest to process 35 */ 36 int bid(String filename); 37 38 /** 39 * Returns a string representation of this configuration. Should be 40 * canonical so that equivalent configurations will have equivalent string 41 * representations 42 */ 43 String getIdentifier(); 44 45 /** 46 * Output file name (no path components) corresponding to source file 47 * 48 * @param inputFile 49 * input file 50 * @return output file names or zero-length array if no output file or name 51 * not 52 * determined by input file 53 */ 54 String[] getOutputFileNames(String inputFile, VersionInfo versionInfo); 55 56 ProcessorParam[] getParams(); 57 58 /** 59 * If true, all files using this configuration should be rebuilt and any 60 * existing output files should be ignored 61 */ 62 boolean getRebuild(); 63 }