[vlc-commits] [Git][videolan/vlc][3.0.x] 18 commits: contrib: live555: remove always true test

Steve Lhomme (@robUx4) gitlab at videolan.org
Thu Jul 9 09:39:04 UTC 2026



Steve Lhomme pushed to branch 3.0.x at VideoLAN / VLC


Commits:
f48c2fef by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: remove always true test

LEGACY_NDK is not defined anyway in the VLC tree nor in the libvlcjni build scripts.

- - - - -
705146d4 by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: move patch

To match the order in VLC 4 and ease backports.

- - - - -
8128c01b by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: FormatMessageA is always available

And no need to redefine snprintf for one call.

(cherry picked from commit 2ca0611aef1cd69eca3dce37ac18ad64581e4cae) (rebased)
rebased:
- VLC 3 already has the DISABLE_LOOPBACK_IP_ADDRESS_CHECK patch (14192fe30953858b2ffde9ab6a3f93909fe93647)

Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
46258bf4 by Alexandre Janniaux at 2026-07-09T08:08:23+00:00
contrib: live555: use correct AR on iOS and macOS

(cherry picked from commit 90a3b827484452aa0766e0f496e259c5838f5f43)
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
93bffe68 by Johannes Kauffmann at 2026-07-09T08:08:23+00:00
contrib: live555: update to 2022.07.14

Lots of patches have been either fully or partially implemented, and
have thus been dropped or reworked.

For macOS, the "macosx" config file is no more; only "macosx-bigsur",
"macosx-catalina", and "macosx-no-openssl". "macosx-bigsur" has been
chosen as the config, and all the sed commands have been fixed to
account for multiple macosx* files.

The library now uses ifaddrs.h unless NO_GETIFADDRS is defined. For
Windows, ifaddrs.h doesn't exist and thus is always needed. For Android,
it is available since API level 24.

The library also uses OpenSSL unless NO_OPENSSL is defined. This is
added to LIVE_EXTRA_CFLAGS, and the pkg-config file.

(cherry picked from commit 78998cab182bbdbd1915deeead1ad4bc945b514e) (edited)
edited:
- VLC 3 already had the -DNO_OPENSSL=1 (daf06b51c8d2573ad5d6ae81bb3aa8b2014e43a2)

Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
c2e185b0 by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: always apply android patches

They are checking for __ANDROID__ so can be used in all sources.

(cherry picked from commit 6a3d4a36140caaec27196b1edea2abe2604e3f83)
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
6bb56a1d by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: rename global SUBDIRS variable

(cherry picked from commit b4450a5907fbda7372e65c96ce5c73e5eb1845fa)
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
c688ba38 by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: use UNPACK_DIR

(cherry picked from commit 077b54eeefa4dd0ee1a9dc2c073cf2ecc245deb7)
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
9010725b by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: pass the compiler/linker via the command line

(cherry picked from commit ad435562b7250478763377aeca64481d7e0b3b37)
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
f962d70e by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: (almost) build like any other target

(cherry picked from commit 8b883b7091e28709080120ae2ff82733ac89101e)
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
2b588aef by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: target catalina (10.15) rather than bigsur (11.x)

Since we are targeting 10.11 for macOS.

(cherry picked from commit 6e36d572d41b126f3335929cfa990ed2d8fac2ba) (rebased)
rebased:
- VLC 3 doesn't have the HAVE_BSD cleanup
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
b4a6737f by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: build with c++2a on older compilers

(cherry picked from commit 866c3f05e0d9158d2f31254e32a32573a063da8a)
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
e1803d76 by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: update to 2026.06.24

MSG_NOSIGNAL is properly used in send() and sendto() calls.

It requires a compiler that can handle -std=c++20.

(cherry picked from commit b895adbf5f206eadb330fec21c1ee0e092415d10)
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>

- - - - -
7620a469 by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: detect other Clang variants as Clang

$(findstring) is case sensitive.

There are at least AppleClang, ARMClang, TIClang (from CMake).

Co-authored-by: Alexandre Janniaux <ajanni at videolabs.io>

- - - - -
33c4d117 by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: use the same time_tm construction as non Windows

Otherwise it fails to build with older compilers.

- - - - -
a0024af8 by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: remove forced C++20

It builds with older compilers as well with the default language version.

- - - - -
b789f994 by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: fix build on older Windows

- - - - -
6e3dfcda by Steve Lhomme at 2026-07-09T08:08:23+00:00
contrib: live555: fix Clang minimum version for C++ 20

Apple clang 11 doesn't have support for -std=c++20

- - - - -


13 changed files:

- − contrib/src/live555/DISABLE_LOOPBACK_IP_ADDRESS_CHECK.patch
- contrib/src/live555/SHA512SUMS
- contrib/src/live555/add-pkgconfig-file.patch
- + contrib/src/live555/android-no-ifaddrs.patch
- contrib/src/live555/expose_server_string.patch
- − contrib/src/live555/in_addr-s_addr-field.patch
- contrib/src/live555/winstore.patch → contrib/src/live555/live555-formatmessage.patch
- − contrib/src/live555/live555-nosignal.patch
- + contrib/src/live555/live555-vista-inet.patch
- − contrib/src/live555/mingw-static-libs.patch
- − contrib/src/live555/no-null-reference.patch
- contrib/src/live555/rules.mak
- contrib/src/main.mak


Changes:

