<?xml version="1.0" encoding="UTF-8"?>
<!--                                                                       -->
<!-- Copyright (c) 2016 Intel Corporation.				   -->
<!-- 									   -->
<!-- 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 implementation and documentation	   -->
<!--                                                                       -->
<?eclipse version="3.4"?>
<plugin>
  <extension id="com.intel.sgx.sgxbuilderdefinitions" name="Intel(R) Software Guard Extensions Builder Definition"
	     point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
    <toolChain configurationEnvironmentSupplier="com.linux.ide.eclipse.ndk.internal.build.NdkEnvSupplier"
	       id="com.intel.sgx.SGXtoolChain" isAbstract="false" name="Intel(R) SGX"
	       supportsManagedBuild="false">
      <builder cleanBuildTarget="clean" command="make"
	       commandLauncher="com.intel.sgx.build.SGXSDKCommandLauncher" id="com.intel.sgx.sgxbuilder"
	       isAbstract="false" isVariableCaseSensitive="false"
	       name="Intel(R) Software Guard Extensions Linux Builder">
      </builder>
      <targetPlatform binaryParser="org.eclipse.cdt.core.ELF"
		      id="com.intel.sgx.targetEnclave" isAbstract="false">
      </targetPlatform>
      <tool id="com.intel.sgx.compiler" isAbstract="false" name="Intel(R) SGX"
	    natureFilter="both">
	<option browseType="directory" id="com.intel.sgx.option.includePath"
		isAbstract="false" resourceFilter="all" valueType="includePath">
	</option>
	<inputType id="com.intel.sgx.inputType"
		   scannerConfigDiscoveryProfileId="com.intel.sgx.SGXPerProjectProfile"
		   sources="c,cpp">
	</inputType>
      </tool>
    </toolChain>



    <configuration id="com.intel.sgx.configuration.Sim.Debug" name="Intel(R) SGX Simulation Debug">
         <toolChain id="com.intel.sgx.toolChain.Sim.Debug" isAbstract="false"
		     name="Intel(R) SGX" superClass="com.intel.sgx.SGXtoolChain">
             <builder arguments="SGX_DEBUG=1 SGX_MODE=SIM -f sgx/Makefile" command="make"
		         id="com.intel.sgx.builder2" isAbstract="false"
        		 isVariableCaseSensitive="false" name="Intel(R) Software Guard Extensions Linux Builder"
		         superClass="com.intel.sgx.sgxbuilder">
        	</builder>
          </toolChain>
    </configuration>

    <configuration id="com.intel.sgx.configuration.HW.Debug" name="Intel(R) SGX Hardware Debug">
         <toolChain id="com.intel.sgx.toolChain.HW.Debug" isAbstract="false"
		     name="Intel(R) SGX" superClass="com.intel.sgx.SGXtoolChain">
        	<builder arguments="SGX_DEBUG=1 SGX_MODE=HW -f sgx/Makefile" command="make"
	        	 id="com.intel.sgx.builder1" isAbstract="false"
		         isVariableCaseSensitive="false" name="Intel(R) Software Guard Extensions Linux Builder"
        		 superClass="com.intel.sgx.sgxbuilder">
	        </builder>
         </toolChain>
    </configuration>

   <configuration id="com.intel.sgx.configuration.Sim.Release" name="Intel(R) SGX Simulation">
        <toolChain id="com.intel.sgx.toolChain.Sim.Release" isAbstract="false"
   	     name="Intel(R) SGX" superClass="com.intel.sgx.SGXtoolChain">
            <builder arguments="SGX_DEBUG=0 SGX_MODE=SIM -f sgx/Makefile" command="make"
   	         id="com.intel.sgx.builder3" isAbstract="false"
       		 isVariableCaseSensitive="false" name="Intel(R) Software Guard Extensions Linux Builder"
   	         superClass="com.intel.sgx.sgxbuilder">
       	</builder>
         </toolChain>
   </configuration>
                                                                                               
   <configuration id="com.intel.sgx.configuration.HW.Prerelease" name="Intel(R) SGX Hardware Prerelease">
        <toolChain id="com.intel.sgx.toolChain.HW.Prerelease" isAbstract="false"
   	     name="Intel(R) SGX" superClass="com.intel.sgx.SGXtoolChain">
       	<builder arguments="SGX_PRERELEASE=1 SGX_MODE=HW -f sgx/Makefile" command="make"
           	 id="com.intel.sgx.builder5" isAbstract="false"
   	         isVariableCaseSensitive="false" name="Intel(R) Software Guard Extensions Linux Builder"
       		 superClass="com.intel.sgx.sgxbuilder">
           </builder>
        </toolChain>
   </configuration>

   <configuration id="com.intel.sgx.configuration.HW.Release" name="Intel(R) SGX Hardware Release">
        <toolChain id="com.intel.sgx.toolChain.HW.Release" isAbstract="false"
   	     name="Intel(R) SGX" superClass="com.intel.sgx.SGXtoolChain">
       	<builder arguments="SGX_DEBUG=0 SGX_MODE=HW -f sgx/Makefile" command="make"
           	 id="com.intel.sgx.builder6" isAbstract="false"
   	         isVariableCaseSensitive="false" name="Intel(R) Software Guard Extensions Linux Builder"
       		 superClass="com.intel.sgx.sgxbuilder">
           </builder>
        </toolChain>
   </configuration>

