<?xml version="1.0" encoding="UTF-8"?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You 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.
  See the License for the specific language governing permissions and
  limitations under the License.

-->
<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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.plc4x</groupId>
    <artifactId>plc4x-parent</artifactId>
    <version>0.9.0-SNAPSHOT</version>
  </parent>

  <artifactId>plc4x-build-utils</artifactId>
  <packaging>pom</packaging>

  <name>PLC4X: Build Utils</name>
  <description>Some build related utilities.</description>

  <modules>
    <module>language-base-freemarker</module>
    <module>protocol-base-mspec</module>
    <module>protocol-test</module>

    <module>language-java</module>

  </modules>

  <profiles>
  <!-- Build PLC4X including the C modules -->
  <profile>
    <id>with-c</id>
    <modules>
      <module>language-c</module>
    </modules>
  </profile>

  <profile>
    <id>with-go</id>
    <modules>
      <module>language-go</module>
    </modules>
  </profile>

</profiles>

  <dependencies>
    <!-- JUnit 5 Support -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>