Initial checking of the Native compilation plugin
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@113198 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4f1f51d20b
commit
e28417b83d
6
native/.cvsignore
Normal file
6
native/.cvsignore
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
target
|
||||||
|
maven.log
|
||||||
|
velocity.log
|
||||||
|
build.properties
|
||||||
|
.classpath
|
||||||
|
.project
|
||||||
57
native/LICENSE.txt
Normal file
57
native/LICENSE.txt
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
|
||||||
|
/* ====================================================================
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2001 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution,
|
||||||
|
* if any, must include the following acknowledgment:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowledgment may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowledgments normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||||
|
* "Apache Maven" must not be used to endorse or promote products
|
||||||
|
* derived from this software without prior written permission. For
|
||||||
|
* written permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache",
|
||||||
|
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||||
|
* prior written permission of the Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
47
native/plugin.jelly
Normal file
47
native/plugin.jelly
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<project xmlns:j="jelly:core" xmlns:util="jelly:util">
|
||||||
|
<!--==================================================================-->
|
||||||
|
<!-- Compile all source code -->
|
||||||
|
<!--==================================================================-->
|
||||||
|
<goal name="native" description="NAtive compiler" prereqs="native:compile"/>
|
||||||
|
|
||||||
|
<goal name="native:compile" description="Compile the native compiler">
|
||||||
|
<echo>a</echo>
|
||||||
|
<taskdef name="cc" classname="net.sf.antcontrib.cpptasks.CCTask"/>
|
||||||
|
<typedef name="linker" classname="net.sf.antcontrib.cpptasks.LinkerDef"/>
|
||||||
|
<typedef name="compiler" classname="net.sf.antcontrib.cpptasks.CompilerDef"/>
|
||||||
|
<echo>b</echo>
|
||||||
|
<compiler id="gcc" name="gcc" if="use-gcc">
|
||||||
|
<compilerarg value="-O" unless="is-debug"/>
|
||||||
|
</compiler>
|
||||||
|
</goal>
|
||||||
|
|
||||||
|
<goal name="native:jniheader" description="make jniheaders for classes" prereqs="java:compile">
|
||||||
|
<fileScanner var="classFiles">
|
||||||
|
<fileset dir="${maven.build.dest}">
|
||||||
|
<patternset>
|
||||||
|
<include name="**/*.class"/>
|
||||||
|
</patternset>
|
||||||
|
</fileset>
|
||||||
|
</fileScanner>
|
||||||
|
<mkdir dir="${maven.build.dir}/jni"/>
|
||||||
|
<javah destdir="${maven.build.dir}/jni">
|
||||||
|
<classpath>
|
||||||
|
<pathelement location="${maven.build.dest}"/>
|
||||||
|
</classpath>
|
||||||
|
<j:useBean var="javaSourceTool" class="org.apache.maven.natives.util.JavaSourceTool"/>
|
||||||
|
<j:forEach var="file" items="${classFiles.iterator()}">
|
||||||
|
<j:set var="isNative" value="false"/>
|
||||||
|
<j:set var="clazz" value="${javaSourceTool.getBcelClass(file.toString())}"/>
|
||||||
|
<j:forEach var="method" items="${clazz.getMethods()}">
|
||||||
|
<j:if test="${method.isNative() == 'true'}">
|
||||||
|
<j:set var="isNative" value="true"/>
|
||||||
|
</j:if>
|
||||||
|
</j:forEach>
|
||||||
|
<j:if test="${isNative == 'true'}">
|
||||||
|
<class name="${clazz.className}"/>
|
||||||
|
</j:if>
|
||||||
|
</j:forEach>
|
||||||
|
</javah>
|
||||||
|
</goal>
|
||||||
|
</project>
|
||||||
7
native/project.properties
Normal file
7
native/project.properties
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# -------------------------------------------------------------------
|
||||||
|
# P R O J E C T P R O P E R T I E S
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
maven.xdoc.date=left
|
||||||
|
maven.xdoc.version=${pom.currentVersion}
|
||||||
|
maven.checkstyle.format = turbine
|
||||||
|
maven.license.licenseFile=${basedir}/../../../LICENSE.txt
|
||||||
56
native/project.xml
Normal file
56
native/project.xml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<project>
|
||||||
|
<extend>${basedir}/../project.xml</extend>
|
||||||
|
<pomVersion>3</pomVersion>
|
||||||
|
<id>maven-native-plugin</id>
|
||||||
|
<name>Maven Native Plug-in</name>
|
||||||
|
<currentVersion>1.0</currentVersion>
|
||||||
|
<description>Plugin for native compilation c,c++, fortran</description>
|
||||||
|
<shortDescription>Native plugin</shortDescription>
|
||||||
|
<url>http://maven.apache.org/reference/plugins/native/</url>
|
||||||
|
|
||||||
|
<siteDirectory>/www/maven.apache.org/reference/plugins/native/</siteDirectory>
|
||||||
|
|
||||||
|
<repository>
|
||||||
|
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven/src/plugins-build/native/</connection>
|
||||||
|
<url>http://cvs.apache.org/viewcvs/maven/src/plugins-build/native/</url>
|
||||||
|
</repository>
|
||||||
|
|
||||||
|
|
||||||
|
<developers>
|
||||||
|
|
||||||
|
<developer>
|
||||||
|
<name>Kasper Nielsen</name>
|
||||||
|
<id>knielsen</id>
|
||||||
|
<email>apache@kav.dk</email>
|
||||||
|
<organization>it.edu</organization>
|
||||||
|
<roles>
|
||||||
|
<role>Architect</role>
|
||||||
|
</roles>
|
||||||
|
</developer>
|
||||||
|
|
||||||
|
</developers>
|
||||||
|
|
||||||
|
<contributors/>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<id>ant-contrib:cpptasks</id>
|
||||||
|
<version>20030309.134440</version>
|
||||||
|
<properties>
|
||||||
|
<classloader>root</classloader>
|
||||||
|
</properties>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<id>bcel</id>
|
||||||
|
<version>5.0</version>
|
||||||
|
<properties>
|
||||||
|
<classloader>root</classloader>
|
||||||
|
</properties>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
||||||
@ -0,0 +1,89 @@
|
|||||||
|
package org.apache.maven.natives.util;
|
||||||
|
|
||||||
|
/* ====================================================================
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution,
|
||||||
|
* if any, must include the following acknowledgment:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowledgment may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowledgments normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||||
|
* "Apache Maven" must not be used to endorse or promote products
|
||||||
|
* derived from this software without prior written permission. For
|
||||||
|
* written permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache",
|
||||||
|
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||||
|
* prior written permission of the Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.apache.bcel.classfile.ClassParser;
|
||||||
|
import org.apache.bcel.classfile.JavaClass;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Kasper Nielsen
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class JavaSourceTool {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses the java class file and returns an isntance of a Bcel Class
|
||||||
|
*
|
||||||
|
* @param absoluteFileName the absolute file name to transform
|
||||||
|
* @return the Bcel Class.
|
||||||
|
* @throws IOException upon failure to read the java file
|
||||||
|
*/
|
||||||
|
public static final JavaClass getBcelClass(String absoluteFileName) throws IOException {
|
||||||
|
try {
|
||||||
|
ClassParser parser = new ClassParser(absoluteFileName);
|
||||||
|
JavaClass clazz= parser.parse();
|
||||||
|
return clazz;
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("\nError parsing " + absoluteFileName + ": " + e + "\n");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1
native/xdocs/.cvsignore
Normal file
1
native/xdocs/.cvsignore
Normal file
@ -0,0 +1 @@
|
|||||||
|
stylesheets
|
||||||
16
native/xdocs/goals.xml
Normal file
16
native/xdocs/goals.xml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<document>
|
||||||
|
<properties>
|
||||||
|
<title>Maven Native Plug-in Goals</title>
|
||||||
|
<author email="apache@kav.dk">Kasper Nielsen</author>
|
||||||
|
</properties>
|
||||||
|
<body>
|
||||||
|
<goals>
|
||||||
|
<goal>
|
||||||
|
<name>native:jniheader</name>
|
||||||
|
<description>Generates JNI header files</description>
|
||||||
|
</goal>
|
||||||
|
</goals>
|
||||||
|
</body>
|
||||||
|
</document>
|
||||||
36
native/xdocs/index.xml
Normal file
36
native/xdocs/index.xml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<document>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<title>Maven Native Plug-in</title>
|
||||||
|
<author email="apache@kav.dk">Kasper Nielsen</author>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<section name="Maven Native Plug-in">
|
||||||
|
<p>
|
||||||
|
This is a plugin that allows to compile c,c++,fortran code under maven with
|
||||||
|
different compilers such as gcc, msvc, bcc, ...
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Currently, this plugin only supports generation of jni header files.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
<section name="News">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Date</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>26 Mar 2003</td>
|
||||||
|
<td>
|
||||||
|
Project Created
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</document>
|
||||||
17
native/xdocs/navigation.xml
Normal file
17
native/xdocs/navigation.xml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
<project name="Maven Native Plugin">
|
||||||
|
|
||||||
|
<title>Maven Native Plugin</title>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<links>
|
||||||
|
<item name="Maven" href="http://maven.apache.org/"/>
|
||||||
|
</links>
|
||||||
|
<menu name="Overview">
|
||||||
|
<item href="/index.html" name="Overview"/>
|
||||||
|
<item href="/goals.html" name="Goals"/>
|
||||||
|
<item href="/properties.html" name="Properties"/>
|
||||||
|
<item href="/tasks.html" name="Tasks"/>
|
||||||
|
</menu>
|
||||||
|
</body>
|
||||||
|
</project>
|
||||||
27
native/xdocs/properties.xml
Normal file
27
native/xdocs/properties.xml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<document>
|
||||||
|
<properties>
|
||||||
|
<title>Maven Native Plugin Properties</title>
|
||||||
|
<author email="apache@kav.dk">Kasper Nielsen</author>
|
||||||
|
</properties>
|
||||||
|
<body>
|
||||||
|
<section name="Native Plugin Properties">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Property</th>
|
||||||
|
<th>Optional?</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>maven.jni.dest</td>
|
||||||
|
<td>Yes</td>
|
||||||
|
<td>
|
||||||
|
<p>Default value is
|
||||||
|
<code>${maven.build.dir}/jni</code>.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
</body>
|
||||||
|
</document>
|
||||||
23
native/xdocs/tasks.xml
Normal file
23
native/xdocs/tasks.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<document>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<title>Tasks</title>
|
||||||
|
<author email="apache@kav.dk">Kasper Nielsen</author>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<section name="Tasks">
|
||||||
|
<p>
|
||||||
|
Lists of todos and ideas for future versions.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<subsection name="Unassigned">
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
</subsection>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</document>
|
||||||
Loading…
x
Reference in New Issue
Block a user