diff --git a/CMakeLists.txt b/CMakeLists.txt
index ba2adb58..74e26556 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -288,6 +288,16 @@ endif()
#--------------------------------------------------------------------
set(GLFW_LIBRARIES ${glfw_LIBRARIES} CACHE STRING "Dependencies of GLFW")
+#--------------------------------------------------------------------
+# Choose library output name
+#--------------------------------------------------------------------
+if (BUILD_SHARED_LIBS AND UNIX)
+ # On Unix-like systems, shared libraries can use the soname system.
+ set(GLFW_LIB_NAME glfw)
+else()
+ set(GLFW_LIB_NAME glfw3)
+endif()
+
#--------------------------------------------------------------------
# Add subdirectories
#--------------------------------------------------------------------
@@ -324,10 +334,10 @@ install(FILES COPYING.txt readme.html
# Create and install pkg-config file on supported platforms
#--------------------------------------------------------------------
if (_GLFW_X11_GLX OR _GLFW_COCOA_NSGL)
- configure_file(${GLFW_SOURCE_DIR}/src/libglfw.pc.in
- ${GLFW_BINARY_DIR}/src/libglfw.pc @ONLY)
+ configure_file(${GLFW_SOURCE_DIR}/src/libglfw3.pc.in
+ ${GLFW_BINARY_DIR}/src/libglfw3.pc @ONLY)
- install(FILES ${GLFW_BINARY_DIR}/src/libglfw.pc
+ install(FILES ${GLFW_BINARY_DIR}/src/libglfw3.pc
DESTINATION lib/pkgconfig)
endif()
diff --git a/readme.html b/readme.html
index f4741530..c23f8feb 100644
--- a/readme.html
+++ b/readme.html
@@ -849,6 +849,9 @@ their skills. Special thanks go out to:
Keith Bauer, for his invaluable help with porting and maintaining GLFW on
Mac OS X, and for his many ideas
+ John Bartholomew, for adding proper version number and soname to the
+ shared library build
+
Lambert Clara, for a bug fix for the modes test
Jarrod Davis, for the Delphi port of GLFW
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 59abe7f6..da1b7bc0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -36,8 +36,14 @@ elseif (_GLFW_X11_EGL)
endif()
add_library(glfw ${glfw_SOURCES} ${glfw_HEADERS})
+set_target_properties(glfw PROPERTIES OUTPUT_NAME "${GLFW_LIB_NAME}")
if (BUILD_SHARED_LIBS)
+ # Include version information in the output
+ set_target_properties(glfw PROPERTIES VERSION ${GLFW_VERSION})
+ if (UNIX)
+ set_target_properties(glfw PROPERTIES SOVERSION ${GLFW_VERSION_MAJOR})
+ endif()
if (_GLFW_WIN32_WGL)
# The GLFW DLL needs a special compile-time macro and import library name
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index a3b73c07..c7486206 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -1170,7 +1170,7 @@ void _glfwPlatformSetCursorPos(_GLFWwindow* window, int x, int y)
{
if (window->mode == GLFW_FULLSCREEN)
{
- CGPoint globalPoint = CGMakePoint(x, y);
+ CGPoint globalPoint = CGPointMake(x, y);
CGDisplayMoveCursorToPoint(CGMainDisplayID(), globalPoint);
}
else
diff --git a/src/libglfw.pc.in b/src/libglfw3.pc.in
similarity index 89%
rename from src/libglfw.pc.in
rename to src/libglfw3.pc.in
index be6275aa..175c902d 100644
--- a/src/libglfw.pc.in
+++ b/src/libglfw3.pc.in
@@ -8,6 +8,6 @@ Description: A portable library for OpenGL, window and input
Version: @GLFW_VERSION_FULL@
URL: http://www.glfw.org/
Requires.private: @GLFW_PKG_DEPS@
-Libs: -L${libdir} -lglfw
+Libs: -L${libdir} -l@GLFW_LIB_NAME@
Libs.private: @GLFW_PKG_LIBS@
Cflags: -I${includedir}
diff --git a/src/x11_window.c b/src/x11_window.c
index 9eca8fd1..7637fa19 100644
--- a/src/x11_window.c
+++ b/src/x11_window.c
@@ -1139,20 +1139,14 @@ void _glfwPlatformRestoreWindow(_GLFWwindow* window)
void _glfwPlatformRefreshWindowParams(void)
{
-#if defined(_GLFW_HAS_XRANDR)
- XRRScreenConfiguration* sc;
-#endif /*_GLFW_HAS_XRANDR*/
-#if defined(_GLFW_HAS_XF86VIDMODE)
- XF86VidModeModeLine modeline;
- int dotclock;
- float pixels_per_second, pixels_per_frame;
-#endif /*_GLFW_HAS_XF86VIDMODE*/
_GLFWwindow* window = _glfwLibrary.currentWindow;
// Retrieve refresh rate if possible
if (_glfwLibrary.X11.RandR.available)
{
#if defined(_GLFW_HAS_XRANDR)
+ XRRScreenConfiguration* sc;
+
sc = XRRGetScreenInfo(_glfwLibrary.X11.display, _glfwLibrary.X11.root);
window->refreshRate = XRRConfigCurrentRate(sc);
XRRFreeScreenConfigInfo(sc);
@@ -1161,6 +1155,10 @@ void _glfwPlatformRefreshWindowParams(void)
else if (_glfwLibrary.X11.VidMode.available)
{
#if defined(_GLFW_HAS_XF86VIDMODE)
+ XF86VidModeModeLine modeline;
+ int dotclock;
+ float pixels_per_second, pixels_per_frame;
+
// Use the XF86VidMode extension to get current video mode
XF86VidModeGetModeLine(_glfwLibrary.X11.display,
_glfwLibrary.X11.screen,