/******************************************************************************* * Copyright (c) 2005, 2007 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.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo; import org.eclipse.cdt.managedbuilder.core.IManagedIsToolChainSupported; import org.eclipse.cdt.managedbuilder.core.IManagedProject; import org.eclipse.cdt.managedbuilder.core.IToolChain; import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable; import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier; import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider; import org.eclipse.cdt.managedbuilder.envvar.IProjectEnvironmentVariableSupplier; import org.eclipse.cdt.managedbuilder.internal.envvar.BuildEnvVar; import org.eclipse.cdt.managedbuilder.internal.macros.BuildMacro; import org.eclipse.cdt.managedbuilder.macros.IBuildMacro; import org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider; import org.eclipse.cdt.managedbuilder.macros.IConfigurationBuildMacroSupplier; import org.eclipse.cdt.managedbuilder.macros.IProjectBuildMacroSupplier; import org.eclipse.cdt.managedbuilder.macros.IReservedMacroNameSupplier; import org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.MultiStatus; import org.osgi.framework.Version; /** * * */ public class TestMacro implements IConfigurationBuildMacroSupplier, IProjectBuildMacroSupplier, IReservedMacroNameSupplier, IConfigurationEnvironmentVariableSupplier, IProjectEnvironmentVariableSupplier, IManagedIsToolChainSupported, IManagedBuilderMakefileGenerator { public static boolean supported[] = {false, false, false, false, false}; public static IPath topBuildDir = null; public static String CFG_VAR = "CFG_PROVIDER_VAR"; //$NON-NLS-1$ public static String PRJ_VAR = "PRJ_PROVIDER_VAR"; //$NON-NLS-1$ // IConfigurationBuildMacroSupplier /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.macros.IConfigurationBuildMacroSupplier#getMacro(java.lang.String, org.eclipse.cdt.managedbuilder.core.IConfiguration, org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider) */ public IBuildMacro getMacro(String macroName, IConfiguration configuration, IBuildMacroProvider provider) { ManagedBuildMacrosTests.functionCalled |= ManagedBuildMacrosTests.GET_ONE_CONFIG; IBuildMacro ms = null; if (!(provider instanceof TestMacro)) { ms = provider.getMacro(macroName, IBuildMacroProvider.CONTEXT_CONFIGURATION, configuration, false); } return ms; } public IBuildMacro getMacro(String macroName, IManagedProject mproj, IBuildMacroProvider provider) { ManagedBuildMacrosTests.functionCalled |= ManagedBuildMacrosTests.GET_ONE_PROJECT; IBuildMacro ms = null; if (!(provider instanceof TestMacro)) { ms = provider.getMacro(macroName, IBuildMacroProvider.CONTEXT_PROJECT, mproj, false); } return ms; } // IProjectBuildMacroSupplier /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.macros.IConfigurationBuildMacroSupplier#getMacros(org.eclipse.cdt.managedbuilder.core.IConfiguration, org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider) */ public IBuildMacro[] getMacros(IConfiguration configuration, IBuildMacroProvider provider) { ManagedBuildMacrosTests.functionCalled |= ManagedBuildMacrosTests.GET_MANY_CONFIG; IBuildMacro[] ms = null; if (!(provider instanceof TestMacro)) { ms = provider.getMacros(IBuildMacroProvider.CONTEXT_CONFIGURATION, configuration, false); IBuildMacro[] newms = null; if (ms != null && ms.length > 0) { newms = new IBuildMacro[ms.length + 1]; System.arraycopy(ms, 0, newms, 0, ms.length); } else { newms = new BuildMacro[1]; } newms[ms.length] = new BuildMacro("NEW_FOR_CFG", 1, "NewMacrosForConfigContext"); //$NON-NLS-1$ //$NON-NLS-2$ return newms; } return null; } /** * */ public IBuildMacro[] getMacros(IManagedProject mproj, IBuildMacroProvider provider) { ManagedBuildMacrosTests.functionCalled |= ManagedBuildMacrosTests.GET_MANY_PROJECT; IBuildMacro[] ms = null; if (!(provider instanceof TestMacro)) { ms = provider.getMacros(IBuildMacroProvider.CONTEXT_PROJECT, mproj, false); IBuildMacro[] newms = null; if (ms != null && ms.length > 0) { newms = new IBuildMacro[ms.length + 1]; System.arraycopy(ms, 0, newms, 0, ms.length); } else { newms = new BuildMacro[1]; } newms[newms.length - 1] = new BuildMacro("NEW_FOR_PRJ", 1, "NewMacrosForProjectContext"); //$NON-NLS-1$ //$NON-NLS-2$ return newms; } return null; } // IReservedMacroNameSupplier /** * */ public boolean isReservedName(String macroName, IConfiguration configuration) { ManagedBuildMacrosTests.functionCalled |= ManagedBuildMacrosTests.RESERVED_NAME; if (macroName.equalsIgnoreCase("USERNAME")) return true; //$NON-NLS-1$ return false; } // IConfigurationEnvironmentVariableSupplier /** * */ public IBuildEnvironmentVariable getVariable(String variableName, IConfiguration configuration, IEnvironmentVariableProvider provider) { if (CFG_VAR.equals(variableName)) { return new BuildEnvVar(CFG_VAR, CFG_VAR + configuration.getName()); } else return null; } /** * */ public IBuildEnvironmentVariable[] getVariables (IConfiguration configuration, IEnvironmentVariableProvider provider) { IBuildEnvironmentVariable v = getVariable(CFG_VAR, configuration, provider); if (v != null) { IBuildEnvironmentVariable[] vs = new IBuildEnvironmentVariable[1]; vs[0] = v; return(vs); } else return null; } // IProjectEnvironmentVariableSupplier /** * */ public IBuildEnvironmentVariable getVariable(String variableName, IManagedProject project, IEnvironmentVariableProvider provider) { if (PRJ_VAR.equals(variableName)) { return new BuildEnvVar(PRJ_VAR, PRJ_VAR + project.getName()); } else return null; } /** * */ public IBuildEnvironmentVariable[] getVariables (IManagedProject project, IEnvironmentVariableProvider provider) { IBuildEnvironmentVariable v = getVariable(PRJ_VAR, project, provider); if (v != null) { IBuildEnvironmentVariable[] vs = new IBuildEnvironmentVariable[1]; vs[0] = v; return(vs); } else return null; } // IManagedIsToolChainSupported /** * */ public boolean isSupported(IToolChain toolChain, Version version, String instance) { if ("One".equals(toolChain.getParent().getName())) return supported[0]; //$NON-NLS-1$ if ("Two".equals(toolChain.getParent().getName())) return supported[1]; //$NON-NLS-1$ if ("Three".equals(toolChain.getParent().getName())) return supported[2]; //$NON-NLS-1$ if ("Four".equals(toolChain.getParent().getName())) return supported[3]; //$NON-NLS-1$ return false; } // IManagedBuilderMakefileGenerator /** */ public IPath getBuildWorkingDir() { // System.out.println("---- getBuildWorkingDir: " + topBuildDir); return topBuildDir; } public void generateDependencies() {} public MultiStatus generateMakefiles(IResourceDelta delta) { return null; } public String getMakefileName() {return "test_instead_make"; } //$NON-NLS-1$ public void initialize(IProject project, IManagedBuildInfo info, IProgressMonitor monitor) { // System.out.println("---- init: " + topBuildDir); } public boolean isGeneratedResource(IResource resource) { return false; } public void regenerateDependencies(boolean force) {} public MultiStatus regenerateMakefiles() { return null; } }