</extension>
<extension id="com.intel.sgx.SGXPerProjectProfile" name="Intel(R) SGX Per Project Profile"
	   point="org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile">
  <scannerInfoCollector
      class="com.intel.sgx.discovery.SGXSDKScannerInfoCollector" scope="project">
  </scannerInfoCollector>
</extension>
<extension id="com.intel.sgx.commands" name="Intel(R) SGX Commands"
	   point="org.eclipse.ui.commands">
  <category id="com.intel.sgx.category.enclaveIF" name="Intel(R) SGX Untrusted Enclave Interface">
  </category>
  <category id="com.intel.sgx.category.trustedIF" name="Intel(R) SGX Trusted Enclave Interface">
  </category>
  <command categoryId="com.intel.sgx.category.enclaveIF" id="com.intel.sgx.command.addEnclave"
	   name="Add Intel(R) SGX Enclave">
    <commandParameter id="com.intel.sgx.commandParameter3"
		      name="name" optional="true">
    </commandParameter>
  </command>
  <command categoryId="com.intel.sgx.category.enclaveIF" id="com.intel.sgx.command.addTrustedStaticLib"
	   name="Add Intel(R) SGX Trusted Static Library">
    <commandParameter id="com.intel.sgx.commandParameter3"
		      name="name" optional="true">
    </commandParameter>
  </command>
  <command categoryId="com.intel.sgx.category.enclaveIF" id="com.intel.sgx.command.removeEnclave"
	   name="Remove Intel(R) SGX Enclave">
  </command>
  <command categoryId="com.intel.sgx.category.enclaveIF" id="com.intel.sgx.command.addUntrustedModule"
	   name="Add Intel(R) SGX Untrusted Module">
  </command>
  <command categoryId="com.intel.sgx.category.enclaveIF" id="com.intel.sgx.command.addSGXNature"
	   name="Add Intel(R) SGX Nature">
  </command>
  <command categoryId="com.intel.sgx.category.enclaveIF" id="com.intel.sgx.command.updateSigningKey"
	   name="Update Intel(R) SGX Enclave Signing Key">
  </command>
  <command categoryId="com.intel.sgx.category.enclaveIF"
	   id="com.intel.sgx.command.enclaveConfigHandler" name="Update Config">
  </command>
  <command categoryId="com.intel.sgx.category.enclaveIF"
	   id="com.intel.sgx.command.twoStepSignStep1" name="Generate Hash">
  </command>
  <command categoryId="com.intel.sgx.category.enclaveIF"
	   id="com.intel.sgx.command.twoStepSignStep2" name="Generate Signed Enclave">
  </command>
