From 0b5b6cbcb467559c618df8dd0f3284ace07e36ec Mon Sep 17 00:00:00 2001
From: Jens von Pilgrim
Date: Wed, 30 Mar 2011 09:35:14 +0000
Subject: [PATCH] Initial import of eclipse plugins. Note: The plugins are only
skeletons, the actual plugins are to be build with the Ant script found in
org.lwjgl.build/build.xml. See org.lwjgl.build/READ.ME for details.
Plugin lwjgl.org contains a binary version of LWJGL for development purposes (of this plugin) only. This binary version is ignored by the build script.
---
eclipse-update/org.lwjgl.build/.classpath | 8 +
eclipse-update/org.lwjgl.build/.project | 28 +
.../org.lwjgl.build/META-INF/MANIFEST.MF | 13 +
eclipse-update/org.lwjgl.build/READ.ME | 88 +++
.../org.lwjgl.build/build.properties | 3 +
eclipse-update/org.lwjgl.build/build.xml | 444 +++++++++++++
.../java/org/lwjgl/ant/NormalizeVersion.java | 173 +++++
.../src/java/org/lwjgl/ant/PackageList.java | 270 ++++++++
.../org.lwjgl.build/test/buildtest/build.xml | 36 ++
.../org/lwjgl/ant/NormalizeVersionTest.java | 71 ++
eclipse-update/org.lwjgl.build/teststore | Bin 0 -> 1252 bytes
eclipse-update/org.lwjgl.doc/.project | 22 +
.../org.lwjgl.doc/META-INF/MANIFEST.MF | 6 +
eclipse-update/org.lwjgl.doc/about.html | 55 ++
eclipse-update/org.lwjgl.doc/build.properties | 4 +
.../org.lwjgl.doc/html/fig/addLib_1.png | Bin 0 -> 86369 bytes
.../org.lwjgl.doc/html/fig/addLib_2.png | Bin 0 -> 41698 bytes
.../org.lwjgl.doc/html/fig/addLib_3.png | Bin 0 -> 75974 bytes
.../org.lwjgl.doc/html/fig/addLib_4.png | Bin 0 -> 88595 bytes
.../org.lwjgl.doc/html/fig/logo.png | Bin 0 -> 2032 bytes
.../org.lwjgl.doc/html/fig/lwjgl_logo.png | Bin 0 -> 24185 bytes
.../org.lwjgl.doc/html/fig/mesh.png | Bin 0 -> 22227 bytes
.../org.lwjgl.doc/html/fig/openView_1.png | Bin 0 -> 50576 bytes
.../org.lwjgl.doc/html/fig/openView_2.png | Bin 0 -> 33910 bytes
.../org.lwjgl.doc/html/fig/openView_Info.png | Bin 0 -> 89808 bytes
.../org.lwjgl.doc/html/fig/openView_Test.png | Bin 0 -> 38583 bytes
.../org.lwjgl.doc/html/overview.html | 66 ++
.../org.lwjgl.doc/html/plugins.html | 60 ++
eclipse-update/org.lwjgl.doc/html/tools.html | 72 +++
eclipse-update/org.lwjgl.doc/html/views.html | 72 +++
eclipse-update/org.lwjgl.doc/lwjgl_logo.png | Bin 0 -> 24185 bytes
eclipse-update/org.lwjgl.doc/plugin.xml | 18 +
eclipse-update/org.lwjgl.doc/toc.xml | 16 +
eclipse-update/org.lwjgl.feature.sdk/.project | 17 +
.../org.lwjgl.feature.sdk/build.properties | 1 +
.../org.lwjgl.feature.sdk/feature.xml | 95 +++
.../feature.xml.template | 95 +++
eclipse-update/org.lwjgl.feature/.project | 17 +
.../org.lwjgl.feature/build.properties | 2 +
eclipse-update/org.lwjgl.feature/feature.xml | 93 +++
.../org.lwjgl.feature/feature.xml.template | 72 +++
.../org.lwjgl.feature/lwjgl_logo.png | Bin 0 -> 24185 bytes
eclipse-update/org.lwjgl.info/.classpath | 7 +
eclipse-update/org.lwjgl.info/.project | 28 +
.../.settings/org.eclipse.jdt.core.prefs | 12 +
.../org.lwjgl.info/META-INF/MANIFEST.MF | 16 +
eclipse-update/org.lwjgl.info/about.html | 60 ++
.../org.lwjgl.info/build.properties | 9 +
.../org.lwjgl.info/icons/lwjgl_logo_16.gif | Bin 0 -> 574 bytes
eclipse-update/org.lwjgl.info/lwjgl_logo.png | Bin 0 -> 24185 bytes
eclipse-update/org.lwjgl.info/plugin.xml | 23 +
.../org/lwjgl/info/FpsStatusLineItem.java | 186 ++++++
.../java/org/lwjgl/info/LWJGLInfoView.java | 609 ++++++++++++++++++
.../java/org/lwjgl/info/LWJGLTestView.java | 203 ++++++
eclipse-update/org.lwjgl.source/.project | 11 +
.../org.lwjgl.source/META-INF/MANIFEST.MF | 7 +
eclipse-update/org.lwjgl.source/about.html | 55 ++
.../org.lwjgl.source/build.properties | 10 +
.../org.lwjgl.source/lwjgl_logo.png | Bin 0 -> 24185 bytes
eclipse-update/org.lwjgl.source/plugin.xml | 8 +
eclipse-update/org.lwjgl.tools/.classpath | 7 +
eclipse-update/org.lwjgl.tools/.project | 28 +
.../.settings/org.eclipse.jdt.core.prefs | 12 +
.../org.lwjgl.tools/META-INF/MANIFEST.MF | 16 +
eclipse-update/org.lwjgl.tools/about.html | 33 +
.../org.lwjgl.tools/build.properties | 6 +
eclipse-update/org.lwjgl.tools/plugin.xml | 25 +
.../src/java/org/lwjgl/tools/Activator.java | 64 ++
.../org/lwjgl/tools/BuildPathSupport.java | 269 ++++++++
.../LWJGLClasspathContainerInitializer.java | 233 +++++++
.../tools/LWJGLClasspathContainerPage.java | 279 ++++++++
eclipse-update/org.lwjgl.updatesite/.project | 17 +
.../org.lwjgl.updatesite/about.html | 60 ++
.../org.lwjgl.updatesite/index.html | 60 ++
eclipse-update/org.lwjgl.updatesite/site.xml | 17 +
.../org.lwjgl.updatesite/site.xml.template | 17 +
.../org.lwjgl.updatesite/web/site.css | 12 +
.../org.lwjgl.updatesite/web/site.xsl | 214 ++++++
eclipse-update/org.lwjgl/.classpath | 14 +
eclipse-update/org.lwjgl/.project | 28 +
.../.settings/org.eclipse.jdt.core.prefs | 12 +
.../org.lwjgl/AppleJavaExtensions.jar | Bin 0 -> 4189 bytes
eclipse-update/org.lwjgl/META-INF/MANIFEST.MF | 38 ++
eclipse-update/org.lwjgl/build.properties | 11 +
eclipse-update/org.lwjgl/jinput.jar | Bin 0 -> 214859 bytes
eclipse-update/org.lwjgl/lwjgl.jar | Bin 0 -> 867028 bytes
eclipse-update/org.lwjgl/lwjgl_test.jar | Bin 0 -> 206493 bytes
eclipse-update/org.lwjgl/lwjgl_util.jar | Bin 0 -> 127598 bytes
.../org.lwjgl/lwjgl_util_applet.jar | Bin 0 -> 31423 bytes
eclipse-update/org.lwjgl/lzma.jar | Bin 0 -> 5762 bytes
.../org.lwjgl/native/linux/libjinput-linux.so | Bin 0 -> 13824 bytes
.../native/linux/libjinput-linux64.so | Bin 0 -> 14512 bytes
.../org.lwjgl/native/linux/liblwjgl.so | Bin 0 -> 374744 bytes
.../org.lwjgl/native/linux/liblwjgl64.so | Bin 0 -> 508936 bytes
.../org.lwjgl/native/linux/libopenal.so | Bin 0 -> 292803 bytes
.../org.lwjgl/native/linux/libopenal64.so | Bin 0 -> 304661 bytes
.../native/macosx/libjinput-osx.jnilib | Bin 0 -> 64608 bytes
.../org.lwjgl/native/macosx/liblwjgl.jnilib | Bin 0 -> 1213968 bytes
.../org.lwjgl/native/macosx/openal.dylib | Bin 0 -> 256696 bytes
.../org.lwjgl/native/solaris/liblwjgl.so | Bin 0 -> 349040 bytes
.../org.lwjgl/native/solaris/liblwjgl64.so | Bin 0 -> 547448 bytes
.../org.lwjgl/native/solaris/libopenal.so | Bin 0 -> 214896 bytes
.../org.lwjgl/native/solaris/libopenal64.so | Bin 0 -> 260008 bytes
.../org.lwjgl/native/windows/OpenAL32.dll | Bin 0 -> 56832 bytes
.../org.lwjgl/native/windows/OpenAL64.dll | Bin 0 -> 157184 bytes
.../org.lwjgl/native/windows/jinput-dx8.dll | Bin 0 -> 31232 bytes
.../native/windows/jinput-dx8_64.dll | Bin 0 -> 65024 bytes
.../org.lwjgl/native/windows/jinput-raw.dll | Bin 0 -> 29696 bytes
.../native/windows/jinput-raw_64.dll | Bin 0 -> 62464 bytes
.../org.lwjgl/native/windows/lwjgl.dll | Bin 0 -> 197120 bytes
.../org.lwjgl/native/windows/lwjgl64.dll | Bin 0 -> 305664 bytes
.../src/java/org/lwjgl/Activator.java | 83 +++
.../src/java/org/lwjgl/LibraryPathUtil.java | 92 +++
.../org/lwjgl/OSNotSupportedException.java | 53 ++
114 files changed, 4861 insertions(+)
create mode 100644 eclipse-update/org.lwjgl.build/.classpath
create mode 100644 eclipse-update/org.lwjgl.build/.project
create mode 100644 eclipse-update/org.lwjgl.build/META-INF/MANIFEST.MF
create mode 100644 eclipse-update/org.lwjgl.build/READ.ME
create mode 100644 eclipse-update/org.lwjgl.build/build.properties
create mode 100644 eclipse-update/org.lwjgl.build/build.xml
create mode 100644 eclipse-update/org.lwjgl.build/src/java/org/lwjgl/ant/NormalizeVersion.java
create mode 100644 eclipse-update/org.lwjgl.build/src/java/org/lwjgl/ant/PackageList.java
create mode 100644 eclipse-update/org.lwjgl.build/test/buildtest/build.xml
create mode 100644 eclipse-update/org.lwjgl.build/test/java/org/lwjgl/ant/NormalizeVersionTest.java
create mode 100644 eclipse-update/org.lwjgl.build/teststore
create mode 100644 eclipse-update/org.lwjgl.doc/.project
create mode 100644 eclipse-update/org.lwjgl.doc/META-INF/MANIFEST.MF
create mode 100644 eclipse-update/org.lwjgl.doc/about.html
create mode 100644 eclipse-update/org.lwjgl.doc/build.properties
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/addLib_1.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/addLib_2.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/addLib_3.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/addLib_4.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/logo.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/lwjgl_logo.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/mesh.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/openView_1.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/openView_2.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/openView_Info.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/fig/openView_Test.png
create mode 100644 eclipse-update/org.lwjgl.doc/html/overview.html
create mode 100644 eclipse-update/org.lwjgl.doc/html/plugins.html
create mode 100644 eclipse-update/org.lwjgl.doc/html/tools.html
create mode 100644 eclipse-update/org.lwjgl.doc/html/views.html
create mode 100644 eclipse-update/org.lwjgl.doc/lwjgl_logo.png
create mode 100644 eclipse-update/org.lwjgl.doc/plugin.xml
create mode 100644 eclipse-update/org.lwjgl.doc/toc.xml
create mode 100644 eclipse-update/org.lwjgl.feature.sdk/.project
create mode 100644 eclipse-update/org.lwjgl.feature.sdk/build.properties
create mode 100644 eclipse-update/org.lwjgl.feature.sdk/feature.xml
create mode 100644 eclipse-update/org.lwjgl.feature.sdk/feature.xml.template
create mode 100644 eclipse-update/org.lwjgl.feature/.project
create mode 100644 eclipse-update/org.lwjgl.feature/build.properties
create mode 100644 eclipse-update/org.lwjgl.feature/feature.xml
create mode 100644 eclipse-update/org.lwjgl.feature/feature.xml.template
create mode 100644 eclipse-update/org.lwjgl.feature/lwjgl_logo.png
create mode 100755 eclipse-update/org.lwjgl.info/.classpath
create mode 100755 eclipse-update/org.lwjgl.info/.project
create mode 100755 eclipse-update/org.lwjgl.info/.settings/org.eclipse.jdt.core.prefs
create mode 100644 eclipse-update/org.lwjgl.info/META-INF/MANIFEST.MF
create mode 100755 eclipse-update/org.lwjgl.info/about.html
create mode 100755 eclipse-update/org.lwjgl.info/build.properties
create mode 100755 eclipse-update/org.lwjgl.info/icons/lwjgl_logo_16.gif
create mode 100755 eclipse-update/org.lwjgl.info/lwjgl_logo.png
create mode 100755 eclipse-update/org.lwjgl.info/plugin.xml
create mode 100755 eclipse-update/org.lwjgl.info/src/java/org/lwjgl/info/FpsStatusLineItem.java
create mode 100644 eclipse-update/org.lwjgl.info/src/java/org/lwjgl/info/LWJGLInfoView.java
create mode 100755 eclipse-update/org.lwjgl.info/src/java/org/lwjgl/info/LWJGLTestView.java
create mode 100644 eclipse-update/org.lwjgl.source/.project
create mode 100644 eclipse-update/org.lwjgl.source/META-INF/MANIFEST.MF
create mode 100644 eclipse-update/org.lwjgl.source/about.html
create mode 100644 eclipse-update/org.lwjgl.source/build.properties
create mode 100644 eclipse-update/org.lwjgl.source/lwjgl_logo.png
create mode 100644 eclipse-update/org.lwjgl.source/plugin.xml
create mode 100644 eclipse-update/org.lwjgl.tools/.classpath
create mode 100644 eclipse-update/org.lwjgl.tools/.project
create mode 100644 eclipse-update/org.lwjgl.tools/.settings/org.eclipse.jdt.core.prefs
create mode 100644 eclipse-update/org.lwjgl.tools/META-INF/MANIFEST.MF
create mode 100644 eclipse-update/org.lwjgl.tools/about.html
create mode 100644 eclipse-update/org.lwjgl.tools/build.properties
create mode 100644 eclipse-update/org.lwjgl.tools/plugin.xml
create mode 100644 eclipse-update/org.lwjgl.tools/src/java/org/lwjgl/tools/Activator.java
create mode 100644 eclipse-update/org.lwjgl.tools/src/java/org/lwjgl/tools/BuildPathSupport.java
create mode 100644 eclipse-update/org.lwjgl.tools/src/java/org/lwjgl/tools/LWJGLClasspathContainerInitializer.java
create mode 100644 eclipse-update/org.lwjgl.tools/src/java/org/lwjgl/tools/LWJGLClasspathContainerPage.java
create mode 100644 eclipse-update/org.lwjgl.updatesite/.project
create mode 100644 eclipse-update/org.lwjgl.updatesite/about.html
create mode 100644 eclipse-update/org.lwjgl.updatesite/index.html
create mode 100644 eclipse-update/org.lwjgl.updatesite/site.xml
create mode 100644 eclipse-update/org.lwjgl.updatesite/site.xml.template
create mode 100644 eclipse-update/org.lwjgl.updatesite/web/site.css
create mode 100644 eclipse-update/org.lwjgl.updatesite/web/site.xsl
create mode 100644 eclipse-update/org.lwjgl/.classpath
create mode 100644 eclipse-update/org.lwjgl/.project
create mode 100644 eclipse-update/org.lwjgl/.settings/org.eclipse.jdt.core.prefs
create mode 100644 eclipse-update/org.lwjgl/AppleJavaExtensions.jar
create mode 100644 eclipse-update/org.lwjgl/META-INF/MANIFEST.MF
create mode 100644 eclipse-update/org.lwjgl/build.properties
create mode 100644 eclipse-update/org.lwjgl/jinput.jar
create mode 100644 eclipse-update/org.lwjgl/lwjgl.jar
create mode 100644 eclipse-update/org.lwjgl/lwjgl_test.jar
create mode 100644 eclipse-update/org.lwjgl/lwjgl_util.jar
create mode 100644 eclipse-update/org.lwjgl/lwjgl_util_applet.jar
create mode 100644 eclipse-update/org.lwjgl/lzma.jar
create mode 100644 eclipse-update/org.lwjgl/native/linux/libjinput-linux.so
create mode 100644 eclipse-update/org.lwjgl/native/linux/libjinput-linux64.so
create mode 100644 eclipse-update/org.lwjgl/native/linux/liblwjgl.so
create mode 100644 eclipse-update/org.lwjgl/native/linux/liblwjgl64.so
create mode 100644 eclipse-update/org.lwjgl/native/linux/libopenal.so
create mode 100644 eclipse-update/org.lwjgl/native/linux/libopenal64.so
create mode 100644 eclipse-update/org.lwjgl/native/macosx/libjinput-osx.jnilib
create mode 100644 eclipse-update/org.lwjgl/native/macosx/liblwjgl.jnilib
create mode 100644 eclipse-update/org.lwjgl/native/macosx/openal.dylib
create mode 100644 eclipse-update/org.lwjgl/native/solaris/liblwjgl.so
create mode 100644 eclipse-update/org.lwjgl/native/solaris/liblwjgl64.so
create mode 100644 eclipse-update/org.lwjgl/native/solaris/libopenal.so
create mode 100644 eclipse-update/org.lwjgl/native/solaris/libopenal64.so
create mode 100644 eclipse-update/org.lwjgl/native/windows/OpenAL32.dll
create mode 100644 eclipse-update/org.lwjgl/native/windows/OpenAL64.dll
create mode 100644 eclipse-update/org.lwjgl/native/windows/jinput-dx8.dll
create mode 100644 eclipse-update/org.lwjgl/native/windows/jinput-dx8_64.dll
create mode 100644 eclipse-update/org.lwjgl/native/windows/jinput-raw.dll
create mode 100644 eclipse-update/org.lwjgl/native/windows/jinput-raw_64.dll
create mode 100644 eclipse-update/org.lwjgl/native/windows/lwjgl.dll
create mode 100644 eclipse-update/org.lwjgl/native/windows/lwjgl64.dll
create mode 100644 eclipse-update/org.lwjgl/src/java/org/lwjgl/Activator.java
create mode 100644 eclipse-update/org.lwjgl/src/java/org/lwjgl/LibraryPathUtil.java
create mode 100644 eclipse-update/org.lwjgl/src/java/org/lwjgl/OSNotSupportedException.java
diff --git a/eclipse-update/org.lwjgl.build/.classpath b/eclipse-update/org.lwjgl.build/.classpath
new file mode 100644
index 00000000..3c128ebc
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/.classpath
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/eclipse-update/org.lwjgl.build/.project b/eclipse-update/org.lwjgl.build/.project
new file mode 100644
index 00000000..7689f7f9
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/.project
@@ -0,0 +1,28 @@
+
+
+ org.lwjgl.build
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.pde.PluginNature
+
+
diff --git a/eclipse-update/org.lwjgl.build/META-INF/MANIFEST.MF b/eclipse-update/org.lwjgl.build/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..57d2b654
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: LWJGL Updatesite Build
+Bundle-SymbolicName: org.lwjgl.build
+Bundle-Version: 1.0.0
+Export-Package: org.lwjgl.ant
+Import-Package: org.apache.tools.ant,
+ org.apache.tools.ant.taskdefs,
+ org.apache.tools.ant.types,
+ org.apache.tools.ant.types.selectors,
+ org.apache.tools.ant.util,
+ org.junit;version="4.8.1"
+Bundle-Vendor: Lightweight Java Game Library Project
diff --git a/eclipse-update/org.lwjgl.build/READ.ME b/eclipse-update/org.lwjgl.build/READ.ME
new file mode 100644
index 00000000..dd82b913
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/READ.ME
@@ -0,0 +1,88 @@
+The build plugin is part of the LWJGL Eclipse plugins. The following plugins are
+required:
+
+org.lwjgl
+ Skeleton plugin, that is it contains the Eclipse Activator for setting up the
+ native library path, but the lwjgl jars are missing. These jars are added by
+ the build script later on
+
+org.lwjgl.source
+ Skeleton plugin for sources, plugin.xml etc are already configured, but again
+ the sources itself are only added by the build script later on
+
+org.lwjgl.doc
+ Skeleton plugin for documentation, Javadoc is added by build script, however
+ some Eclipse help files are already in place
+
+org.lwjgl.info
+ This plugin was called org.lwjgl.test in the elder version. I renamed it as it
+ does not really contain a test but Eclipse views. Besides the spinning torus
+ test view, I added an info view printing out current version of driver etc.
+ and capabilities of user's OpenGL system
+
+org.lwjgl.tools
+ This plugin contains a library set up for plain Java projects, in order to get
+ rid of defining additional parameters in the run configuration. It is
+ documented in the help files. I have sent you this plugin once, but it never
+ made it into the update site. Well, now it is in place
+
+org.lwjgl.feature
+ Feature plugin referencing the core lwjgl plugin. It contains two
+ feature.xml definitions, one used for playing around in Eclipse, and a
+ template which is used by the build script. If you ever change something
+ here, pay attention to also change the template file.
+
+org.lwjgl.feature.sdk
+ Feature plugin referencing the src, doc, tools and info lwjgl plugin.
+ It contains two feature.xml definitions, one used for playing around in
+ Eclipse, and a template which is used by the build script. If you ever change
+ something here, pay attention to also change the template file.
+
+org.lwjgl.updatesite
+ Well, this is the updatesite. As in the feature project, site.xml comes
+ together with a template version used by the build script.
+
+org.lwjgl.build -- THIS Plugin
+ This is the build script project. Although it is an Eclipse project, you can
+ simply run the build script with ant from command line. See later on.
+
+Everything is created in org.lwjgl.build/build.
+Here is how to build the update site:
+
+1) Create a new folder in org.lwjgl.build/lwjgl-archives , use the version
+ number as folder name. E.g., for version 2.6 create a folder "2.6",
+ for version 2.6.1 "2.6.1" and so on.
+2) Copy the lwjgl, lwjgl-docs and lwjgl-source zips into that folder. E.g.,
+ for version 2.6, this folder must contain the following files:
+ org.lwjgl.build/lwjgl-archives
+ + 2.6
+ - lwjgl-2.6.zip
+ - lwjgl-docs-2.6.zip
+ - lwjgl-source-2.6.zip
+3) In order to run the build script, change to folder org.lwjgl.build and run
+ ant with a parameter indicating the appropriate LWJGL version, e.g.
+ ant -Dversion=2.6 dist
+
+You will find the updatesite in
+ org.lwjgl.build/build/plugins/org.lwjgl.updatesite
+
+You may note that the jars are all signed. I have added a temporary keystore
+with a dummy alias. In order to use your key, simply edit the properties
+(line 11-14) in the build script. If you do not want to store the password in
+the build script, simply define it via "-Dstorepass=****" in the command line.
+
+Some additional remarks:
+- The version number is automatically "normalized" to Eclipse standards,
+ that is 2.6 will become 2.6.0. You do not have to rename the initial archives,
+ you can use 2.6. Or 2.6.1 ;-)
+- The lwjgl-debug.jar is not added to the org.lwjgl plugin, as I do not know
+ how to select one or the other. But I have not further investigated in
+ that direction.
+- Note that only the created plugin and feature jars are signed, and not the
+ nested lwjgl.jar etc., as I figure that you will sign these jars yourself
+ when creating the zip files.
+- When testing the update site and the installation of plugins, pay attention
+ to the Eclipse P2 system, which caches a lot of things. Simply uninstalling
+ a plugin does not remove the plugins from the Eclipse installation. When
+ the very same version is re-installed, instead of loading new files from the
+ update site these pre-installed versions are reused!
\ No newline at end of file
diff --git a/eclipse-update/org.lwjgl.build/build.properties b/eclipse-update/org.lwjgl.build/build.properties
new file mode 100644
index 00000000..cc29de28
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/build.properties
@@ -0,0 +1,3 @@
+source.. = src/java/
+bin.includes = META-INF/,\
+ .
diff --git a/eclipse-update/org.lwjgl.build/build.xml b/eclipse-update/org.lwjgl.build/build.xml
new file mode 100644
index 00000000..0cd8275b
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/build.xml
@@ -0,0 +1,444 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Building plugins for version ${version}, normalized version ${normversion}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: LWJGL Lightweight Java Game Library
+Bundle-SymbolicName: org.lwjgl
+Bundle-Version: ${normversion}
+Bundle-Vendor: ${bundle.vendor}
+Bundle-Activator: org.lwjgl.eclipse.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime
+Bundle-ActivationPolicy: lazy
+Export-Package: org.lwjgl.eclipse,${NL} ${bundle.export-package}
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ClassPath: .,${NL} ${bundle.classpath.jars}
+
+
+
+
+ Manifest-Version: 1.0
+Bundle-Vendor: ${bundle.vendor}
+Bundle-Version: ${normversion}
+Bundle-SymbolicName: org.lwjgl.doc;singleton:=true
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.help;bundle-version="3.2.0"
+Eclipse-LazyStart: true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: LWJGL Sources
+Bundle-Vendor: ${bundle.vendor}
+Bundle-Version: ${normversion}
+Bundle-SymbolicName: org.lwjgl.source;singleton:=true
+Bundle-Localization: plugin
+
+
+
+ Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: LWJGL Test and Info View
+Bundle-Vendor: ${bundle.vendor}
+Bundle-Version: ${normversion}
+Bundle-SymbolicName: org.lwjgl.info;singleton:=true
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.ui.views,
+ org.eclipse.core.resources,
+ org.lwjgl
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+
+
+
+
+
+ Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: LWJGL Tools Plug-in
+Bundle-SymbolicName: org.lwjgl.tools;singleton:=true
+Bundle-Version: ${normversion}
+Bundle-Vendor: ${bundle.vendor}
+Bundle-Activator: org.lwjgl.tools.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources;bundle-version="3.4.0",
+ org.eclipse.jdt.core;bundle-version="3.4.0",
+ org.eclipse.jdt.ui;bundle-version="3.4.0",
+ org.lwjgl;bundle-version="${normversion}",
+ org.eclipse.jdt.launching;bundle-version="3.4.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Call this build with version number and target dist, e.g.
+ ant -Dversion=1.1.2 dist
+
+
+
\ No newline at end of file
diff --git a/eclipse-update/org.lwjgl.build/src/java/org/lwjgl/ant/NormalizeVersion.java b/eclipse-update/org.lwjgl.build/src/java/org/lwjgl/ant/NormalizeVersion.java
new file mode 100644
index 00000000..0a5ae00f
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/src/java/org/lwjgl/ant/NormalizeVersion.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2011 LWJGL Project and others
+ * 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, and under the terms of the
+ * BSD license, see http://lwjgl.org/license.php for details.
+ *
+ * Contributors:
+ * Jens von Pilgrim - initial implementation
+ ******************************************************************************/
+package org.lwjgl.ant;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ * Normalizes a version number and stores result in a property. The version
+ * number is normalized as "%n.%n.%n", e.g. "2.6" becomes "2.6.0"
+ *
+ * @author Jens von Pilgrim
+ * @since Nov 14, 2010
+ * @see http://wiki.eclipse.org/index.php/Version_Numbering
+ */
+public class NormalizeVersion extends Task {
+
+
+ /**
+ * name of the property to set
+ */
+ protected String property;
+
+ protected String version;
+
+ /**
+ * @return the property
+ */
+ public String getProperty() {
+ return property;
+ }
+
+ /**
+ * @param i_property the property to set
+ */
+ public void setProperty(String i_property) {
+ property = i_property;
+ }
+
+ /**
+ * @return the versionNumber
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ * @param i_versionNumber the versionNumber to set
+ */
+ public void setVersion(String version) {
+ this.version =version;
+ }
+
+ /**
+ * check for errors
+ * @throws BuildException if we are not configured right
+ */
+ private void validate() {
+ //validation
+ if (property == null) {
+ throw new BuildException("attribute property missing");
+ }
+ if (version == null) {
+ throw new BuildException("attribute version missing");
+ }
+ }
+
+ /**
+ * Sets given property with normalized version number accoring to
+ * major.minor.service[.qualifier]
+ * {@inheritDoc}
+ * @see org.apache.tools.ant.Task#execute()
+ */
+ @Override
+ public void execute() throws BuildException {
+ validate();
+ //now exit here if the property is already set
+ if (getProject().getProperty(property) != null) {
+ return;
+ }
+
+ String normalizedVersionNumber = doExecute();
+
+ getProject().setNewProperty(property, normalizedVersionNumber);
+ }
+
+ /**
+ * @return
+ */
+ protected String doExecute() {
+ String s = getVersion().trim();
+ StringBuilder n = new StringBuilder();
+ int snIndex = 0;
+ boolean qualifier = false;
+
+ String digits = "";
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (Character.isDigit(c) && !qualifier) {
+ digits += c;
+ } else if (c == '.') {
+ if (qualifier) {
+ throw new BuildException(
+ "Wrong format, qualifier must not contain a dot in "
+ + s);
+ }
+ if (snIndex < 3) {
+ if (digits.length() > 0) {
+ if (snIndex > 0)
+ n.append('.');
+ n.append(digits);
+ digits = "";
+ snIndex++;
+ }
+ } else {
+ throw new BuildException(
+ "Wrong format, expected digit, was " + c
+ + " at pos " + i + " of " + s);
+ }
+ } else if (Character.isJavaIdentifierPart(c)) {
+ if (digits.length() > 0) {
+ throw new BuildException(
+ "Wrong format, qualifier must not start with digits in "
+ + s);
+ }
+ if (!qualifier) {
+ switch (snIndex) {
+ case 0: // e.g. "beta"
+ n.append("0");
+ break;
+ case 1: // e.g. "1.beta
+ n.append(".0");
+ case 2: // e.g. "1.2.beta
+ n.append(".0");
+ }
+ qualifier = true;
+ n.append('.');
+ }
+ n.append(c);
+ }
+
+
+ }
+ if (!qualifier) {
+ if (digits.length()>0) {
+ if (snIndex > 0)
+ n.append('.');
+ n.append(digits);
+ snIndex++;
+ }
+ switch (snIndex) {
+ case 0: // e.g. ""
+ n.append("0");
+ break;
+ case 1: // e.g. "1.beta
+ n.append(".0");
+ case 2: // e.g. "1.2.beta
+ n.append(".0");
+ }
+ }
+ return n.toString();
+ }
+
+}
diff --git a/eclipse-update/org.lwjgl.build/src/java/org/lwjgl/ant/PackageList.java b/eclipse-update/org.lwjgl.build/src/java/org/lwjgl/ant/PackageList.java
new file mode 100644
index 00000000..2c9770f1
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/src/java/org/lwjgl/ant/PackageList.java
@@ -0,0 +1,270 @@
+/*******************************************************************************
+ * Copyright (c) 2011 LWJGL Project and others
+ * 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, and under the terms of the
+ * BSD license, see http://lwjgl.org/license.php for details.
+ *
+ * Contributors:
+ * Jens von Pilgrim - initial implementation
+ ******************************************************************************/
+package org.lwjgl.ant;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.TreeMap;
+import java.util.Vector;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.Expand;
+import org.apache.tools.ant.types.PatternSet;
+import org.apache.tools.ant.types.selectors.SelectorUtils;
+import org.apache.tools.ant.util.FileNameMapper;
+import org.apache.tools.ant.util.FileUtils;
+
+/**
+ * Ant task extracting package names (or generally directory names) into given
+ * property.
+ *
+ * Parameters:
+ * - just like unzip, except dest can be null and is ignored otherwise
+ * - property - name of property storing the resulting list
+ * - pathsep - path separator, default ","
+ * - dirsep - directory separator, default "."
+ * - includeemptydirs -- whether to include empty directories, default: false
+ *
+ * @author Jens von Pilgrim
+ * @since 12.09.2007
+ */
+public class PackageList extends Expand {
+
+ /**
+ * The property to receive the conversion
+ */
+ private String property = null;
+
+ /**
+ * User override on path sep char
+ */
+ private String pathSep = ",";
+
+ /**
+ * User override on directory sep char
+ */
+ private String dirSep = ".";
+
+
+ private boolean includeemptydirs = false;
+
+ class IntegerContainer {
+ int value;
+
+ public void inc() {
+ value++;
+ }
+ };
+
+ TreeMap packagelist = new TreeMap();
+
+ /**
+ * {@inheritDoc}
+ * @see org.apache.tools.ant.taskdefs.Expand#execute()
+ */
+ @Override
+ public void execute() throws BuildException {
+
+ setDest(new File(" no file, files are only listed internaly"));
+ super.execute();
+
+ StringBuffer strb = new StringBuffer();
+ for (String name : packagelist.keySet()) {
+
+ // System.out.println("name: " + name + " (" +packagelist.get(name).value + ")" );
+
+ if (includeemptydirs || packagelist.get(name).value > 0) {
+ if (strb.length() > 0) {
+ strb.append(pathSep);
+ }
+ StringTokenizer stDirectory = new StringTokenizer(name, "/",
+ true);
+
+ while (stDirectory.hasMoreTokens()) {
+ String token = stDirectory.nextToken();
+ strb.append("/".equals(token) ? dirSep : token);
+ }
+ }
+ }
+
+ if (property != null) {
+ String value = strb.toString();
+ getProject().setNewProperty(property, value);
+ }
+
+ }
+
+ private Vector patternsets = new Vector();
+
+ /**
+ * Add a patternset.
+ * @param set a pattern set
+ */
+ public void addPatternset(PatternSet set) {
+ super.addPatternset(set);
+ patternsets.addElement(set);
+ }
+
+ /**
+ * {@inheritDoc}
+ * @see org.apache.tools.ant.taskdefs.Expand#extractFile(org.apache.tools.ant.util.FileUtils, java.io.File, java.io.File, java.io.InputStream, java.lang.String, java.util.Date, boolean, org.apache.tools.ant.util.FileNameMapper)
+ */
+ @Override
+ protected void extractFile(FileUtils i_fileUtils, File i_srcF, File i_dir,
+ InputStream i_compressedInputStream, String i_entryName,
+ Date i_entryDate, boolean i_isDirectory, FileNameMapper i_mapper)
+ throws IOException {
+
+ if (!matchPatterns(i_entryName)) {
+ //Do not process this file
+ return;
+ }
+
+ String strDir = getDir(i_isDirectory, i_entryName);
+ if (strDir != null && !"META-INF".equals(strDir)) {
+ if (!packagelist.containsKey(strDir)) {
+ packagelist.put(strDir, new IntegerContainer());
+ }
+ if (!i_isDirectory) {
+ packagelist.get(strDir).inc();
+ }
+ }
+
+ }
+
+ /**
+ * @param i_entryName
+ */
+ private boolean matchPatterns(String i_entryName) {
+ if (patternsets != null && patternsets.size() > 0) {
+ boolean included = false;
+ String name = i_entryName.replace('/', File.separatorChar).replace(
+ '\\', File.separatorChar);
+
+ Set includePatterns = new HashSet();
+ Set excludePatterns = new HashSet();
+ for (int v = 0, size = patternsets.size(); v < size; v++) {
+ PatternSet p = (PatternSet) patternsets.elementAt(v);
+ String[] incls = p.getIncludePatterns(getProject());
+ if (incls == null || incls.length == 0) {
+ // no include pattern implicitly means includes="**"
+ incls = new String[] { "**" };
+ }
+
+ for (int w = 0; w < incls.length; w++) {
+ String pattern = incls[w].replace('/', File.separatorChar)
+ .replace('\\', File.separatorChar);
+ if (pattern.endsWith(File.separator)) {
+ pattern += "**";
+ }
+ includePatterns.add(pattern);
+ }
+
+ String[] excls = p.getExcludePatterns(getProject());
+ if (excls != null) {
+ for (int w = 0; w < excls.length; w++) {
+ String pattern = excls[w].replace('/',
+ File.separatorChar).replace('\\',
+ File.separatorChar);
+ if (pattern.endsWith(File.separator)) {
+ pattern += "**";
+ }
+ excludePatterns.add(pattern);
+ }
+ }
+ }
+
+ for (Iterator iter = includePatterns.iterator(); !included
+ && iter.hasNext();) {
+ String pattern = iter.next();
+ included = SelectorUtils.matchPath(pattern, name);
+ }
+
+ for (Iterator iter = excludePatterns.iterator(); included
+ && iter.hasNext();) {
+ String pattern = iter.next();
+ included = !SelectorUtils.matchPath(pattern, name);
+ }
+
+ return included;
+ }
+ return true;
+ }
+
+ /**
+ * @param i_isDirectory
+ * @param i_entryName
+ * @return
+ */
+ private String getDir(boolean i_isDirectory, String i_entryName) {
+
+ if (i_entryName == null)
+ return null;
+ int iIndex = i_entryName.lastIndexOf('/');
+ if (iIndex >= 0) {
+ return i_entryName.substring(0, iIndex);
+ }
+ if (i_isDirectory) {
+ return i_entryName;
+ }
+ return null;
+ }
+
+ /**
+ * Set the name of the property into which the converted path will be placed.
+ * @param p the property name.
+ */
+ public void setProperty(String p) {
+ property = p;
+ }
+
+ /**
+ * Set the default path separator string; defaults to current JVM
+ * {@link java.io.File#pathSeparator File.pathSeparator}.
+ * @param sep path separator string.
+ */
+ public void setPathSep(String sep) {
+ pathSep = sep;
+ }
+
+ /**
+ * Set the default directory separator string;
+ * defaults to current JVM {@link java.io.File#separator File.separator}.
+ * @param sep directory separator string.
+ */
+ public void setDirSep(String sep) {
+ dirSep = sep;
+ }
+
+ /**
+ * Simple getter for attribute includeemptydirs.
+ * @return the includeemptydirs
+ */
+ public boolean isIncludeemptydirs() {
+ return includeemptydirs;
+ }
+
+ /**
+ * Simple setter for attribute includeemptydirs.
+ * @param i_includeemptydirs the includeemptydirs to set
+ */
+ public void setIncludeemptydirs(boolean i_includeemptydirs) {
+ includeemptydirs = i_includeemptydirs;
+ }
+
+}
diff --git a/eclipse-update/org.lwjgl.build/test/buildtest/build.xml b/eclipse-update/org.lwjgl.build/test/buildtest/build.xml
new file mode 100644
index 00000000..0e52dfce
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/test/buildtest/build.xml
@@ -0,0 +1,36 @@
+
+
+
+
+ description
+
+
+
+
+
+
+
+
+
+
+
+
+ ${norm}
+
+
+
+
+
+
+
diff --git a/eclipse-update/org.lwjgl.build/test/java/org/lwjgl/ant/NormalizeVersionTest.java b/eclipse-update/org.lwjgl.build/test/java/org/lwjgl/ant/NormalizeVersionTest.java
new file mode 100644
index 00000000..e87aa41e
--- /dev/null
+++ b/eclipse-update/org.lwjgl.build/test/java/org/lwjgl/ant/NormalizeVersionTest.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Jens von Pilgrim and others.
+ * 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: de.jevopi.anttasks
+ * File: NormalizeVersionTest.java
+ * Date: Nov 14, 2010
+ *******************************************************************************/
+package org.lwjgl.ant;
+
+import org.junit.Assert;
+
+import org.apache.tools.ant.BuildException;
+import org.junit.Test;
+
+
+/**
+ * NormalizeVersionTest
+ * There should really be more documentation here.
+ *
+ * @author Jens von Pilgrim
+ * @version $Revision$
+ * @since Nov 14, 2010
+ */
+public class NormalizeVersionTest {
+
+ @Test
+ public void testNormalizer() {
+ NormalizeVersion t = new NormalizeVersion();
+ t.setProperty("normalized");
+
+ t.setVersion("1");
+ Assert.assertEquals("1.0.0", t.doExecute());
+
+ t.setVersion("1.2");
+ Assert.assertEquals("1.2.0", t.doExecute());
+
+ t.setVersion("1.2.3");
+ Assert.assertEquals("1.2.3", t.doExecute());
+
+ t.setVersion("1.2.3.beta");
+ Assert.assertEquals("1.2.3.beta", t.doExecute());
+
+ t.setVersion("1.2.beta");
+ Assert.assertEquals("1.2.0.beta", t.doExecute());
+
+ }
+
+
+ @Test(expected= BuildException.class) public void tooManyDots() {
+ NormalizeVersion t = new NormalizeVersion();
+ t.setProperty("normalized");
+
+ t.setVersion("1.2.3.4.5");
+ t.doExecute();
+ }
+
+ @Test(expected= BuildException.class) public void qualifierWithNumber() {
+ NormalizeVersion t = new NormalizeVersion();
+ t.setProperty("normalized");
+
+ t.setVersion("1.2beta");
+ t.doExecute();
+ }
+
+
+
+}
diff --git a/eclipse-update/org.lwjgl.build/teststore b/eclipse-update/org.lwjgl.build/teststore
new file mode 100644
index 0000000000000000000000000000000000000000..49c899fed22806582487c3b6301439cb90c1c422
GIT binary patch
literal 1252
zcmezO_TO6u1_mY|W&~rllGNgo)FL2Pr;1-h8A$gVG%C?pcxf~TxWDS+H(0Uo=X>@?-0wox
zTr6T!d|~f&_{bJ!fuC=7?|pYv?wa_G^9gxzLNDfP><>L7wfxhkIa_#3w^mpjEM8;0
z?7l7kN$K!d*&jj|m!0~!;`_k^`IDyn*>cdW_ubDDp#xRNcF(q-{_?nny1DURR)tqD
zUta7Mc56EqArR{lID3IG-|NKHnlEOviM{*6r>AQD=de!iiUyTD$uE76Wd8O}*>g4D
z=2s1e!IoJS3+J7!wey*%(7B2Au14fMKk-MGU3Qf06fs#Q!56iEnVPz?y7K!t6?G9y
zri-C-4(DnJeal~>bLwhvSH|-|!DAb2thsw%9lC55H&x%;ds|vITZ{Xj!1+sWT5iz3
z(*5t_Dfxe==jZsA?!I%JFK&^~LIp9mpV}V|PMxiM($8-bIGR`^^h^yb85o%P44Rm^
z44RluEMR70WMX3RdBekNz|F?4)#h=|f`yrt!63ts+klgeIh2J>m?a7Z9gXc!#e!=u@%ci`B{E9f4h8C?l6;Sh;WqH
zM5Aw|pVw(8Ue|j6Nr_oKz?hg?%UqMd${%}F-
zwb{1!PVZSAW40rFXXTXjyMI}|YWf-O!)?pnlpYuv-nZ*Yr2n%*c7eu*EuLb9$}fC0
z#Duq>=QQd$vFxFZSXFmOO|Qm-#p~p>H!mxln76o|`ErxtT#D+9outqf
zQYHQRl|u2VO=?xUHXr%1)^_Hx&dpODj{JKz@yYH)lZQ_JAC~Me`Y^q2ONm_nt+!E+
zO?>roKQFq@t9?#k$?LA)TQzal7nH=ytj}Pe!z5yS;F?UQZ&iY@iPxXWOnu^3nq7ODL_&^ivY5&7
oMJ6NFrcm0~MJggv-gZBq^?}VNR^M2AP4vu+rw)e4`rLm20KCifH~;_u
literal 0
HcmV?d00001
diff --git a/eclipse-update/org.lwjgl.doc/.project b/eclipse-update/org.lwjgl.doc/.project
new file mode 100644
index 00000000..7a8a4ccb
--- /dev/null
+++ b/eclipse-update/org.lwjgl.doc/.project
@@ -0,0 +1,22 @@
+
+
+ org.lwjgl.doc
+
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+
+
diff --git a/eclipse-update/org.lwjgl.doc/META-INF/MANIFEST.MF b/eclipse-update/org.lwjgl.doc/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..19ff43ff
--- /dev/null
+++ b/eclipse-update/org.lwjgl.doc/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: LWJGL Documentation
+Bundle-SymbolicName: org.lwjgl.doc; singleton:=true
+Bundle-Version: 2
+Bundle-Vendor: Lightweight Java Game Library Project
diff --git a/eclipse-update/org.lwjgl.doc/about.html b/eclipse-update/org.lwjgl.doc/about.html
new file mode 100644
index 00000000..d204f100
--- /dev/null
+++ b/eclipse-update/org.lwjgl.doc/about.html
@@ -0,0 +1,55 @@
+
+
+
+About
+
+
+
+
+About This Content
+The Lightweight Java Game Library (LWJGL) is a solution aimed
+directly at professional and amateur Java programmers alike to enable commercial quality games to be written in Java.
+LWJGL provides developers access to high performance crossplatform
+libraries such as OpenGL (Open Graphics Library) and OpenAL (Open Audio Library)
+allowing for state of the art 3D games and 3D sound. Additionally LWJGL
+provides access to controllers such as Gamepads, Steering wheel and
+Joysticks. All in a simple and straight forward API.
+LWJGL is not meant to make writing games particularly easy; it is
+primarily an enabling technology which allows developers to get at
+resources that are simply otherwise unavailable or poorly implemented on
+the existing Java
+platform. We anticipate that the LWJGL will, through evolution and
+extension, become the foundation for more complete game libraries and
+"game engines" as they have popularly become known, and hide some of the
+new evils we have had to expose in the APIs.
+LWJGL is available under a BSD
+license, which means it's open source and freely available at no charge.
+Please visit us on the Freenode IRC Network: #LWJGL. Do idle
+if there is no one to answer any of your questions, we are on different
+timezones.
+
+
+
+Plug-Ins
+The following plug-ins are provided:
+
+- org.lwjgl
+ - Platform independent jars and native libraries for Windows, Linux and Mac OS X
+- org.lwjgl.doc
+ - Documentation (JavaDoc)
+- org.lwjgl.source
+ - Source files
+- org.lwjgl.tools
+ - Developer tools
+- org.lwjgl.info
+ - LWJGL test and info view
+
+
+
+
+
+
diff --git a/eclipse-update/org.lwjgl.doc/build.properties b/eclipse-update/org.lwjgl.doc/build.properties
new file mode 100644
index 00000000..3c05d072
--- /dev/null
+++ b/eclipse-update/org.lwjgl.doc/build.properties
@@ -0,0 +1,4 @@
+bin.includes = plugin.xml,\
+ META-INF/,\
+ html/,\
+ *.xml
diff --git a/eclipse-update/org.lwjgl.doc/html/fig/addLib_1.png b/eclipse-update/org.lwjgl.doc/html/fig/addLib_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..4dd43a7ce6754ebaa1d74d4489d38454e2ab154f
GIT binary patch
literal 86369
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 |