[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