blob: 7d6041ff934bdb5461aa26ac3a77fb2de8af826d [file] [log] [blame]
/*
*
* 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.compiler;
import net.sf.antcontrib.cpptasks.OutputTypeEnum;
import net.sf.antcontrib.cpptasks.SubsystemEnum;
/**
* This class represents the target platform for the compile and link step. The
* name is an anachronism and should be changed.
*
* @author Curt Arnold
*/
public class LinkType {
private OutputTypeEnum outputType = new OutputTypeEnum();
private boolean staticRuntime = false;
private SubsystemEnum subsystem = new SubsystemEnum();
/**
* Constructor
*
* By default, an gui executable with a dynamically linked runtime
*
*/
public LinkType() {
}
/**
* Gets whether the link should produce an executable
*
* @return boolean
*/
public boolean isExecutable() {
String value = outputType.getValue();
return value.equals("executable");
}
/**
* Gets whether the link should produce a plugin module.
*
* @return boolean
*/
public boolean isPluginModule() {
String value = outputType.getValue();
return value.equals("plugin");
}
/**
* Gets whether the link should produce a shared library.
*
* @return boolean
*/
public boolean isSharedLibrary() {
String value = outputType.getValue();
return value.equals("shared") || value.equals("plugin");
}
/**
* Gets whether the link should produce a static library.
*
* @return boolean
*/
public boolean isStaticLibrary() {
String value = outputType.getValue();
return value.equals("static");
}
/**
* Gets whether the module should use a statically linked runtime library.
*
* @return boolean
*/
public boolean isStaticRuntime() {
return staticRuntime;
}
/**
* Gets whether the link should produce a module for a console subsystem.
*
* @return boolean
*/
public boolean isSubsystemConsole() {
String value = subsystem.getValue();
return value.equals("console");
}
/**
* Gets whether the link should produce a module for a graphical user
* interface subsystem.
*
* @return boolean
*/
public boolean isSubsystemGUI() {
String value = subsystem.getValue();
return value.equals("gui");
}
/**
* Sets the output type (execuable, shared, etc).
*
* @param outputType,
* may not be null
*/
public void setOutputType(OutputTypeEnum outputType) {
if (outputType == null) {
throw new IllegalArgumentException("outputType");
}
this.outputType = outputType;
}
/**
* Requests use of a static runtime library.
*
* @param staticRuntime
* if true, use static runtime library if possible.
*/
public void setStaticRuntime(boolean staticRuntime) {
this.staticRuntime = staticRuntime;
}
/**
* Sets the subsystem (gui, console, etc).
*
* @param subsystem
* subsystem, may not be null
*/
public void setSubsystem(SubsystemEnum subsystem) {
if (subsystem == null) {
throw new IllegalArgumentException("subsystem");
}
this.subsystem = subsystem;
}
}