From 5a723279bceea30d89c08bf66ed1e1309b1c121e Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Fri, 18 May 2007 17:52:44 +0000 Subject: [PATCH] 1. Presering configuration order on load 2. dep calculator fix 3. some test updates --- .../test3xStdMakeProjects/std_cpp_1.zip | Bin 0 -> 4487 bytes .../testplugin/CTestPlugin.java | 7 +- .../testplugin/ManagedBuildTestHelper.java | 4 + .../tests/suite/AllManagedBuildTests.java | 28 ++++-- .../managedbuilder/core/tests/TestMacro.java | 4 +- .../tests/BackwardCompatiblityTests.java | 95 ++++++++++++++++++ .../projectmodel/tests/ProjectModelTests.java | 2 +- .../internal/macros/BuildMacroProvider.java | 45 ++++++++- ...CDependencyCalculatorPreBuildCommands.java | 3 +- .../model/ICProjectDescriptionManager.java | 4 +- .../model/CProjectDescriptionManager.java | 3 +- 11 files changed, 174 insertions(+), 21 deletions(-) create mode 100644 build/org.eclipse.cdt.managedbuilder.core.tests/resources/test3xStdMakeProjects/std_cpp_1.zip create mode 100644 build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/BackwardCompatiblityTests.java diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test3xStdMakeProjects/std_cpp_1.zip b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test3xStdMakeProjects/std_cpp_1.zip new file mode 100644 index 0000000000000000000000000000000000000000..46607da55c69cd07dff0e0f5f29909ceb10683cf GIT binary patch literal 4487 zcmdT{c{r4N8-5u>mNb@-J!^;=Gon+9#xyt)MN*c=zJ_LG8CqG1OBU>ksnDUhED zL^w*&0Du7}05Ad`fQ*^BvlG_Q*22tL2W0_Nksl;KiD5wUo0(&5ASM_L4C4(52wIwh z5oeD2pgObIc1>#CDZb6$&%p}~GYE?a^6?2u_Vxkqm9Cq;c_N8Qg!W`MAi`d2&l0#_ z7-hIkBU8C?wuc_>DC!3Zb`MsT2Ttj32j~QenrK|vdQ9o}JM`~|5YA!V9f7Py*IQ0b zs^kZ<-6~<_>S;uGx1}ma6}5$;7(}i$ThGlL6cJq!>o4!=ole;il-4!dp7={c#Q3v^ zf6CEM$95YAAMdf{ze2@^Iw>P|V|M=bd~?9;!szS4Fs)tcZs}+Iv=Q@;el-LpW=u!) zS^^83Qy+a=yj+N=rW;A)m9(K+)4(a~-MvJU`VpGA(fXXb7p4WuYi$oS{)*W77B?KNcGb_KCG28$u~{|FowKw%&78mTm>%zyVp?OvzQP1C z_pUy6F&m)~i|3F%rbI=Ff$c(Lz}dNJePbl73O4za-(;D%U61%J`MN3< zh}?8yvGdy=!lrH*u9)JgWLVb2>OOGqmY9VV)R_?47&FVb$oC8d-Bx9H)cz^Q8{aw| z`&%9ra0heff8iyj%S$2P5_ahM0fFn=VyMc!Z>Oy z6+@Sx_fN}Q%A8-CP{wMybrjP0t0D5T(#9VRzG9rPV!x8hIX0&x(w_U|UP4eFtRCyo zv|OW=d($FH5YMW=pM{ikD9bT7IsD83xO5Sznh z>&Me!mC@Pql9`HN`7BI74`#>O6Z_?{H@uT0BjKV$XZ_hbcJ~lK1em5O+~yRW?CY+x z>HSDL`P_i*?N3ZgIrIAsT6+bvX~N|hvHtu6UU&AT^y@6hjy+U7t1)kVB7QN;dS45^ zTs^DtY+z)8uXZ~KmE^DQL&D!1Ahj5u_9+J=UVu~R^u`0Wd(!ikFa|D)CmFv>Ke)_l zq)J>)$GcqIY1Hy2d;Z8F(|T0|hf``^e8ru>LJeW~4bSJ)p+h@lE~Ik@gf@t2Mw(*m z`DhDs1_I?^b+KKAK5MN!lSD7QB5 z44ERkO+BxVbx-B+mRL&|l;-K{>QCkFYl!)_A!TOFDrD=`;Y{(rUyr$u0v;=;S1|(@7x?nLf#K!J6CB3PR#pj>T0|iS&4&4B8_i^qwAi+aZ`Z9T$QLg%hJC+wvz0)v)3I zp<3BTwv{_Fy9jI*>GdiZ$ki~&B6G9K31LC5)b=#jzDg)bf3%V@E_97O@=|!0#Ps>c z;|;yo+>X~{TGzeMGbI^<#imD(Qfo^~O~1$1B;B=)3F z;BbDF56>u)mMY`0C2a-o^=MLD>~#%p9>6Ynbb zW{xhb2oRDo14*f{fd?_1U||plXMC45n%M3;qD%BmAr+BQNL8aGQ(^%rWu$#g(Llxc zZhKWUDVQYG!QQ`?;(RD}WHg$UIJ%aiODt*}Vbuy`HI@OsT~#o-s^&IW*`Kta>#Znw z?ekXjSSM{FW9H=a&z5biLKD3a|1+)dpE|8yn{aY3z@g*|;$Ov_X}ya-F#lQA>Fc`6 zyp=od-^CvC1$*oNqIqFMV$_ zAI@!?fxhR0o48U8>U&(lTeu?VfekbHD$Q@H`NsQF3h-hB>D}zJIPmK{DAR65x?_RpNlEemdvbd0iulf4?r<*fhuO&%nA2iFMa?FvIPvc{c|wN X_ 0) { - newms = new BuildMacro[ms.length + 1]; + newms = new IBuildMacro[ms.length + 1]; System.arraycopy(ms, 0, newms, 0, ms.length); } else { newms = new BuildMacro[1]; @@ -122,7 +122,7 @@ public class TestMacro implements ms = provider.getMacros(IBuildMacroProvider.CONTEXT_PROJECT, mproj, false); IBuildMacro[] newms = null; if (ms != null && ms.length > 0) { - newms = new BuildMacro[ms.length + 1]; + newms = new IBuildMacro[ms.length + 1]; System.arraycopy(ms, 0, newms, 0, ms.length); } else { newms = new BuildMacro[1]; diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/BackwardCompatiblityTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/BackwardCompatiblityTests.java new file mode 100644 index 00000000000..d1cb7b464e5 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/BackwardCompatiblityTests.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright (c) 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.projectmodel.tests; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.eclipse.cdt.core.model.CoreModel; +import org.eclipse.cdt.core.settings.model.ICProjectDescription; +import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager; +import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper; +import org.eclipse.core.resources.IProject; + +public class BackwardCompatiblityTests extends TestCase { + private static final String TEST_3X_STD_MAKE_PROJECTS = "test3xStdMakeProjects"; + + private List projList = new LinkedList(); + + public static Test suite() { + return new TestSuite(BackwardCompatiblityTests.class); + } + + public void test3xStdMakeProject(){ + String PROJ_NAME = "std_cpp_1"; + + String[] BIN_PARSERS = new String[]{ + "org.eclipse.cdt.core.ELF", + "org.eclipse.cdt.core.PE", + "org.eclipse.cdt.core.GNU_ELF", + "org.eclipse.cdt.core.MachO" + }; + + String[] ERR_PARSERS = new String[]{ + "org.eclipse.cdt.core.MakeErrorParser", + "org.eclipse.cdt.core.GASErrorParser", + "org.eclipse.cdt.core.VCErrorParser" + }; + + IProject project = loadStdProject(PROJ_NAME); + projList.add(project); + + ICProjectDescriptionManager mngr = CoreModel.getDefault().getProjectDescriptionManager(); + assertFalse(mngr.isNewStyleProject(project)); + ICProjectDescription des = mngr.getProjectDescription(project, false); + checkDescription(des); + + des = mngr.getProjectDescription(project, true); + checkDescription(des); + + } + + private void checkDescription(ICProjectDescription des){ + ICProjectDescriptionManager mngr = CoreModel.getDefault().getProjectDescriptionManager(); + + assertFalse(mngr.isNewStyleProject(des)); + assertFalse(des.isCdtProjectCreating()); + assertEquals(1, des.getConfigurations().length); + + } + + private IProject loadStdProject(String name){ + return ManagedBuildTestHelper.loadProject(name, TEST_3X_STD_MAKE_PROJECTS); + } + + protected void setUp() throws Exception { + super.setUp(); + } + + protected void tearDown() throws Exception { + for(Iterator iter = projList.iterator(); iter.hasNext();){ + IProject proj = (IProject)iter.next(); + try { + proj.delete(true, null); + } catch (Exception e){ + } + iter.remove(); + } + super.tearDown(); + } + + +} diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/ProjectModelTests.java b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/ProjectModelTests.java index 133dea5dce7..00804565521 100644 --- a/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/ProjectModelTests.java +++ b/build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/projectmodel/tests/ProjectModelTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2007 Intel Corporation and others. + * Copyright (c) 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 diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/BuildMacroProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/BuildMacroProvider.java index 534cd77c347..20b3eba1c12 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/BuildMacroProvider.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/macros/BuildMacroProvider.java @@ -146,12 +146,55 @@ public class BuildMacroProvider implements IBuildMacroProvider, IMacroContextInf return CdtVariableResolver.convertStringListToString(value,listDelimiter); } + private static class VariableWrapper implements IBuildMacro { + private ICdtVariable fVariable; + + public VariableWrapper(ICdtVariable var){ + if(var == null) + throw new NullPointerException(); + + fVariable = var; + } + + public ICdtVariable getVariable(){ + return fVariable; + } + + public int getMacroValueType() { + return fVariable.getValueType(); + } + + public String[] getStringListValue() throws BuildMacroException { + try { + return fVariable.getStringListValue(); + } catch (CdtVariableException e) { + throw new BuildMacroException(e); + } + } + + public String getStringValue() throws BuildMacroException { + try { + return fVariable.getStringValue(); + } catch (CdtVariableException e) { + throw new BuildMacroException(e); + } + } + + public String getName() { + return fVariable.getName(); + } + + public int getValueType() { + return fVariable.getValueType(); + } + } + public static IBuildMacro wrap(ICdtVariable var){ if(var == null) return null; if(var instanceof IBuildMacro) return (IBuildMacro)var; - return new BuildMacro(var); + return new VariableWrapper(var); } public static IBuildMacro[] wrap(ICdtVariable vars[]){ diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculatorPreBuildCommands.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculatorPreBuildCommands.java index 747291ae491..73d384ad00d 100755 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculatorPreBuildCommands.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/DefaultGCCDependencyCalculatorPreBuildCommands.java @@ -16,6 +16,7 @@ import java.util.Vector; import org.eclipse.cdt.managedbuilder.core.BuildException; import org.eclipse.cdt.managedbuilder.core.IBuildObject; import org.eclipse.cdt.managedbuilder.core.IConfiguration; +import org.eclipse.cdt.managedbuilder.core.IFolderInfo; import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineGenerator; import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineInfo; import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration; @@ -154,7 +155,7 @@ public class DefaultGCCDependencyCalculatorPreBuildCommands implements IManagedD public boolean areCommandsGeneric() { if (genericCommands != null) return genericCommands.booleanValue(); // If the context is a Configuration, yes - if (buildContext instanceof IConfiguration) { + if (buildContext instanceof IConfiguration || buildContext instanceof IFolderInfo) { genericCommands = new Boolean(true); return true; } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICProjectDescriptionManager.java index 37fb45330f6..16106ff7d2b 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/ICProjectDescriptionManager.java @@ -110,14 +110,14 @@ public interface ICProjectDescriptionManager { void updateProjectDescriptions(IProject projects[], IProgressMonitor monitor) throws CoreException; /** - * aswers whether the given project is a new-style project, i.e. CConfigurationDataProvider-driven + * answers whether the given project is a new-style project, i.e. CConfigurationDataProvider-driven * @param project * @return */ boolean isNewStyleProject(IProject project); /** - * aswers whether the given project is a new-style project, i.e. CConfigurationDataProvider-driven + * answers whether the given project is a new-style project, i.e. CConfigurationDataProvider-driven * @param des * @return */ diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index 0c4b34eca39..5afbbf11618 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -26,6 +26,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -1415,7 +1416,7 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { } Map createCfgStorages(ICProjectDescription des) throws CoreException{ - Map map = new HashMap(); + LinkedHashMap map = new LinkedHashMap(); ICStorageElement rootElement = des.getStorage(MODULE_ID, false); if(rootElement != null){ ICStorageElement children[] = rootElement.getChildren();