</extension>
<extension point="org.eclipse.ui.menus">
  <menuContribution allPopups="false"
		    locationURI="popup:org.eclipse.ui.popup.any?after=additions">
    <menu label="Intel(R) Software Guard Extensions Tools">
      	<visibleWhen checkEnabled="false">
	  <with variable="selection">
	    <test property="com.intel.sgx.testers.sgxNatureAdded"
		  value="true"
		  forcePluginActivation="true"
/>
	  </with>
	</visibleWhen>
      <command commandId="com.intel.sgx.command.addSGXNature"
	       style="push">
	<visibleWhen checkEnabled="false">
	  <with variable="selection">
	    <iterate operator="or">
	      <adapt type="org.eclipse.core.resources.IProject">
		<not>
		  <test property="org.eclipse.core.resources.projectNature"
			value="com.intel.sgx.sgxnature">
		  </test>
		</not>
		<test property="org.eclipse.core.resources.projectNature"
		      value="org.eclipse.cdt.core.cnature">
		</test>
	      </adapt>
	    </iterate>
	  </with>
	</visibleWhen>
      </command>
      <command commandId="com.intel.sgx.command.addEnclave" style="push">
		<visibleWhen checkEnabled="false">
	  	<with variable="selection">
	    	<iterate operator="or">
	      <adapt type="org.eclipse.core.resources.IProject">
		<test property="org.eclipse.core.resources.projectNature"
		      value="com.intel.sgx.sgxnature">
		</test>
	      </adapt>
	    </iterate>
	  </with>
	</visibleWhen>
      </command>
      <command commandId="com.intel.sgx.command.addTrustedStaticLib" style="push">
		<visibleWhen checkEnabled="false">
	  	<with variable="selection">
	    	<iterate operator="or">
	      <adapt type="org.eclipse.core.resources.IProject">
		<test property="org.eclipse.core.resources.projectNature"
		      value="com.intel.sgx.sgxnature">
		</test>
	      </adapt>
	    </iterate>
	  </with>
	</visibleWhen>
      </command>
      <command commandId="com.intel.sgx.command.addUntrustedModule" style="push">
	<visibleWhen checkEnabled="false">
	  <with variable="selection">
	    <iterate operator="or">
	      <adapt type="org.eclipse.core.resources.IProject">
		<test property="org.eclipse.core.resources.projectNature"
		      value="com.intel.sgx.sgxnature">
		</test>
	      </adapt>
	    </iterate>
	  </with>
	</visibleWhen>
      </command>
      <command commandId="com.intel.sgx.command.updateSigningKey"
	       style="push">
	<visibleWhen checkEnabled="false">
	  <with variable="selection">
	    <iterate operator="or">
	      <adapt type="org.eclipse.core.resources.IProject">
		<test property="org.eclipse.core.resources.projectNature"
		      value="com.intel.sgx.sgxnature">
		</test>
	      </adapt>
	    </iterate>
	  </with>
	</visibleWhen>
      </command>

      <command commandId="com.intel.sgx.command.enclaveConfigHandler"
	       style="push">
	<visibleWhen checkEnabled="false">
	  <with variable="selection">
	    <iterate operator="or">
	      <adapt type="org.eclipse.core.resources.IProject">
		<test property="org.eclipse.core.resources.projectNature"
		      value="com.intel.sgx.sgxnature">
		</test>
	      </adapt>
	    </iterate>
	  </with>
	</visibleWhen>
      </command>

      <menu label="Two Step Sign Enclave">
	<visibleWhen checkEnabled="false">
	  <with variable="selection">
	    <test property="com.intel.sgx.testers.twoStepsActive"
		  value="true"
		  forcePluginActivation="true"