=====================================
contrib/src/live555/DISABLE_LOOPBACK_IP_ADDRESS_CHECK.patch deleted
=====================================
@@ -1,19 +0,0 @@
---- live.orig/groupsock/GroupsockHelper.cpp	2016-11-28 22:42:18.000000000 +0100
-+++ live/groupsock/GroupsockHelper.cpp	2021-02-09 10:27:15.669908139 +0100
-@@ -616,7 +616,7 @@
-     // that other nodes will think our address is the same as we do.)
-     do {
-       loopbackWorks = 0; // until we learn otherwise
--
-+#ifndef DISABLE_LOOPBACK_IP_ADDRESS_CHECK
-       testAddr.s_addr = our_inet_addr("228.67.43.91"); // arbitrary
-       Port testPort(15947); // ditto
- 
-@@ -653,6 +653,7 @@
- 
-       // We use this packet's source address, if it's good:
-       loopbackWorks = !badAddressForUs(fromAddr.sin_addr.s_addr);
-+#endif
-     } while (0);
- 
-     if (sock >= 0) {


=====================================
contrib/src/live555/SHA512SUMS
=====================================
@@ -1 +1 @@
-319639acef6474b2eec0bdfa3416ca3c88a60f57d9d22911eee018fc494978fde93a241556bc0ea309f0b6a35e0242bd44a8f4de83a845f80d9ca5f94254ade6  live.2016.11.28.tar.gz
+31b325f406c651e9008367c90937a1dc555588f76a0aaa820edb62ccfed3bb9f46d42fae4fe62f8812c7f25d0a3eeb13a8267b84130dfee7a25ab74f5d94c57a  live.2026.06.24.tar.gz


=====================================
contrib/src/live555/add-pkgconfig-file.patch
=====================================
@@ -28,7 +28,7 @@ diff --git a/Makefile.tail b/Makefile.tail
 +Name: live555
 +Description: multimedia RTSP streaming library
 +Version: @VERSION@
-+Cflags: -I${includedir}/liveMedia -I${includedir}/groupsock -I${includedir}/BasicUsageEnvironment -I${includedir}/UsageEnvironment
++Cflags: -I${includedir}/liveMedia -I${includedir}/groupsock -I${includedir}/BasicUsageEnvironment -I${includedir}/UsageEnvironment -DNO_OPENSSL=1
 +Libs: -L${libdir} -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment
 --- live.2016.07.19/Makefile.head.orig	2017-01-19 18:47:50.376062631 +0100
 +++ live.2016.07.19/Makefile.head	2017-01-19 18:48:09.940063212 +0100


=====================================
contrib/src/live555/android-no-ifaddrs.patch
=====================================
@@ -0,0 +1,13 @@
+diff -ur live.orig/groupsock/GroupsockHelper.cpp live/groupsock/GroupsockHelper.cpp
+--- live.orig/groupsock/GroupsockHelper.cpp	2022-07-20 18:02:26.691125894 +0000
++++ live/groupsock/GroupsockHelper.cpp	2022-07-20 22:23:47.755304434 +0000
+@@ -42,6 +42,9 @@
+ #include <signal.h>
+ #define USE_SIGNALS 1
+ #endif
++#if (defined(__ANDROID__) && __ANDROID_API__ < 24)
++#define NO_GETIFADDRS
++#endif
+ #ifndef NO_GETIFADDRS
+ #include <ifaddrs.h>
+ #include <net/if.h>


=====================================
contrib/src/live555/expose_server_string.patch
=====================================
@@ -1,7 +1,7 @@
 diff -Naur live555/liveMedia/include/RTSPClient.hh live555.modified/liveMedia/include/RTSPClient.hh
---- live555/liveMedia/include/RTSPClient.hh	2017-11-30 19:34:25.210638324 +0100
-+++ live555.modified/liveMedia/include/RTSPClient.hh	2017-11-30 19:32:06.322693792 +0100
-@@ -36,6 +36,8 @@
+--- live555/liveMedia/include/RTSPClient.hh	2022-06-16 11:14:03.000000000 +0000
++++ live555.modified/liveMedia/include/RTSPClient.hh	2022-07-16 11:36:23.642103174 +0000
+@@ -39,6 +39,8 @@
  #endif
  #endif
  
@@ -10,7 +10,7 @@ diff -Naur live555/liveMedia/include/RTSPClient.hh live555.modified/liveMedia/in
  class RTSPClient: public Medium {
  public:
    static RTSPClient* createNew(UsageEnvironment& env, char const* rtspURL,
-@@ -186,6 +188,7 @@
+@@ -194,6 +196,7 @@
    unsigned sessionTimeoutParameter() const { return fSessionTimeoutParameter; }
  
    char const* url() const { return fBaseURL; }
@@ -18,7 +18,7 @@ diff -Naur live555/liveMedia/include/RTSPClient.hh live555.modified/liveMedia/in
  
    static unsigned responseBufferSize;
  
-@@ -238,6 +241,7 @@
+@@ -246,6 +249,7 @@
  
    void reset();
    void setBaseURL(char const* url);
@@ -26,7 +26,7 @@ diff -Naur live555/liveMedia/include/RTSPClient.hh live555.modified/liveMedia/in
    int grabSocket(); // allows a subclass to reuse our input socket, so that it won't get closed when we're deleted
    virtual unsigned sendRequest(RequestRecord* request);
    virtual Boolean setRequestFields(RequestRecord* request,
-@@ -334,6 +338,7 @@
+@@ -347,6 +351,7 @@
    unsigned fUserAgentHeaderStrLen;
    int fInputSocketNum, fOutputSocketNum;
    char* fBaseURL;
@@ -35,26 +35,26 @@ diff -Naur live555/liveMedia/include/RTSPClient.hh live555.modified/liveMedia/in
    char* fLastSessionId;
    unsigned fSessionTimeoutParameter; // optionally set in response "Session:" headers
 diff -Naur live555/liveMedia/RTSPClient.cpp live555.modified/liveMedia/RTSPClient.cpp
---- live555/liveMedia/RTSPClient.cpp	2017-11-30 19:34:25.210638324 +0100
-+++ live555.modified/liveMedia/RTSPClient.cpp	2017-11-30 19:28:18.691423659 +0100
-@@ -366,7 +366,7 @@
-     fAllowBasicAuthentication(True), fServerAddress(0),
-     fTunnelOverHTTPPortNum(tunnelOverHTTPPortNum),
+--- live555/liveMedia/RTSPClient.cpp	2022-06-16 11:14:03.000000000 +0000
++++ live555.modified/liveMedia/RTSPClient.cpp	2022-07-16 11:43:31.446232524 +0000
+@@ -397,7 +397,7 @@
+     desiredMaxIncomingPacketSize(0), fVerbosityLevel(verbosityLevel), fCSeq(1),
+     fAllowBasicAuthentication(True), fTunnelOverHTTPPortNum(tunnelOverHTTPPortNum),
      fUserAgentHeaderStr(NULL), fUserAgentHeaderStrLen(0),
 -    fInputSocketNum(-1), fOutputSocketNum(-1), fBaseURL(NULL), fTCPStreamIdCount(0),
 +    fInputSocketNum(-1), fOutputSocketNum(-1), fBaseURL(NULL), fserverString(NULL), fTCPStreamIdCount(0),
-     fLastSessionId(NULL), fSessionTimeoutParameter(0), fSessionCookieCounter(0), fHTTPTunnelingConnectionIsPending(False) {
-   setBaseURL(rtspURL);
- 
-@@ -416,6 +416,7 @@
-   fServerAddress = 0;
+     fLastSessionId(NULL), fSessionTimeoutParameter(0), fRequireStr(NULL),
+     fSessionCookieCounter(0), fHTTPTunnelingConnectionIsPending(False),
+     fTLS(*this), fPOSTSocketTLS(*this) {
+@@ -451,6 +451,7 @@
+   fRequestsAwaitingResponse.reset();
  
    setBaseURL(NULL);
 +  setServerString(NULL);
  
    fCurrentAuthenticator.reset();
  
-@@ -426,6 +427,10 @@
+@@ -461,6 +462,10 @@
    delete[] fBaseURL; fBaseURL = strDup(url);
  }
  
@@ -64,8 +64,8 @@ diff -Naur live555/liveMedia/RTSPClient.cpp live555.modified/liveMedia/RTSPClien
 +
  int RTSPClient::grabSocket() {
    int inputSocket = fInputSocketNum;
-   fInputSocketNum = -1;
-@@ -1655,6 +1660,7 @@
+   RTPInterface::clearServerRequestAlternativeByteHandler(envir(), fInputSocketNum); // in case we were receiving RTP-over-TCP
+@@ -1770,6 +1775,7 @@
      char const* rtpInfoParamsStr = NULL;
      char const* wwwAuthenticateParamsStr = NULL;
      char const* publicParamsStr = NULL;
@@ -73,12 +73,12 @@ diff -Naur live555/liveMedia/RTSPClient.cpp live555.modified/liveMedia/RTSPClien
      char* bodyStart = NULL;
      unsigned numBodyBytes = 0;
      responseSuccess = False;
-@@ -1725,6 +1731,8 @@
- 	} else if (checkForHeader(lineStart, "Transport:", 10, transportParamsStr)) {
- 	} else if (checkForHeader(lineStart, "Scale:", 6, scaleParamsStr)) {
- 	} else if (checkForHeader(lineStart, "Speed:", 6, speedParamsStr)) {
-+    } else if (checkForHeader(lineStart, "Server:", 7, serverStr)) {
-+        setServerString(serverStr);
- 	} else if (checkForHeader(lineStart, "Range:", 6, rangeParamsStr)) {
- 	} else if (checkForHeader(lineStart, "RTP-Info:", 9, rtpInfoParamsStr)) {
- 	} else if (checkForHeader(lineStart, "WWW-Authenticate:", 17, headerParamsStr)) {
+@@ -1847,6 +1853,8 @@
+ // (see http://live555.com/liveMedia/faq.html#mailing-list-address for details),
+ 				  )) {
+ // to check whether your proposed modification is appropriate/correct,
++	} else if (checkForHeader(lineStart, "Server:", 7, serverStr)) {
++	  setServerString(serverStr);
+ 	} else if (checkForHeader(lineStart, "Range:",
+ // and, if so, whether instead it could be included in
+ 				  6,


=====================================
contrib/src/live555/in_addr-s_addr-field.patch deleted
=====================================
@@ -1,42 +0,0 @@
-diff --git a/groupsock/GroupsockHelper.cpp b/groupsock/GroupsockHelper.cpp
-index 0ba2aa5..c675275 100644
---- a/groupsock/GroupsockHelper.cpp
-+++ b/groupsock/GroupsockHelper.cpp
-@@ -515,15 +515,9 @@ Boolean socketJoinGroupSSM(UsageEnvironment& env, int socket,
-   if (!IsMulticastAddress(groupAddress)) return True; // ignore this case
- 
-   struct ip_mreq_source imr;
--#ifdef __ANDROID__
--    imr.imr_multiaddr = groupAddress;
--    imr.imr_sourceaddr = sourceFilterAddr;
--    imr.imr_interface = ReceivingInterfaceAddr;
--#else
--    imr.imr_multiaddr.s_addr = groupAddress;
--    imr.imr_sourceaddr.s_addr = sourceFilterAddr;
--    imr.imr_interface.s_addr = ReceivingInterfaceAddr;
--#endif
-+  imr.imr_multiaddr.s_addr = groupAddress;
-+  imr.imr_sourceaddr.s_addr = sourceFilterAddr;
-+  imr.imr_interface.s_addr = ReceivingInterfaceAddr;
-   if (setsockopt(socket, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP,
- 		 (const char*)&imr, sizeof (struct ip_mreq_source)) < 0) {
-     socketErr(env, "setsockopt(IP_ADD_SOURCE_MEMBERSHIP) error: ");
-@@ -541,15 +535,9 @@ Boolean socketLeaveGroupSSM(UsageEnvironment& /*env*/, int socket,
-   if (!IsMulticastAddress(groupAddress)) return True; // ignore this case
- 
-   struct ip_mreq_source imr;
--#ifdef __ANDROID__
--    imr.imr_multiaddr = groupAddress;
--    imr.imr_sourceaddr = sourceFilterAddr;
--    imr.imr_interface = ReceivingInterfaceAddr;
--#else
--    imr.imr_multiaddr.s_addr = groupAddress;
--    imr.imr_sourceaddr.s_addr = sourceFilterAddr;
--    imr.imr_interface.s_addr = ReceivingInterfaceAddr;
--#endif
-+  imr.imr_multiaddr.s_addr = groupAddress;
-+  imr.imr_sourceaddr.s_addr = sourceFilterAddr;
-+  imr.imr_interface.s_addr = ReceivingInterfaceAddr;
-   if (setsockopt(socket, IPPROTO_IP, IP_DROP_SOURCE_MEMBERSHIP,
- 		 (const char*)&imr, sizeof (struct ip_mreq_source)) < 0) {
-     return False;


=====================================
contrib/src/live555/winstore.patch → contrib/src/live555/live555-formatmessage.patch
=====================================
@@ -1,30 +1,31 @@
---- a/liveMedia/include/InputFile.hh      2015-06-24 16:32:45.000000000 +0200
-+++ b/liveMedia/include/InputFile.hh   2015-08-04 10:12:13.791494000 +0200
-@@ -50,6 +50,7 @@
-
- void CloseInputFile(FILE* fid);
-
-+#undef GetFileSize
- u_int64_t GetFileSize(char const* fileName, FILE* fid);
-     // 0 means zero-length, unbounded, or unknown
-
-
---- a/BasicUsageEnvironment/BasicUsageEnvironment0.cpp    2015-06-24 16:32:45.000000000 +0200
-+++ b/BasicUsageEnvironment/BasicUsageEnvironment0.cpp 2015-08-04 10:22:41.067003200 +0200
-@@ -68,6 +68,7 @@
-
+--- live555/BasicUsageEnvironment/BasicUsageEnvironment0.cpp.unicode	2019-03-19 10:00:21.845187700 +0100
++++ live555/BasicUsageEnvironment/BasicUsageEnvironment0.cpp	2019-03-19 09:59:40.204996800 +0100
+@@ -19,9 +19,6 @@ along with this library; if not, write t
+ 
+ #include "BasicUsageEnvironment0.hh"
+ #include <stdio.h>
+-#if defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_WCE)
+-#define snprintf _snprintf
+-#endif
+ 
+ 
+ ////////// BasicUsageEnvironment //////////
+@@ -68,7 +65,6 @@ void BasicUsageEnvironment0::setResultEr
+ 
    if (err == 0) err = getErrno();
  #if defined(__WIN32__) || defined(_WIN32) || defined(_WIN32_WCE)
-+#ifndef _UNICODE
+-#ifndef _UNICODE
    char errMsg[RESULT_MSG_BUFFER_MAX] = "\0";
    if (0 != FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, errMsg, sizeof(errMsg)/sizeof(errMsg[0]), NULL)) {
      // Remove all trailing '\r', '\n' and '.'
-@@ -77,6 +78,7 @@
+@@ -76,9 +72,8 @@ void BasicUsageEnvironment0::setResultEr
+       *p = '\0';
+     }
    } else
-     snprintf(errMsg, sizeof(errMsg)/sizeof(errMsg[0]), "error %d", err);
+-    snprintf(errMsg, sizeof(errMsg)/sizeof(errMsg[0]), "error %d", err);
++    _snprintf(errMsg, sizeof(errMsg)/sizeof(errMsg[0]), "error %d", err);
    appendToResultMsg(errMsg);
-+#endif
+-#endif
  #else
    appendToResultMsg(strerror(err));
  #endif
-


=====================================
contrib/src/live555/live555-nosignal.patch deleted
=====================================
@@ -1,139 +0,0 @@
-Copyright (C) 2015 Rémi Denis-Courmont
-
-Licensed under the terms of the GNU LGPL version 2.1 or later.
-
-diff -ru live555.orig/liveMedia/RTPInterface.cpp live555/liveMedia/RTPInterface.cpp
---- live555.orig/liveMedia/RTPInterface.cpp	2015-05-21 20:34:45.855307019 +0300
-+++ live555/liveMedia/RTPInterface.cpp	2015-05-21 20:38:10.383305167 +0300
-@@ -23,6 +23,9 @@
- #include "RTPInterface.hh"
- #include <GroupsockHelper.hh>
- #include <stdio.h>
-+#ifndef MSG_NOSIGNAL
-+# define MSG_NOSIGNAL 0
-+#endif
- 
- ////////// Helper Functions - Definition //////////
- 
-@@ -339,7 +339,7 @@
- #endif
- 
- Boolean RTPInterface::sendDataOverTCP(int socketNum, u_int8_t const* data, unsigned dataSize, Boolean forceSendToSucceed) {
--  int sendResult = send(socketNum, (char const*)data, dataSize, 0/*flags*/);
-+  int sendResult = send(socketNum, (char const*)data, dataSize, MSG_NOSIGNAL);
-   if (sendResult < (int)dataSize) {
-     // The TCP send() failed - at least partially.
- 
-@@ -353,7 +353,7 @@
-       fprintf(stderr, "sendDataOverTCP: resending %d-byte send (blocking)\n", numBytesRemainingToSend); fflush(stderr);
- #endif
-       makeSocketBlocking(socketNum, RTPINTERFACE_BLOCKING_WRITE_TIMEOUT_MS);
--      sendResult = send(socketNum, (char const*)(&data[numBytesSentSoFar]), numBytesRemainingToSend, 0/*flags*/);
-+      sendResult = send(socketNum, (char const*)(&data[numBytesSentSoFar]), numBytesRemainingToSend, MSG_NOSIGNAL);
-       if ((unsigned)sendResult != numBytesRemainingToSend) {
- 	// The blocking "send()" failed, or timed out.  In either case, we assume that the
- 	// TCP connection has failed (or is 'hanging' indefinitely), and we stop using it
-diff -ru live555.orig/liveMedia/RTSPClient.cpp live555/liveMedia/RTSPClient.cpp
---- live555.orig/liveMedia/RTSPClient.cpp	2015-05-21 20:34:45.855307019 +0300
-+++ live555/liveMedia/RTSPClient.cpp	2015-05-21 20:39:54.327304226 +0300
-@@ -24,6 +24,9 @@
- #include "Locale.hh"
- #include <GroupsockHelper.hh>
- #include "ourMD5.hh"
-+#ifndef MSG_NOSIGNAL
-+# define MSG_NOSIGNAL 0
-+#endif
- 
- ////////// RTSPClient implementation //////////
- 
-@@ -497,7 +500,7 @@
-       delete[] origCmd;
-     }
- 
--    if (send(fOutputSocketNum, cmd, strlen(cmd), 0) < 0) {
-+    if (send(fOutputSocketNum, cmd, strlen(cmd), MSG_NOSIGNAL) < 0) {
-       char const* errFmt = "%s send() failed: ";
-       unsigned const errLength = strlen(errFmt) + strlen(request->commandName());
-       char* err = new char[errLength];
-@@ -939,7 +942,7 @@
-     char tmpBuf[2*RTSP_PARAM_STRING_MAX];
-     snprintf((char*)tmpBuf, sizeof tmpBuf,
-              "RTSP/1.0 405 Method Not Allowed\r\nCSeq: %s\r\n\r\n", cseq);
--    send(fOutputSocketNum, tmpBuf, strlen(tmpBuf), 0);
-+    send(fOutputSocketNum, tmpBuf, strlen(tmpBuf), MSG_NOSIGNAL);
-   }
- }
- 
-diff -ru live555.orig/liveMedia/RTSPServerSupportingHTTPStreaming.cpp live555/liveMedia/RTSPServerSupportingHTTPStreaming.cpp
---- live555.orig/liveMedia/RTSPServerSupportingHTTPStreaming.cpp	2015-05-21 20:34:45.857307019 +0300
-+++ live555/liveMedia/RTSPServerSupportingHTTPStreaming.cpp	2015-05-21 20:39:44.568304314 +0300
-@@ -24,6 +24,9 @@
- #include <sys/stat.h>
- #endif
- #include <time.h>
-+#ifndef MSG_NOSIGNAL
-+# define MSG_NOSIGNAL 0
-+#endif
- 
- RTSPServerSupportingHTTPStreaming*
- RTSPServerSupportingHTTPStreaming::createNew(UsageEnvironment& env, Port rtspPort,
-@@ -140,7 +143,7 @@
- 	       lastModifiedHeader(streamName),
- 	       numTSBytesToStream);
-       // Send the response now, because we're about to add more data (from the source):
--      send(fClientOutputSocket, (char const*)fResponseBuffer, strlen((char*)fResponseBuffer), 0);
-+      send(fClientOutputSocket, (char const*)fResponseBuffer, strlen((char*)fResponseBuffer), MSG_NOSIGNAL);
-       fResponseBuffer[0] = '\0'; // We've already sent the response.  This tells the calling code not to send it again.
-       
-       // Ask the media source to deliver - to the TCP sink - the desired data:
-@@ -234,7 +237,7 @@
- 	   playlistLen);
- 
-   // Send the response header now, because we're about to add more data (the playlist):
--  send(fClientOutputSocket, (char const*)fResponseBuffer, strlen((char*)fResponseBuffer), 0);
-+  send(fClientOutputSocket, (char const*)fResponseBuffer, strlen((char*)fResponseBuffer), MSG_NOSIGNAL);
-   fResponseBuffer[0] = '\0'; // We've already sent the response.  This tells the calling code not to send it again.
- 
-   // Then, send the playlist.  Because it's large, we don't do so using "send()", because that might not send it all at once.
---- live/groupsock/GroupsockHelper.cpp.orig	2015-06-22 00:09:17.000000000 +0200
-+++ live/groupsock/GroupsockHelper.cpp	2015-06-22 10:56:08.673912904 +0200
-@@ -35,6 +35,9 @@
- #define USE_SIGNALS 1
- #endif
- #include <stdio.h>
-+#ifndef MSG_NOSIGNAL
-+# define MSG_NOSIGNAL 0
-+#endif
- 
- // By default, use INADDR_ANY for the sending and receiving interfaces:
- netAddressBits SendingInterfaceAddr = INADDR_ANY;
-@@ -342,7 +345,7 @@
- 		    unsigned char* buffer, unsigned bufferSize) {
-   do {
-     MAKE_SOCKADDR_IN(dest, address.s_addr, portNum);
--    int bytesSent = sendto(socket, (char*)buffer, bufferSize, 0,
-+    int bytesSent = sendto(socket, (char*)buffer, bufferSize, MSG_NOSIGNAL,
- 			   (struct sockaddr*)&dest, sizeof dest);
-     if (bytesSent != (int)bufferSize) {
-       char tmpBuf[100];
---- live/liveMedia/TCPStreamSink.cpp.orig	2015-06-22 00:09:17.000000000 +0200
-+++ live/liveMedia/TCPStreamSink.cpp	2015-06-22 11:01:32.669268927 +0200
-@@ -20,6 +20,9 @@
- 
- #include "TCPStreamSink.hh"
- #include <GroupsockHelper.hh> // for "ignoreSigPipeOnSocket()"
-+#ifndef MSG_NOSIGNAL
-+# define MSG_NOSIGNAL 0
-+#endif
- 
- TCPStreamSink* TCPStreamSink::createNew(UsageEnvironment& env, int socketNum) {
-   return new TCPStreamSink(env, socketNum);
-@@ -51,7 +54,7 @@
-   // First, try writing data to our output socket, if we can:
-   if (fOutputSocketIsWritable && numUnwrittenBytes() > 0) {
-     int numBytesWritten
--      = send(fOutputSocketNum, (const char*)&fBuffer[fUnwrittenBytesStart], numUnwrittenBytes(), 0);
-+      = send(fOutputSocketNum, (const char*)&fBuffer[fUnwrittenBytesStart], numUnwrittenBytes(), MSG_NOSIGNAL);
-     if (numBytesWritten < (int)numUnwrittenBytes()) {
-       // The output socket is no longer writable.  Set a handler to be called when it becomes writable again.
-       fOutputSocketIsWritable = False;


=====================================
contrib/src/live555/live555-vista-inet.patch
=====================================
@@ -0,0 +1,33 @@
+--- live555/groupsock/NetAddress.cpp.orig	2026-06-25 00:45:17.000000000 +0200
++++ live555/groupsock/NetAddress.cpp	2026-07-03 15:07:01.647505300 +0200
+@@ -165,6 +165,30 @@ Boolean operator==(struct sockaddr_stora
+   }
+ }
+ 
++#if defined(_WIN32) && _WIN32_WINNT < 0x0600
++#ifndef AI_ADDRCONFIG
++# define AI_ADDRCONFIG   0x0400
++#endif
++static inline int inet_pton(int af, const char *src, u_int8_t *b)
++{
++  if (af != AF_INET) {
++    return 0;
++  }
++  return sscanf (src, "%hhu.%hhu.%hhu.%hhu",
++                 b + 0, b + 1, b + 2, b + 3) == 4;
++}
++
++static inline void inet_ntop(int af, const void *src, char *dst, int len)
++{
++  if (af != AF_INET) {
++    return;
++  }
++  const unsigned char *b = static_cast<const unsigned char *>(src);
++  _snprintf(dst, len, "%hhu.%hhu.%hhu.%hhu",
++            b[0], b[1], b[2], b[3]);
++}
++#endif
++
+ 
+ ////////// NetAddressList //////////
+ 


=====================================
contrib/src/live555/mingw-static-libs.patch deleted
=====================================
@@ -1,14 +0,0 @@
-diff -urN live555-orig/config.mingw live555/config.mingw
---- live555-orig/config.mingw	2018-02-26 11:28:41.446443807 +0200
-+++ live555/config.mingw	2018-02-26 11:29:02.453948892 +0200
-@@ -9,8 +9,8 @@
- LINK =                 $(CXX) -o 
- LINK_OPTS =            -L.
- CONSOLE_LINK_OPTS =    $(LINK_OPTS)
--LIBRARY_LINK =         $(LD) -o 
--LIBRARY_LINK_OPTS =    $(LINK_OPTS) -r -Bstatic
-+LIBRARY_LINK =         $(AR) cr 
-+LIBRARY_LINK_OPTS =
- LIB_SUFFIX =                   a
- LIBS_FOR_CONSOLE_APPLICATION = -lws2_32
- LIBS_FOR_GUI_APPLICATION = -lws2_32


=====================================
contrib/src/live555/no-null-reference.patch deleted
=====================================
@@ -1,128 +0,0 @@
---- live555/liveMedia/RTSPClient.cpp.old	2017-11-24 14:34:20.588181348 +0100
-+++ live555/liveMedia/RTSPClient.cpp	2017-11-24 14:56:37.520204839 +0100
-@@ -183,13 +183,13 @@
-   }
- }
- 
--void RTSPClient::setSpeed(MediaSession& session, float speed) { 
-+void RTSPClient::setSpeed(MediaSession* session, float speed) {
-   // Optionally set download speed for session to be used later on PLAY command:
-   // The user should call this function after the MediaSession is instantiated, but before the
-   // first "sendPlayCommand()" is called.
--  if (&session != NULL) {
--    session.speed() = speed;
--    MediaSubsessionIterator iter(session);
-+  if (session != NULL) {
-+    session->speed() = speed;
-+    MediaSubsessionIterator iter(*session);
-     MediaSubsession* subsession;
- 
-     while ((subsession = iter.next()) != NULL) {
-@@ -1215,26 +1215,26 @@
-   return success;
- }
- 
--Boolean RTSPClient::handlePLAYResponse(MediaSession& session, MediaSubsession& subsession,
-+Boolean RTSPClient::handlePLAYResponse(MediaSession* session, MediaSubsession* subsession,
-                                        char const* scaleParamsStr, char const* speedParamsStr,
-                                        char const* rangeParamsStr, char const* rtpInfoParamsStr) {
-   Boolean scaleOK = False, rangeOK = False, speedOK = False;
-   do {
--    if (&session != NULL) {
-+    if (session != NULL) {
-       // The command was on the whole session
--      if (scaleParamsStr != NULL && !parseScaleParam(scaleParamsStr, session.scale())) break;
-+      if (scaleParamsStr != NULL && !parseScaleParam(scaleParamsStr, session->scale())) break;
-       scaleOK = True;
--      if (speedParamsStr != NULL && !parseSpeedParam(speedParamsStr, session.speed())) break;
-+      if (speedParamsStr != NULL && !parseSpeedParam(speedParamsStr, session->speed())) break;
-       speedOK = True;
-       Boolean startTimeIsNow;
-       if (rangeParamsStr != NULL &&
- 	  !parseRangeParam(rangeParamsStr,
--			   session.playStartTime(), session.playEndTime(),
--			   session._absStartTime(), session._absEndTime(),
-+               session->playStartTime(), session->playEndTime(),
-+               session->_absStartTime(), session->_absEndTime(),
- 			   startTimeIsNow)) break;
-       rangeOK = True;
- 
--      MediaSubsessionIterator iter(session);
-+      MediaSubsessionIterator iter(*session);
-       MediaSubsession* subsession;
-       while ((subsession = iter.next()) != NULL) {
- 	u_int16_t seqNum; u_int32_t timestamp;
-@@ -1249,27 +1249,27 @@
-       }
-     } else {
-       // The command was on a subsession
--      if (scaleParamsStr != NULL && !parseScaleParam(scaleParamsStr, subsession.scale())) break;
-+      if (scaleParamsStr != NULL && !parseScaleParam(scaleParamsStr, subsession->scale())) break;
-       scaleOK = True;
--      if (speedParamsStr != NULL && !parseSpeedParam(speedParamsStr, session.speed())) break;
-+      if (speedParamsStr != NULL && !parseSpeedParam(speedParamsStr, subsession->speed())) break;
-       speedOK = True;
-       Boolean startTimeIsNow;
-       if (rangeParamsStr != NULL &&
- 	  !parseRangeParam(rangeParamsStr,
--			   subsession._playStartTime(), subsession._playEndTime(),
--			   subsession._absStartTime(), subsession._absEndTime(),
-+               subsession->_playStartTime(), subsession->_playEndTime(),
-+               subsession->_absStartTime(), subsession->_absEndTime(),
- 			   startTimeIsNow)) break;
-       rangeOK = True;
- 
-       u_int16_t seqNum; u_int32_t timestamp;
--      subsession.rtpInfo.infoIsNew = False;
-+      subsession->rtpInfo.infoIsNew = False;
-       if (parseRTPInfoParams(rtpInfoParamsStr, seqNum, timestamp)) {
--	subsession.rtpInfo.seqNum = seqNum;
--	subsession.rtpInfo.timestamp = timestamp;
--	subsession.rtpInfo.infoIsNew = True;
-+    subsession->rtpInfo.seqNum = seqNum;
-+    subsession->rtpInfo.timestamp = timestamp;
-+    subsession->rtpInfo.infoIsNew = True;
-       }
- 
--      if (subsession.rtpSource() != NULL) subsession.rtpSource()->enableRTCPReports() = True; // start sending RTCP "RR"s now
-+      if (subsession->rtpSource() != NULL) subsession->rtpSource()->enableRTCPReports() = True; // start sending RTCP "RR"s now
-     }
- 
-     return True;
-@@ -1809,12 +1809,12 @@
- 	if (responseCode == 200) {
- 	  // Do special-case response handling for some commands:
- 	  if (strcmp(foundRequest->commandName(), "SETUP") == 0) {
--	    if (!handleSETUPResponse(*foundRequest->subsession(), sessionParamsStr, transportParamsStr, foundRequest->booleanFlags()&0x1)) break;
-+        if (!handleSETUPResponse(*foundRequest->subsession(), sessionParamsStr, transportParamsStr, foundRequest->booleanFlags()&0x1)) break;
- 	  } else if (strcmp(foundRequest->commandName(), "PLAY") == 0) {
--	    if (!handlePLAYResponse(*foundRequest->session(), *foundRequest->subsession(), scaleParamsStr, speedParamsStr, rangeParamsStr, rtpInfoParamsStr)) break;
-+        if (!handlePLAYResponse(foundRequest->session(), foundRequest->subsession(), scaleParamsStr, speedParamsStr, rangeParamsStr, rtpInfoParamsStr)) break;
- 	  } else if (strcmp(foundRequest->commandName(), "TEARDOWN") == 0) {
--	    if (!handleTEARDOWNResponse(*foundRequest->session(), *foundRequest->subsession())) break;
--	  } else if (strcmp(foundRequest->commandName(), "GET_PARAMETER") == 0) {
-+        if (!handleTEARDOWNResponse(*foundRequest->session(), *foundRequest->subsession())) break;
-+      } else if (strcmp(foundRequest->commandName(), "GET_PARAMETER") == 0) {
- 	    if (!handleGET_PARAMETERResponse(foundRequest->contentStr(), bodyStart, responseEnd)) break;
- 	  }
- 	} else if (responseCode == 401 && handleAuthenticationFailure(wwwAuthenticateParamsStr)) {
---- live555/liveMedia/include/RTSPClient.hh.old.h	2017-11-24 14:48:30.544196283 +0100
-+++ live555/liveMedia/include/RTSPClient.hh	2017-11-24 14:56:57.836205196 +0100
-@@ -155,7 +155,7 @@
-       // Our implementation automatically does this just prior to sending each "PLAY" command;
-       // You should not call these functions yourself unless you know what you're doing.
- 
--  void setSpeed(MediaSession& session, float speed = 1.0f);
-+  void setSpeed(MediaSession* session, float speed = 1.0f);
-       // Set (recorded) media download speed to given value to support faster download using 'Speed:'
-       // option on 'PLAY' command.
- 
-@@ -286,7 +286,7 @@
-   Boolean parseRTPInfoParams(char const*& paramStr, u_int16_t& seqNum, u_int32_t& timestamp);
-   Boolean handleSETUPResponse(MediaSubsession& subsession, char const* sessionParamsStr, char const* transportParamsStr,
- 			      Boolean streamUsingTCP);
--  Boolean handlePLAYResponse(MediaSession& session, MediaSubsession& subsession,
-+  Boolean handlePLAYResponse(MediaSession* session, MediaSubsession* subsession,
-                              char const* scaleParamsStr, const char* speedParamsStr,
- 			     char const* rangeParamsStr, char const* rtpInfoParamsStr);
-   Boolean handleTEARDOWNResponse(MediaSession& session, MediaSubsession& subsession);


=====================================
contrib/src/live555/rules.mak
=====================================
@@ -1,9 +1,25 @@
 # live555
 
-LIVE555_VERSION := 2016.11.28
+LIVE555_VERSION := 2026.06.24
 LIVE555_FILE := live.$(LIVE555_VERSION).tar.gz
 LIVEDOTCOM_URL := $(CONTRIB_VIDEOLAN)/live555/$(LIVE555_FILE)
 
+ifdef HAVE_GCC
+# older GCC doesn't support -std=c++20 required for std::atomic_flag
+ifeq ($(call gcc_at_least, 10), true)
+HAVE_LIVE555_CPP20=1
+endif
+else
+ifdef HAVE_CLANG
+# older CLANG doesn't support -std=c++20 required for std::atomic_flag
+ifeq ($(call clang_at_least, 12), true)
+HAVE_LIVE555_CPP20=1
+endif
+else
+HAVE_LIVE555_CPP20=1
+endif
+endif
+
 ifdef BUILD_NETWORK
 ifdef GNUV3
 PKGS += live555
@@ -31,9 +47,10 @@ LIVE_EXTRA_CFLAGS += -DDISABLE_LOOPBACK_IP_ADDRESS_CHECK=1
 endif
 ifdef HAVE_WIN32
 LIVE_TARGET := mingw
+LIVE_EXTRA_CFLAGS += -DNO_GETIFADDRS=1
 endif
 ifdef HAVE_DARWIN_OS
-LIVE_TARGET := macosx
+LIVE_TARGET := macosx-catalina
 else
 ifdef HAVE_BSD
 LIVE_TARGET := freebsd
@@ -47,67 +64,59 @@ LIVE_TARGET := solaris-32bit
 endif
 endif
 
+live555: UNPACK_DIR=live
 live555: $(LIVE555_FILE) .sum-live555
-	rm -Rf live && $(UNPACK)
+	rm -rf $(UNPACK_DIR)
+	$(UNPACK)
 
 	# Change permissions to patch and sed the source
-	chmod -R u+w live
+	chmod -R u+w $(UNPACK_DIR)
 	# Remove hardcoded cc, c++, ar variables
-	cd live && sed -e 's%cc%$(CC)%' -e 's%c++%$(CXX)%' -e 's%LIBRARY_LINK =.*ar%LIBRARY_LINK = $(AR)%' -i.orig config.$(LIVE_TARGET)
-	# Replace libtool -s by ar cr for macOS only
-	cd live && sed -i.orig -e s/"libtool -s -o"/"ar cr"/g config.macosx*
-	# Add Extra LDFLAGS for macOS
-	cd live && sed -i.orig -e 's%$(CXX)%$(CXX)\ $(EXTRA_LDFLAGS)%' config.macosx
-	# Add CXXFLAGS for macOS (force libc++)
-	cd live && sed -i.orig -e 's%^\(CPLUSPLUS_FLAGS.*\)$$%\1 '"$(CXXFLAGS)%" config.macosx
+	sed -e 's%C_COMPILER%#C_COMPILER%' -e 's%CPLUSPLUS_COMPILER%#CPLUSPLUS_COMPILER%' -e 's%LIBRARY_LINK%#LIBRARY_LINK%' -i.orig $(UNPACK_DIR)/config.$(LIVE_TARGET)
+	# Remove hardcoded --std=c+20 on un supported compilers
+ifndef HAVE_LIVE555_CPP20
+	sed -e 's%-std=c++20% -DNO_STD_LIB=1%' -i.orig $(UNPACK_DIR)/config.$(LIVE_TARGET)
+endif
 	# Add the Extra_CFLAGS to all config files
-	cd live && sed -i.orig \
-		-e 's%^\(COMPILE_OPTS.*\)$$%\1 '"$(LIVE_EXTRA_CFLAGS)%" config.*
+	sed -i.orig \
+		-e 's%^\(COMPILE_OPTS.*\)$$%\1 '"$(LIVE_EXTRA_CFLAGS)%" $(UNPACK_DIR)/config.*
 	# We want 64bits offsets and PIC on Linux
-	cd live && sed -e 's%-D_FILE_OFFSET_BITS=64%-D_FILE_OFFSET_BITS=64\ -fPIC\ -DPIC%' -i.orig config.linux
+	sed -e 's%-D_FILE_OFFSET_BITS=64%-D_FILE_OFFSET_BITS=64\ -fPIC\ -DPIC%' -i.orig $(UNPACK_DIR)/config.linux
 	# Disable Locale for Solaris
-	cd live && sed -e 's%-DSOLARIS%-DSOLARIS -DXLOCALE_NOT_USED%' -i.orig config.solaris-*bit
+	sed -e 's%-DSOLARIS%-DSOLARIS -DXLOCALE_NOT_USED%' -i.orig $(UNPACK_DIR)/config.solaris-*bit
 ifdef HAVE_ANDROID
 	# Disable locale on Android too
-	cd live && sed -e 's%-DPIC%-DPIC -DNO_SSTREAM=1 -DLOCALE_NOT_USED -I$(ANDROID_NDK)/platforms/android-$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)/usr/include%' -i.orig config.linux
-endif
-	mv live live.$(LIVE555_VERSION)
-	# Patch for MSG_NOSIGNAL
-	$(APPLY) $(SRC)/live555/live555-nosignal.patch
-	# Don't use FormatMessageA on WinRT
-	$(APPLY) $(SRC)/live555/winstore.patch
-	# Don't rely on undefined behaviors
-	$(APPLY) $(SRC)/live555/no-null-reference.patch
+	sed -e 's%-DPIC%-DPIC -DNO_SSTREAM=1 -DLOCALE_NOT_USED -I$(ANDROID_NDK)/platforms/android-$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)/usr/include%' -i.orig $(UNPACK_DIR)/config.linux
+endif
 	# Add a pkg-config file
 	$(APPLY) $(SRC)/live555/add-pkgconfig-file.patch
 	# Expose Server:
 	$(APPLY) $(SRC)/live555/expose_server_string.patch
-        # Disable Multicast interface lookup option
-	$(APPLY) $(SRC)/live555/DISABLE_LOOPBACK_IP_ADDRESS_CHECK.patch
-ifdef HAVE_ANDROID
-ifneq ($(LEGACY_NDK), 1)
-	# Always access in_addr.s_addr field
-	$(APPLY) $(SRC)/live555/in_addr-s_addr-field.patch
+	# FormatMessageA is available on all Windows versions, even WinRT
+	$(APPLY) $(SRC)/live555/live555-formatmessage.patch
+	# ifaddrs.h is supported since API level 24
+	$(APPLY) $(SRC)/live555/android-no-ifaddrs.patch
 	# Don't use unavailable off64_t functions
 	$(APPLY) $(SRC)/live555/file-offset-bits-64.patch
-endif
-endif
-	# Fix creating static libs on mingw
-	$(APPLY) $(SRC)/live555/mingw-static-libs.patch
-
-	mv live.$(LIVE555_VERSION) $@ && touch $@
+	# add IPv4 inet_pton()/inet_ntop() helper on older Windows
+	$(APPLY) $(SRC)/live555/live555-vista-inet.patch
+	# fix Win32 time_tm constructor to build on older compilers
+	sed -e 's,= tm{},= tm\(\),' -i.orig $(UNPACK_DIR)/liveMedia/RTSPCommon.cpp
+	# disable code built/installed in unused folder
+	sed -e 's,all: $$(,all: #,' -e 's,install: $$,install: #,' -e 's,install ,#install ,' -i.orig $(UNPACK_DIR)/testProgs/Makefile.tail
+	sed -e 's,all: $$(,all: #,' -e 's,install: $$,install: #,' -e 's,install ,#install ,' -i.orig $(UNPACK_DIR)/mediaServer/Makefile.tail
+	sed -e 's,all: $$(,all: #,' -e 's,install: $$,install: #,' -e 's,install ,#install ,' -i.orig $(UNPACK_DIR)/proxyServer/Makefile.tail
+	sed -e 's,all: $$(,all: #,' -e 's,install: $$,install: #,' -e 's,install ,#install ,' -i.orig $(UNPACK_DIR)/hlsProxy/Makefile.tail
+	$(MOVE)
 
-SUBDIRS=groupsock liveMedia UsageEnvironment BasicUsageEnvironment
+LIVE555_ENV := $(HOSTVARS) C_COMPILER=$(CC) CPLUSPLUS_COMPILER=$(CXX) LIBRARY_LINK="$(AR) cr " \
+	PREFIX=$(PREFIX) DESTDIR= LIBDIR=$(PREFIX)/lib
 
+.live555: BUILD_DIR=$<
 .live555: live555
 	$(REQUIRE_GNUV3)
-	cd $< && for subdir in $(SUBDIRS); do \
-		echo "PREFIX = $(PREFIX)" >> $$subdir/Makefile.head && \
-		echo "LIBDIR = $(PREFIX)/lib" >> $$subdir/Makefile.head ; done
-	cd $< && echo "LIBDIR = $(PREFIX)/lib" >> Makefile.head && \
-		echo "PREFIX = $(PREFIX)" >> Makefile.head
 	cd $< && ./genMakefiles $(LIVE_TARGET)
-	cd $< && for subdir in $(SUBDIRS); do $(MAKE) $(HOSTVARS) -C $$subdir; done
-	cd $< && for subdir in $(SUBDIRS); do $(MAKE) $(HOSTVARS) -C $$subdir install; done
-	$(MAKE) -C $< install_shared_libraries
+	+$(MAKEBUILD) $(LIVE555_ENV)
+	+$(MAKEBUILD) $(LIVE555_ENV) install
+	+$(MAKEBUILD) $(LIVE555_ENV) install_shared_libraries
 	touch $@


=====================================
contrib/src/main.mak
=====================================
@@ -180,7 +180,7 @@ clang_major_is = $(shell echo false)
 gcc_at_least = $(shell echo false)
 gcc_at_most  = $(shell echo false)
 gcc_major_is = $(shell echo false)
-ifneq ($(findstring clang, $(shell $(CC) --version)),)
+ifneq ($(findstring clang, $(shell $(CC) --version 2>/dev/null | grep -qi clang && echo "clang")),)
 HAVE_CLANG := 1
 CLANG_VERSION := $(shell $(CC) --version | head -1 | grep -o '[0-9]\+\.' | head -1 | cut -d '.' -f 1)
 clang_at_least = $(shell [ $(CLANG_VERSION) -ge $(1) ] && echo true)



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/a5b4002c4c33ecf0196aa573a6aef096b29d7cde...6e3dfcdadbfecc533b7497b51b015d4fe27880e7

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/a5b4002c4c33ecf0196aa573a6aef096b29d7cde...6e3dfcdadbfecc533b7497b51b015d4fe27880e7
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list