summaryrefslogtreecommitdiffstats
path: root/maven
diff options
context:
space:
mode:
Diffstat (limited to 'maven')
-rw-r--r--maven/README.txt256
-rwxr-xr-xmaven/clean.sh4
-rw-r--r--maven/empty.jarbin0 -> 345 bytes
-rwxr-xr-xmaven/gluegen-rt-main.pom.sh66
-rwxr-xr-xmaven/gluegen-rt.pom.sh37
-rw-r--r--maven/gluegen.pom.in63
-rwxr-xr-xmaven/joal-main.pom.sh66
-rw-r--r--maven/joal.pom.in75
-rwxr-xr-xmaven/joal.pom.sh37
-rwxr-xr-xmaven/jocl-main.pom.sh66
-rw-r--r--maven/jocl.pom.in75
-rwxr-xr-xmaven/jocl.pom.sh37
-rwxr-xr-xmaven/jogl-all-main.pom.sh66
-rwxr-xr-xmaven/jogl-all-mobile-main.pom.sh67
-rwxr-xr-xmaven/jogl-all-mobile.pom.sh37
-rwxr-xr-xmaven/jogl-all-noawt-main.pom.sh68
-rwxr-xr-xmaven/jogl-all-noawt.pom.sh37
-rwxr-xr-xmaven/jogl-all.pom.sh37
-rw-r--r--maven/jogl.pom.in75
-rwxr-xr-xmaven/make-copy-jars.sh91
-rwxr-xr-xmaven/make-copy-poms.sh38
-rwxr-xr-xmaven/make-deploy-one.sh71
-rwxr-xr-xmaven/make-deploy.sh35
-rwxr-xr-xmaven/make-directories.sh19
-rw-r--r--maven/make-jogl-manifest.txt1
-rw-r--r--maven/make-platforms.txt10
-rwxr-xr-xmaven/make-poms.sh20
-rw-r--r--maven/make-projects.txt12
-rwxr-xr-xmaven/make.sh24
29 files changed, 1490 insertions, 0 deletions
diff --git a/maven/README.txt b/maven/README.txt
new file mode 100644
index 0000000..a976718
--- /dev/null
+++ b/maven/README.txt
@@ -0,0 +1,256 @@
+------------------------------------------------------------------------
+Maven deployment scripts
+------------------------------------------------------------------------
+
+The purpose of these scripts is to produce a set of PGP-signed jars and
+POM files for deployment to Maven Central.
+
+ http://search.maven.org
+
+Because the jogamp projects do not use Maven to manage their own builds
+(and it would be too much work for very little gain to convert the build
+system over to Maven), these scripts take an archive of already-released
+jar files and produce renamed jar files and POM files as output, ready
+for deployment to the repository.
+
+These instructions assume that you know how to set up a PGP agent [0].
+
+In order to get packages onto Maven Central, it's necessary to have an
+account on one of the large Java "forges". The most-used one seems to be
+Sonatype. See the repository usage guide [1] for details on getting an
+account.
+
+------------------------------------------------------------------------
+Instructions
+------------------------------------------------------------------------
+
+ 1. Obtain the jogamp-all-platforms.7z release for the version
+ of jogamp you wish to deploy to Central. As an example, we'll
+ use 2.0-rc11. Unpack the 7z file to the 'input' subdirectory,
+ creating it if it doesn't exist:
+
+ $ mkdir input
+ $ cd input
+ $ wget http://jogamp.org/deployment/v2.0-rc11/archive/jogamp-all-platforms.7z
+ $ 7z x jogamp-all-platforms.7z
+
+ 2. Switch back to the old directory:
+
+ $ cd ..
+
+ 3. The Central repository requires PGP signatures on all files
+ deployed to the repository. Because we'll be signing a lot
+ of files, we need this to occur in the most automated manner
+ possible. Therefore, we need to tell Maven which PGP key to
+ use and also to tell it to use any running PGP agent we have.
+ To do this, we have to add a profile to $HOME/.m2/settings.xml
+ that sets various properties that tell the PGP plugin what
+ to do. My settings.xml looks something like:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <settings
+ xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+ <profiles>
+ <profile>
+ <id>jogamp-deployment</id>
+ <properties>
+ <gpg.useagent>true</gpg.useagent>
+ <gpg.keyname>jogamp.com (Release signing key)</gpg.keyname>
+ </properties>
+ </profile>
+ </profiles>
+ <activeProfiles>
+ <activeProfile>jogamp-deployment</activeProfile>
+ </activeProfiles>
+ </settings>
+
+ That is, I've defined a new profile called "jogamp-deployment"
+ that enables the use of a PGP agent, and uses the string
+ "jogamp.com (Release signing key)" to tell PGP which key to use.
+ You can obviously use the fingerprint of the key here too
+ (or anything else that uniquely identifies it).
+
+ See: http://www.sonatype.com/books/mvnref-book/reference/profiles.html
+
+ 4. Now, run make.sh with the desired version number to generate POM
+ files and copy jar files to the correct places:
+
+ $ ./make.sh 2.0-rc11
+
+ 5. The scripts will have created an 'output' directory, containing
+ all the prepared releases. It's now necessary to deploy the releases,
+ one at a time [2]. Assuming that our Sonatype username is 'jogamp'
+ and our password is '********', we now need to edit settings.xml
+ to tell Maven to use them both:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <settings
+ xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+ <profiles>
+ <profile>
+ <id>jogamp-deployment</id>
+ <properties>
+ <gpg.useagent>true</gpg.useagent>
+ <gpg.keyname>jogamp.com (Release signing key)</gpg.keyname>
+ </properties>
+ </profile>
+ </profiles>
+ <activeProfiles>
+ <activeProfile>jogamp-deployment</activeProfile>
+ </activeProfiles>
+ <servers>
+ <server>
+ <id>sonatype-nexus-staging</id>
+ <username>jogamp</username>
+ <password>********</password>
+ </server>
+ </servers>
+ </settings>
+
+ That is, we define a new server called 'sonatype-nexus-staging' (this
+ is the name that the scripts use to refer to the remote repository),
+ and state that it wants username 'jogamp' and password '********'.
+
+ 6. Now we can deploy an individual project to the staging repository:
+
+ $ ./make-deploy-one.sh gluegen-rt-main 2.0-rc11
+
+ Or deploy all of the projects defined in make-projects.txt:
+
+ $ ./make-deploy.sh 2.0-rc11
+
+ The scripts will upload all necessary jars, poms, signatures, etc.
+
+ 7. Now, we need to tell the Sonatype repository that we wish to actually
+ promote the uploaded ("staged") files to a release. This step (unfortunately)
+ doesn't seem to be possible from the command line.
+
+ Log in to https://oss.sonatype.org using the 'jogamp:********' username
+ and password.
+
+ Click 'Staging repositories' in the left navigation bar.
+
+ In the main pane, there should now be a table of repositories. Because
+ we've just uploaded a set of files, there should be one entry (staging
+ repositories are automatically created when files are uploaded).
+
+ Click the checkbox to the left of the repository name. This will open
+ a 'repository browser' below the main view, showing a tree of files.
+ Inspect the tree of files to be sure that all of the necessary files are
+ present.
+
+ If all files are there, and assuming that the checkbox is still selected
+ from the previous step, click the 'Close' button above the repository
+ browser - this will 'close' the staging repository (meaning no new files
+ can be added). Then click 'Release' when you absolutely positively want
+ to commit. The release will be made official and the files synced to
+ the Central repository within two hours.
+
+ If there are still more projects to release, return to step 6.
+
+------------------------------------------------------------------------
+Projects
+------------------------------------------------------------------------
+
+The way that Maven works demanded a certain structure to the projects
+produced. The requirements were:
+
+ 1. The end-user of the jogamp projects released to the repository
+ must not have to do anything beyond adding one or two dependencies
+ to their own projects. Everything must work using only the basic
+ dependency resolution mechanism that Maven supports and must not
+ require anything complex in the way of build scripts.
+
+ 2. The way that jogamp projects locate their own jar files must
+ work as it always had.
+
+The first requirement was reasonably easy to satisfy (and the details
+of which will be covered shortly). The second requirement was complicated
+by the fact that Maven unconditionally appends version numbers to jar
+files (and requires the numbers to be present in order for the dependency
+resolution to work). After trying various approaches, a small change was
+made to the jogamp code in order to allow it to cope with version numbers,
+and the Maven projects were carefully structured to produce jar files
+with usable names. In other words, we had to essentially write Maven
+POM files that, when "deployed", produced jar files with the correct
+names, using a variety of tricks. The other issue was that jogamp implicitly
+assumed that all of the jar files would be in the same directory, whereas
+Maven essentially assumes one directory per jar file.
+
+We ended up with the following structure: For each part of jogamp that
+had associated native binaries (contained within jar files), a project
+was created. Then, using the "classifiers" [3], each of the native jar
+files were deployed along with the main jar file for each project. Using
+'gluegen-rt' as an example:
+
+ The main jar file as part of jogamp is "gluegen-rt.jar". When
+ "deployed" by Maven, this becomes "gluegen-rt-${VERSION}.jar".
+
+ Each native jar file associated with gluegen-rt is named
+ "gluegen-rt-natives-${OS}-${ARCH}.jar". We use "classifiers" to
+ get Maven to "deploy" jar files with the correct names:
+
+ PLATFORMS="linux-amd64 linux-i586 ..."
+ for PLATFORM in ${PLATFORMS}
+ do
+ CLASS="natives-${PLATFORM}"
+ mvn gpg:sign-and-deploy-file \
+ -Dfile="gluegen-rt-${VERSION}-natives-${PLATFORM}.jar \
+ -Dclassifier="natives-${PLATFORM}"
+ done
+
+ Assuming version 2.0-rc11, this results in:
+
+ gluegen-rt-2.0-rc11.jar
+ gluegen-rt-2.0-rc11-natives-linux-amd64.jar
+ gluegen-rt-2.0-rc11-natives-linux-i586.jar
+ ...
+
+This results in a project with a main jar and a set of native jar
+files, each with the correct name and version. As the native jar
+files are implicitly part of the same "project", they're deployed
+in the same directory as the main jar file, and the jogamp code can
+locate them without issue.
+
+The problem with this approach is that the end-user would have
+to add an explicit dependency on "gluegen-rt" and each and every
+one of the associated native jars in their project's POM file! The
+simplest solution for this problem was to create a second project
+that contained explicit dependencies on all of the classified jar
+files of the first. The end-user then simply adds a dependency on
+this second project instead of the first, and everything is resolved
+automatically by Maven. This second project also contains an empty
+"dummy" jar file in order to allow Maven to deploy it to repositories.
+
+With that in mind, each part of Maven therefore has an associated
+"-main" project, meant to be used by end-users. This "-main" project,
+when added to the dependencies of any project, pulls in all of the
+real jogamp jars, native or otherwise.
+
+------------------------------------------------------------------------
+Notes
+------------------------------------------------------------------------
+
+We're currently uploading empty jar files for the "sources" and
+"javadoc" jars required by Central. The rules state that these
+files are required unconditionally, but may be empty in the case
+that there aren't sources or javadoc. It'd be nice to provide real
+sources and javadoc one day.
+
+------------------------------------------------------------------------
+Footnotes
+------------------------------------------------------------------------
+
+[0] http://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html
+
+[1] https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
+
+[2] Sonatype seems to have the restriction that it's only possible to
+ deploy one 'artifactId' at a time - that translates to deploying one
+ jogamp project at a time.
+
+[3] https://maven.apache.org/plugins/maven-deploy-plugin/examples/deploying-with-classifiers.html
diff --git a/maven/clean.sh b/maven/clean.sh
new file mode 100755
index 0000000..faa3ed6
--- /dev/null
+++ b/maven/clean.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+rm -rfv output
+rm -rfv repository
diff --git a/maven/empty.jar b/maven/empty.jar
new file mode 100644
index 0000000..5eed158
--- /dev/null
+++ b/maven/empty.jar
Binary files differ
diff --git a/maven/gluegen-rt-main.pom.sh b/maven/gluegen-rt-main.pom.sh
new file mode 100755
index 0000000..fbd18fc
--- /dev/null
+++ b/maven/gluegen-rt-main.pom.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+PLATFORMS=`cat make-platforms.txt | awk -F: '{print $1}'` || exit 1
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by gluegen-rt-main.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.gluegen</groupId>
+ <artifactId>gluegen-rt-main</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>GlueGen Runtime</name>
+ <description>JNI binding generator (runtime)</description>
+ <url>http://jogamp.org/gluegen/www/</url>
+
+ <!-- -->
+ <!-- Explicitly depend on gluegen-rt, and all of its native binary jars. -->
+ <!-- -->
+
+ <dependencies>
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>gluegen-rt</artifactId>
+ <version>\${project.version}</version>
+ </dependency>
+
+EOF
+
+for PLATFORM in ${PLATFORMS}
+do
+ cat <<EOF
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>gluegen-rt</artifactId>
+ <version>\${project.version}</version>
+ <classifier>natives-${PLATFORM}</classifier>
+ </dependency>
+EOF
+done
+
+cat <<EOF
+ </dependencies>
+
+EOF
+
+cat gluegen.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/gluegen-rt.pom.sh b/maven/gluegen-rt.pom.sh
new file mode 100755
index 0000000..9ff1443
--- /dev/null
+++ b/maven/gluegen-rt.pom.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by gluegen-rt.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.gluegen</groupId>
+ <artifactId>gluegen-rt</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>GlueGen Runtime</name>
+ <description>JNI binding generator (runtime)</description>
+ <url>http://jogamp.org/gluegen/www/</url>
+
+EOF
+
+cat gluegen.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/gluegen.pom.in b/maven/gluegen.pom.in
new file mode 100644
index 0000000..96c5a7d
--- /dev/null
+++ b/maven/gluegen.pom.in
@@ -0,0 +1,63 @@
+ <!-- gluegen.pom.in -->
+
+ <scm>
+ <url>http://jogamp.org/git/?p=gluegen.git/</url>
+ <connection>scm:git:http://jogamp.org/git/gluegen.git/</connection>
+ <developerConnection>scm:git:http://jogamp.org/git/gluegen.git/</developerConnection>
+ </scm>
+
+ <licenses>
+ <license>
+ <name>BSD-2 License</name>
+ <url>http://www.opensource.org/licenses/BSD-2-Clause</url>
+ </license>
+ <license>
+ <name>BSD-3 License</name>
+ <url>http://www.opensource.org/licenses/BSD-3-Clause</url>
+ </license>
+ <license>
+ <name>BSD-4 License</name>
+ <url>http://www.spdx.org/licenses/BSD-4-Clause</url>
+ </license>
+ </licenses>
+
+ <developers>
+ <developer>
+ <id>sgothel</id>
+ <name>Sven Gothel</name>
+ <email>[email protected]</email>
+ <url>http://blog.jausoft.com</url>
+ </developer>
+ </developers>
+
+ <issueManagement>
+ <url>http://jogamp.org/bugzilla/</url>
+ <system>Bugzilla</system>
+ </issueManagement>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-gpg-plugin</artifactId>
+ <version>1.4</version>
+ <executions>
+ <execution>
+ <id>sign-artifacts</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ <extensions>
+ <extension>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-ssh-external</artifactId>
+ <version>2.2</version>
+ </extension>
+ </extensions>
+ </build>
+
diff --git a/maven/joal-main.pom.sh b/maven/joal-main.pom.sh
new file mode 100755
index 0000000..5539a75
--- /dev/null
+++ b/maven/joal-main.pom.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+PLATFORMS=`cat make-platforms.txt | awk -F: '{print $1}'` || exit 1
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by joal-main.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.joal</groupId>
+ <artifactId>joal-main</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOAL</name>
+ <description>Java™ Binding for the OpenAL® API</description>
+ <url>http://jogamp.org/joal/www/</url>
+
+ <!-- -->
+ <!-- Explicitly depend on joal, and all of its native binary jars. -->
+ <!-- -->
+
+ <dependencies>
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>joal</artifactId>
+ <version>\${project.version}</version>
+ </dependency>
+
+EOF
+
+for PLATFORM in ${PLATFORMS}
+do
+ cat <<EOF
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>joal</artifactId>
+ <version>\${project.version}</version>
+ <classifier>natives-${PLATFORM}</classifier>
+ </dependency>
+EOF
+done
+
+cat <<EOF
+ </dependencies>
+
+EOF
+
+cat joal.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/joal.pom.in b/maven/joal.pom.in
new file mode 100644
index 0000000..373b699
--- /dev/null
+++ b/maven/joal.pom.in
@@ -0,0 +1,75 @@
+ <!-- joal.pom.in -->
+
+ <licenses>
+ <license>
+ <name>BSD-2 License</name>
+ <url>http://www.opensource.org/licenses/BSD-2-Clause</url>
+ </license>
+ <license>
+ <name>BSD-3 License</name>
+ <url>http://www.opensource.org/licenses/BSD-3-Clause</url>
+ </license>
+ <license>
+ <name>SGI Free Software License B</name>
+ <url>http://oss.sgi.com/projects/FreeB</url>
+ </license>
+ <license>
+ <name>Apache License Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0</url>
+ </license>
+ <license>
+ <name>Apache License Version 1.1</name>
+ <url>http://www.apache.org/licenses/LICENSE-1.1</url>
+ </license>
+ <license>
+ <name>Ubuntu Font Licence 1.0</name>
+ <url>http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt</url>
+ </license>
+ </licenses>
+
+ <scm>
+ <url>http://jogamp.org/git/?p=joal.git/</url>
+ <connection>scm:git:http://jogamp.org/git/joal.git/</connection>
+ <developerConnection>scm:git:http://jogamp.org/git/joal.git/</developerConnection>
+ </scm>
+
+ <developers>
+ <developer>
+ <id>sgothel</id>
+ <name>Sven Gothel</name>
+ <email>[email protected]</email>
+ <url>http://blog.jausoft.com</url>
+ </developer>
+ </developers>
+
+ <issueManagement>
+ <url>http://jogamp.org/bugzilla/</url>
+ <system>Bugzilla</system>
+ </issueManagement>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-gpg-plugin</artifactId>
+ <version>1.4</version>
+ <executions>
+ <execution>
+ <id>sign-artifacts</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ <extensions>
+ <extension>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-ssh-external</artifactId>
+ <version>2.2</version>
+ </extension>
+ </extensions>
+ </build>
+
diff --git a/maven/joal.pom.sh b/maven/joal.pom.sh
new file mode 100755
index 0000000..313eb33
--- /dev/null
+++ b/maven/joal.pom.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by joal.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.joal</groupId>
+ <artifactId>joal</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOAL</name>
+ <description>Java™ Binding for the OpenAL® API</description>
+ <url>http://jogamp.org/joal/www/</url>
+
+EOF
+
+cat joal.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/jocl-main.pom.sh b/maven/jocl-main.pom.sh
new file mode 100755
index 0000000..323d285
--- /dev/null
+++ b/maven/jocl-main.pom.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+PLATFORMS=`cat make-platforms.txt | awk -F: '{print $1}'` || exit 1
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by jocl-main.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.jocl</groupId>
+ <artifactId>jocl-main</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOCL</name>
+ <description>Java™ Binding for the OpenCL® API</description>
+ <url>http://jogamp.org/jocl/www/</url>
+
+ <!-- -->
+ <!-- Explicitly depend on jocl, and all of its native binary jars. -->
+ <!-- -->
+
+ <dependencies>
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>jocl</artifactId>
+ <version>\${project.version}</version>
+ </dependency>
+
+EOF
+
+for PLATFORM in ${PLATFORMS}
+do
+ cat <<EOF
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>jocl</artifactId>
+ <version>\${project.version}</version>
+ <classifier>natives-${PLATFORM}</classifier>
+ </dependency>
+EOF
+done
+
+cat <<EOF
+ </dependencies>
+
+EOF
+
+cat jocl.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/jocl.pom.in b/maven/jocl.pom.in
new file mode 100644
index 0000000..4574387
--- /dev/null
+++ b/maven/jocl.pom.in
@@ -0,0 +1,75 @@
+ <!-- jocl.pom.in -->
+
+ <licenses>
+ <license>
+ <name>BSD-2 License</name>
+ <url>http://www.opensource.org/licenses/BSD-2-Clause</url>
+ </license>
+ <license>
+ <name>BSD-3 License</name>
+ <url>http://www.opensource.org/licenses/BSD-3-Clause</url>
+ </license>
+ <license>
+ <name>SGI Free Software License B</name>
+ <url>http://oss.sgi.com/projects/FreeB</url>
+ </license>
+ <license>
+ <name>Apache License Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0</url>
+ </license>
+ <license>
+ <name>Apache License Version 1.1</name>
+ <url>http://www.apache.org/licenses/LICENSE-1.1</url>
+ </license>
+ <license>
+ <name>Ubuntu Font Licence 1.0</name>
+ <url>http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt</url>
+ </license>
+ </licenses>
+
+ <scm>
+ <url>http://jogamp.org/git/?p=jocl.git/</url>
+ <connection>scm:git:http://jogamp.org/git/jocl.git/</connection>
+ <developerConnection>scm:git:http://jogamp.org/git/jocl.git/</developerConnection>
+ </scm>
+
+ <developers>
+ <developer>
+ <id>sgothel</id>
+ <name>Sven Gothel</name>
+ <email>[email protected]</email>
+ <url>http://blog.jausoft.com</url>
+ </developer>
+ </developers>
+
+ <issueManagement>
+ <url>http://jogamp.org/bugzilla/</url>
+ <system>Bugzilla</system>
+ </issueManagement>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-gpg-plugin</artifactId>
+ <version>1.4</version>
+ <executions>
+ <execution>
+ <id>sign-artifacts</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ <extensions>
+ <extension>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-ssh-external</artifactId>
+ <version>2.2</version>
+ </extension>
+ </extensions>
+ </build>
+
diff --git a/maven/jocl.pom.sh b/maven/jocl.pom.sh
new file mode 100755
index 0000000..4fc1756
--- /dev/null
+++ b/maven/jocl.pom.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by jocl.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.jocl</groupId>
+ <artifactId>jocl</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOCL</name>
+ <description>Java™ Binding for the OpenCL® API</description>
+ <url>http://jogamp.org/jocl/www/</url>
+
+EOF
+
+cat jocl.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/jogl-all-main.pom.sh b/maven/jogl-all-main.pom.sh
new file mode 100755
index 0000000..5a258c0
--- /dev/null
+++ b/maven/jogl-all-main.pom.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+PLATFORMS=`cat make-platforms.txt | awk -F: '{print $1}'` || exit 1
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by jogl-all-main.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.jogl</groupId>
+ <artifactId>jogl-all-main</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOGL</name>
+ <description>Java™ Binding for the OpenGL® API</description>
+ <url>http://jogamp.org/jogl/www/</url>
+
+ <!-- -->
+ <!-- Explicitly depend on jogl-all, and all of its native binary jars. -->
+ <!-- -->
+
+ <dependencies>
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>jogl-all</artifactId>
+ <version>\${project.version}</version>
+ </dependency>
+
+EOF
+
+for PLATFORM in ${PLATFORMS}
+do
+ cat <<EOF
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>jogl-all</artifactId>
+ <version>\${project.version}</version>
+ <classifier>natives-${PLATFORM}</classifier>
+ </dependency>
+EOF
+done
+
+cat <<EOF
+ </dependencies>
+
+EOF
+
+cat jogl.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/jogl-all-mobile-main.pom.sh b/maven/jogl-all-mobile-main.pom.sh
new file mode 100755
index 0000000..633e517
--- /dev/null
+++ b/maven/jogl-all-mobile-main.pom.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+PLATFORMS=`cat make-platforms.txt | awk -F: '{print $1}'` || exit 1
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by jogl-all-mobile-main.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.jogl</groupId>
+ <artifactId>jogl-all-mobile-main</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOGL</name>
+ <description>Java™ Binding for the OpenGL® API (Mobile)</description>
+ <url>http://jogamp.org/jogl/www/</url>
+
+ <!-- -->
+ <!-- Explicitly depend on jogl-all-mobile, and all of the native -->
+ <!-- binary jars in jogl-all. -->
+ <!-- -->
+
+ <dependencies>
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>jogl-all-mobile</artifactId>
+ <version>\${project.version}</version>
+ </dependency>
+
+EOF
+
+for PLATFORM in ${PLATFORMS}
+do
+ cat <<EOF
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>jogl-all</artifactId>
+ <version>\${project.version}</version>
+ <classifier>natives-${PLATFORM}</classifier>
+ </dependency>
+EOF
+done
+
+cat <<EOF
+ </dependencies>
+
+EOF
+
+cat jogl.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/jogl-all-mobile.pom.sh b/maven/jogl-all-mobile.pom.sh
new file mode 100755
index 0000000..252728e
--- /dev/null
+++ b/maven/jogl-all-mobile.pom.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by jogl-all-mobile.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.jogl</groupId>
+ <artifactId>jogl-all-mobile</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOGL</name>
+ <description>Java™ Binding for the OpenGL® API (Mobile)</description>
+ <url>http://jogamp.org/jogl/www/</url>
+
+EOF
+
+cat jogl.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/jogl-all-noawt-main.pom.sh b/maven/jogl-all-noawt-main.pom.sh
new file mode 100755
index 0000000..f812807
--- /dev/null
+++ b/maven/jogl-all-noawt-main.pom.sh
@@ -0,0 +1,68 @@
+
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+PLATFORMS=`cat make-platforms.txt | awk -F: '{print $1}'` || exit 1
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by jogl-all-noawt-main.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.jogl</groupId>
+ <artifactId>jogl-all-noawt-main</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOGL</name>
+ <description>Java™ Binding for the OpenGL® API (Without AWT)</description>
+ <url>http://jogamp.org/jogl/www/</url>
+
+ <!-- -->
+ <!-- Explicitly depend on jogl-all-noawt, and all of the native binary jars -->
+ <!-- in jogl-all. -->
+ <!-- -->
+
+ <dependencies>
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>jogl-all-noawt</artifactId>
+ <version>\${project.version}</version>
+ </dependency>
+
+EOF
+
+for PLATFORM in ${PLATFORMS}
+do
+ cat <<EOF
+ <dependency>
+ <groupId>\${project.groupId}</groupId>
+ <artifactId>jogl-all</artifactId>
+ <version>\${project.version}</version>
+ <classifier>natives-${PLATFORM}</classifier>
+ </dependency>
+EOF
+done
+
+cat <<EOF
+ </dependencies>
+
+EOF
+
+cat jogl.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/jogl-all-noawt.pom.sh b/maven/jogl-all-noawt.pom.sh
new file mode 100755
index 0000000..8486688
--- /dev/null
+++ b/maven/jogl-all-noawt.pom.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by jogl-all-noawt.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.jogl</groupId>
+ <artifactId>jogl-all-noawt</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOGL</name>
+ <description>Java™ Binding for the OpenGL® API (Without AWT)</description>
+ <url>http://jogamp.org/jogl/www/</url>
+
+EOF
+
+cat jogl.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/jogl-all.pom.sh b/maven/jogl-all.pom.sh
new file mode 100755
index 0000000..db6f28b
--- /dev/null
+++ b/maven/jogl-all.pom.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+cat <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!-- -->
+ <!-- Auto generated by jogl-all.pom.sh, do not edit directly! -->
+ <!-- -->
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jogamp.jogl</groupId>
+ <artifactId>jogl-all</artifactId>
+ <version>${VERSION}</version>
+ <packaging>jar</packaging>
+ <name>JOGL</name>
+ <description>Java™ Binding for the OpenGL® API</description>
+ <url>http://jogamp.org/jogl/www/</url>
+
+EOF
+
+cat jogl.pom.in || exit 1
+cat <<EOF
+</project>
+EOF
diff --git a/maven/jogl.pom.in b/maven/jogl.pom.in
new file mode 100644
index 0000000..bdb129d
--- /dev/null
+++ b/maven/jogl.pom.in
@@ -0,0 +1,75 @@
+ <!-- jogl.pom.in -->
+
+ <licenses>
+ <license>
+ <name>BSD-2 License</name>
+ <url>http://www.opensource.org/licenses/BSD-2-Clause</url>
+ </license>
+ <license>
+ <name>BSD-3 License</name>
+ <url>http://www.opensource.org/licenses/BSD-3-Clause</url>
+ </license>
+ <license>
+ <name>SGI Free Software License B</name>
+ <url>http://oss.sgi.com/projects/FreeB</url>
+ </license>
+ <license>
+ <name>Apache License Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0</url>
+ </license>
+ <license>
+ <name>Apache License Version 1.1</name>
+ <url>http://www.apache.org/licenses/LICENSE-1.1</url>
+ </license>
+ <license>
+ <name>Ubuntu Font Licence 1.0</name>
+ <url>http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt</url>
+ </license>
+ </licenses>
+
+ <scm>
+ <url>http://jogamp.org/git/?p=jogl.git/</url>
+ <connection>scm:git:http://jogamp.org/git/jogl.git/</connection>
+ <developerConnection>scm:git:http://jogamp.org/git/jogl.git/</developerConnection>
+ </scm>
+
+ <developers>
+ <developer>
+ <id>sgothel</id>
+ <name>Sven Gothel</name>
+ <email>[email protected]</email>
+ <url>http://blog.jausoft.com</url>
+ </developer>
+ </developers>
+
+ <issueManagement>
+ <url>http://jogamp.org/bugzilla/</url>
+ <system>Bugzilla</system>
+ </issueManagement>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-gpg-plugin</artifactId>
+ <version>1.4</version>
+ <executions>
+ <execution>
+ <id>sign-artifacts</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ <extensions>
+ <extension>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-ssh-external</artifactId>
+ <version>2.2</version>
+ </extension>
+ </extensions>
+ </build>
+
diff --git a/maven/make-copy-jars.sh b/maven/make-copy-jars.sh
new file mode 100755
index 0000000..d4b0c27
--- /dev/null
+++ b/maven/make-copy-jars.sh
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+info()
+{
+ echo "make-copy-jars: info: $1" 1>&2
+}
+
+copy()
+{
+ SOURCE="$1"
+ TARGET="$2"
+
+ info "copy $1 $2.tmp" 1>&2
+ cp "$1" "$2.tmp" || exit 1
+ info "rename $2.tmp $2" 1>&2
+ mv "$2.tmp" "$2" || exit 1
+}
+
+if [ $# -ne 1 ]
+then
+ info "usage: version"
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+INPUT="input/jogamp-all-platforms"
+
+if [ ! -d "${INPUT}" ]
+then
+ echo "make-copy-jars: error: ${INPUT} is not an existing directory" 1>&2
+ echo "make-copy-jars: error: unpack jogamp-all-platforms.7z into 'input'" 1>&2
+ exit 1
+fi
+
+PROJECTS=`cat make-projects.txt` || exit 1
+PLATFORMS=`cat make-platforms.txt | awk '{print $1}'` || exit 1
+
+IFS="
+"
+
+for PROJECT_LINE in ${PROJECTS}
+do
+ # Determine project name
+ NAME=`echo "${PROJECT_LINE}" | awk -F: '{print $1}'` || exit 1
+ NAME=`echo "${NAME}" | tr -d ' '` || exit 1
+
+ # Determine whether or not the project has native jars
+ NATIVES=`echo "${PROJECT_LINE}" | awk -F: '{print $2}'` || exit 1
+ NATIVES=`echo "${NATIVES}" | tr -d ' '` || exit 1
+
+ # Determine whether or not the project uses an empty "dummy" jar
+ DUMMY=`echo "${PROJECT_LINE}" | awk -F: '{print $3}'` || exit 1
+ DUMMY=`echo "${DUMMY}" | tr -d ' '` || exit 1
+
+ # Copy all native jars, if necessary
+ if [ "${NATIVES}" = "natives" ]
+ then
+ for PLATFORM in ${PLATFORMS}
+ do
+ SOURCE="${INPUT}/jar/${NAME}-natives-${PLATFORM}.jar"
+ TARGET="output/${NAME}/${VERSION}/${NAME}-${VERSION}-natives-${PLATFORM}.jar"
+ copy "${SOURCE}" "${TARGET}"
+ done
+ fi
+
+ # Copy dummy jar, if necessary
+ if [ "${DUMMY}" = "dummy-jar" ]
+ then
+ SOURCE="empty.jar"
+ TARGET="output/${NAME}/${VERSION}/${NAME}.jar"
+ copy "${SOURCE}" "${TARGET}"
+ else
+ # Copy main jar
+ SOURCE="${INPUT}/jar/${NAME}.jar"
+ TARGET="output/${NAME}/${VERSION}/${NAME}.jar"
+ copy "${SOURCE}" "${TARGET}"
+ fi
+
+ # Copy dummy jars to 'sources' and 'javadoc' jars, as we
+ # don't publish real versions of these yet.
+ SOURCE="empty.jar"
+ TARGET="output/${NAME}/${VERSION}/${NAME}-${VERSION}-sources.jar"
+ copy "${SOURCE}" "${TARGET}"
+
+ SOURCE="empty.jar"
+ TARGET="output/${NAME}/${VERSION}/${NAME}-${VERSION}-javadoc.jar"
+ copy "${SOURCE}" "${TARGET}"
+done
+
diff --git a/maven/make-copy-poms.sh b/maven/make-copy-poms.sh
new file mode 100755
index 0000000..67b64cd
--- /dev/null
+++ b/maven/make-copy-poms.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+info()
+{
+ echo "make-copy-poms: info: $1" 1>&2
+}
+
+copy()
+{
+ SOURCE="$1"
+ TARGET="$2"
+
+ info "copy $1 $2.tmp" 1>&2
+ cp "$1" "$2.tmp" || exit 1
+ info "rename $2.tmp $2" 1>&2
+ mv "$2.tmp" "$2" || exit 1
+}
+
+if [ $# -ne 1 ]
+then
+ echo "make-copy-poms: usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+PROJECTS=`cat make-projects.txt | awk -F: '{print $1}'` || exit 1
+
+for PROJECT in ${PROJECTS}
+do
+ SOURCE="${PROJECT}.pom"
+ TARGET="output/${PROJECT}/${VERSION}/${PROJECT}-${VERSION}.pom"
+ copy "${SOURCE}" "${TARGET}"
+ TARGET="output/${PROJECT}/${VERSION}/pom.xml"
+ copy "${SOURCE}" "${TARGET}"
+done
+
diff --git a/maven/make-deploy-one.sh b/maven/make-deploy-one.sh
new file mode 100755
index 0000000..458ee44
--- /dev/null
+++ b/maven/make-deploy-one.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+info()
+{
+ echo "make-deploy-one: info: $1" 1>&2
+}
+
+if [ $# -ne 2 ]
+then
+ info "usage: name version"
+ exit 1
+fi
+
+NAME="$1"
+shift
+VERSION="$1"
+shift
+
+REPOSITORY_URL="https://oss.sonatype.org/service/local/staging/deploy/maven2/"
+REPOSITORY_ID="sonatype-nexus-staging"
+
+# REPOSITORY_URL="scpexe://jogamp.org/home/mraynsford/repository/"
+# REPOSITORY_ID="jogamp-test-mirror"
+
+PLATFORMS=`cat make-platforms.txt | awk '{print $1}'` || exit 1
+CURRENT_DIR=`pwd` || exit 1
+
+PROJECT_LINE=`egrep "^${NAME}\s+" make-projects.txt` || exit 1
+
+# Determine whether or not the project has native jars
+NATIVES=`echo "${PROJECT_LINE}" | awk -F: '{print $2}'` || exit 1
+NATIVES=`echo "${NATIVES}" | tr -d ' '` || exit 1
+
+cd "output/${NAME}/${VERSION}" || exit 1
+
+# Deploy jar.
+mvn gpg:sign-and-deploy-file \
+ "-DpomFile=pom.xml" \
+ "-Dfile=${NAME}.jar" \
+ "-Durl=${REPOSITORY_URL}" \
+ "-DrepositoryId=${REPOSITORY_ID}"
+
+# Deploy native jars into repository, if necessary.
+if [ "${NATIVES}" = "natives" ]
+then
+ for PLATFORM in ${PLATFORMS}
+ do
+ mvn gpg:sign-and-deploy-file \
+ "-DpomFile=pom.xml" \
+ "-Dfile=${NAME}-${VERSION}-natives-${PLATFORM}.jar" \
+ "-Dclassifier=natives-${PLATFORM}" \
+ "-Durl=${REPOSITORY_URL}" \
+ "-DrepositoryId=${REPOSITORY_ID}"
+ done
+fi
+
+# Deploy empty 'sources' and 'javadoc' jars.
+mvn gpg:sign-and-deploy-file \
+ "-DpomFile=pom.xml" \
+ "-Dfile=${NAME}-${VERSION}-javadoc.jar" \
+ "-Dclassifier=javadoc" \
+ "-Durl=${REPOSITORY_URL}" \
+ "-DrepositoryId=${REPOSITORY_ID}"
+
+mvn gpg:sign-and-deploy-file \
+ "-DpomFile=pom.xml" \
+ "-Dfile=${NAME}-${VERSION}-sources.jar" \
+ "-Dclassifier=sources" \
+ "-Durl=${REPOSITORY_URL}" \
+ "-DrepositoryId=${REPOSITORY_ID}"
+
diff --git a/maven/make-deploy.sh b/maven/make-deploy.sh
new file mode 100755
index 0000000..3540cec
--- /dev/null
+++ b/maven/make-deploy.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+info()
+{
+ echo "make-deploy: info: $1" 1>&2
+}
+
+if [ $# -ne 1 ]
+then
+ info "usage: version"
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+PROJECTS=`cat make-projects.txt` || exit 1
+PLATFORMS=`cat make-platforms.txt | awk '{print $1}'` || exit 1
+
+CURRENT_DIR=`pwd` || exit 1
+
+# Set internal field separator to newlines so that ${PROJECTS} is
+# tokenized per-line.
+IFS="
+"
+
+for PROJECT_LINE in ${PROJECTS}
+do
+ # Determine project name
+ NAME=`echo "${PROJECT_LINE}" | awk -F: '{print $1}'` || exit 1
+ NAME=`echo "${NAME}" | tr -d ' '` || exit 1
+
+ ./make-deploy-one.sh "${NAME}" "${VERSION}"
+done
+
diff --git a/maven/make-directories.sh b/maven/make-directories.sh
new file mode 100755
index 0000000..b0f124a
--- /dev/null
+++ b/maven/make-directories.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "make-directories: usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+PROJECTS=`cat make-projects.txt | awk -F: '{print $1}'` || exit 1
+
+for PROJECT in ${PROJECTS}
+do
+ echo "make-directories: info: creating output/${PROJECT}/${VERSION}" 2>&1
+ mkdir -p "output/${PROJECT}/${VERSION}" || exit 1
+done
+
diff --git a/maven/make-jogl-manifest.txt b/maven/make-jogl-manifest.txt
new file mode 100644
index 0000000..9d885be
--- /dev/null
+++ b/maven/make-jogl-manifest.txt
@@ -0,0 +1 @@
+Manifest-Version: 1.0
diff --git a/maven/make-platforms.txt b/maven/make-platforms.txt
new file mode 100644
index 0000000..6ff9f43
--- /dev/null
+++ b/maven/make-platforms.txt
@@ -0,0 +1,10 @@
+android-armv6 : Android ARMv6
+linux-amd64 : Linux AMD64
+linux-armv6 : Linux ARMv6
+linux-armv6hf : Linux ARMv6hf
+linux-i586 : Linux i586
+macosx-universal : Mac OS X Universal
+solaris-amd64 : Solaris AMD64
+solaris-i586 : Solaris i586
+windows-amd64 : Windows AMD64
+windows-i586 : Windows i586
diff --git a/maven/make-poms.sh b/maven/make-poms.sh
new file mode 100755
index 0000000..25b29cd
--- /dev/null
+++ b/maven/make-poms.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "make-poms: usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+PROJECTS=`cat make-projects.txt | awk -F: '{print $1}'` || exit 1
+
+for PROJECT in ${PROJECTS}
+do
+ echo "make-poms: info: generating pom for ${PROJECT}" 1>&2
+ "./${PROJECT}.pom.sh" "${VERSION}" > "${PROJECT}.pom.tmp" || exit 1
+ mv "${PROJECT}.pom.tmp" "${PROJECT}.pom" || exit 1
+done
+
diff --git a/maven/make-projects.txt b/maven/make-projects.txt
new file mode 100644
index 0000000..eb0a579
--- /dev/null
+++ b/maven/make-projects.txt
@@ -0,0 +1,12 @@
+gluegen-rt : natives : no-dummy-jar
+gluegen-rt-main : no-natives : dummy-jar
+joal : natives : no-dummy-jar
+joal-main : no-natives : dummy-jar
+jocl : natives : no-dummy-jar
+jocl-main : no-natives : dummy-jar
+jogl-all : natives : no-dummy-jar
+jogl-all-main : no-natives : dummy-jar
+jogl-all-mobile : no-natives : no-dummy-jar
+jogl-all-mobile-main : no-natives : dummy-jar
+jogl-all-noawt : no-natives : no-dummy-jar
+jogl-all-noawt-main : no-natives : dummy-jar
diff --git a/maven/make.sh b/maven/make.sh
new file mode 100755
index 0000000..496e35d
--- /dev/null
+++ b/maven/make.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]
+then
+ echo "usage: version" 1>&2
+ exit 1
+fi
+
+VERSION="$1"
+shift
+
+INPUT="input/jogamp-all-platforms"
+if [ ! -d "${INPUT}" ]
+then
+ echo "make: error: ${INPUT} is not an existing directory" 1>&2
+ echo "make: error: unpack jogamp-all-platforms.7z into 'input'" 1>&2
+ exit 1
+fi
+
+./make-directories.sh "${VERSION}" || exit 1
+./make-copy-jars.sh "${VERSION}" || exit 1
+./make-poms.sh "${VERSION}" || exit 1
+./make-copy-poms.sh "${VERSION}" || exit 1
+