<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (C) 2011, Red Hat, Inc.

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

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse.linuxtools</groupId>
    <artifactId>linuxtools-parent</artifactId>
    <version>4.0.0-SNAPSHOT</version>
  </parent>

  <groupId>org.eclipse.linuxtools.perf-parent</groupId>
  <artifactId>linuxtools-perf-parent</artifactId>
  <packaging>pom</packaging>

  <name>Linux Tools Perf Parent</name>

  <licenses>
    <license>
      <name>Eclipse Public License v1.0</name>
      <comments>
       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.htm
      </comments>
    </license>
  </licenses>

  <modules>
    <module>org.eclipse.linuxtools.perf</module>
    <module>org.eclipse.linuxtools.perf-feature</module>
    <module>org.eclipse.linuxtools.perf.remote-feature</module>
    <module>org.eclipse.linuxtools.perf.swtbot.tests</module>
    <module>org.eclipse.linuxtools.perf.tests</module>
    <module>org.eclipse.linuxtools.perf.doc</module>
  </modules>

</project>
