<!--                                                                        -->
<!-- Copyright 2008 Google Inc.                                             -->
<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
<!-- may not use this file except in compliance with the License. You may   -->
<!-- may obtain a copy of the License at                                    -->
<!--                                                                        -->
<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
<!--                                                                        -->
<!-- Unless required by applicable law or agreed to in writing, software    -->
<!-- distributed under the License is distributed on an "AS IS" BASIS,      -->
<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        -->
<!-- implied. License for the specific language governing permissions and   -->
<!-- limitations under the License.                                         -->

<!-- Types and resources required to support primitive system operation.    -->
<!--                                                                        -->
<!-- Types from this module are visible to and imported into user code.     -->
<!-- Every module should directly or indirectly inherit this module.        -->
<!--                                                                        -->
<module>

  <!--
    A property that can be used to see if Super Dev Mode is on.
    It should only be set by Super Dev Mode and defined on the top so that
    all modules can use it.
  -->
  <define-property name="superdevmode" values="off, on"/>
  <set-property name="superdevmode" value="off"/>

  <inherits name="com.google.gwt.dev.jjs.intrinsic.Intrinsic" />
  <inherits name="com.google.gwt.emul.Emulation" />
  <inherits name="com.google.gwt.core.StackTrace" />
  <inherits name="com.google.gwt.core.CompilerParameters" />
  <inherits name="com.google.gwt.core.AsyncFragmentLoader" />

  <source path="client" />
  <source path="shared" />
  <super-source path="translatable" />
  <public path="public" />

  <define-linker name="sso" class="com.google.gwt.core.linker.SingleScriptLinker" />
  <define-linker name="std" class="com.google.gwt.core.linker.IFrameLinker" />
  <inherits name="com.google.gwt.core.XSLinker" />
  <inherits name="com.google.gwt.core.CrossSiteIframeLinker" />

  <!-- When true, compiles in support for GWT.unloadModule(), otherwise it is a no-op. -->
  <define-property name="gwt.unloadEnabled" values="false, true"/>
  <set-property name="gwt.unloadEnabled" value="false"/>

  <replace-with class="com.google.gwt.core.client.impl.UnloadSupportEnabled">
      <when-property-is name="gwt.unloadEnabled" value="true"/>
      <when-type-is class="com.google.gwt.core.client.impl.UnloadSupport"/>
  </replace-with>

  <replace-with class="com.google.gwt.core.client.impl.SuperDevModeLogger">
      <when-property-is name="superdevmode" value="on"/>
      <when-type-is class="com.google.gwt.core.shared.impl.JsLogger"/>
  </replace-with>

  <define-linker name="soycReport" class="com.google.gwt.core.linker.SoycReportLinker" />
  <define-linker name="symbolMaps" class="com.google.gwt.core.linker.SymbolMapsLinker" />

  <add-linker name="xsiframe" />

  <add-linker name="soycReport" />
  <add-linker name="symbolMaps" />
</module>
