From cd9ac605ec4615569121e0e9b6bc058684bebfe3 Mon Sep 17 00:00:00 2001 From: Boris Pek Date: Fri, 8 Jul 2016 07:57:46 +0300 Subject: [PATCH 1/3] Added FREEGLUT_REPLACE_GLUT configure option for MS Windows. It provides back compatibility with older (autotools based) freeglut versions. Also it simplifies build rules for crossplatform programs: they may be linked with -lglut regardless of the system and library type (shared/static). Patch is originally prepared for MXE project (http://mxe.cc/). --- freeglut/freeglut/CMakeLists.txt | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/freeglut/freeglut/CMakeLists.txt b/freeglut/freeglut/CMakeLists.txt index 7fae09a..4d6e1f2 100644 --- a/freeglut/freeglut/CMakeLists.txt +++ b/freeglut/freeglut/CMakeLists.txt @@ -53,11 +53,16 @@ ENDIF() # OpenGL ES support OPTION(FREEGLUT_GLES "Use OpenGL ES (requires EGL)" OFF) +# option to build either as "glut" (ON) or "freeglut" (OFF) +IF(WIN32) + OPTION(FREEGLUT_REPLACE_GLUT "Be a replacement for GLUT" OFF) +ELSE() + OPTION(FREEGLUT_REPLACE_GLUT "Be a replacement for GLUT" ON) +ENDIF() + IF(NOT WIN32) # Wayland support OPTION(FREEGLUT_WAYLAND "Use Wayland (no X11)" OFF) - # option to build either as "glut" (ON) or "freeglut" (OFF) - OPTION(FREEGLUT_REPLACE_GLUT "Be a replacement for GLUT" ON) ENDIF() @@ -391,12 +396,20 @@ ENDIF() SET(LIBNAME freeglut) IF(WIN32) + IF(FREEGLUT_REPLACE_GLUT) + SET(LIBNAME glut) + ENDIF() + LIST(APPEND LIBS winmm) IF(FREEGLUT_BUILD_SHARED_LIBS) TARGET_COMPILE_DEFINITIONS(freeglut PRIVATE FREEGLUT_EXPORTS) + SET_TARGET_PROPERTIES(freeglut PROPERTIES OUTPUT_NAME ${LIBNAME}) ENDIF() IF(FREEGLUT_BUILD_STATIC_LIBS) TARGET_COMPILE_DEFINITIONS(freeglut_static PUBLIC FREEGLUT_STATIC) + IF(FREEGLUT_REPLACE_GLUT) + SET_TARGET_PROPERTIES(freeglut_static PROPERTIES OUTPUT_NAME ${LIBNAME}) + ENDIF() # need to set machine:x64 for linker, at least for VC10, and # doesn't hurt for older compilers: # http://public.kitware.com/Bug/view.php?id=11240#c22768 @@ -563,11 +576,9 @@ ENDIF() # Client applications need to define FreeGLUT GLES version to # bootstrap headers inclusion in freeglut_std.h: SET(PC_LIBNAME ${LIBNAME}) -SET(PC_FILENAME "freeglut.pc") +SET(PC_FILENAME "${LIBNAME}.pc") IF(FREEGLUT_GLES) SET(PC_CFLAGS "-DFREEGLUT_GLES") - SET(PC_LIBNAME "freeglut-gles") - SET(PC_FILENAME "freeglut-gles.pc") ENDIF() CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/freeglut.pc.in ${CMAKE_BINARY_DIR}/freeglut.pc @ONLY) INSTALL(FILES ${CMAKE_BINARY_DIR}/freeglut.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/ RENAME ${PC_FILENAME} COMPONENT Devel) From bc5471a2f8c9c0c7bcb5b767ee788e2b45ec33e9 Mon Sep 17 00:00:00 2001 From: Boris Pek Date: Fri, 8 Jul 2016 08:01:10 +0300 Subject: [PATCH 2/3] Fixed Cflags variable in pkgconfig file. --- freeglut/freeglut/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freeglut/freeglut/CMakeLists.txt b/freeglut/freeglut/CMakeLists.txt index 4d6e1f2..8569707 100644 --- a/freeglut/freeglut/CMakeLists.txt +++ b/freeglut/freeglut/CMakeLists.txt @@ -580,6 +580,9 @@ SET(PC_FILENAME "${LIBNAME}.pc") IF(FREEGLUT_GLES) SET(PC_CFLAGS "-DFREEGLUT_GLES") ENDIF() +IF(FREEGLUT_BUILD_STATIC_LIBS) + LIST(APPEND PC_CFLAGS -DFREEGLUT_STATIC) +ENDIF() CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/freeglut.pc.in ${CMAKE_BINARY_DIR}/freeglut.pc @ONLY) INSTALL(FILES ${CMAKE_BINARY_DIR}/freeglut.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/ RENAME ${PC_FILENAME} COMPONENT Devel) # TODO: change the library and .pc name when building for GLES, From c1efb69d4e984fe751840f6446317aca8b458705 Mon Sep 17 00:00:00 2001 From: Boris Pek Date: Fri, 8 Jul 2016 08:07:06 +0300 Subject: [PATCH 3/3] Fixed indentation characters in CMakeLists.txt --- freeglut/freeglut/CMakeLists.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/freeglut/freeglut/CMakeLists.txt b/freeglut/freeglut/CMakeLists.txt index 8569707..6ec15b4 100644 --- a/freeglut/freeglut/CMakeLists.txt +++ b/freeglut/freeglut/CMakeLists.txt @@ -428,18 +428,18 @@ ELSE() # 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 - # (unless FREEGLUT_REPLACE_GLUT is false). + # - the output library should be named glut so it'll be linkable with -lglut + # (unless FREEGLUT_REPLACE_GLUT is false). # - 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 # on Xrandr or Xxf86vm) IF(FREEGLUT_GLES) - SET(LIBNAME freeglut-gles) + SET(LIBNAME freeglut-gles) ELSE() - IF(FREEGLUT_REPLACE_GLUT) - SET(LIBNAME glut) - ENDIF() - ENDIF() + IF(FREEGLUT_REPLACE_GLUT) + SET(LIBNAME glut) + ENDIF() + ENDIF() IF(FREEGLUT_BUILD_SHARED_LIBS) SET_TARGET_PROPERTIES(freeglut PROPERTIES VERSION ${SO_MAJOR}.${SO_MINOR}.${SO_REV} SOVERSION ${SO_MAJOR} OUTPUT_NAME ${LIBNAME}) @@ -478,7 +478,7 @@ IF(FREEGLUT_BUILD_SHARED_LIBS) IF(INSTALL_PDB) INSTALL(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug/freeglut${CMAKE_DEBUG_POSTFIX}.pdb DESTINATION bin - CONFIGURATIONS Debug + CONFIGURATIONS Debug COMPONENT Devel) ENDIF() ENDIF()