<!--                                                                        -->
<!-- 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.core.CompilerParameters" />
  <inherits name="com.google.gwt.emul.Emulation" />
  <inherits name="com.google.gwt.core.StackTrace" />
  <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" />

  <!-- std and xs linkers are deprecated and will emit a warning, which can be turned off -->
  <define-configuration-property name="iframe.linker.suppressDeprecationWarning" is-multi-valued="false" />
  <set-configuration-property name="iframe.linker.suppressDeprecationWarning" value="false" />

  <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>
