diff --git a/CMakeLists.txt b/CMakeLists.txt
index db4774d0..9579aeba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,5 +19,7 @@ add_subdirectory(test)
add_subdirectory(bench)
add_subdirectory(doc)
-
-
+option(GLM_DEVELOPMENT_MODE "GLM development" OFF)
+if(NOT GLM_DEVELOPMENT_MODE)
+ message(FATAL_ERROR "GLM is a header only library, no need to build it")
+endif()
diff --git a/doc/src/about.xsl b/doc/src/about.xsl
index 6ca8854c..9684dc0d 100644
--- a/doc/src/about.xsl
+++ b/doc/src/about.xsl
@@ -12,6 +12,19 @@
+
+
diff --git a/doc/src/code.xsl b/doc/src/code.xsl
index f9650409..74b16226 100644
--- a/doc/src/code.xsl
+++ b/doc/src/code.xsl
@@ -12,6 +12,19 @@
+
+
diff --git a/doc/src/data.xml b/doc/src/data.xml
index 7b66dbc4..0f9f2553 100644
--- a/doc/src/data.xml
+++ b/doc/src/data.xml
@@ -1540,7 +1540,7 @@
-
+
This new version of GLM is bringing a lot of improvements and maybe too many considering the development time it has required:
API exposing SIMD implementation but also some new, safe and feature complet swizzling functions and a new setup API.
@@ -1563,17 +1563,17 @@
and float to __m128 ).
This implementation can probably be improve in many ways so don't hesitate to send me some feedbacks.
-
GLM 0.9.1 is not 100% backward compatible with GLM 0.9.0 but mostly advanced usages should be concerned by this compatibility issues.
+
+ UPDATED: SF.net mirrors are available again.
+
-
- GLM 0.9.1.A (zip, 2.7 MB)
- GLM 0.9.1.A (7z, 1.7 MB)
-
-
-
+ GLM 0.9.1.A (zip, 3.0 MB)
+ GLM 0.9.1.A (7z, 2.0 MB)
+ GLM Manual
+ Submit a bug report
diff --git a/doc/src/download.xsl b/doc/src/download.xsl
index 51c4c98b..705e6f52 100644
--- a/doc/src/download.xsl
+++ b/doc/src/download.xsl
@@ -12,6 +12,19 @@
+
+
diff --git a/doc/src/goodies.xsl b/doc/src/goodies.xsl
index 6b27bd40..d21c7a8a 100644
--- a/doc/src/goodies.xsl
+++ b/doc/src/goodies.xsl
@@ -12,6 +12,19 @@
+
+
diff --git a/doc/src/link.xsl b/doc/src/link.xsl
index 082e51a4..a100016f 100644
--- a/doc/src/link.xsl
+++ b/doc/src/link.xsl
@@ -12,6 +12,19 @@
+
+
diff --git a/doc/src/news.xsl b/doc/src/news.xsl
index bc888916..44d895ce 100644
--- a/doc/src/news.xsl
+++ b/doc/src/news.xsl
@@ -12,6 +12,19 @@
+
+
diff --git a/glm/gtc/quaternion.hpp b/glm/gtc/quaternion.hpp
index 6d068a09..0907a935 100644
--- a/glm/gtc/quaternion.hpp
+++ b/glm/gtc/quaternion.hpp
@@ -79,6 +79,11 @@ namespace glm
detail::tquat operator- (
detail::tquat const & q);
+ template
+ detail::tquat operator* (
+ detail::tquat const & q,
+ detail::tquat const & p);
+
template
detail::tvec3 operator* (
detail::tquat const & q,
@@ -145,7 +150,7 @@ namespace glm
//! Returns the cross product of q1 and q2.
//! From GLM_GTC_quaternion extension.
template
- detail::tquat cross(
+ GLM_DEPRECATED detail::tquat cross(
detail::tquat const & q1,
detail::tquat const & q2);
diff --git a/glm/gtc/quaternion.inl b/glm/gtc/quaternion.inl
index d0344d14..a445c182 100644
--- a/glm/gtc/quaternion.inl
+++ b/glm/gtc/quaternion.inl
@@ -156,6 +156,20 @@ namespace detail{
return detail::tquat(-q.w, -q.x, -q.y, -q.z);
}
+ template
+ inline detail::tquat operator*
+ (
+ detail::tquat const & q,
+ detail::tquat const & p
+ )
+ {
+ return detail::tquat(
+ q.w * p.w - q.x * p.x - q.y * p.y - q.z * p.z,
+ q.w * p.x + q.x * p.w + q.y * p.z - q.z * p.y,
+ q.w * p.y + q.y * p.w + q.z * p.x - q.x * p.z,
+ q.w * p.z + q.z * p.w + q.x * p.y - q.y * p.x);
+ }
+
// Transformation
template
inline detail::tvec3 operator*
diff --git a/glm/setup.hpp b/glm/setup.hpp
index bc2578e6..345cf46e 100644
--- a/glm/setup.hpp
+++ b/glm/setup.hpp
@@ -22,9 +22,9 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
// Compiler
-// User defines: GLM_FORCE_COMPILER_UNKNOWNED
+// User defines: GLM_FORCE_COMPILER_UNKNOWN
-#define GLM_COMPILER_UNKNOWNED 0x00000000
+#define GLM_COMPILER_UNKNOWN 0x00000000
// Visual C++ defines
#define GLM_COMPILER_VC 0x01000000
@@ -76,8 +76,8 @@
#define GLM_COMPILER_CODEWARRIOR 0x04000000
// Force generic C++ compiler
-#ifdef GLM_FORCE_COMPILER_UNKNOWNED
-# define GLM_COMPILER GLM_COMPILER_UNKNOWNED
+#ifdef GLM_FORCE_COMPILER_UNKNOWN
+# define GLM_COMPILER GLM_COMPILER_UNKNOWN
// Visual C++
#elif defined(_MSC_VER)
# if _MSC_VER == 900
@@ -157,7 +157,7 @@
# define GLM_COMPILER GLM_COMPILER_CODEWARRIOR
#else
-# define GLM_COMPILER GLM_COMPILER_UNKNOWNED
+# define GLM_COMPILER GLM_COMPILER_UNKNOWN
#endif
#ifndef GLM_COMPILER
@@ -249,7 +249,7 @@
/////////////////
// Platform
-// User defines: GLM_FORCE_PURE
+// User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_AVX
#define GLM_ARCH_PURE 0x0000 //(0x0000)
#define GLM_ARCH_SSE2 0x0001 //(0x0001)
@@ -258,6 +258,12 @@
#if(defined(GLM_FORCE_PURE))
# define GLM_ARCH GLM_ARCH_PURE
+#elif(defined(GLM_FORCE_AVX))
+# define GLM_ARCH GLM_ARCH_AVX
+#elif(defined(GLM_FORCE_SSE3))
+# define GLM_ARCH GLM_ARCH_SSE3
+#elif(defined(GLM_FORCE_SSE2))
+# define GLM_ARCH GLM_ARCH_SSE2
#elif((GLM_COMPILER & GLM_COMPILER_VC) && (defined(_M_IX86) || defined(_M_X64)))
# if(defined(_M_CEE_PURE))
# define GLM_ARCH GLM_ARCH_PURE
@@ -344,7 +350,7 @@
# elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT)
# pragma message("GLM: Multiple vector component names through Visual C++ language extensions")
# else
-# error "GLM_COMPONENT value unknowned"
+# error "GLM_COMPONENT value unknown"
# endif//GLM_MESSAGE_COMPONENT_DISPLAYED
#endif//GLM_MESSAGE