/*******************************************************************************
* Copyright (c) 2010, 2015 Nokia Siemens Networks Oyj, Finland.
* 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:
* Nokia Siemens Networks - initial implementation
* Petri Tuononen - Initial implementation
* Marc-Andre Laperle (Ericsson)
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.llvm.util;
import org.eclipse.cdt.managedbuilder.llvm.ui.preferences.LlvmPreferenceStore;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
/**
* Implements Resource listener.
*/
public class LlvmResourceListener implements IResourceChangeListener {
/**
* Defines what happens when resources have changed.
*
* @param event IResourceChangeEvent
*/
@Override
public void resourceChanged(IResourceChangeEvent event) {
if (event.getType() == IResourceChangeEvent.POST_BUILD) { //refresh every project after build
/*
* FIXME: M-A.L: (Bug 405909) I commented out the refresh code because it was a
* major performance issue even without LLVM projects in the
* workspace. Unfortunately, I could not track down the reason as to
* why there was a refresh in the first the place by looking at the
* history (git and svn) and by manual testing
*/
// //get all projects
// IProject[] projects = LlvmToolOptionPathUtil.getProjectsInWorkspace();
//
// //refresh the projects
// for (IProject proj : projects) {
// try {
// proj.refreshLocal(IResource.DEPTH_INFINITE, null);
// } catch (CoreException e) {
// e.printStackTrace();
// }
// }
} else if (event.getType() == IResourceChangeEvent.PRE_BUILD) {
String os = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
if (os.indexOf("win") >= 0) { //$NON-NLS-1$
LlvmPreferenceStore.addMinGWStdLib();
// LlvmToolOptionPathUtil.addMissingCppIncludesForMingw(); //TODO: Remove when Scanner Discovery has been fixed
} else if (os.indexOf( "nix") >=0 || os.indexOf( "nux") >=0 /*|| os.indexOf( "mac") >=0 */) { //$NON-NLS-1$ //$NON-NLS-2$
LlvmPreferenceStore.addStdLibUnix();
}
/*
* try to add values (include and library paths and libraries) to
* projects's build configurations to ensure that newly added projects
* have necessary paths.
*/
LlvmToolOptionPathUtil.addAllIncludesToBuildConf();
LlvmToolOptionPathUtil.addAllLibsToBuildConf();
LlvmToolOptionPathUtil.addAllLibPathsToBuildConf();
} else {
return;
}
}
}