/*******************************************************************************
* Copyright (c) 2005 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.core.tests;
import org.eclipse.cdt.managedbuilder.core.IManagedOutputNameProvider;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator;
public class TestLinkerNameProvider implements IManagedOutputNameProvider {
public IPath[] getOutputNames(ITool tool, IPath[] primaryInputNames) {
IPath[] name = new IPath[1];
boolean isSO = false;
IOption optShared = tool.getOptionBySuperClassId("gnu.c.link.option30.shared"); //$NON-NLS-1$
if (optShared != null) {
try {
isSO = optShared.getBooleanValue();
} catch (Exception e) {}
}
if (isSO) {
String soName = ""; //$NON-NLS-1$
IOption optSOName = tool.getOptionBySuperClassId("gnu.c.link.option30.soname"); //$NON-NLS-1$
if (optSOName != null) {
try {
soName = optSOName.getStringValue();
} catch (Exception e) {}
}
if (soName != null && soName.length() > 0) {
name[0] = Path.fromOSString(soName);
} else {
name[0] = Path.fromOSString(primaryInputNames[0].removeFileExtension().addFileExtension("so").lastSegment()); //$NON-NLS-1$
}
return name;
}
String fileName = "default"; //$NON-NLS-1$
if (primaryInputNames != null && primaryInputNames.length > 0) {
fileName = primaryInputNames[0].removeFileExtension().toString();
if (fileName.startsWith("$(") && fileName.endsWith(")")) { //$NON-NLS-1$ //$NON-NLS-2$
fileName = fileName.substring(2,fileName.length()-1);
}
}
String[] exts = tool.getPrimaryOutputType().getOutputExtensions(tool);
if (exts != null && exts[0].length() > 0) {
fileName += IManagedBuilderMakefileGenerator.DOT + exts[0];
}
name[0] = Path.fromOSString(fileName);
name[0] = name[0].removeFirstSegments(name[0].segmentCount() - 1);
return name;
}
}