Restructuring for better separation of Tool packages.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1674 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -0,0 +1,104 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2001-2004 The Ant-Contrib project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package net.sf.antcontrib.cpptasks.hp;
|
||||
import java.io.File;
|
||||
import java.util.Vector;
|
||||
|
||||
import net.sf.antcontrib.cpptasks.CUtil;
|
||||
import net.sf.antcontrib.cpptasks.compiler.LinkType;
|
||||
import net.sf.antcontrib.cpptasks.compiler.Linker;
|
||||
import net.sf.antcontrib.cpptasks.gcc.GccCompatibleCCompiler;
|
||||
import net.sf.antcontrib.cpptasks.OptimizationEnum;
|
||||
|
||||
import org.apache.tools.ant.types.Environment;
|
||||
/**
|
||||
* Adapter for the HP aC++ C++ compiler
|
||||
*
|
||||
* @author Curt Arnold
|
||||
*/
|
||||
public final class aCCCompiler extends GccCompatibleCCompiler {
|
||||
private static final aCCCompiler instance = new aCCCompiler("aCC", false,
|
||||
null);
|
||||
/**
|
||||
* Gets singleton instance of this class
|
||||
*/
|
||||
public static aCCCompiler getInstance() {
|
||||
return instance;
|
||||
}
|
||||
private String identifier;
|
||||
private File[] includePath;
|
||||
/**
|
||||
* Private constructor. Use GccCCompiler.getInstance() to get singleton
|
||||
* instance of this class.
|
||||
*/
|
||||
private aCCCompiler(String command, boolean newEnvironment, Environment env) {
|
||||
super(command, "-help", false, null, newEnvironment, env);
|
||||
}
|
||||
public void addImpliedArgs(Vector args, boolean debug,
|
||||
boolean multithreaded, boolean exceptions, LinkType linkType,
|
||||
final Boolean rtti,
|
||||
final OptimizationEnum optimization) {
|
||||
args.addElement("-c");
|
||||
if (debug) {
|
||||
args.addElement("-g");
|
||||
}
|
||||
/*
|
||||
* if (multithreaded) { args.addElement("-mt"); }
|
||||
*/
|
||||
if (linkType.isSharedLibrary()) {
|
||||
args.addElement("+z");
|
||||
}
|
||||
}
|
||||
public void addWarningSwitch(Vector args, int level) {
|
||||
switch (level) {
|
||||
case 0 :
|
||||
args.addElement("-w");
|
||||
break;
|
||||
case 1 :
|
||||
case 2 :
|
||||
args.addElement("+w");
|
||||
break;
|
||||
/*
|
||||
* case 3: case 4: case 5: args.addElement("+w2"); break;
|
||||
*/
|
||||
}
|
||||
}
|
||||
public File[] getEnvironmentIncludePath() {
|
||||
if (includePath == null) {
|
||||
File ccLoc = CUtil.getExecutableLocation("aCC");
|
||||
if (ccLoc != null) {
|
||||
File compilerIncludeDir = new File(
|
||||
new File(ccLoc, "../include").getAbsolutePath());
|
||||
if (compilerIncludeDir.exists()) {
|
||||
includePath = new File[2];
|
||||
includePath[0] = compilerIncludeDir;
|
||||
}
|
||||
}
|
||||
if (includePath == null) {
|
||||
includePath = new File[1];
|
||||
}
|
||||
includePath[includePath.length - 1] = new File("/usr/include");
|
||||
}
|
||||
return includePath;
|
||||
}
|
||||
public Linker getLinker(LinkType linkType) {
|
||||
return aCCLinker.getInstance().getLinker(linkType);
|
||||
}
|
||||
public int getMaximumCommandLength() {
|
||||
return Integer.MAX_VALUE;
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2001-2004 The Ant-Contrib project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package net.sf.antcontrib.cpptasks.hp;
|
||||
import java.io.File;
|
||||
import java.util.Vector;
|
||||
|
||||
import net.sf.antcontrib.cpptasks.CUtil;
|
||||
import net.sf.antcontrib.cpptasks.compiler.LinkType;
|
||||
import net.sf.antcontrib.cpptasks.compiler.Linker;
|
||||
import net.sf.antcontrib.cpptasks.gcc.AbstractLdLinker;
|
||||
/**
|
||||
* Adapter for Sun (r) Forte(tm) C++ Linker
|
||||
*
|
||||
* @author Curt Arnold
|
||||
*/
|
||||
public final class aCCLinker extends AbstractLdLinker {
|
||||
private static final String[] discardFiles = new String[0];
|
||||
private static final String[] objFiles = new String[]{".o", ".a", ".lib",
|
||||
".dll", ".so", ".sl"};
|
||||
private static final aCCLinker arLinker = new aCCLinker("aCC", objFiles,
|
||||
discardFiles, "", ".a");
|
||||
private static final aCCLinker dllLinker = new aCCLinker("aCC", objFiles,
|
||||
discardFiles, "lib", ".sl");
|
||||
private static final aCCLinker instance = new aCCLinker("aCC", objFiles,
|
||||
discardFiles, "", "");
|
||||
public static aCCLinker getInstance() {
|
||||
return instance;
|
||||
}
|
||||
private File[] libDirs;
|
||||
private aCCLinker(String command, String[] extensions,
|
||||
String[] ignoredExtensions, String outputPrefix, String outputSuffix) {
|
||||
super(command, "-help", extensions, ignoredExtensions, outputPrefix,
|
||||
outputSuffix, false, null);
|
||||
}
|
||||
public void addImpliedArgs(boolean debug, LinkType linkType, Vector args) {
|
||||
if (debug) {
|
||||
args.addElement("-g");
|
||||
}
|
||||
/*
|
||||
* if(linkType.isStaticRuntime()) { args.addElement("-static"); }
|
||||
*/
|
||||
if (linkType.isSharedLibrary()) {
|
||||
args.addElement("-b");
|
||||
}
|
||||
/*
|
||||
* if (linkType.isStaticLibrary()) { args.addElement("-Wl,-noshared"); }
|
||||
*/
|
||||
}
|
||||
public void addIncremental(boolean incremental, Vector args) {
|
||||
/*
|
||||
* if (incremental) { args.addElement("-xidlon"); } else {
|
||||
* args.addElement("-xidloff"); }
|
||||
*/
|
||||
}
|
||||
/**
|
||||
* Returns library path.
|
||||
*
|
||||
*/
|
||||
public File[] getLibraryPath() {
|
||||
if (libDirs == null) {
|
||||
File CCloc = CUtil.getExecutableLocation("aCC");
|
||||
if (CCloc != null) {
|
||||
File compilerLib = new File(new File(CCloc, "../lib")
|
||||
.getAbsolutePath());
|
||||
if (compilerLib.exists()) {
|
||||
libDirs = new File[2];
|
||||
libDirs[0] = compilerLib;
|
||||
}
|
||||
}
|
||||
if (libDirs == null) {
|
||||
libDirs = new File[1];
|
||||
}
|
||||
}
|
||||
libDirs[libDirs.length - 1] = new File("/usr/lib");
|
||||
return libDirs;
|
||||
}
|
||||
public Linker getLinker(LinkType type) {
|
||||
if (type.isStaticLibrary()) {
|
||||
return arLinker;
|
||||
}
|
||||
if (type.isSharedLibrary()) {
|
||||
return dllLinker;
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user