/* * * 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(); // BEGINFREEHEP private boolean linkCPP = true; private boolean linkFortran = false; private boolean linkFortranMain = false; // ENDFREEHEP /** * 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"); } public boolean isJNIModule() { String value = outputType.getValue(); return value.equals("jni"); } /** * 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(); // FREEHEP return value.equals("shared") || value.equals("plugin") || value.equals("jni"); } /** * 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; } /** * Gets the output type. * @return output type */ public String getOutputType() { return outputType.getValue(); } /** * 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; } /** * Get subsystem name. * @return subsystem name */ public String getSubsystem() { return subsystem.getValue(); } // BEGINFREEHEP public void setLinkCPP(boolean linkCPP) { this.linkCPP = linkCPP; } public boolean linkCPP() { return linkCPP; } public void setLinkFortran(boolean linkFortran) { this.linkFortran = linkFortran; } public boolean linkFortran() { return linkFortran; } public void setLinkFortranMain(boolean linkFortranMain) { this.linkFortranMain = linkFortranMain; } public boolean linkFortranMain() { return linkFortranMain; } // ENDFREEHEP }