minor cosmetics
[freeglut] / CMakeLists.txt
index b1c2d5c..ee7a4fb 100644 (file)
@@ -24,11 +24,20 @@ set(VERSION_PATCH 0)
 OPTION(BUILD_SHARED_LIBS "Build FreeGLUT shared library." ON)
 OPTION(BUILD_STATIC_LIBS "Build FreeGLUT static library." ON)
 
+# option to also copy .pdb files to install directory when executing
+# INSTALL target
+IF(MSVC)
+    OPTION(INSTALL_PDB "Also install .pdb files" ON)
+ELSE()
+    SET(INSTALL_PDB OFF)
+ENDIF()
+
 # OpenGL ES support
 OPTION(FREEGLUT_GLES1 "Use OpenGL ES 1.x (requires EGL)" OFF)
 OPTION(FREEGLUT_GLES2 "Use OpenGL ES 2.x (requires EGL) (overrides BUILD_GLES1)" OFF)
 
 
+
 SET(FREEGLUT_HEADERS
     include/GL/freeglut.h
     include/GL/freeglut_ext.h
@@ -197,6 +206,10 @@ ENDIF()
 IF(WIN32)
     # hide insecure CRT warnings, common practice
     ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
+    IF(MSVC)
+        SET( CMAKE_DEBUG_POSTFIX "d" )
+    ENDIF(MSVC)
+    
 ENDIF()
 
 IF(CMAKE_COMPILER_IS_GNUCC)
@@ -207,6 +220,7 @@ IF(CMAKE_COMPILER_IS_GNUCC)
   ENDIF()
 ENDIF(CMAKE_COMPILER_IS_GNUCC)
 
+INCLUDE(CheckIncludeFiles)
 IF(UNIX AND NOT ANDROID)
     FIND_PACKAGE(X11 REQUIRED)
     LIST(APPEND LIBS ${X11_LIBRARIES})
@@ -222,6 +236,11 @@ IF(UNIX AND NOT ANDROID)
         ENDIF()
         LIST(APPEND LIBS ${X11_Xxf86vm_LIB})
     ENDIF()
+    IF(X11_Xinput_FOUND)
+        # Needed for multi-touch:
+        CHECK_INCLUDE_FILES("${X11_Xinput_INCLUDE_PATH}/X11/extensions/XInput2.h" HAVE_X11_EXTENSIONS_XINPUT2_H)
+        LIST(APPEND LIBS ${X11_Xinput_LIB})
+    ENDIF()
 ENDIF()
 IF(ANDROID)
     # -landroid for ANativeWindow
@@ -229,7 +248,6 @@ IF(ANDROID)
     LIST(APPEND LIBS android log)
 ENDIF()
 
-INCLUDE(CheckIncludeFiles)
 INCLUDE(CheckFunctionExists)
 INCLUDE(CheckTypeSize)
 CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H)
@@ -241,9 +259,6 @@ CHECK_INCLUDE_FILES(sys/ioctl.h HAVE_SYS_IOCTL_H)
 CHECK_INCLUDE_FILES(fcntl.h    HAVE_FCNTL_H)
 CHECK_INCLUDE_FILES(errno.h    HAVE_ERRNO_H)
 CHECK_INCLUDE_FILES(usbhid.h   HAVE_USBHID_H)
-CHECK_FUNCTION_EXISTS(sinf      HAVE_SINF)
-CHECK_FUNCTION_EXISTS(cosf      HAVE_COSF)
-CHECK_FUNCTION_EXISTS(sqrtf     HAVE_SQRTF)
 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
 CHECK_FUNCTION_EXISTS(vfprintf  HAVE_VFPRINTF)
 CHECK_FUNCTION_EXISTS(_doprnt   HAVE_DOPRNT)
@@ -312,6 +327,11 @@ ELSE()
     #   http://sourceware.org/autobook/autobook/autobook_91.html#SEC91
     #   http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
     #   Current: -version-info 12:0:9 -> 3.9.0
