[freeglut] Update to 3.4.0, cleanup (#28575)

* Add x11 dependency

* Update to 3.4.0, cleanup

* Document exported config

* Update versions

* Test (Free)GLUT cmake usage

* FindGLUT debug postfix support needs CMake 3.13

* Revise installed file names

* Fix typo
This commit is contained in:
Kai Pastor 2022-12-29 19:34:27 +01:00 committed by GitHub
parent 39bba54c4d
commit f3a1217662
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 66 additions and 94 deletions

View File

@ -1,21 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6f403af..ce6f9f2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -258,6 +258,16 @@ ENDIF()
IF(FREEGLUT_GLES)
LIST(APPEND PUBLIC_DEFINITIONS -DFREEGLUT_GLES)
LIST(APPEND LIBS GLESv2 GLESv1_CM EGL)
+ELSEIF(APPLE)
+ # on OSX FindOpenGL uses framework version of OpenGL, but we need X11 version
+ FIND_PATH(GLX_INCLUDE_DIR GL/glx.h
+ PATHS /opt/X11/include /usr/X11/include /usr/X11R6/include)
+ FIND_LIBRARY(OPENGL_gl_LIBRARY GL
+ PATHS /opt/X11/lib /usr/X11/lib /usr/X11R6/lib)
+ FIND_LIBRARY(OPENGL_glu_LIBRARY GLU
+ PATHS /opt/X11/lib /usr/X11/lib /usr/X11R6/lib)
+ LIST(APPEND LIBS ${OPENGL_gl_LIBRARY})
+ INCLUDE_DIRECTORIES(${GLX_INCLUDE_DIR})
ELSE()
FIND_PACKAGE(OpenGL REQUIRED)
LIST(APPEND LIBS ${OPENGL_gl_LIBRARY})

View File

@ -1,15 +1,16 @@
vcpkg_minimum_required(VERSION 2022-10-12) # for ${VERSION}
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO FreeGLUTProject/freeglut
REF v3.2.2
SHA512 caaed8af95c2d0ecbc785229e26433978a0f606ae2b9f0b3cd794bb5bb70a1cc54d21f941a1a03e20c7e0fa3eba9d54a21d6e23e44f243899c0fdf146066cf29
REF "v${VERSION}"
SHA512 4bb6d6c086bac7a9c0ec78062dce58987555785abe6375f462ee249f65210a964a28fb10ba7ee8a42d7fafb00eb8d196eb403d65d255f02f88467369c187228b
HEAD_REF master
PATCHES
x11-dependencies-export.patch
macOS_Xquartz.patch
fix-debug-macro.patch
no_x64_enforcement.patch
windows-static-output-name.patch
windows-output-name.patch
)
if(NOT VCPKG_TARGET_IS_WINDOWS)
@ -24,6 +25,7 @@ vcpkg_cmake_configure(
OPTIONS
-DFREEGLUT_BUILD_STATIC_LIBS=${FREEGLUT_STATIC}
-DFREEGLUT_BUILD_SHARED_LIBS=${FREEGLUT_DYNAMIC}
-DFREEGLUT_REPLACE_GLUT=ON
-DFREEGLUT_BUILD_DEMOS=OFF
-DINSTALL_PDB=OFF # Installing pdbs failed on debug static. So, disable it and let vcpkg_copy_pdbs() do it
)
@ -31,8 +33,14 @@ vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/FreeGLUT)
vcpkg_fixup_pkgconfig()
file(COPY_FILE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/glut.pc" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/freeglut.pc")
if(NOT VCPKG_BUILD_TYPE)
if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/glut.pc" " -lfreeglut" " -lfreeglutd")
endif()
file(COPY_FILE "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/glut.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/freeglut.pc")
endif()
# Rename static lib (otherwise it's incompatible with FindGLUT.cmake)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
vcpkg_replace_string(
"${CURRENT_PACKAGES_DIR}/include/GL/freeglut_std.h"
@ -42,7 +50,7 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
endif()
# Clean
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/glut")

View File

@ -1,4 +1,9 @@
The package freeglut is compatible with built-in CMake targets:
freeglut provides CMake targets:
find_package(FreeGLUT CONFIG REQUIRED)
target_link_libraries(main PRIVATE $<IF:$<TARGET_EXISTS:FreeGLUT::freeglut>,FreeGLUT::freeglut,FreeGLUT::freeglut_static>)
freeglut is compatible with built-in CMake targets:
find_package(GLUT REQUIRED)
target_link_libraries(main PRIVATE GLUT::GLUT)

View File

@ -14,12 +14,16 @@ if(GLUT_FOUND AND UNIX AND NOT ANDROID)
# Before CMake 3.14, FindX11.cmake doesn't create imported targets.
# For X11, we simply assume shared linkage of system libs,
# so order and transitive usage requirements don't matter.
if(X11_FOUND AND NOT "X11" IN_LIST GLUT_LIBRARIES)
list(APPEND GLUT_LIBRARIES "${X11_X11_LIB}")
set_property(TARGET GLUT::GLUT APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${X11_X11_LIB}")
endif()
if(X11_Xrandr_FOUND AND NOT "Xrandr" IN_LIST GLUT_LIBRARIES)
list(APPEND GLUT_LIBRARIES "${X11_Xrandr_LIB}")
set_property(TARGET GLUT::GLUT APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${X11_Xrandr_LIB}")
endif()
# X11_xf86vmode_FOUND for CMake < 3.14
if((X11_xf86vm_FOUND OR X11_xf86vmode_FOUND) AND NOT "Xxf86vm" IN_LIST GLUT_LIBRARIES)
if((X11_Xxf86vm_FOUND OR X11_xf86vmode_FOUND) AND NOT "Xxf86vm" IN_LIST GLUT_LIBRARIES)
list(APPEND GLUT_LIBRARIES "${X11_Xxf86vm_LIB}")
set_property(TARGET GLUT::GLUT APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${X11_Xxf86vm_LIB}")
endif()

View File

@ -1,10 +1,11 @@
{
"name": "freeglut",
"version": "3.2.2",
"description": "Open source implementation of GLUT with source and binary backwards compatibility.",
"version": "3.4.0",
"description": "A free OpenGL utility toolkit, the open-sourced alternative to the GLUT library.",
"homepage": "https://sourceforge.net/projects/freeglut/",
"license": null,
"dependencies": [
"opengl",
{
"name": "vcpkg-cmake",
"host": true

View File

@ -1,16 +1,22 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index aec0a27..73ccbdb 100644
index 98d07c9..5b79f06 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -429,7 +429,7 @@ IF(WIN32)
@@ -436,12 +436,12 @@ IF(WIN32)
LIST(APPEND LIBS winmm gdi32)
IF(FREEGLUT_BUILD_SHARED_LIBS)
TARGET_COMPILE_DEFINITIONS(freeglut PRIVATE FREEGLUT_EXPORTS)
- SET_TARGET_PROPERTIES(freeglut PROPERTIES OUTPUT_NAME ${LIBNAME})
+ SET_TARGET_PROPERTIES(freeglut PROPERTIES OUTPUT_NAME freeglut)
ENDIF()
IF(FREEGLUT_BUILD_STATIC_LIBS)
TARGET_COMPILE_DEFINITIONS(freeglut_static PUBLIC FREEGLUT_STATIC)
- IF(FREEGLUT_REPLACE_GLUT)
+ IF(1)
SET_TARGET_PROPERTIES(freeglut_static PROPERTIES OUTPUT_NAME ${LIBNAME})
IF(FREEGLUT_REPLACE_GLUT)
- SET_TARGET_PROPERTIES(freeglut_static PROPERTIES OUTPUT_NAME ${LIBNAME})
+ SET_TARGET_PROPERTIES(freeglut_static PROPERTIES OUTPUT_NAME freeglut)
ENDIF()
ENDIF()
ELSE()
diff --git a/include/GL/freeglut_std.h b/include/GL/freeglut_std.h
index a5efb3b..6bdcdfb 100644
--- a/include/GL/freeglut_std.h

View File

@ -1,63 +1,20 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6f403af..4ced28a 100644
index 5568b63..bec3de5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -72,7 +72,7 @@ SET(FREEGLUT_HEADERS
include/GL/freeglut_ext.h
include/GL/freeglut_std.h
)
-IF(FREEGLUT_REPLACE_GLUT)
+IF(TRUE)
LIST(APPEND FREEGLUT_HEADERS
include/GL/glut.h
)
@@ -319,23 +319,27 @@ IF(CMAKE_COMPILER_IS_GNUCC)
ENDIF()
ENDIF(CMAKE_COMPILER_IS_GNUCC)
+SET(xlibs_private "")
INCLUDE(CheckIncludeFiles)
IF(UNIX AND NOT(ANDROID OR BLACKBERRY OR FREEGLUT_WAYLAND))
FIND_PACKAGE(X11 REQUIRED)
- INCLUDE_DIRECTORIES(${X11_X11_INCLUDE_PATH})
- LIST(APPEND LIBS ${X11_X11_LIB})
+ LIST(APPEND LIBS X11::X11)
+ set(xlibs_private "-lX11")
IF(X11_Xrandr_FOUND)
SET(HAVE_X11_EXTENSIONS_XRANDR_H TRUE)
- LIST(APPEND LIBS ${X11_Xrandr_LIB})
+ LIST(APPEND LIBS X11::Xrandr)
+ STRING(APPEND xlibs_private " -lXrandr")
ENDIF()
- IF(X11_xf86vmode_FOUND)
+ IF(X11_Xxf86vm_FOUND)
SET(HAVE_X11_EXTENSIONS_XF86VMODE_H TRUE)
- LIST(APPEND LIBS ${X11_Xxf86vm_LIB})
+ LIST(APPEND LIBS X11::Xxf86vm)
+ STRING(APPEND xlibs_private " -lXxf86vm")
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})
+ LIST(APPEND LIBS X11::Xi)
+ STRING(APPEND xlibs_private " -lXi")
ELSE()
MESSAGE(FATAL_ERROR "Missing X11's XInput.h (X11/extensions/XInput.h)")
ENDIF()
@@ -586,13 +590,13 @@ ELSEIF(FREEGLUT_GLES)
ELSEIF(FREEGLUT_WAYLAND)
SET(PC_LIBS_PRIVATE "-lwayland-client -lwayland-cursor -lwayland-egl -lGLESv2 -lGLESv1_CM -lEGL -lxkbcommon -lm")
ELSE()
- SET(PC_LIBS_PRIVATE "-lX11 -lXxf86vm -lXrandr -lGLESv2 -lGLESv1_CM -lEGL -lm")
+ SET(PC_LIBS_PRIVATE "${xlibs_private} -lGLESv2 -lGLESv1_CM -lEGL -lm")
ENDIF()
ELSE()
IF(FREEGLUT_WAYLAND)
SET(PC_LIBS_PRIVATE "-lwayland-client -lwayland-cursor -lwayland-egl -lGL -lxkbcommon -lm")
ELSE()
- SET(PC_LIBS_PRIVATE "-lX11 -lXxf86vm -lXrandr -lGL -lm")
+ SET(PC_LIBS_PRIVATE "${xlibs_private} -lGL -lm")
@@ -620,6 +620,15 @@ ELSE()
SET(PC_LIBS_PRIVATE "-lX11 -lXxf86vm -lXrandr -lGL -lm")
ENDIF()
ENDIF()
+if(NOT X11_Xrandr_FOUND)
+ string(REPLACE " -lXrandr" "" PC_LIBS_PRIVATE "${PC_LIBS_PRIVATE}")
+endif()
+if(NOT X11_xf86vmode_FOUND)
+ string(REPLACE " -lXxf86vm" "" PC_LIBS_PRIVATE "${PC_LIBS_PRIVATE}")
+endif()
+if(X11_Xinput_FOUND)
+ string(REPLACE "-lX11 " "-lX11 -lXi " PC_LIBS_PRIVATE "${PC_LIBS_PRIVATE}")
+endif()
# Client applications need to define FreeGLUT GLES version to
# bootstrap headers inclusion in freeglut_std.h:
SET(PC_LIBNAME ${LIBNAME})

View File

@ -70,6 +70,13 @@
"$package": "GIF",
"name": "giflib"
},
{
"$comment": "CMake 3.13 for debug postfix support",
"$package": "GLUT",
"$since": "3.13",
"name": "freeglut",
"platform": "!uwp & !osx"
},
{
"$package": "ICU",
"name": "icu",

View File

@ -2453,7 +2453,7 @@
"port-version": 3
},
"freeglut": {
"baseline": "3.2.2",
"baseline": "3.4.0",
"port-version": 0
},
"freeimage": {

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "51a55df4538f3ecdeeb6d9846afd156ec3255630",
"version": "3.4.0",
"port-version": 0
},
{
"git-tree": "f4eceb7b1ee13b64d859833d2dce4152233c99bc",
"version": "3.2.2",