From 90fdea2c82fe4a8a23fc6965d37df7cc235cef13 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Tue, 5 Apr 2022 20:14:30 +0200 Subject: [PATCH] [freeglut] Update to 3.2.2, fix X11 dependencies (#23807) * Update to 3.2.2 * Extend X11 dependencies patch * Update the FindGLUT wrapper * Update versions * Modernize portfile * Set policies * Update versions * Switch to github * Update versions * CI * Replace GLUT_LIBRARIES with GLUT_LINK_LIBRARIES * Update versions --- ports/freeglut/gcc10.patch | 31 --------- ports/freeglut/portfile.cmake | 65 +++++-------------- ...use_targets_to_export_x11_dependency.patch | 23 ------- ports/freeglut/vcpkg-cmake-wrapper.cmake | 35 ++++++++-- ports/freeglut/vcpkg.json | 16 ++++- .../freeglut/windows-static-output-name.patch | 29 +++++++++ ports/freeglut/x11-dependencies-export.patch | 63 ++++++++++++++++++ versions/baseline.json | 4 +- versions/f-/freeglut.json | 5 ++ 9 files changed, 159 insertions(+), 112 deletions(-) delete mode 100644 ports/freeglut/gcc10.patch delete mode 100644 ports/freeglut/use_targets_to_export_x11_dependency.patch create mode 100644 ports/freeglut/windows-static-output-name.patch create mode 100644 ports/freeglut/x11-dependencies-export.patch diff --git a/ports/freeglut/gcc10.patch b/ports/freeglut/gcc10.patch deleted file mode 100644 index dc5193b6ac..0000000000 --- a/ports/freeglut/gcc10.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/src/fg_gl2.h b/src/fg_gl2.h -index ab8ba5c..a1a52da 100644 ---- a/src/fg_gl2.h -+++ b/src/fg_gl2.h -@@ -67,13 +67,19 @@ typedef void (APIENTRY *FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); - typedef void (APIENTRY *FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); - typedef void (APIENTRY *FGH_PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); - --FGH_PFNGLGENBUFFERSPROC fghGenBuffers; --FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers; --FGH_PFNGLBINDBUFFERPROC fghBindBuffer; --FGH_PFNGLBUFFERDATAPROC fghBufferData; --FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray; --FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray; --FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer; -+#if __GNUC__ > 9 -+#define FG_ATTRIBUTE_COMMON __attribute__((__common__)) -+#else -+#define FG_ATTRIBUTE_COMMON -+#endif -+ -+FGH_PFNGLGENBUFFERSPROC FG_ATTRIBUTE_COMMON fghGenBuffers; -+FGH_PFNGLDELETEBUFFERSPROC FG_ATTRIBUTE_COMMON fghDeleteBuffers; -+FGH_PFNGLBINDBUFFERPROC FG_ATTRIBUTE_COMMON fghBindBuffer; -+FGH_PFNGLBUFFERDATAPROC FG_ATTRIBUTE_COMMON fghBufferData; -+FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC FG_ATTRIBUTE_COMMON fghEnableVertexAttribArray; -+FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC FG_ATTRIBUTE_COMMON fghDisableVertexAttribArray; -+FGH_PFNGLVERTEXATTRIBPOINTERPROC FG_ATTRIBUTE_COMMON fghVertexAttribPointer; - - # endif - diff --git a/ports/freeglut/portfile.cmake b/ports/freeglut/portfile.cmake index b281d12c7e..714a393a6a 100755 --- a/ports/freeglut/portfile.cmake +++ b/ports/freeglut/portfile.cmake @@ -1,61 +1,39 @@ -vcpkg_from_sourceforge( +vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH - REPO freeglut/freeglut - REF 3.2.1 - FILENAME "freeglut-3.2.1.tar.gz" - SHA512 aced4bbcd36269ce6f4ee1982e0f9e3fffbf18c94f785d3215ac9f4809b992e166c7ada496ed6174e13d77c0f7ef3ca4c57d8a282e96cbbe6ff086339ade3b08 + REPO FreeGLUTProject/freeglut + REF v3.2.2 + SHA512 caaed8af95c2d0ecbc785229e26433978a0f606ae2b9f0b3cd794bb5bb70a1cc54d21f941a1a03e20c7e0fa3eba9d54a21d6e23e44f243899c0fdf146066cf29 + HEAD_REF master PATCHES - use_targets_to_export_x11_dependency.patch + x11-dependencies-export.patch macOS_Xquartz.patch - gcc10.patch fix-debug-macro.patch no_x64_enforcement.patch + windows-static-output-name.patch ) if(NOT VCPKG_TARGET_IS_WINDOWS) message("Freeglut currently requires the following libraries from the system package manager:\n opengl\n glu\n libx11\n xrandr\n xi\n xxf86vm\n\nThese can be installed on Ubuntu systems via apt-get install libxi-dev libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev libxrandr-dev libxxf86vm-dev\nOn macOS Xquartz is required.") endif() -if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) - set(FREEGLUT_STATIC OFF) - set(FREEGLUT_DYNAMIC ON) -else() - set(FREEGLUT_STATIC ON) - set(FREEGLUT_DYNAMIC OFF) -endif() +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" FREEGLUT_STATIC) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" FREEGLUT_DYNAMIC) -# Patch header -file(READ ${SOURCE_PATH}/include/GL/freeglut_std.h FREEGLUT_STDH) -string(REGEX REPLACE "\"freeglut_static.lib\"" - "\"freeglut.lib\"" FREEGLUT_STDH "${FREEGLUT_STDH}") -string(REGEX REPLACE "\"freeglut_staticd.lib\"" - "\"freeglutd.lib\"" FREEGLUT_STDH "${FREEGLUT_STDH}") -file(WRITE ${SOURCE_PATH}/include/GL/freeglut_std.h "${FREEGLUT_STDH}") - -vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH} - PREFER_NINJA +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" OPTIONS -DFREEGLUT_BUILD_STATIC_LIBS=${FREEGLUT_STATIC} -DFREEGLUT_BUILD_SHARED_LIBS=${FREEGLUT_DYNAMIC} -DFREEGLUT_BUILD_DEMOS=OFF -DINSTALL_PDB=OFF # Installing pdbs failed on debug static. So, disable it and let vcpkg_copy_pdbs() do it ) - -vcpkg_install_cmake() -vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/FreeGLUT) +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/FreeGLUT) +vcpkg_fixup_pkgconfig() # Rename static lib (otherwise it's incompatible with FindGLUT.cmake) if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") - if(NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL release) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/freeglut_static.lib ${CURRENT_PACKAGES_DIR}/lib/freeglut.lib) - endif() - if(NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL debug) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/freeglut_staticd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/freeglutd.lib) - endif() - endif() - vcpkg_replace_string( "${CURRENT_PACKAGES_DIR}/include/GL/freeglut_std.h" "ifdef FREEGLUT_STATIC" @@ -66,14 +44,7 @@ endif() # Clean file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) -# Handle copyright -file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/glut") -vcpkg_copy_pdbs() -file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) - -if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") - file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/glut) -endif() - -vcpkg_fixup_pkgconfig() +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/freeglut/use_targets_to_export_x11_dependency.patch b/ports/freeglut/use_targets_to_export_x11_dependency.patch deleted file mode 100644 index 2f9e6b1bf2..0000000000 --- a/ports/freeglut/use_targets_to_export_x11_dependency.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 6f403af..4ced28a 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 - ) -@@ -312,8 +312,7 @@ ENDIF(CMAKE_COMPILER_IS_GNUCC) - 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) - IF(X11_Xrandr_FOUND) - SET(HAVE_X11_EXTENSIONS_XRANDR_H TRUE) - LIST(APPEND LIBS ${X11_Xrandr_LIB}) diff --git a/ports/freeglut/vcpkg-cmake-wrapper.cmake b/ports/freeglut/vcpkg-cmake-wrapper.cmake index 5d57ad4902..c8cfa25162 100644 --- a/ports/freeglut/vcpkg-cmake-wrapper.cmake +++ b/ports/freeglut/vcpkg-cmake-wrapper.cmake @@ -1,10 +1,33 @@ _find_package(${ARGS}) -if(GLUT_FOUND) - find_library(XRANDR_LIBRARY NAMES xrandr Xrandr) - if(XRANDR_LIBRARY) - list(APPEND GLUT_LIBRARIES ${XRANDR_LIBRARY}) - if(TARGET GLUT::GLUT) - set_property(TARGET GLUT::GLUT APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${XRANDR_LIBRARY}) +if(GLUT_FOUND AND UNIX AND NOT ANDROID) + cmake_policy(PUSH) + cmake_policy(SET CMP0012 NEW) + cmake_policy(SET CMP0054 NEW) + cmake_policy(SET CMP0057 NEW) + + if(GLUT_LINK_LIBRARIES) + # Since CMake 3.22, FindGLUT.cmake loads the glut pkg-config module. + # We need `-lglut` resolved to an absolute path. + set(GLUT_LIBRARIES "${GLUT_LINK_LIBRARIES}") + else() + find_package(X11) + # 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_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) + list(APPEND GLUT_LIBRARIES "${X11_Xxf86vm_LIB}") + set_property(TARGET GLUT::GLUT APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${X11_Xxf86vm_LIB}") + endif() + if(X11_Xi_FOUND AND NOT GLUT_Xi_LIBRARY AND NOT "Xi" IN_LIST GLUT_LIBRARIES) + list(APPEND GLUT_LIBRARIES "${X11_Xi_LIB}") + set_property(TARGET GLUT::GLUT APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${X11_Xi_LIB}") endif() endif() + + cmake_policy(POP) endif() diff --git a/ports/freeglut/vcpkg.json b/ports/freeglut/vcpkg.json index dc95985d8a..d1708bd73a 100644 --- a/ports/freeglut/vcpkg.json +++ b/ports/freeglut/vcpkg.json @@ -1,7 +1,17 @@ { "name": "freeglut", - "version-string": "3.2.1", - "port-version": 7, + "version": "3.2.2", "description": "Open source implementation of GLUT with source and binary backwards compatibility.", - "homepage": "https://sourceforge.net/projects/freeglut/" + "homepage": "https://sourceforge.net/projects/freeglut/", + "license": null, + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] } diff --git a/ports/freeglut/windows-static-output-name.patch b/ports/freeglut/windows-static-output-name.patch new file mode 100644 index 0000000000..750d4bee01 --- /dev/null +++ b/ports/freeglut/windows-static-output-name.patch @@ -0,0 +1,29 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index aec0a27..73ccbdb 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -429,7 +429,7 @@ IF(WIN32) + 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}) + ENDIF() + ENDIF() +diff --git a/include/GL/freeglut_std.h b/include/GL/freeglut_std.h +index a5efb3b..6bdcdfb 100644 +--- a/include/GL/freeglut_std.h ++++ b/include/GL/freeglut_std.h +@@ -71,9 +71,9 @@ + /* Link with Win32 static freeglut lib */ + # if FREEGLUT_LIB_PRAGMAS + # if defined(NDEBUG) || !defined(_DEBUG) +-# pragma comment (lib, "freeglut_static.lib") ++# pragma comment (lib, "freeglut.lib") + # else +-# pragma comment (lib, "freeglut_staticd.lib") ++# pragma comment (lib, "freeglutd.lib") + # endif + # endif + diff --git a/ports/freeglut/x11-dependencies-export.patch b/ports/freeglut/x11-dependencies-export.patch new file mode 100644 index 0000000000..814802f333 --- /dev/null +++ b/ports/freeglut/x11-dependencies-export.patch @@ -0,0 +1,63 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6f403af..4ced28a 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") + ENDIF() + ENDIF() + # Client applications need to define FreeGLUT GLES version to diff --git a/versions/baseline.json b/versions/baseline.json index bfaa1e9914..ef3d2afe0f 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2293,8 +2293,8 @@ "port-version": 1 }, "freeglut": { - "baseline": "3.2.1", - "port-version": 7 + "baseline": "3.2.2", + "port-version": 0 }, "freeimage": { "baseline": "3.18.0", diff --git a/versions/f-/freeglut.json b/versions/f-/freeglut.json index c2006f5890..8a79d81a43 100644 --- a/versions/f-/freeglut.json +++ b/versions/f-/freeglut.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "f4eceb7b1ee13b64d859833d2dce4152233c99bc", + "version": "3.2.2", + "port-version": 0 + }, { "git-tree": "bf1c06d0a07b6bc80a63c3825a4d136f5307a2f4", "version-string": "3.2.1",