+    #   Note: most platforms now prefer the latter major.minor.revision form
+    #   (e.g. FreeBSD, cf. http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8765),
+    #   or special-cased FreeGLUT long ago (e.g. .so.4 on OpenBSD), so
+    #   the lack of support for current:revision:age in CMake should
+    #   not be a problem.
     # - the output library should be named glut so it'll be linkable with -lglut
     # - the shared library should link to the dependency libraries so that the user
     #   won't have to link them explicitly (they shouldn't have to know that we depend
@@ -345,11 +365,22 @@ IF(BUILD_STATIC_LIBS)
     TARGET_LINK_LIBRARIES(freeglut_static ${LIBS})
 ENDIF()
 
+
 IF(BUILD_SHARED_LIBS)
     INSTALL(TARGETS freeglut DESTINATION lib)
+    IF(INSTALL_PDB)
+        INSTALL(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/freeglut${CMAKE_DEBUG_POSTFIX}.pdb
+            DESTINATION lib
+                       CONFIGURATIONS Debug)
+    ENDIF()
 ENDIF()
 IF(BUILD_STATIC_LIBS)
     INSTALL(TARGETS freeglut_static DESTINATION lib)
+    IF(INSTALL_PDB)
+        INSTALL(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/freeglut_static${CMAKE_DEBUG_POSTFIX}.pdb
+            DESTINATION lib
+                       CONFIGURATIONS Debug)
+    ENDIF()
 ENDIF()
 INSTALL(FILES ${FREEGLUT_HEADERS} DESTINATION include/GL)
 
@@ -369,11 +400,17 @@ MACRO(ADD_DEMO name)
         IF(BUILD_SHARED_LIBS)
             ADD_EXECUTABLE(${name} ${ARGN})
             TARGET_LINK_LIBRARIES(${name} ${DEMO_LIBS} freeglut)
+            IF(WIN32 AND MSVC)
+                SET_TARGET_PROPERTIES(${name} PROPERTIES DEBUG_POSTFIX d)
+            ENDIF()
         ENDIF()
         IF(BUILD_STATIC_LIBS)
             ADD_EXECUTABLE(${name}_static ${ARGN})
             TARGET_LINK_LIBRARIES(${name}_static ${DEMO_LIBS} freeglut_static)
             SET_TARGET_PROPERTIES(${name}_static PROPERTIES COMPILE_FLAGS -DFREEGLUT_STATIC)
+            IF(WIN32 AND MSVC)
+                SET_TARGET_PROPERTIES(${name}_static PROPERTIES DEBUG_POSTFIX d)
+            ENDIF()
         ENDIF()
     ENDIF()
 ENDMACRO()
@@ -384,11 +421,16 @@ ADD_DEMO(Fractals_random progs/demos/Fractals_random/fractals_random.c)
 ADD_DEMO(Lorenz          progs/demos/Lorenz/lorenz.c)
 ADD_DEMO(One             progs/demos/One/one.c)
 ADD_DEMO(Resizer         progs/demos/Resizer/Resizer.cpp)
-ADD_DEMO(shapes          progs/demos/shapes/shapes.c)
+ADD_DEMO(multi-touch     progs/demos/multi-touch/multi-touch.c)
+ADD_DEMO(shapes          progs/demos/shapes/shapes.c
+                         progs/demos/shapes/glmatrix.h
+                         progs/demos/shapes/glmatrix.c)
 ADD_DEMO(smooth_opengl3  progs/demos/smooth_opengl3/smooth_opengl3.c)
-ADD_DEMO(spaceball       progs/demos/spaceball/spaceball.c
-                         progs/demos/spaceball/vmath.c
-                         progs/demos/spaceball/vmath.h)
+IF(UNIX)
+    ADD_DEMO(spaceball       progs/demos/spaceball/spaceball.c
+                             progs/demos/spaceball/vmath.c
+                             progs/demos/spaceball/vmath.h)
+ENDIF()
 ADD_DEMO(subwin          progs/demos/subwin/subwin.c)
 ADD_DEMO(timer           progs/demos/timer/timer.c)