/>
	  </with>
	</visibleWhen>
	<command commandId="com.intel.sgx.command.twoStepSignStep1"
		 style="push">
	  <!-- <visibleWhen checkEnabled="false"> -->
	  <!--   <with variable="selection"> -->
	  <!--     <iterate operator="or"> -->
	  <!-- 	<adapt type="org.eclipse.core.resources.IProject"> -->
	  <!-- 	  <test property="org.eclipse.core.resources.projectNature" -->
	  <!-- 		value="com.intel.sgx.sgxccnature"> -->
	  <!-- 	  </test> -->
	  <!-- 	</adapt> -->
	  <!--     </iterate> -->
	  <!--   </with> -->
	  <!-- </visibleWhen> -->
	</command>
	<command commandId="com.intel.sgx.command.twoStepSignStep2"
		 style="push">
	  <!-- <visibleWhen checkEnabled="false"> -->
	  <!--   <with variable="selection"> -->
	  <!--     <iterate operator="or"> -->
	  <!-- 	<adapt type="org.eclipse.core.resources.IProject"> -->
	  <!-- 	  <test property="org.eclipse.core.resources.projectNature" -->
	  <!-- 		value="com.intel.sgx.sgxccnature"> -->
	  <!-- 	  </test> -->
	  <!-- 	</adapt> -->
	  <!--     </iterate> -->
	  <!--   </with> -->
	  <!-- </visibleWhen> -->
	</command>	
      </menu>

    </menu>
    <menu label="Intel(R) Software Guard Extensions Options">
      <visibleWhen checkEnabled="false">
	<with variable="selection">
	  <iterate ifEmpty="false" operator="or">
	    <adapt type="org.eclipse.core.resources.IProject">
	      <test property="org.eclipse.core.resources.projectNature"
		    value="com.intel.sgx.sgxccnature">
	      </test>
	    </adapt>
	  </iterate>
	</with>
      </visibleWhen>
      <command commandId="com.intel.sgx.command.updateSigningKey"
	       style="push">
	<visibleWhen checkEnabled="false">
	  <with variable="selection">
	    <iterate operator="or">
	      <adapt type="org.eclipse.core.resources.IProject">
		<test property="org.eclipse.core.resources.projectNature"
		      value="com.intel.sgx.sgxccnature">
		</test>
	      </adapt>
	    </iterate>
	  </with>
	</visibleWhen>
      </command>
      <command commandId="com.intel.sgx.command.enclaveConfigHandler"
	       style="push">
	<visibleWhen checkEnabled="false">
	  <with variable="selection">
	    <iterate operator="or">
	      <adapt type="org.eclipse.core.resources.IProject">
		<test property="org.eclipse.core.resources.projectNature"
		      value="com.intel.sgx.sgxccnature">
		</test>
	      </adapt>
	    </iterate>
	  </with>
	</visibleWhen>
      </command>
      <menu label="Two Step Sign Enclave">
	<visibleWhen checkEnabled="false">
	  <with variable="selection">
	    <iterate ifEmpty="false" operator="or">
	      <adapt type="org.eclipse.core.resources.IProject">
		<test property="org.eclipse.core.resources.projectNature"
		      value="com.intel.sgx.sgxccnature">
		</test>
	      </adapt>
	    </iterate>
	  </with>
	</visibleWhen>
	<command commandId="com.intel.sgx.command.twoStepSignStep1"
		 style="push">
	  <visibleWhen checkEnabled="false">
	    <with variable="selection">
	      <iterate operator="or">
		<adapt type="org.eclipse.core.resources.IProject">
		  <test property="org.eclipse.core.resources.projectNature"
			value="com.intel.sgx.sgxccnature">
		  </test>
		</adapt>
	      </iterate>
	    </with>
	  </visibleWhen>
	</command>
	<command commandId="com.intel.sgx.command.twoStepSignStep2"
		 style="push">
	  <visibleWhen checkEnabled="false">
	    <with variable="selection">
	      <iterate operator="or">
		<adapt type="org.eclipse.core.resources.IProject">
		  <test property="org.eclipse.core.resources.projectNature"
			value="com.intel.sgx.sgxnature">
		  </test>
		</adapt>
	      </iterate>
	    </with>
	  </visibleWhen>
	</command>	
      </menu>
    </menu>
  </menuContribution>
