Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/sourcetools/com.ibm.uma/com/ibm/uma/om/parser/module.xsd
6005 views
<!--
   Copyright (c) 2001, 2017 IBM Corp. and others

   This program and the accompanying materials are made available under
   the terms of the Eclipse Public License 2.0 which accompanies this
   distribution and is available at https://www.eclipse.org/legal/epl-2.0/
   or the Apache License, Version 2.0 which accompanies this distribution and
   is available at https://www.apache.org/licenses/LICENSE-2.0.

   This Source Code may also be made available under the following
   Secondary Licenses when the conditions for such availability set
   forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
   General Public License, version 2 with the GNU Classpath
   Exception [1] and GNU General Public License, version 2 with the
   OpenJDK Assembly Exception [2].

   [1] https://www.gnu.org/software/classpath/license.html
   [2] http://openjdk.java.net/legal/assembly-exception.html

   SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xi="http://www.w3.org/2001/XInclude">
	<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> 

	<xsd:annotation>
		<xsd:documentation xml:lang="en">
			J9 Module Description Schema
		</xsd:documentation>
	</xsd:annotation>
	
	<xsd:element name="module" type="ModuleType"/>
	
	<xsd:complexType name="ModuleType">
		<xsd:sequence>
			<xsd:element name="exportlists" type="ExportlistsType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="exports" type="ExportsType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="objectlists" type="ObjectlistsType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="objects" type="ObjectsType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="flaglists" type="FlaglistsType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="flags" type="flagsType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="artifact" type="ArtifactType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="ExportlistsType">
		<xsd:sequence>
		<xsd:element name="exports" type="ExportsType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute ref="xml:base"/> 
	</xsd:complexType>
	
	<xsd:complexType name="ObjectlistsType">
		<xsd:sequence>
		<xsd:element name="objects" type="ObjectsType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute ref="xml:base"/> 
	</xsd:complexType>
	
	<xsd:complexType name="FlaglistsType">
		<xsd:sequence>
		<xsd:element name="flags" type="flagsType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute ref="xml:base"/> 
	</xsd:complexType>
	
	<xsd:complexType name="ExportsType">
		<xsd:sequence>
			<xsd:element name="export" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" use="required"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute ref="xml:base"/> 
		<xsd:attribute name="group" type="xsd:string" use="required"/>
	</xsd:complexType>
	
	<xsd:complexType name="ObjectsType">
		<xsd:sequence>
			<xsd:element name="group" type="ObjectItemType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="object" type="ObjectItemType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute ref="xml:base"/> 
		<xsd:attribute name="group" type="xsd:string" use="required"/>
	</xsd:complexType>
	
	<xsd:complexType name="ObjectItemType">
		<xsd:sequence>
			<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="name" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="ArtifactType">
		<xsd:sequence>
			<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="options" type="OptionsType" minOccurs="0"/>
			<xsd:element name="phase" type="PhaseListType" minOccurs="0"/>
			<xsd:element name="dependencies" type="DependenciesType" minOccurs="0"/>
			<xsd:element name="commands" type="CommandsType" minOccurs="0"/>
			<xsd:element name="exports" type="AExportsType" minOccurs="0"/>
			<xsd:element name="flags" type="flagsType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="includes" type="IncludesType" minOccurs="0"/>
			<xsd:element name="makefilestubs" type="MakefileStubsType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="vpaths" type="vpathsType" minOccurs="0"/>
			<xsd:element name="objects" type="AObjectsType" minOccurs="0"/>
			<xsd:element name="libraries" type="LibrariesType" minOccurs="0"/>
			<xsd:element name="static-link-libraries" type="LibrariesType" minOccurs="0"/>
		</xsd:sequence>	
		<xsd:attribute name="type">
			<xsd:simpleType>
				<xsd:restriction base='xsd:string'>
					<xsd:enumeration value='bundle'/>
					<xsd:enumeration value='executable'/>
					<xsd:enumeration value='shared'/>
					<xsd:enumeration value='static'/>
					<xsd:enumeration value='reference'/>
					<xsd:enumeration value='target'/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="name" type="xsd:string"/>
		<xsd:attribute name="bundle" type="xsd:string"/>
		<xsd:attribute name="loadgroup" type="xsd:string"/>
		<xsd:attribute name="buildlocal" type="xsd:boolean" default="false"/>
		<xsd:attribute name="appendrelease" type="xsd:boolean" default="true"/>
		<xsd:attribute name="console" type="xsd:boolean" default="true"/>
		<xsd:attribute name="scope" type="xsd:string"/>
		<xsd:attribute name="all" type="xsd:boolean" default="true"/>
	</xsd:complexType>

	<xsd:complexType name="OptionsType">
		<xsd:sequence>
			<xsd:element name="option" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="xsd:string"/>
					<xsd:attribute name="data" type="xsd:string"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:simpleType name="PhaseListType">
		<xsd:list itemType="xsd:string"/>
	</xsd:simpleType>
	
	<xsd:complexType name="DependenciesType">
		<xsd:sequence>
			<xsd:element name="dependency" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="xsd:string" use="required"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="CommandsType">
		<xsd:sequence>
			<xsd:element name="command" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="line" type="xsd:string" use="required"/>
					<xsd:attribute name="type" type="CommandType" default="all"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="AExportsType">
		<xsd:sequence>
			<xsd:element name="group" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="xsd:string" use="required"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="export" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="xsd:string" use="required"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	
	
	<xsd:complexType name="MakefileStubsType">
		<xsd:sequence>
			<xsd:element name="makefilestub" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="data" type="xsd:string"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="vpathsType">
		<xsd:sequence>
			<xsd:element name="vpath" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="path" type="xsd:string"/>
					<xsd:attribute name="pattern" type="xsd:string"/>
					<xsd:attribute name="type" type="pathtype" default="artifact"/>
					<xsd:attribute name="augmentObjects" type="xsd:boolean" default="false"/>
					<xsd:attribute name="augmentIncludes" type="xsd:boolean" default="false"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="IncludesType">
		<xsd:sequence>
			<xsd:element name="include" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="path" type="xsd:string" use="required"/>
					<xsd:attribute name="type" type="pathtype" default="artifact"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="flagsType">
		<xsd:sequence>
			<xsd:element name="flag" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="xsd:string" use="required"/>
					<xsd:attribute name="value" type="xsd:string" />
					<xsd:attribute name="cflag" type="xsd:boolean" default="true"/>
					<xsd:attribute name="cxxflag" type="xsd:boolean" default="true"/>
					<xsd:attribute name="cppflag" type="xsd:boolean" default="true"/>
					<xsd:attribute name="asmflag" type="xsd:boolean" default="false"/>
					<xsd:attribute name="definition" type="xsd:boolean" default="true"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="group" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="xsd:string"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute ref="xml:base"/> 
		<xsd:attribute name="group" type="xsd:string" use="optional"/>
	</xsd:complexType>

	<xsd:complexType name="LibrariesType">
		<xsd:sequence>
			<xsd:element name="library" minOccurs="1" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="xsd:string" use="required"/>
					<xsd:attribute name="type" type="libtype" default="build"/>
					<xsd:attribute name="delayload" type="xsd:boolean" default="false"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="AObjectsType">
		<xsd:sequence>
			<xsd:element name="group" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="xsd:string" use="required"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="object" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="include-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="exclude-if" type="PredicateType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="name" type="xsd:string" use="required"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="PredicateType">
		<xsd:attribute name="condition" type="xsd:string" use="required"/>
	</xsd:complexType>
	
	<xsd:simpleType name='libtype'>
		<xsd:annotation>
			<xsd:documentation>Library type</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base='xsd:string'>
			<xsd:enumeration value='build'/>
			<xsd:enumeration value='external'/>
			<xsd:enumeration value='system'/>
			<xsd:enumeration value='macro'/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name='pathtype'>
		<xsd:annotation>
			<xsd:documentation>path type</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base='xsd:string'>
			<xsd:enumeration value='rootpath'/>
			<xsd:enumeration value='relativepath'/>
			<xsd:enumeration value='artifact'/>
			<xsd:enumeration value='macro'/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name='CommandType'>
		<xsd:annotation>
			<xsd:documentation>Command type</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base='xsd:string'>
			<xsd:enumeration value='all'/>
			<xsd:enumeration value='clean'/>
			<xsd:enumeration value='ddrgen'/>
		</xsd:restriction>
	</xsd:simpleType>

</xsd:schema>