Browse Source
Updates to latest upstream release 0.9.15 and switches the build system to CMake as autotools was removed. Co-authored-by: Johannes Kauffmann <johanneskauffmann@hotmail.com>master
committed by
Felix Paul Kühne
11 changed files with 294 additions and 140 deletions
@ -0,0 +1,170 @@ |
|||
From ed84d209bae973cd29b94f111749b1c003e05601 Mon Sep 17 00:00:00 2001 |
|||
From: Johannes Kauffmann <johanneskauffmann@hotmail.com> |
|||
Date: Sat, 21 Feb 2026 15:17:26 +0100 |
|||
Subject: [PATCH] CMake: use Requires: for .pc generation (don't parse link |
|||
flags) |
|||
|
|||
Instead of trying to translate/parse the INTERFACE link flags from CMake |
|||
to the .pc file, make use of the more native-to-pkg-config "Requires" |
|||
and "Requires.private", so that we can refer to the whole dependent .pc |
|||
pacakge name. |
|||
|
|||
This fixes static linking when the dependencies of static libraries are |
|||
also static, and allows for using pkg-config all the way down. |
|||
|
|||
When sasl and zlib are found, Rfb public headers also include headers |
|||
from these libraries so they are the only ones listed in "Requires". |
|||
The others can be in "Requires.private". |
|||
|
|||
Signed-off-by: Johannes Kauffmann <johanneskauffmann@hotmail.com> |
|||
---
|
|||
CMakeLists.txt | 36 ++++++++---------------- |
|||
src/libvncclient/libvncclient.pc.cmakein | 6 ++-- |
|||
src/libvncserver/libvncserver.pc.cmakein | 5 ++-- |
|||
3 files changed, 15 insertions(+), 32 deletions(-) |
|||
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|||
index d9cbfda7..c86fb6fa 100644
|
|||
--- a/CMakeLists.txt
|
|||
+++ b/CMakeLists.txt
|
|||
@@ -281,6 +281,7 @@ if(SYSTEMD_FOUND)
|
|||
add_definitions(-DLIBVNCSERVER_WITH_SYSTEMD) |
|||
include_directories(${SYSTEMD_INCLUDE_DIRS}) |
|||
set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${SYSTEMD_LIBRARIES}) |
|||
+ list(APPEND LIBVNC_REQUIRES_PRIVATE libsystemd)
|
|||
endif(SYSTEMD_FOUND) |
|||
|
|||
# common crypto used by both libvncserver and libvncclient |
|||
@@ -288,6 +289,7 @@ if(WITH_GCRYPT AND LIBGCRYPT_LIBRARIES)
|
|||
message(STATUS "Building crypto with Libgcrypt") |
|||
set(CRYPTO_LIBRARIES ${LIBGCRYPT_LIBRARIES}) |
|||
set(CRYPTO_SOURCES ${COMMON_DIR}/crypto_libgcrypt.c) |
|||
+ list(APPEND LIBVNC_REQUIRES_PRIVATE libgcrypt)
|
|||
elseif(OPENSSL_FOUND) |
|||
message(STATUS "Building crypto with OpenSSL") |
|||
set(CRYPTO_LIBRARIES ${OPENSSL_LIBRARIES}) |
|||
@@ -378,6 +380,7 @@ if(WITH_SASL AND LIBSASL2_LIBRARIES AND SASL2_INCLUDE_DIR)
|
|||
set(LIBVNCSERVER_HAVE_SASL 1) |
|||
set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${LIBSASL2_LIBRARIES}) |
|||
include_directories(${SASL2_INCLUDE_DIR}) |
|||
+ list(APPEND LIBVNC_REQUIRES sasl)
|
|||
endif(WITH_SASL AND LIBSASL2_LIBRARIES AND SASL2_INCLUDE_DIR) |
|||
|
|||
# TODO: |
|||
@@ -439,6 +442,7 @@ if(GNUTLS_FOUND)
|
|||
${LIBVNCSERVER_DIR}/rfbssl_gnutls.c |
|||
) |
|||
include_directories(${GNUTLS_INCLUDE_DIR}) |
|||
+ list(APPEND LIBVNC_REQUIRES_PRIVATE gnutls)
|
|||
elseif(OPENSSL_FOUND) |
|||
message(STATUS "Building TLS with OpenSSL") |
|||
set(LIBVNCCLIENT_SOURCES |
|||
@@ -450,6 +454,7 @@ elseif(OPENSSL_FOUND)
|
|||
${LIBVNCSERVER_DIR}/rfbssl_openssl.c |
|||
) |
|||
include_directories(${OPENSSL_INCLUDE_DIR}) |
|||
+ list(APPEND LIBVNC_REQUIRES_PRIVATE openssl)
|
|||
else() |
|||
message(STATUS "Building without TLS") |
|||
set(LIBVNCCLIENT_SOURCES |
|||
@@ -472,6 +477,7 @@ endif()
|
|||
if(ZLIB_FOUND) |
|||
add_definitions(-DLIBVNCSERVER_HAVE_LIBZ) |
|||
include_directories(${ZLIB_INCLUDE_DIR}) |
|||
+ list(APPEND LIBVNC_REQUIRES zlib)
|
|||
set(LIBVNCSERVER_SOURCES |
|||
${LIBVNCSERVER_SOURCES} |
|||
${LIBVNCSERVER_DIR}/zlib.c |
|||
@@ -484,6 +490,7 @@ endif(ZLIB_FOUND)
|
|||
if(LZO_FOUND) |
|||
add_definitions(-DLIBVNCSERVER_HAVE_LZO) |
|||
include_directories(${LZO_INCLUDE_DIR}) |
|||
+ list(APPEND LIBVNC_REQUIRES_PRIVATE lzo2)
|
|||
else() |
|||
set(LIBVNCSERVER_SOURCES |
|||
${LIBVNCSERVER_SOURCES} |
|||
@@ -498,6 +505,7 @@ endif()
|
|||
if(JPEG_FOUND) |
|||
add_definitions(-DLIBVNCSERVER_HAVE_LIBJPEG) |
|||
include_directories(${JPEG_INCLUDE_DIR}) |
|||
+ list(APPEND LIBVNC_REQUIRES_PRIVATE libjpeg)
|
|||
if(PNG_FOUND OR ZLIB_FOUND) |
|||
set(TIGHT_C ${LIBVNCSERVER_DIR}/tight.c ${COMMON_DIR}/turbojpeg.c) |
|||
endif(PNG_FOUND OR ZLIB_FOUND) |
|||
@@ -506,6 +514,7 @@ endif(JPEG_FOUND)
|
|||
if(PNG_FOUND) |
|||
add_definitions(-DLIBVNCSERVER_HAVE_LIBPNG) |
|||
include_directories(${PNG_INCLUDE_DIR}) |
|||
+ list(APPEND LIBVNC_REQUIRES_PRIVATE libpng)
|
|||
endif(PNG_FOUND) |
|||
|
|||
set(LIBVNCSERVER_SOURCES |
|||
@@ -768,32 +777,9 @@ endif(LIBVNCSERVER_WITH_WEBSOCKETS)
|
|||
|
|||
endif(WITH_TESTS) |
|||
|
|||
-#
|
|||
-# this gets the libraries needed by TARGET in "-libx -liby ..." form
|
|||
-#
|
|||
-function(get_link_libraries OUT TARGET)
|
|||
- set(RESULT "")
|
|||
- get_target_property(LIBRARIES ${TARGET} INTERFACE_LINK_LIBRARIES)
|
|||
- foreach(LIB ${LIBRARIES})
|
|||
- if("${LIB}" MATCHES ".*NOTFOUND.*")
|
|||
- continue()
|
|||
- endif()
|
|||
- string(REGEX REPLACE "^.*/lib" "" LIB ${LIB}) # remove leading path and "lib" name prefix
|
|||
- string(REGEX REPLACE "-l" "" LIB ${LIB}) # remove leading -l
|
|||
- string(REGEX REPLACE "\\.so$" "" LIB ${LIB}) # remove trailing .so
|
|||
- list(APPEND RESULT "-l${LIB}")
|
|||
- endforeach()
|
|||
- list(REMOVE_DUPLICATES RESULT)
|
|||
- string(CONCAT RESULT ${RESULT}) # back to string
|
|||
- if(RESULT)
|
|||
- string(REPLACE "-l" " -l" RESULT ${RESULT}) # re-add separators
|
|||
- endif(RESULT)
|
|||
- set(${OUT} ${RESULT} PARENT_SCOPE)
|
|||
-endfunction()
|
|||
-
|
|||
-get_link_libraries(PRIVATE_LIBS vncserver)
|
|||
+string(REPLACE ";" " " LIBVNC_REQUIRES "${LIBVNC_REQUIRES}")
|
|||
+string(REPLACE ";" " " LIBVNC_REQUIRES_PRIVATE "${LIBVNC_REQUIRES_PRIVATE}")
|
|||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/libvncserver/libvncserver.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libvncserver.pc @ONLY) |
|||
-get_link_libraries(PRIVATE_LIBS vncclient)
|
|||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/libvncclient/libvncclient.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libvncclient.pc @ONLY) |
|||
|
|||
if(LIBVNCSERVER_INSTALL) |
|||
diff --git a/src/libvncclient/libvncclient.pc.cmakein b/src/libvncclient/libvncclient.pc.cmakein
|
|||
index ceeda39d..3f121d71 100644
|
|||
--- a/src/libvncclient/libvncclient.pc.cmakein
|
|||
+++ b/src/libvncclient/libvncclient.pc.cmakein
|
|||
@@ -6,9 +6,7 @@ includedir=@CMAKE_INSTALL_PREFIX@/include
|
|||
Name: LibVNCClient |
|||
Description: A library for easy implementation of a VNC client. |
|||
Version: @LibVNCServer_VERSION@ |
|||
-Requires:
|
|||
-Requires.private:
|
|||
+Requires: @LIBVNC_REQUIRES@
|
|||
+Requires.private: @LIBVNC_REQUIRES_PRIVATE@
|
|||
Libs: -L${libdir} -lvncclient |
|||
-Libs.private: @PRIVATE_LIBS@
|
|||
Cflags: -I${includedir} |
|||
-
|
|||
diff --git a/src/libvncserver/libvncserver.pc.cmakein b/src/libvncserver/libvncserver.pc.cmakein
|
|||
index 33ec6685..b491240f 100644
|
|||
--- a/src/libvncserver/libvncserver.pc.cmakein
|
|||
+++ b/src/libvncserver/libvncserver.pc.cmakein
|
|||
@@ -6,8 +6,7 @@ includedir=@CMAKE_INSTALL_PREFIX@/include
|
|||
Name: LibVNCServer |
|||
Description: A library for easy implementation of a VNC server. |
|||
Version: @LibVNCServer_VERSION@ |
|||
-Requires:
|
|||
-Requires.private:
|
|||
+Requires: @LIBVNC_REQUIRES@
|
|||
+Requires.private: @LIBVNC_REQUIRES_PRIVATE@
|
|||
Libs: -L${libdir} -lvncserver |
|||
-Libs.private: @PRIVATE_LIBS@
|
|||
Cflags: -I${includedir} |
|||
--
|
|||
2.43.0 |
|||
|
|||
@ -1 +1 @@ |
|||
eb637dfb72dc50fb713a715c9d0cc8824a6871527c2edb497e70c92e2e708021fbd5d8134f2dee6a9e90d1c8fd3fee53c5f5ece790c2804e938011a980ffceae LibVNCServer-0.9.10.tar.gz |
|||
3ad7e14eef3b591574714e320257ac465778e05bd157ddff09e48b990f35890bfa6883ce4ac027fcb08dccd96f721117d56aaee681482f7643cfee9adc59804b LibVNCServer-0.9.15.tar.gz |
|||
|
|||
@ -0,0 +1,91 @@ |
|||
From f1c9d1d63455e18f2c74eb95ed6c2f9003239d83 Mon Sep 17 00:00:00 2001 |
|||
From: Marvin Scholz <epirat07@gmail.com> |
|||
Date: Tue, 5 Sep 2023 03:12:16 +0200 |
|||
Subject: [PATCH] build: add install components for client/server |
|||
|
|||
This allows to install only the client or only |
|||
the server. |
|||
---
|
|||
CMakeLists.txt | 54 ++++++++++++++++++++++++++++++++++++-------------- |
|||
1 file changed, 39 insertions(+), 15 deletions(-) |
|||
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|||
index ab5c34f4..53ab9352 100644
|
|||
--- a/CMakeLists.txt
|
|||
+++ b/CMakeLists.txt
|
|||
@@ -761,25 +761,44 @@ if(LIBVNCSERVER_INSTALL)
|
|||
|
|||
set_property(TARGET vncclient PROPERTY PUBLIC_HEADER ${INSTALL_HEADER_FILES}) |
|||
set_property(TARGET vncserver PROPERTY PUBLIC_HEADER ${INSTALL_HEADER_FILES}) |
|||
- if(WIN32)
|
|||
- INSTALL(TARGETS vncclient vncserver
|
|||
+
|
|||
+ INSTALL(TARGETS vncclient
|
|||
EXPORT LibVNCServerTargets |
|||
- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|||
- LIBRARY DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|||
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|||
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rfb
|
|||
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|||
+ RUNTIME
|
|||
+ DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|||
+ COMPONENT vncclient
|
|||
+ LIBRARY
|
|||
+ DESTINATION "$<IF:${WIN32},${CMAKE_INSTALL_BINDIR},${CMAKE_INSTALL_LIBDIR}>"
|
|||
+ COMPONENT vncclient
|
|||
+ ARCHIVE
|
|||
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|||
+ COMPONENT vncclient
|
|||
+ PUBLIC_HEADER
|
|||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rfb
|
|||
+ COMPONENT vncclient
|
|||
+ INCLUDES
|
|||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|||
+ COMPONENT vncclient
|
|||
) |
|||
- else()
|
|||
- INSTALL(TARGETS vncclient vncserver
|
|||
+
|
|||
+ INSTALL(TARGETS vncserver
|
|||
EXPORT LibVNCServerTargets |
|||
- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|||
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|||
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|||
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rfb
|
|||
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|||
+ RUNTIME
|
|||
+ DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|||
+ COMPONENT vncserver
|
|||
+ LIBRARY
|
|||
+ DESTINATION "$<IF:${WIN32},${CMAKE_INSTALL_BINDIR},${CMAKE_INSTALL_LIBDIR}>"
|
|||
+ COMPONENT vncserver
|
|||
+ ARCHIVE
|
|||
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|||
+ COMPONENT vncserver
|
|||
+ PUBLIC_HEADER
|
|||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rfb
|
|||
+ COMPONENT vncserver
|
|||
+ INCLUDES
|
|||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|||
+ COMPONENT vncserver
|
|||
) |
|||
- endif()
|
|||
|
|||
# Install cmake configure files |
|||
install(EXPORT LibVNCServerTargets |
|||
@@ -807,7 +826,12 @@ if(LIBVNCSERVER_INSTALL)
|
|||
|
|||
install(FILES |
|||
${CMAKE_CURRENT_BINARY_DIR}/libvncserver.pc |
|||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
|
|||
+ COMPONENT vncserver
|
|||
+ )
|
|||
+ install(FILES
|
|||
${CMAKE_CURRENT_BINARY_DIR}/libvncclient.pc |
|||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig |
|||
+ COMPONENT vncclient
|
|||
) |
|||
endif() |
|||
--
|
|||
2.39.2 |
|||
|
|||
@ -1,24 +0,0 @@ |
|||
From 2dc984dcaa28fd4df90fe011a58fd8fe329bc7a1 Mon Sep 17 00:00:00 2001 |
|||
From: Thomas Anderson <tanderson@caltech.edu> |
|||
Date: Wed, 15 Apr 2015 03:42:32 +0000 |
|||
Subject: [PATCH] configure.ac: Use AC_CHECK_TOOL for cross-compiling support. |
|||
|
|||
When cross-compiling the ar program has the appropriate prefix prepended. |
|||
Respect that here and have autotools autodetect the appropriate tool. |
|||
---
|
|||
configure.ac | 2 +- |
|||
1 file changed, 1 insertion(+), 1 deletion(-) |
|||
|
|||
diff --git a/configure.ac b/configure.ac
|
|||
index bcf51283..3069eedd 100644
|
|||
--- a/configure.ac
|
|||
+++ b/configure.ac
|
|||
@@ -24,7 +24,7 @@ test "x$GCC" = "xyes" && CFLAGS="$CFLAGS -Wall"
|
|||
AC_PROG_MAKE_SET |
|||
AC_LIBTOOL_WIN32_DLL |
|||
AC_PROG_LIBTOOL |
|||
-AC_PATH_PROG([AR], [ar], [/usr/bin/ar],
|
|||
+AC_CHECK_TOOL([AR], [ar], [/usr/bin/ar],
|
|||
[$PATH:/usr/ccs/bin]) |
|||
|
|||
# Options |
|||
@ -1,42 +0,0 @@ |
|||
--- vncserver/libvncclient/tls_gnutls.c 2014-10-21 17:57:11.000000000 +0200
|
|||
+++ vncserver.new/libvncclient/tls_gnutls.c 2016-03-20 20:56:31.769384909 +0100
|
|||
@@ -67,17 +67,17 @@
|
|||
* libvncclient are linked to different versions of msvcrt.dll. |
|||
*/ |
|||
#ifdef WIN32 |
|||
-static void WSAtoTLSErrno()
|
|||
+static void WSAtoTLSErrno(rfbClient *client)
|
|||
{ |
|||
switch(WSAGetLastError()) { |
|||
case WSAEWOULDBLOCK: |
|||
- gnutls_transport_set_global_errno(EAGAIN);
|
|||
+ gnutls_transport_set_errno(client->tlsSession, EAGAIN);
|
|||
break; |
|||
case WSAEINTR: |
|||
- gnutls_transport_set_global_errno(EINTR);
|
|||
+ gnutls_transport_set_errno(client->tlsSession, EINTR);
|
|||
break; |
|||
default: |
|||
- gnutls_transport_set_global_errno(EIO);
|
|||
+ gnutls_transport_set_errno(client->tlsSession, EIO);
|
|||
break; |
|||
} |
|||
} |
|||
@@ -96,7 +96,7 @@
|
|||
if (ret < 0) |
|||
{ |
|||
#ifdef WIN32 |
|||
- WSAtoTLSErrno();
|
|||
+ WSAtoTLSErrno(client);
|
|||
#endif |
|||
if (errno == EINTR) continue; |
|||
return -1; |
|||
@@ -118,7 +118,7 @@
|
|||
if (ret < 0) |
|||
{ |
|||
#ifdef WIN32 |
|||
- WSAtoTLSErrno();
|
|||
+ WSAtoTLSErrno(client);
|
|||
#endif |
|||
if (errno == EINTR) continue; |
|||
return -1; |
|||
@ -1,12 +0,0 @@ |
|||
--- vncserver/libvncclient/rfbproto.c 2012-05-04 16:19:00.000000000 +0200
|
|||
+++ vncserver/libvncclient/rfbproto.c.new 2013-07-11 14:51:35.951976814 +0200
|
|||
@@ -50,6 +50,9 @@
|
|||
#ifdef _RPCNDR_H /* This Windows header typedefs 'boolean', jpeglib has to know */ |
|||
#define HAVE_BOOLEAN |
|||
#endif |
|||
+#ifdef WIN32
|
|||
+#include <basetsd.h>
|
|||
+#endif
|
|||
#include <jpeglib.h> |
|||
#endif |
|||
#include <stdarg.h> |
|||
@ -1,11 +0,0 @@ |
|||
--- vncserver/configure.ac 2014-10-21 17:57:11.000000000 +0200
|
|||
+++ vncserver.new/configure.ac 2016-03-20 19:01:59.541057066 +0100
|
|||
@@ -295,7 +295,7 @@
|
|||
fi |
|||
AC_CHECK_HEADER(png.h, HAVE_PNGLIB_H="true") |
|||
if test "x$HAVE_PNGLIB_H" = "xtrue"; then |
|||
- AC_CHECK_LIB(png, png_create_write_struct, , HAVE_PNGLIB_H="")
|
|||
+ AC_CHECK_LIB(png, png_create_write_struct, , HAVE_PNGLIB_H="", -lz)
|
|||
fi |
|||
if test ! -z "$with_png" -a "x$with_png" != "xyes"; then |
|||
if test "x$HAVE_PNGLIB_H" != "xtrue"; then |
|||
@ -1,12 +0,0 @@ |
|||
--- vncserver/libvncclient/rfbproto.c.orig 2013-07-11 22:15:57.000000000 +0200
|
|||
+++ vncserver/libvncclient/rfbproto.c 2013-07-11 22:25:21.000000000 +0200
|
|||
@@ -52,6 +52,9 @@
|
|||
#endif |
|||
#ifdef WIN32 |
|||
#include <basetsd.h> |
|||
+#else
|
|||
+#undef TRUE
|
|||
+#undef FALSE
|
|||
#endif |
|||
#include <jpeglib.h> |
|||
#endif |
|||
@ -1,11 +0,0 @@ |
|||
--- vncserver.new/libvncclient.pc.in 2014-10-21 17:57:11.000000000 +0200
|
|||
+++ vncserver/libvncclient.pc.in 2016-03-20 20:31:25.809313066 +0100
|
|||
@@ -7,7 +7,7 @@
|
|||
Description: A library for easy implementation of a VNC client. |
|||
Version: @VERSION@ |
|||
Requires: |
|||
-Requires.private: zlib
|
|||
+Requires.private: zlib, gnutls
|
|||
Libs: -L${libdir} -lvncclient |
|||
Libs.private: @LIBS@ @WSOCKLIB@ |
|||
Cflags: -I${includedir} |
|||
Loading…
Reference in new issue