</extension>
<extension point="org.eclipse.ui.preferencePages">
  <page class="com.intel.sgx.preferences.SGXPreferencePage" id="com.intel.sgx.preferences.SGXPreferencePage"
	name="Intel(R) SGX Preferences">
  </page>
</extension>
<extension point="org.eclipse.core.runtime.preferences">
  <initializer class="com.intel.sgx.preferences.PreferenceInitializer">
  </initializer>
</extension>
<extension point="org.eclipse.ui.handlers">
  <handler class="com.intel.sgx.handlers.AddEnclave" commandId="com.intel.sgx.command.addEnclave">
    <activeWhen>
      <with variable="selection">
	<!--<iterate operator="or"> <adapt type="org.eclipse.core.resources.IProject"> 
	    <and> <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"> 
	    </test> <test property="org.eclipse.core.resources.projectNature" value="com.linux.ide.eclipse.adt.LinuxNature"> 
	    </test> </and> <test property="org.eclipse.core.resources.projectNature" 
	    value="com.intel.sgx.sgxnature"> </test> </adapt> </iterate> -->
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </activeWhen>
    <enabledWhen>
      <with variable="selection">
	<!--<iterate operator="or"> <adapt type="org.eclipse.core.resources.IProject"> 
	    <and> <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"> 
	    </test> <test property="org.eclipse.core.resources.projectNature" value="com.linux.ide.eclipse.adt.LinuxNature"> 
	    </test> </and> <test property="org.eclipse.core.resources.projectNature" 
	    value="com.intel.sgx.sgxnature"> </test> </adapt> </iterate> -->
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </enabledWhen>
  </handler>
