diff --git a/deps/patches/006_fix_uint_zrtp.patch b/deps/patches/006_fix_uint_zrtp.patch new file mode 100644 index 00000000..3aaa43a5 --- /dev/null +++ b/deps/patches/006_fix_uint_zrtp.patch @@ -0,0 +1,10 @@ +--- deps/ZRTPCPP/zrtp/ZRtp.cpp 2024-08-27 21:00:15.615166000 +0200 ++++ pjsip/third_party/zsrtp/zrtp/zrtp/ZRtp.cpp 2024-08-27 21:09:06.630791500 +0200 +@@ -19,6 +19,10 @@ + */ + #include + ++#ifndef uint ++#define uint unsigned int ++#endif ++ diff --git a/deps/patches/007_video_support_dshow_mingw.patch b/deps/patches/007_video_support_dshow_mingw.patch new file mode 100644 index 00000000..e40ec3b5 --- /dev/null +++ b/deps/patches/007_video_support_dshow_mingw.patch @@ -0,0 +1,480 @@ +diff -ruN pjsip/aconfigure patch/aconfigure +--- pjsip/aconfigure 2024-09-03 11:24:53 ++++ patch/aconfigure 2024-09-03 11:27:36 +@@ -681,6 +681,9 @@ + ac_pjmedia_video_has_ios_opengl + ac_pjmedia_video_has_vtoolbox + ac_pjmedia_video_has_darwin ++ac_dshow_ldflags ++ac_dshow_cflags ++ac_pjmedia_video_dev_has_dshow + ac_android_cflags + ac_pjmedia_video_has_android + ac_pjmedia_video +@@ -6471,10 +6474,12 @@ + + + +-# Disable video on mingw ++# Disable video on mingw by default (but respect --enable-video=yes) + case $target in + *mingw*) ++ if test ! "$enable_video" = "yes"; then + enable_video="no" ++ fi + ;; + esac + +@@ -6545,6 +6550,18 @@ + fi + ac_android_cflags="$ac_android_cflags -DPJMEDIA_VIDEO_DEV_HAS_ANDROID=1" + ;; ++ *mingw*) ++ if test "$enable_video" = "yes"; then ++ ac_pjmedia_video=windows_os ++ ++ ac_pjmedia_video_dev_has_dshow=yes ++ ++ ac_dshow_cflags="-DPJMEDIA_HAS_VIDEO=1 -DPJMEDIA_VIDEO_DEV_HAS_DSHOW=1" ++ ++ ac_dshow_ldflags=" -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " ++ LIBS="$LIBS -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " ++ fi ++ ;; + *darwin*) + ac_pjmedia_video=darwin_os + +@@ -7053,6 +7070,7 @@ + ac_sdl_cflags=`$SDL_CONFIG --cflags` + ac_sdl_cflags="-DPJMEDIA_VIDEO_DEV_HAS_SDL=1 $ac_sdl_cflags" + ac_sdl_ldflags=`$SDL_CONFIG --libs` ++ ac_sdl_ldflags=${ac_sdl_ldflags//-mwindows/} + LIBS="$LIBS $ac_sdl_ldflags" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Unsupported SDL version" >&5 +diff -ruN pjsip/aconfigure.ac patch/aconfigure.ac +--- pjsip/aconfigure.ac 2024-09-03 11:24:53 ++++ patch/aconfigure.ac 2024-09-03 11:27:36 +@@ -763,10 +763,12 @@ + + AC_SUBST(ac_pjmedia_video) + +-# Disable video on mingw ++# Disable video on mingw by default (but respect --enable-video=yes) + case $target in + *mingw*) ++ if test ! "$enable_video" = "yes"; then + enable_video="no" ++ fi + ;; + esac + +@@ -818,6 +820,18 @@ + fi + ac_android_cflags="$ac_android_cflags -DPJMEDIA_VIDEO_DEV_HAS_ANDROID=1" + ;; ++ *mingw*) ++ if test "$enable_video" = "yes"; then ++ ac_pjmedia_video=windows_os ++ AC_SUBST(ac_pjmedia_video_dev_has_dshow) ++ ac_pjmedia_video_dev_has_dshow=yes ++ AC_SUBST(ac_dshow_cflags) ++ ac_dshow_cflags="-DPJMEDIA_HAS_VIDEO=1 -DPJMEDIA_VIDEO_DEV_HAS_DSHOW=1" ++ AC_SUBST(ac_dshow_ldflags) ++ ac_dshow_ldflags=" -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " ++ LIBS="$LIBS -lstdc++ -lquartz -lole32 -loleaut32 -lrpcrt4 -lwinmm -luuid -lmingwex -lstrmiids " ++ fi ++ ;; + *darwin*) + ac_pjmedia_video=darwin_os + AC_SUBST(ac_pjmedia_video_has_darwin) +@@ -1072,6 +1086,7 @@ + ac_sdl_cflags=`$SDL_CONFIG --cflags` + ac_sdl_cflags="-DPJMEDIA_VIDEO_DEV_HAS_SDL=1 $ac_sdl_cflags" + ac_sdl_ldflags=`$SDL_CONFIG --libs` ++ ac_sdl_ldflags=${ac_sdl_ldflags//-mwindows/} + LIBS="$LIBS $ac_sdl_ldflags" + else + AC_MSG_RESULT([Unsupported SDL version]) +diff -ruN pjsip/build.mak.in patch/build.mak.in +--- pjsip/build.mak.in 2024-09-03 11:24:53 ++++ patch/build.mak.in 2024-09-03 11:27:36 +@@ -200,13 +200,22 @@ + AC_PJMEDIA_VIDEO_HAS_IOS_OPENGL = @ac_pjmedia_video_has_ios_opengl@ + DARWIN_CFLAGS = @ac_darwin_cflags@ + ++# mingw ++AC_PJMEDIA_VIDEO_DEV_HAS_DSHOW = @ac_pjmedia_video_dev_has_dshow@ ++ifeq (@ac_pjmedia_video_dev_has_dshow@,yes) ++DSHOW_CFLAGS = @ac_dshow_cflags@ ++DSHOW_LDFLAGS = @ac_dshow_ldflags@ ++APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libbaseclasses-$(LIB_SUFFIX) ++APP_THIRD_PARTY_LIBS += -lbaseclasses-$(TARGET_NAME) ++endif ++ + # Android + ANDROID_CFLAGS = @ac_android_cflags@ + + # PJMEDIA features exclusion +-PJ_VIDEO_CFLAGS += $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ ++PJ_VIDEO_CFLAGS += $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(DSHOW_CFLAGS) $(QT_CFLAGS) \ + $(OPENH264_CFLAGS) $(VPX_CFLAGS) $(DARWIN_CFLAGS) +-PJ_VIDEO_LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ ++PJ_VIDEO_LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) $(DSHOW_LDFLAGS) \ + $(OPENH264_LDFLAGS) $(VPX_LDFLAGS) + + # CFLAGS, LDFLAGS, and LIBS to be used by applications +diff -ruN pjsip/pjmedia/build/os-auto.mak.in patch/pjmedia/build/os-auto.mak.in +--- pjsip/pjmedia/build/os-auto.mak.in 2024-09-03 11:24:53 ++++ patch/pjmedia/build/os-auto.mak.in 2024-09-03 11:27:36 +@@ -18,6 +18,10 @@ + V4L2_CFLAGS = @ac_v4l2_cflags@ + V4L2_LDFLAGS = @ac_v4l2_ldflags@ + ++# Directshow ++DSHOW_CFLAGS = @ac_dshow_cflags@ ++DSHOW_LDFLAGS = @ac_dshow_ldflags@ ++ + # QT + AC_PJMEDIA_VIDEO_HAS_QT = @ac_pjmedia_video_has_qt@ + # QT_CFLAGS = @ac_qt_cflags@ +@@ -39,10 +43,10 @@ + + # PJMEDIA features exclusion + export CFLAGS += @ac_no_small_filter@ @ac_no_large_filter@ @ac_no_speex_aec@ \ +- $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ ++ $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(DSHOW_CFLAGS) $(QT_CFLAGS) \ + $(DARWIN_CFLAGS) $(ANDROID_CFLAGS) \ + $(OPENH264_CFLAGS) $(VPX_CFLAGS) +-export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ ++export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) $(DSHOW_LDFLAGS) \ + $(OPENH264_LDFLAGS) $(VPX_LDFLAGS) + + # Define the desired sound device backend +@@ -287,6 +291,14 @@ + # + ifeq ($(AC_PJMEDIA_VIDEO_HAS_IOS_OPENGL),yes) + export PJMEDIA_VIDEODEV_OBJS += ios_opengl_dev.o ++endif ++ ++# ++# Directshow video device ++# ++ifeq ($(AC_PJMEDIA_VIDEO_DEV_HAS_DSHOW),yes) ++export PJMEDIA_VIDEODEV_OBJS += dshow_dev.o dshowclasses.o ++export CFLAGS += -I$(THIRD_PARTY)/BaseClasses + endif + + # +diff -ruN pjsip/pjmedia/src/pjmedia-videodev/dshow_dev.c patch/pjmedia/src/pjmedia-videodev/dshow_dev.c +--- pjsip/pjmedia/src/pjmedia-videodev/dshow_dev.c 2024-09-03 11:24:53 ++++ patch/pjmedia/src/pjmedia-videodev/dshow_dev.c 2024-09-03 11:20:53 +@@ -38,6 +38,12 @@ + # define DIBSIZE(BI) ((BI).biHeight < 0 ? (-1)*(_DIBSIZE(BI)) : _DIBSIZE(BI)) + #endif + ++#ifdef _MSC_VER ++# pragma warning(pop) ++#else ++#include ++#endif ++ + #define THIS_FILE "dshow_dev.c" + #define DEFAULT_CLOCK_RATE 90000 + #define DEFAULT_WIDTH 640 +diff -ruN pjsip/pjsip/build/Makefile patch/pjsip/build/Makefile +--- pjsip/pjsip/build/Makefile 2020-02-14 10:48:27 ++++ patch/pjsip/build/Makefile 2024-09-03 11:27:49 +@@ -163,7 +163,7 @@ + export PJSUA2_TEST_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ + main.o + export PJSUA2_TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS) +-export PJSUA2_TEST_CXXFLAGS = $(_CXXFLAGS) $(PJSUA2_LIB_CFLAGS) ++export PJSUA2_TEST_CXXFLAGS = $(_CXXFLAGS) $(PJSUA2_LIB_CFLAGS) $(PJ_VIDEO_CFLAGS) + export PJSUA2_TEST_LDFLAGS += $(PJ_LDXXFLAGS) $(PJ_LDXXLIBS) $(LDFLAGS) + ifeq ($(EXCLUDE_APP),0) + export PJSUA2_TEST_EXE := pjsua2-test-$(TARGET_NAME)$(HOST_EXE) +@@ -182,7 +182,7 @@ + tsx_basic_test.o tsx_bench.o tsx_uac_test.o \ + tsx_uas_test.o txdata_test.o uri_test.o \ + inv_offer_answer_test.o +-export TEST_CFLAGS += $(_CFLAGS) ++export TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS) + export TEST_CXXFLAGS += $(_CXXFLAGS) + export TEST_LDFLAGS += $(PJSIP_LDLIB) \ + $(PJSIP_UA_LDLIB) \ +diff -ruN pjsip/pjsip/src/pjsua2-test/main.cpp patch/pjsip/src/pjsua2-test/main.cpp +--- pjsip/pjsip/src/pjsua2-test/main.cpp 2020-02-14 10:48:27 ++++ patch/pjsip/src/pjsua2-test/main.cpp 2024-09-03 11:27:49 +@@ -20,6 +20,7 @@ + + using namespace pj; + ++extern "C" + int main(int argc, char *argv[]) + { + Endpoint ep; +diff -ruN pjsip/pjsip-apps/build/Samples.mak patch/pjsip-apps/build/Samples.mak +--- pjsip/pjsip-apps/build/Samples.mak 2020-02-14 10:48:27 ++++ patch/pjsip-apps/build/Samples.mak 2024-09-03 11:27:49 +@@ -7,8 +7,8 @@ + ############################################################################### + # Gather all flags. + # +-export _CFLAGS := $(PJ_CFLAGS) $(CFLAGS) +-export _CXXFLAGS:= $(PJ_CXXFLAGS) $(CFLAGS) ++export _CFLAGS := $(PJ_CFLAGS) $(CFLAGS) $(PJ_VIDEO_CFLAGS) ++export _CXXFLAGS:= $(PJ_CXXFLAGS) $(CFLAGS) $(PJ_VIDEO_CFLAGS) + export _LDFLAGS := $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) + export _LDXXFLAGS := $(PJ_LDXXFLAGS) $(PJ_LDXXLIBS) $(LDFLAGS) + +diff -ruN pjsip/pjsip-apps/src/samples/pjsua2_demo.cpp patch/pjsip-apps/src/samples/pjsua2_demo.cpp +--- pjsip/pjsip-apps/src/samples/pjsua2_demo.cpp 2020-02-14 10:48:27 ++++ patch/pjsip-apps/src/samples/pjsua2_demo.cpp 2024-09-03 11:27:49 +@@ -410,6 +410,7 @@ + } + + ++extern "C" + int main() + { + int ret = 0; +diff -ruN pjsip/third_party/BaseClasses/amvideo2.h patch/third_party/BaseClasses/amvideo2.h +--- pjsip/third_party/BaseClasses/amvideo2.h 1970-01-01 01:00:00 ++++ patch/third_party/BaseClasses/amvideo2.h 2024-09-03 11:27:49 +@@ -0,0 +1,26 @@ ++/* ++ Some necessary macros are missing from mingw version. They are here. ++ See https://github.com/ofTheo/videoInput/blob/master/videoInputSrcAndDemos/libs/DShow/Include/amvideo.h ++*/ ++//------------------------------------------------------------------------------ ++// File: AMVideo.h ++// ++// Desc: Video related definitions and interfaces for ActiveMovie. ++// ++// Copyright (c) 1992 - 2001, Microsoft Corporation. All rights reserved. ++//------------------------------------------------------------------------------ ++ ++#define TRUECOLOR(pbmi) ((TRUECOLORINFO *)(((LPBYTE)&((pbmi)->bmiHeader)) \ ++ + (pbmi)->bmiHeader.biSize)) ++#define COLORS(pbmi) ((RGBQUAD *)(((LPBYTE)&((pbmi)->bmiHeader)) \ ++ + (pbmi)->bmiHeader.biSize)) ++ ++#define SIZE_MASKS (iMASK_COLORS * sizeof(DWORD)) ++#define SIZE_PREHEADER (FIELD_OFFSET(VIDEOINFOHEADER,bmiHeader)) ++ ++#define WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8) ++#define DIBWIDTHBYTES(bi) (DWORD)WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount) ++#define _DIBSIZE(bi) (DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight) ++#define DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(_DIBSIZE(bi)) : _DIBSIZE(bi)) ++ ++#define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= iPALETTE) +diff -ruN pjsip/third_party/BaseClasses/arithutil.cpp patch/third_party/BaseClasses/arithutil.cpp +--- pjsip/third_party/BaseClasses/arithutil.cpp 2020-02-14 10:48:27 ++++ patch/third_party/BaseClasses/arithutil.cpp 2024-09-03 11:27:49 +@@ -21,7 +21,7 @@ + // Enlarged integer divide - 64-bits / 32-bits > 32-bits + // + +-#ifndef _X86_ ++#if !defined(_X86_) || !defined(_MSC_VER) + + #define LLtoU64(x) (*(unsigned __int64*)(void*)(&(x))) + +diff -ruN pjsip/third_party/BaseClasses/sal2.h patch/third_party/BaseClasses/sal2.h +--- pjsip/third_party/BaseClasses/sal2.h 1970-01-01 01:00:00 ++++ patch/third_party/BaseClasses/sal2.h 2024-09-03 11:27:49 +@@ -0,0 +1,19 @@ ++/* ++ See https://github.com/RobertBeckebans/RBDOOM-3-BFG/blob/master/neo/libs/mingw-hacks/sal.h ++*/ ++/* From PortAudio, which is under MIT license: ++ * https://www.assembla.com/code/portaudio/subversion/nodes/portaudio/trunk/src/hostapi/wasapi/mingw-include/sal.h ++ */ ++#pragma once ++ ++#if __GNUC__ >=3 ++#pragma GCC system_header ++#endif ++ ++#define __in ++#define __out ++#define __deref_in ++#define __deref_inout_opt ++#define __field_ecount_opt(x) ++#define __in_bcount_opt(size) ++ +diff -ruN pjsip/third_party/BaseClasses/streams.h patch/third_party/BaseClasses/streams.h +--- pjsip/third_party/BaseClasses/streams.h 2020-02-14 10:48:27 ++++ patch/third_party/BaseClasses/streams.h 2024-09-03 11:27:49 +@@ -23,6 +23,11 @@ + #else + #define AM_NOVTABLE + #endif ++#else ++ #include ++ #include ++ #define AM_NOVTABLE ++ #pragma GCC diagnostic ignored "-Wwrite-strings" + #endif // MSC_VER + + +@@ -193,6 +198,13 @@ + //#include // External device control interface defines + //#include // audio filter device error event codes + ++#ifndef _MSC_VER ++ ++#define min(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; }) ++#include ++ ++#endif ++ + + #else + #ifdef DEBUG +diff -ruN pjsip/third_party/BaseClasses/wxutil.cpp patch/third_party/BaseClasses/wxutil.cpp +--- pjsip/third_party/BaseClasses/wxutil.cpp 2020-02-14 10:48:27 ++++ patch/third_party/BaseClasses/wxutil.cpp 2024-09-03 11:27:49 +@@ -384,7 +384,7 @@ + { + void * ret = dst; + +-#ifdef _X86_ ++#if defined(_X86_) && defined(_MSC_VER) + if (dst <= src || (char *)dst >= ((char *)src + count)) { + + /* +@@ -432,6 +432,7 @@ + return ret; + } + ++#ifdef _MSC_VER + HRESULT AMSafeMemMoveOffset( + __in_bcount(dst_size) void * dst, + __in size_t dst_size, +@@ -458,6 +459,7 @@ + memmoveInternal( (BYTE *)dst+cb_dst_offset, (BYTE *)src+cb_src_offset, count); + return S_OK; + } ++#endif + + + #ifdef DEBUG +diff -ruN pjsip/third_party/BaseClasses/wxutil.h patch/third_party/BaseClasses/wxutil.h +--- pjsip/third_party/BaseClasses/wxutil.h 2020-02-14 10:48:27 ++++ patch/third_party/BaseClasses/wxutil.h 2024-09-03 11:27:49 +@@ -337,6 +337,7 @@ + } + }; + ++#ifdef _MSC_VER + // Ensures that memory is not read past the length source buffer + // and that memory is not written past the length of the dst buffer + // dst - buffer to copy to +@@ -358,13 +359,14 @@ + __in size_t src_size, + __in DWORD cb_src_offset, + __in size_t count); ++#endif + + extern "C" + void * __stdcall memmoveInternal(void *, const void *, size_t); + + inline void * __cdecl memchrInternal(const void *buf, int chr, size_t cnt) + { +-#ifdef _X86_ ++#if defined(_X86_) && defined(_MSC_VER) + void *pRet = NULL; + + _asm { +diff -ruN pjsip/third_party/build/baseclasses/Makefile patch/third_party/build/baseclasses/Makefile +--- pjsip/third_party/build/baseclasses/Makefile 1970-01-01 01:00:00 ++++ patch/third_party/build/baseclasses/Makefile 2024-09-03 11:27:49 +@@ -0,0 +1,72 @@ ++include ../../../build.mak ++include ../../../build/common.mak ++ ++export LIBDIR := ../../lib ++ ++RULES_MAK := $(PJDIR)/build/rules.mak ++ ++export BASECLASSES_LIB := libbaseclasses-$(TARGET_NAME)$(LIBEXT) ++ ++ifeq ($(PJ_SHARED_LIBRARIES),) ++else ++export BASECLASSES_SONAME := libbaseclasses.$(SHLIB_SUFFIX) ++export BASECLASSES_SHLIB := $(BASECLASSES_SONAME).$(PJ_VERSION_MAJOR) ++endif ++ ++############################################################################### ++# Gather all flags. ++# ++export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ ++ $(CFLAGS) $(CC_INC)../../BaseClasses \ ++ $(CC_INC)../../../pjmedia/include $(CC_INC)../../../pjlib/include ++export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ ++ $(HOST_CXXFLAGS) $(CXXFLAGS) ++export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ ++ $(LDFLAGS) ++ ++export BASECLASSES_SRCDIR = ../../BaseClasses ++export BASECLASSES_OBJS = amfilter.o amvideo.o arithutil.o combase.o ctlutil.o \ ++ mtype.o renbase.o wxdebug.o wxlist.o \ ++ wxutil.o ++ ++export BASECLASSES_CFLAGS = $(_CFLAGS) ++export BASECLASSES_CXXFLAGS = -fpermissive -D__STRSAFE__NO_INLINE=1 -DPJMEDIA_VIDEO_DEV_HAS_DSHOW=1 $(_CFLAGS) ++ ++ ++export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT ++############################################################################### ++# Main entry ++# ++# $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. ++# ++TARGETS := $(BASECLASSES_LIB) $(BASECLASSES_SONAME) ++ ++all: $(TARGETS) ++ ++doc: ++ cd .. && doxygen docs/doxygen.cfg ++ ++dep: depend ++distclean: realclean ++ ++.PHONY: all dep depend clean realclean distclean ++.PHONY: $(TARGETS) ++.PHONY: $(BASECLASSES_LIB) $(BASECLASSES_SONAME) ++ ++libbaseclasses: $(BASECLASSES_LIB) ++$(BASECLASSES_SONAME): $(BASECLASSES_LIB) ++$(BASECLASSES_LIB) $(BASECLASSES_SONAME): ++ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) ++ ++clean print_lib: ++ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $@ ++ ++realclean: ++ $(subst @@,$(subst /,$(HOST_PSEP),.ilbc-$(TARGET_NAME).depend),$(HOST_RMR)) ++ ++ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $@ ++ ++depend: ++ $(MAKE) -f $(RULES_MAK) APP=BASECLASSES app=baseclasses $@ ++ ++ +diff -ruN pjsip/third_party/build/os-auto.mak.in patch/third_party/build/os-auto.mak.in +--- pjsip/third_party/build/os-auto.mak.in 2024-09-03 11:24:53 ++++ patch/third_party/build/os-auto.mak.in 2024-09-03 11:27:49 +@@ -39,6 +39,10 @@ + endif + endif + ++ifneq ($(findstring windows_os,@ac_pjmedia_video@),) ++DIRS += baseclasses ++endif ++ + ifneq (@ac_external_srtp@,0) + # External SRTP + else diff --git a/deps/patches/008_support_mingw_w64.patch b/deps/patches/008_support_mingw_w64.patch new file mode 100644 index 00000000..294a8d5d --- /dev/null +++ b/deps/patches/008_support_mingw_w64.patch @@ -0,0 +1,70 @@ +diff -ruN pjsip/Makefile pjsip-patch/Makefile +--- pjsip/Makefile 2020-02-14 10:48:27.000000000 +0100 ++++ pjsip-patch/Makefile 2024-09-03 10:32:23.926160100 +0200 +@@ -129,10 +129,9 @@ + sed -e "s!@INCLUDEDIR@!$(includedir)!" | \ + sed -e "s!@LIBDIR@!$(libdir)!" | \ + sed -e "s/@PJ_VERSION@/$(PJ_VERSION)/" | \ +- sed -e "s!@PJ_LDLIBS@!!" | \ +- sed -e "s!@PJ_LDXXLIBS@!$(PJ_LDXXLIBS)!" | \ +- sed -e "s!@PJ_INSTALL_CFLAGS@!!" | \ +- sed -e "s!@PJ_INSTALL_CXXFLAGS@!$(PJ_INSTALL_CXXFLAGS)!" > $(DESTDIR)/$(libdir)/pkgconfig/libpjproject.pc ++ sed -e "s!@PJ_INSTALL_LDFLAGS@!$(PJ_INSTALL_LDFLAGS)!" | \ ++ sed -e "s!@PJ_INSTALL_LDFLAGS_PRIVATE@!$(PJ_INSTALL_LDFLAGS_PRIVATE)!" | \ ++ sed -e "s!@PJ_INSTALL_CFLAGS@!$(PJ_INSTALL_CFLAGS)!" > $(DESTDIR)$(libdir)/pkgconfig/libpjproject.pc + + uninstall: + $(RM) $(DESTDIR)$(libdir)/pkgconfig/libpjproject.pc +diff -ruN pjsip/aconfigure pjsip-patch/aconfigure +--- pjsip/aconfigure 2024-09-03 10:10:13.926165600 +0200 ++++ pjsip-patch/aconfigure 2024-09-03 10:32:23.941785600 +0200 +@@ -5156,6 +5156,12 @@ + + $as_echo "#define WIN32_LEAN_AND_MEAN 1" >>confdefs.h + ++ case $target in ++ *_64-w64-mingw* ) ++ $as_echo "#define PJ_WIN64 1" >>confdefs.h ++ ++ ;; ++ esac + ;; + *darwin*) + $as_echo "#define PJ_DARWINOS 1" >>confdefs.h +diff -ruN pjsip/aconfigure.ac pjsip-patch/aconfigure.ac +--- pjsip/aconfigure.ac 2020-02-14 10:48:27.000000000 +0100 ++++ pjsip-patch/aconfigure.ac 2024-09-03 10:32:23.973036300 +0200 +@@ -161,6 +161,11 @@ + AC_DEFINE(PJ_WIN32,1) + AC_DEFINE(PJ_WIN32_WINNT,0x0400) + AC_DEFINE(WIN32_LEAN_AND_MEAN) ++ case $target in ++ *_64-w64-mingw* ) ++ AC_DEFINE(PJ_WIN64,1) ++ ;; ++ esac + ;; + *darwin*) + AC_DEFINE(PJ_DARWINOS,1) +diff -ruN pjsip/pjlib/include/pj/compat/os_auto.h.in pjsip-patch/pjlib/include/pj/compat/os_auto.h.in +--- pjsip/pjlib/include/pj/compat/os_auto.h.in 2020-02-14 10:48:27.000000000 +0100 ++++ pjsip-patch/pjlib/include/pj/compat/os_auto.h.in 2024-09-03 10:32:23.988659900 +0200 +@@ -30,6 +30,7 @@ + #undef PJ_OS_NAME + + /* Legacy macros */ ++#undef PJ_WIN64 + #undef PJ_WIN32 + #undef PJ_WIN32_WINNT + #undef WIN32_LEAN_AND_MEAN +diff -ruN pjsip/pjnath/src/pjnath-test/stun_sock_test.c pjsip-patch/pjnath/src/pjnath-test/stun_sock_test.c +--- pjsip/pjnath/src/pjnath-test/stun_sock_test.c 2020-02-14 10:48:27.000000000 +0100 ++++ pjsip-patch/pjnath/src/pjnath-test/stun_sock_test.c 2024-09-03 10:32:23.988659900 +0200 +@@ -25,7 +25,6 @@ + RESPOND_STUN = 1, + WITH_MAPPED = 2, + WITH_XOR_MAPPED = 4, +- + ECHO = 8 + }; + diff --git a/deps/patches/windows/001_disable_gevent.patch b/deps/patches/windows/001_disable_gevent.patch new file mode 100644 index 00000000..431cf25b --- /dev/null +++ b/deps/patches/windows/001_disable_gevent.patch @@ -0,0 +1,25 @@ +diff --git a/sipsimple/account/xcap/__init__.py b/sipsimple/account/xcap/__init__.py +index a015c13d..3c088694 100644 +--- a/sipsimple/account/xcap/__init__.py ++++ b/sipsimple/account/xcap/__init__.py +@@ -10,7 +10,7 @@ import os + import random + import socket + import weakref +-import gevent ++#import gevent + + from io import StringIO + from collections import OrderedDict +@@ -1844,8 +1844,8 @@ class XCAPManager(object): + NotificationCenter().post_notification('XCAPManagerDidReloadData', sender=self, data=data) + + def _fetch_documents(self, documents): +- jobs = [gevent.spawn(document.fetch) for document in (doc for doc in self.documents if doc.name in documents and doc.supported)] +- gevent.joinall(jobs, timeout=15) ++ # jobs = [gevent.spawn(document.fetch) for document in (doc for doc in self.documents if doc.name in documents and doc.supported)] ++ # gevent.joinall(jobs, timeout=15) + + def _save_journal(self): + try: +