<handler class="com.intel.sgx.handlers.AddTrustedStaticLib" commandId="com.intel.sgx.command.addTrustedStaticLib">
    <activeWhen>
      <with variable="selection">
	<!--<iterate operator="or"> <adapt type="org.eclipse.core.resources.IProject"> 
	    <and> <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"> 
	    </test> <test property="org.eclipse.core.resources.projectNature" value="com.linux.ide.eclipse.adt.LinuxNature"> 
	    </test> </and> <test property="org.eclipse.core.resources.projectNature" 
	    value="com.intel.sgx.sgxnature"> </test> </adapt> </iterate> -->
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </activeWhen>
    <enabledWhen>
      <with variable="selection">
	<!--<iterate operator="or"> <adapt type="org.eclipse.core.resources.IProject"> 
	    <and> <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"> 
	    </test> <test property="org.eclipse.core.resources.projectNature" value="com.linux.ide.eclipse.adt.LinuxNature"> 
	    </test> </and> <test property="org.eclipse.core.resources.projectNature" 
	    value="com.intel.sgx.sgxnature"> </test> </adapt> </iterate> -->
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </enabledWhen>
  </handler>
  <handler class="com.intel.sgx.handlers.RemoveEnclave"
	   commandId="com.intel.sgx.command.removeEnclave">
    <activeWhen>
      <with variable="selection">
	<!--<iterate operator="or"> <adapt type="org.eclipse.core.resources.IProject"> 
	    <and> <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"> 
	    </test> <test property="org.eclipse.core.resources.projectNature" value="com.linux.ide.eclipse.adt.LinuxNature"> 
	    </test> </and> <test property="org.eclipse.core.resources.projectNature" 
	    value="com.intel.sgx.sgxnature"> </test> </adapt> </iterate> -->
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </activeWhen>
    <enabledWhen>
      <with variable="selection">
	<!--<iterate operator="or"> <adapt type="org.eclipse.core.resources.IProject"> 
	    <and> <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"> 
	    </test> <test property="org.eclipse.core.resources.projectNature" value="com.linux.ide.eclipse.adt.LinuxNature"> 
	    </test> </and> <test property="org.eclipse.core.resources.projectNature" 
	    value="com.intel.sgx.sgxnature"> </test> </adapt> </iterate> -->
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </enabledWhen>
  </handler>
  <handler class="com.intel.sgx.handlers.AddUntrustedModule" commandId="com.intel.sgx.command.addUntrustedModule">
    <activeWhen>
      <with variable="selection">
	<!--<iterate operator="or"> <adapt type="org.eclipse.core.resources.IProject"> 
	    <and> <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"> 
	    </test> <test property="org.eclipse.core.resources.projectNature" value="com.linux.ide.eclipse.adt.LinuxNature"> 
	    </test> </and> <test property="org.eclipse.core.resources.projectNature" 
	    value="com.intel.sgx.sgxnature"> </test> </adapt> </iterate> -->
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </activeWhen>
    <enabledWhen>
      <with variable="selection">
	<!--<iterate operator="or"> <adapt type="org.eclipse.core.resources.IProject"> 
	    <and> <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"> 
	    </test> <test property="org.eclipse.core.resources.projectNature" value="com.linux.ide.eclipse.adt.LinuxNature"> 
	    </test> </and> <test property="org.eclipse.core.resources.projectNature" 
	    value="com.intel.sgx.sgxnature"> </test> </adapt> </iterate> -->
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </enabledWhen>
  </handler>
  <handler class="com.intel.sgx.handlers.AddSGXNature"
	   commandId="com.intel.sgx.command.addSGXNature">
    <activeWhen>
      <with variable="selection">
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </activeWhen>
    <enabledWhen>
      <with variable="selection">
	<iterate operator="or">
	  <instanceof value="org.eclipse.core.resources.IProject">
	  </instanceof>
	</iterate>
      </with>
    </enabledWhen>
  </handler>
  <handler class="com.intel.sgx.handlers.UpdateSigningKey"
	   commandId="com.intel.sgx.command.updateSigningKey">
    <activeWhen>
      <with variable="selection">
	<iterate operator="or">
	  <adapt type="org.eclipse.core.resources.IProject">
	    <and>
	      <test property="org.eclipse.core.resources.projectNature"
		    value="com.intel.sgx.sgxnature">
	      </test>
	    </and>
	  </adapt>
	</iterate>
      </with>
    </activeWhen>
    <enabledWhen>
      <with variable="selection">
	<iterate operator="or">
	  <adapt type="org.eclipse.core.resources.IProject">
	    <and>
	      <test property="org.eclipse.core.resources.projectNature"
		    value="com.intel.sgx.sgxnature">
	      </test>
	    </and>
	  </adapt>
	</iterate>
      </with>
    </enabledWhen>
  </handler>
  <handler class="com.intel.sgx.handlers.EnclaveConfigHandler"
	   commandId="com.intel.sgx.command.enclaveConfigHandler">
    <activeWhen>
      <with variable="selection">
	<iterate operator="or">
	  <adapt type="org.eclipse.core.resources.IProject">
	    <and>
	      <test property="org.eclipse.core.resources.projectNature"
		    value="com.intel.sgx.sgxnature">
	      </test>
	    </and>
	  </adapt>
	</iterate>
      </with>
    </activeWhen>
    <enabledWhen>
      <with variable="selection">
	<iterate operator="or">
	  <adapt type="org.eclipse.core.resources.IProject">
	    <and>
	      <test property="org.eclipse.core.resources.projectNature"
		    value="com.intel.sgx.sgxnature">
	      </test>
	    </and>
	  </adapt>
	</iterate>
      </with>
    </enabledWhen>
  </handler>
  <handler class="com.intel.sgx.handlers.TwoStepSignStep1"
	   commandId="com.intel.sgx.command.twoStepSignStep1">
    <activeWhen>
      <with variable="selection">
    	<iterate operator="or">
    	  <adapt type="org.eclipse.core.resources.IProject">
    	    <and>
    	      <test property="org.eclipse.core.resources.projectNature"
    		    value="com.intel.sgx.sgxnature">
    	      </test>
    	    </and>
    	  </adapt>
    	</iterate>
      </with>
    </activeWhen>
    <enabledWhen>
      <with variable="selection">
	<iterate operator="or">
	  <adapt type="org.eclipse.core.resources.IProject">
	    <and>
	      <test property="org.eclipse.core.resources.projectNature"
		    value="com.intel.sgx.sgxnature">
	      </test>
	    </and>
	  </adapt>
	</iterate>
      </with>
    </enabledWhen>
  </handler>
  <handler class="com.intel.sgx.handlers.TwoStepSignStep2"
	   commandId="com.intel.sgx.command.twoStepSignStep2">
    <activeWhen>
      <with variable="selection">
	<iterate operator="or">
	  <adapt type="org.eclipse.core.resources.IProject">
	    <and>
	      <test property="org.eclipse.core.resources.projectNature"
		    value="com.intel.sgx.sgxnature">
	      </test>
	    </and>
	  </adapt>
	</iterate>
      </with>
    </activeWhen>
    <enabledWhen>
      <with variable="selection">
	<iterate operator="or">
	  <adapt type="org.eclipse.core.resources.IProject">
	    <and>
	      <test property="org.eclipse.core.resources.projectNature"
		    value="com.intel.sgx.sgxnature">
	      </test>
	    </and>
	  </adapt>
	</iterate>
      </with>
    </enabledWhen>
  </handler>
  <!--<handler class="com.intel.sgx.handlers.RemoveSGXNature" commandId="com.intel.sgx.command.removeSGXNature"> 
      <activeWhen> <with variable="selection"> <iterate operator="or"> <instanceof 
      value="org.eclipse.core.resources.IProject"> </instanceof> </iterate> </with> 
      </activeWhen> <enabledWhen> <with variable="selection"> <iterate operator="or"> 
      <instanceof value="org.eclipse.core.resources.IProject"> </instanceof> </iterate> 
      </with> </enabledWhen> </handler> -->
</extension>
<extension id="com.intel.sgx.templates" point="org.eclipse.cdt.core.templates">

  <template id="com.intel.sgx.SGXEnclaveCWithSample"    location="templates/SGXtemplates/c/with_sample/enclavetemplate.xml"   projectType="none">
  </template>

  <template id="com.intel.sgx.SGXEnclaveCMinimal"       location="templates/SGXtemplates/c/minimal/enclavetemplate.xml"       projectType="none">
  </template>

  <template id="com.intel.sgx.SGXEnclaveC++WithSample"  location="templates/SGXtemplates/c++/with_sample/enclavetemplate.xml" projectType="none">
  </template>

  <template id="com.intel.sgx.SGXEnclaveC++Minimal"     location="templates/SGXtemplates/c++/minimal/enclavetemplate.xml"     projectType="none">
  </template>



  <template id="com.intel.sgx.SGXTrustedStaticCMinimal"      location="templates/SGXtemplates/c/minimal/trustedstatictemplate.xml"       projectType="none">
  </template>

  <template id="com.intel.sgx.SGXTrustedStaticC++Minimal"    location="templates/SGXtemplates/c++/minimal/trustedstatictemplate.xml"     projectType="none">
  </template>


      <template
            id="com.intel.sgx.templates.HelloWorldCCProject"
            filterPattern=".*g.*"
            location="templates/SGXtemplates/ctemplate.xml"
	    projectType="my.build.property"

>
      </template>

  <template filterPattern=".*" id="com.intel.sgx.SGXCPPProject"
	    isCategory="false" location="templates/SGXtemplates/cxxtemplate.xml"
	    projectType="none"
>
  </template>


  <template id="com.intel.sgx.SGXUntrustedModuleCMinimal"      location="templates/SGXtemplates/c/minimal/untrusted_module_template.xml"       projectType="none">
  </template>
  <template id="com.intel.sgx.SGXUntrustedModuleC++Minimal"    location="templates/SGXtemplates/c++/minimal/untrusted_module_template.xml"     projectType="none">
  </template>



  <template id="com.intel.sgx.AddSGXNature" location="templates/SGXtemplates/common/addnaturetemplate.xml"
	    projectType="Intel(R) Software Guard Extensions Project">
  </template>

  <template id="com.intel.sgx.SGXEnclaveConfig" location="templates/SGXtemplates/configtemplate.xml"
	    projectType="none">
  </template>
  <!--<template id="com.intel.sgx.template1" isCategory="false" location="templates/template.xml" 
      pagesAfterTemplateSelectionProvider="com.intel.sgx.handlers.templatepagesafter" 
      projectType="com.intel.sgx.SGXProjectType"> </template> -->
</extension>
<extension point="org.eclipse.cdt.core.templateProcessTypes">
  <processType name="CreateNativeFolders"
	       processRunner="com.intel.sgx.templates.CreateNativeFolders">
    <simple name="projectName">
    </simple>
    <simpleArray name="sourceFolders">
    </simpleArray>
    <simpleArray name="outputFolders">
    </simpleArray>
  </processType>
  <processType name="SetCCNature" processRunner="com.intel.sgx.templates.SetCCNature">
    <simple name="projectName" />
  </processType>
  <processType name="SetStaticCCNature" processRunner="com.intel.sgx.templates.SetStaticCCNature">
    <simple name="projectName" />
  </processType>
</extension>
<extension point="org.eclipse.core.resources.variableResolvers">
  <variableResolver class="com.intel.sgx.SdkPathVariableProvider"
		    variable="SGXSdkDirPath">
  </variableResolver>
</extension>
<extension id="id2"
	   point="org.eclipse.cdt.core.CConfigurationDataProvider">
  <provider class="com.intel.sgx.CConfigurationDataProvider2"
	    natures="org.eclipse.cdt.core.cnature">
  </provider>
</extension>
<extension id="sgxnature" name="Intel(R) SGX Nature"
	   point="org.eclipse.core.resources.natures">
  <runtime>
    <run class="com.intel.sgx.natures.SGXNature" />
  </runtime>
</extension>
<extension id="sgxccnature" name="Intel(R) SGX CCNature"
	   point="org.eclipse.core.resources.natures">
  <runtime>
    <run class="com.intel.sgx.natures.SGXCCNature" />
  </runtime>
</extension>
<extension id="sgxstaticccnature" name="Intel(R) SGX StaticCCNature"
	   point="org.eclipse.core.resources.natures">
  <runtime>
    <run class="com.intel.sgx.natures.SGXStaticCCNature" />
  </runtime>
</extension>
<extension point="org.eclipse.core.expressions.propertyTesters"> 
  <propertyTester class="com.intel.sgx.testers.SGXPropertyTester"
		  id="com.intel.sgx.testers.SGXPropertyTester" 
		  properties="sgxNatureAdded,twoStepsActive"
		  type="java.lang.Object"
		  namespace="com.intel.sgx.testers" 
    > 
  </propertyTester>
</extension>


<extension point="org.eclipse.ui.newWizards"> 
  <category
      id = "com.intel.sgx.wizzards"

name="C/C++ projects with Intel(R) SGX Enabled">
  </category>

  <wizard
      canFinishEarly="false"
      category="com.intel.sgx.wizzards"
      class="com.intel.sgx.wizards.SGXCProjectWizard"
      finalPerspective="org.eclipse.cdt.ui.CPerspective"
      hasPages="true"
      icon="templates/newmngc_app.gif"
      id="com.intel.sgx.wizards.SGXCProjectWizard"
      name="C Project"
      project="true">
    <description>
      An C project, with Intel(R) SGX Commands and Configurations
    </description>
  </wizard>

  <wizard
      canFinishEarly="false"
      category="com.intel.sgx.wizzards"
      class="com.intel.sgx.wizards.SGXCCProjectWizard"
      finalPerspective="org.eclipse.cdt.ui.CPerspective"
      hasPages="true"
      id="com.intel.sgx.wizards.SGXCDProjectWizard"
      icon="templates/newmngcc_app.gif"
      name="C++ Project"
      project="true">
    <description>
      An C++ project, with Intel(R) SGX Commands and Configurations
    </description>
  </wizard>
  
</extension> 

</plugin>
