From 625461bf690ebc60930664113a8602f2e885a34d Mon Sep 17 00:00:00 2001 From: Phenom Date: Thu, 3 Sep 2015 19:35:29 +0200 Subject: [PATCH 01/11] Fix Windows 7 32b Compilation from scratch. Add scripts to build Libs on branch. --- Start_RetroShare-Gui_Debug.bat | 11 ++ build-all-mingw32make.bat | 137 ++++++++++++-- retroshare-gui/src/retroshare-gui.pro | 1 + retroshare-gui/src/util/printpreview.cpp | 32 ---- retroshare-gui/src/util/printpreview.h | 30 +++ win_build_libs/Makefile | 223 +++++++++++++++++++++++ win_build_libs/build_ext.sh | 201 ++++++++++++++++++++ win_build_libs/libssh-0.5.4-fix.tar.gz | Bin 0 -> 6452 bytes win_build_libs/libxslt-1.1.28-fix.tar.gz | Bin 0 -> 3009 bytes 9 files changed, 583 insertions(+), 52 deletions(-) create mode 100755 Start_RetroShare-Gui_Debug.bat mode change 100644 => 100755 build-all-mingw32make.bat create mode 100755 win_build_libs/Makefile create mode 100755 win_build_libs/build_ext.sh create mode 100755 win_build_libs/libssh-0.5.4-fix.tar.gz create mode 100755 win_build_libs/libxslt-1.1.28-fix.tar.gz diff --git a/Start_RetroShare-Gui_Debug.bat b/Start_RetroShare-Gui_Debug.bat new file mode 100755 index 000000000..3ba38c3f8 --- /dev/null +++ b/Start_RetroShare-Gui_Debug.bat @@ -0,0 +1,11 @@ +set QTDIR=C:\Qt\5.5\mingw492_32 +set LIBS=..\libs +set RSPATH=.\retroshare-gui\src\debug + +set PATH=%QTDIR%\bin;%LIBS%\bin;%PATH% + +If not exist %RSPATH%\RetroShare06.exe ( + build-all-mingw32make.bat +) + +%RSPATH%\RetroShare06.exe diff --git a/build-all-mingw32make.bat b/build-all-mingw32make.bat old mode 100644 new mode 100755 index 819642b46..49eebe687 --- a/build-all-mingw32make.bat +++ b/build-all-mingw32make.bat @@ -1,14 +1,14 @@ -set QTDIR=C:\Qt\4.8.6 -set MINGW=C:\MinGW -set GIT=C:\Program Files\Git - -set PATH=%QTDIR%\bin;%MINGW%\bin;%GIT%\bin;%PATH% +set QTDIR=C:\Qt\5.5\mingw492_32\ +set MINGW=C:\Qt\Tools\mingw492_32 +set PATH=%QTDIR%\bin;%MINGW%\bin;%PATH% +set DEBUG=1 @echo off rem emptying used variables in case the script was aborted and tempfile set pack= set clean= +set errorlevel= if exist tmp.txt del tmp.txt @@ -19,12 +19,12 @@ if %1x == x ( ) if /i %1==clean ( set clean=clean - shift + shift goto :loop1 ) if /i %1==pack ( set pack=pack - shift + shift goto :loop1 ) echo.%1>>tmp.txt @@ -44,77 +44,174 @@ if not exist tmp.txt ( ) for /f %%a in (tmp.txt) do ( -@echo on +if ECHO==1 @echo on + + + +rem TODO: Remove these lines +rem GOTO :retroshare-gui + + + + +:libbitdht +rem ################################### +rem ### libbitdht ##################### +rem ################################### cd libbitdht\src if not %clean%x==x mingw32-make clean qmake libbitdht.pro +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### libbitdht done ################ +echo ################################### +cd ..\.. - -cd ..\..\openpgpsdk\src +:openpgpsdk +rem ################################### +rem ### openpgpsdk #################### +rem ################################### +cd openpgpsdk\src if not %clean%x==x mingw32-make clean qmake openpgpsdk.pro +CALL :TEST_ERROR mingw32-make +CALL :TEST_ERROR +echo ################################### +echo ### openpgpsdk done ############### +echo ################################### +cd ..\.. -cd ..\..\libresapi\src +:libresapi +rem ################################### +rem ### libresapi ##################### +rem ################################### +cd libresapi\src if not %clean%x==x mingw32-make clean qmake libresapi.pro +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### libresapi done ################ +echo ################################### +cd ..\.. -cd ..\..\libretroshare\src +:libretroshare +rem ################################### +rem ### libretroshare ################# +rem ################################### +cd libretroshare\src if not %clean%x==x mingw32-make clean qmake libretroshare.pro "CONFIG+=version_detail_bash_script" +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### libretroshare done ############ +echo ################################### +cd ..\.. - -cd ..\..\supportlibs\pegmarkdown +:pegmarkdown +rem ################################### +rem ### pegmarkdown ################### +rem ################################### +cd supportlibs\pegmarkdown if not %clean%x==x mingw32-make clean qmake pegmarkdown.pro +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### pegmarkdown done ############## +echo ################################### +cd ..\.. - -cd ..\..\retroshare-nogui\src +:retroshare-nogui +rem ################################### +rem ### retroshare-nogui ############## +rem ################################### +cd retroshare-nogui\src if not %clean%x==x mingw32-make clean qmake retroshare-nogui.pro +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### retroshare-nogui done ######### +echo ################################### +cd ..\.. - -cd ..\..\retroshare-gui\src +:retroshare-gui +rem ################################### +rem ### retroshare-gui ################ +rem ################################### +cd retroshare-gui\src if not %clean%x==x mingw32-make clean -qmake retroshare-gui.pro "CONFIG+=version_detail_bash_script" +rem qmake -r -spec ..\mkspecs\win32-g++ "CONFIG+=version_detail_bash_script" retroshare-gui.pro +qmake retroshare-gui.pro "CONFIG+=version_detail_bash_script" +CALL :TEST_ERROR mingw32-make %%a +CALL :TEST_ERROR +echo ################################### +echo ### retroshare-gui done ########### +echo ################################### cd ..\.. @echo off ) + @echo off if %pack%x==packx call packaging.bat -rem clean up +rem ################################### +rem ### clean up ###################### +rem ################################### set clean= del tmp.txt set pack= pause +rem ################################### +rem ### END ########################### +rem ################################### +GOTO :EOF + + +:TEST_ERROR +@echo off +if errorlevel 1 ( + pause + set clean= + del tmp.txt + set pack= + EXIT +) +if ECHO==1 @echo on +EXIT /B + +:EOF \ No newline at end of file diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro index 3a2adcae1..cd4a57ceb 100644 --- a/retroshare-gui/src/retroshare-gui.pro +++ b/retroshare-gui/src/retroshare-gui.pro @@ -177,6 +177,7 @@ win32 { LIBS_DIR = $$PWD/../../../libs LIBS += -L"$$LIBS_DIR/lib" + LIBS += -L"$$LIBS_DIR/bin" LIBS += -lssl -lcrypto -lpthread -lminiupnpc -lz -lws2_32 LIBS += -luuid -lole32 -liphlpapi -lcrypt32 -lgdi32 diff --git a/retroshare-gui/src/util/printpreview.cpp b/retroshare-gui/src/util/printpreview.cpp index 73bc09ca4..02e925336 100644 --- a/retroshare-gui/src/util/printpreview.cpp +++ b/retroshare-gui/src/util/printpreview.cpp @@ -38,7 +38,6 @@ #include "printpreview.h" -#include #include #include #include @@ -70,35 +69,6 @@ static inline qreal mmToInches(double mm) return mm*0.039370147; } -class PreviewView : public QAbstractScrollArea -{ - Q_OBJECT -public: - PreviewView(QTextDocument *document, PrintPreview *printPrev); - - inline void updateLayout() { resizeEvent(0); viewport()->update(); } - -public slots: - void zoomIn(); - void zoomOut(); - -protected: - virtual void paintEvent(QPaintEvent *e); - virtual void resizeEvent(QResizeEvent *); - virtual void mousePressEvent(QMouseEvent *e); - virtual void mouseMoveEvent(QMouseEvent *e); - virtual void mouseReleaseEvent(QMouseEvent *e); - -private: - void paintPage(QPainter *painter, int page); - QTextDocument *doc; - qreal scale; - int interPageSpacing; - QPoint mousePressPos; - QPoint scrollBarValuesOnMousePress; - PrintPreview *printPreview; -}; - PreviewView::PreviewView(QTextDocument *document, PrintPreview *printPrev) : printPreview(printPrev) { @@ -330,5 +300,3 @@ void PrintPreview::pageSetup() view->updateLayout(); } } - -#include "printpreview.moc" diff --git a/retroshare-gui/src/util/printpreview.h b/retroshare-gui/src/util/printpreview.h index e8f7a769d..9fce97b5d 100644 --- a/retroshare-gui/src/util/printpreview.h +++ b/retroshare-gui/src/util/printpreview.h @@ -39,6 +39,7 @@ #ifndef PRINTPREVIEW_H #define PRINTPREVIEW_H +#include #include #include #include @@ -69,5 +70,34 @@ private: QPrinter printer; }; +class PreviewView : public QAbstractScrollArea +{ + Q_OBJECT +public: + PreviewView(QTextDocument *document, PrintPreview *printPrev); + + inline void updateLayout() { resizeEvent(0); viewport()->update(); } + +public slots: + void zoomIn(); + void zoomOut(); + +protected: + virtual void paintEvent(QPaintEvent *e); + virtual void resizeEvent(QResizeEvent *); + virtual void mousePressEvent(QMouseEvent *e); + virtual void mouseMoveEvent(QMouseEvent *e); + virtual void mouseReleaseEvent(QMouseEvent *e); + +private: + void paintPage(QPainter *painter, int page); + QTextDocument *doc; + qreal scale; + int interPageSpacing; + QPoint mousePressPos; + QPoint scrollBarValuesOnMousePress; + PrintPreview *printPreview; +}; + #endif // PRINTPREVIEW_H diff --git a/win_build_libs/Makefile b/win_build_libs/Makefile new file mode 100755 index 000000000..4a51dc1ae --- /dev/null +++ b/win_build_libs/Makefile @@ -0,0 +1,223 @@ +ZLIB_VERSION=1.2.3 +BZIP2_VERSION=1.0.6 +MINIUPNPC_VERSION=1.3 +OPENSSL_VERSION=1.0.1h +SPEEX_VERSION=1.2rc1 +OPENCV_VERSION=2.4.9 +LIBXML2_VERSION=2.9.1 +LIBXSLT_VERSION=1.1.28 +CURL_VERSION=7.34.0 +LIBSSH_VERSION=0.5.4 +PROTOBUF_VERSION=2.4.1 +TCL_VERSION=8.6.2 +SQLCIPHER_VERSION=2.2.1 +LIBMICROHTTPD_VERSION=0.9.42 + +all: dirs zlib bzip2 miniupnpc openssl speex opencv libxml2 libxslt curl libssh protobuf sqlcipher libmicrohttpd copylibs + +dirs: + mkdir -p libs/include + mkdir -p libs/lib + mkdir -p libs/bin + +zlib-$(ZLIB_VERSION).tar.gz: + curl.exe -L http://sourceforge.net/projects/libpng/files/zlib/$(ZLIB_VERSION)/zlib-$(ZLIB_VERSION).tar.gz/download -o zlib-$(ZLIB_VERSION).tar.gz + +zlib: zlib-$(ZLIB_VERSION).tar.gz + tar xvf zlib-$(ZLIB_VERSION).tar.gz + cd zlib-$(ZLIB_VERSION) && ./configure + #cd zlib-$(ZLIB_VERSION) && make install prefix="`pwd`/../libs" + cd zlib-$(ZLIB_VERSION) && make + cp zlib-$(ZLIB_VERSION)/zlib.h libs/include/ + cp zlib-$(ZLIB_VERSION)/zconf.h libs/include/ + cp zlib-$(ZLIB_VERSION)/libz.a libs/lib/ + rm -r -f zlib-$(ZLIB_VERSION) + touch zlib + +bzip2-$(BZIP2_VERSION).tar.gz: + curl.exe http://bzip.org/$(BZIP2_VERSION)/bzip2-$(BZIP2_VERSION).tar.gz -o bzip2-$(BZIP2_VERSION).tar.gz + +bzip2: bzip2-$(BZIP2_VERSION).tar.gz + tar xvf bzip2-$(BZIP2_VERSION).tar.gz + #cd bzip2-$(BZIP2_VERSION) && make install PREFIX="`pwd`/../libs" + cd bzip2-$(BZIP2_VERSION) && make + cp bzip2-$(BZIP2_VERSION)/bzlib.h libs/include/ + cp bzip2-$(BZIP2_VERSION)/libbz2.a libs/lib/ + rm -r -f bzip2-$(BZIP2_VERSION) + touch bzip2 + +miniupnpc-$(MINIUPNPC_VERSION).tar.gz: + curl.exe -L http://miniupnp.free.fr/files/download.php?file=miniupnpc-$(MINIUPNPC_VERSION).tar.gz -o miniupnpc-$(MINIUPNPC_VERSION).tar.gz + +miniupnpc: miniupnpc-$(MINIUPNPC_VERSION).tar.gz + tar xvf miniupnpc-$(MINIUPNPC_VERSION).tar.gz + cd miniupnpc-$(MINIUPNPC_VERSION) && make -f Makefile.mingw init libminiupnpc.a miniupnpc.dll + mkdir -p libs/include/miniupnpc && cp miniupnpc-$(MINIUPNPC_VERSION)/*.h libs/include/miniupnpc/ + cp miniupnpc-$(MINIUPNPC_VERSION)/libminiupnpc.a libs/lib/ + cp miniupnpc-$(MINIUPNPC_VERSION)/miniupnpc.dll libs/bin/ + rm -r -f miniupnpc-$(MINIUPNPC_VERSION) + touch miniupnpc + +openssl-$(OPENSSL_VERSION).tar.gz: + curl.exe -k https://www.openssl.org/source/openssl-1.0.1h.tar.gz -o openssl-1.0.1h.tar.gz + +openssl: openssl-$(OPENSSL_VERSION).tar.gz + tar xvf openssl-$(OPENSSL_VERSION).tar.gz + #cd openssl-$(OPENSSL_VERSION) && ./config --prefix="`pwd`/../libs" + #cd openssl-$(OPENSSL_VERSION) && make install + cd openssl-$(OPENSSL_VERSION) && ./config + cd openssl-$(OPENSSL_VERSION) && make + mkdir -p libs/include/openssl && cp openssl-$(OPENSSL_VERSION)/include/openssl/*.h libs/include/openssl/ + cp openssl-$(OPENSSL_VERSION)/libcrypto.a libs/lib/ + cp openssl-$(OPENSSL_VERSION)/libssl.a libs/lib/ + rm -r -f openssl-$(OPENSSL_VERSION) + touch openssl + +speex-$(SPEEX_VERSION).tar.gz: + curl.exe http://downloads.xiph.org/releases/speex/speex-$(SPEEX_VERSION).tar.gz -o speex-$(SPEEX_VERSION).tar.gz + +speex: speex-$(SPEEX_VERSION).tar.gz + tar xvf speex-$(SPEEX_VERSION).tar.gz + cd speex-$(SPEEX_VERSION) && ./configure + #cd speex-$(SPEEX_VERSION) && make install exec_prefix="`pwd`/../libs" + cd speex-$(SPEEX_VERSION) && make + mkdir -p libs/include/speex && cp speex-$(SPEEX_VERSION)/include/speex/*.h libs/include/speex/ + cp speex-$(SPEEX_VERSION)/libspeex/.libs/libspeex.a libs/lib + cp speex-$(SPEEX_VERSION)/libspeex/.libs/libspeexdsp.a libs/lib + rm -r -f speex-$(SPEEX_VERSION) + touch speex + +opencv-$(OPENCV_VERSION).tar.gz: + curl.exe -L -k https://github.com/Itseez/opencv/archive/$(OPENCV_VERSION).tar.gz -o opencv-$(OPENCV_VERSION).tar.gz + +opencv: opencv-$(OPENCV_VERSION).tar.gz + tar xvf opencv-$(OPENCV_VERSION).tar.gz + mkdir -p opencv-$(OPENCV_VERSION)/build + #cd opencv-$(OPENCV_VERSION)/build && cmake .. -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="`pwd`/../../libs" + cd opencv-$(OPENCV_VERSION)/build && cmake .. -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="`pwd`/install" + cd opencv-$(OPENCV_VERSION)/build && make install + cp -r opencv-$(OPENCV_VERSION)/build/install/include/* libs/include/ + mkdir -p libs/lib/opencv + if [ -d "opencv-$(OPENCV_VERSION)/build/install/x86" ]; then \ + cp -r opencv-$(OPENCV_VERSION)/build/install/x86/mingw/staticlib/* libs/lib/opencv/ ; \ + fi + if [ -d "opencv-$(OPENCV_VERSION)/build/install/x64" ]; then \ + cp -r opencv-$(OPENCV_VERSION)/build/install/x64/mingw/staticlib/* libs/lib/opencv/ ; \ + fi + rm -r -f opencv-$(OPENCV_VERSION) + touch opencv + +libxml2-$(LIBXML2_VERSION).tar.gz: + curl.exe ftp://xmlsoft.org/libxml2/libxml2-$(LIBXML2_VERSION).tar.gz -o libxml2-$(LIBXML2_VERSION).tar.gz + +libxml2: libxml2-$(LIBXML2_VERSION).tar.gz + tar xvf libxml2-$(LIBXML2_VERSION).tar.gz + cd libxml2-$(LIBXML2_VERSION) && ./configure --without-iconv -enable-shared=no + #cd libxml2-$(LIBXML2_VERSION) && make install exec_prefix="`pwd`/../libs" + cd libxml2-$(LIBXML2_VERSION) && make + mkdir -p libs/include/libxml && cp libxml2-$(LIBXML2_VERSION)/include/libxml/*.h libs/include/libxml/ + cp libxml2-$(LIBXML2_VERSION)/.libs/libxml2.a libs/lib/ + touch libxml2 + +libxslt-$(LIBXSLT_VERSION).tar.gz: + curl.exe ftp://xmlsoft.org/libxml2/libxslt-$(LIBXSLT_VERSION).tar.gz -o libxslt-$(LIBXSLT_VERSION).tar.gz + +libxslt: libxml2-$(LIBXML2_VERSION).tar.gz libxslt-$(LIBXSLT_VERSION).tar.gz + tar xvf libxml2-$(LIBXML2_VERSION).tar.gz + tar xvf libxslt-$(LIBXSLT_VERSION).tar.gz + tar xvf libxslt-$(LIBXSLT_VERSION)-fix.tar.gz + cd libxslt-$(LIBXSLT_VERSION) && ./configure --with-libxml-src=../libxml2-$(LIBXML2_VERSION) -enable-shared=no CFLAGS=-DLIBXML_STATIC + cd libxslt-$(LIBXSLT_VERSION) && make + mkdir -p libs/include/libxslt && cp libxslt-$(LIBXSLT_VERSION)/libxslt/*.h libs/include/libxslt/ + cp libxslt-$(LIBXSLT_VERSION)/libxslt/.libs/libxslt.a libs/lib/ + cp libxslt-$(LIBXSLT_VERSION)/libexslt/.libs/libexslt.a libs/lib/ + rm -r -f libxml2-$(LIBXML2_VERSION) + rm -r -f libxslt-$(LIBXSLT_VERSION) + touch libxslt + +curl-$(CURL_VERSION).tar.gz: + curl.exe http://curl.haxx.se/download/curl-$(CURL_VERSION).tar.gz -o curl-$(CURL_VERSION).tar.gz + +curl: curl-$(CURL_VERSION).tar.gz + tar xvf curl-$(CURL_VERSION).tar.gz + cd curl-$(CURL_VERSION) && LIBS="-L`pwd`/../libs/lib $$LIBS" && export LIBS && ./configure --disable-shared --with-ssl="`pwd`/../libs" + #cd curl-$(CURL_VERSION) && make install exec_prefix="`pwd`/../libs" + cd curl-$(CURL_VERSION) && make + mkdir -p libs/include/curl && cp curl-$(CURL_VERSION)/include/curl/*.h libs/include/curl/ + cp curl-$(CURL_VERSION)/lib/.libs/libcurl.a libs/lib/ + rm -r -f curl-$(CURL_VERSION) + touch curl + +libssh-$(LIBSSH_VERSION).tar.gz: + curl.exe -k https://red.libssh.org/attachments/download/41/libssh-0.5.4.tar.gz -o libssh-0.5.4.tar.gz + +libssh: libssh-$(LIBSSH_VERSION).tar.gz + tar xvf libssh-$(LIBSSH_VERSION).tar.gz + tar xvf libssh-$(LIBSSH_VERSION)-fix.tar.gz + mkdir -p libssh-$(LIBSSH_VERSION)/build + cd libssh-$(LIBSSH_VERSION)/build && cmake .. -G"MSYS Makefiles" -DWITH_STATIC_LIB:BOOL=ON -DZLIB_LIBRARY:FILEPATH="`pwd`/../../libs/lib/libz.a" -DZLIB_INCLUDE_DIR:PATH="`pwd`/../../libs/include" -DOPENSSL_LIBRARIES:FILEPATH="`pwd`/../../libs/lib/libcrypto.a" -DOPENSSL_INCLUDE_DIRS:PATH="`pwd`/../../libs/include" + cd libssh-$(LIBSSH_VERSION)/build && make + cp libssh-$(LIBSSH_VERSION)/build/src/libssh.a libs/lib/ + cp libssh-$(LIBSSH_VERSION)/build/src/threads/libssh_threads.a libs/lib/ + mkdir -p libs/include/libssh && cp libssh-$(LIBSSH_VERSION)/include/libssh/*.h libs/include/libssh/ + rm -r -f libssh-$(LIBSSH_VERSION) + touch libssh + +protobuf-$(PROTOBUF_VERSION).tar.gz: + curl.exe -k https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz -o protobuf-2.4.1.tar.gz + +protobuf: protobuf-$(PROTOBUF_VERSION).tar.gz + tar xvf protobuf-$(PROTOBUF_VERSION).tar.gz + cd protobuf-$(PROTOBUF_VERSION) && ./configure --disable-shared + #cd protobuf-$(PROTOBUF_VERSION) && make install exec_prefix="`pwd`/../libs" + cd protobuf-$(PROTOBUF_VERSION) && make + mkdir -p libs/include/protobuf && cp -r protobuf-$(PROTOBUF_VERSION)/src/google/ libs/include/protobuf/ + cp protobuf-$(PROTOBUF_VERSION)/src/.libs/libprotobuf.a libs/lib/ + cp protobuf-$(PROTOBUF_VERSION)/src/protoc.exe libs/bin/ + rm -r -f protobuf-$(PROTOBUF_VERSION) + touch protobuf + +tcl$(TCL_VERSION)-src.tar.gz: + curl.exe -L http://prdownloads.sourceforge.net/tcl/tcl$(TCL_VERSION)-src.tar.gz -o tcl$(TCL_VERSION)-src.tar.gz + +sqlcipher-$(SQLCIPHER_VERSION).tar.gz: + curl.exe -L -k https://github.com/sqlcipher/sqlcipher/archive/v$(SQLCIPHER_VERSION).tar.gz -o sqlcipher-$(SQLCIPHER_VERSION).tar.gz + +sqlcipher: tcl$(TCL_VERSION)-src.tar.gz sqlcipher-$(SQLCIPHER_VERSION).tar.gz + # tcl + tar xvf tcl$(TCL_VERSION)-src.tar.gz + mkdir -p tcl$(TCL_VERSION)/build + cd tcl$(TCL_VERSION)/build && ../win/configure + cd tcl$(TCL_VERSION)/build && make + #sqlcipher + tar xvf sqlcipher-$(SQLCIPHER_VERSION).tar.gz + cd sqlcipher-$(SQLCIPHER_VERSION) && ln -s ../tcl$(TCL_VERSION)/build/tclsh86.exe tclsh + mkdir -p tcl$(TCL_VERSION)/lib + ln -s `pwd`/tcl$(TCL_VERSION)/library `pwd`/tcl$(TCL_VERSION)/lib/tcl8.6 + cd sqlcipher-$(SQLCIPHER_VERSION) && PATH=$$PATH:`pwd`/../tcl$(TCL_VERSION)/build && LIBS="-L`pwd`/../libs/lib -lgdi32 $$LIBS" && export LIBS && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../libs/include -I`pwd`/../tcl$(TCL_VERSION)/generic" LDFLAGS="-L`pwd`/../libs/lib -lcrypto -lgdi32" --with-tcl="`pwd`/../tcl$(TCL_VERSION)/build" && make install prefix="`pwd`/install" + cp -r sqlcipher-$(SQLCIPHER_VERSION)/install/include/* libs/include/ + cp sqlcipher-$(SQLCIPHER_VERSION)/install/lib/libsqlcipher.a libs/lib/ + cp sqlcipher-$(SQLCIPHER_VERSION)/install/bin/sqlcipher.exe libs/bin/ + rm -r -f sqlcipher-$(SQLCIPHER_VERSION) + rm -r -f tcl$(TCL_VERSION) + touch sqlcipher + +libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz: + curl.exe -L -k http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz -o libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz + +libmicrohttpd: libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz + tar xvf libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz + cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && ./configure + #cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && make install exec_prefix="`pwd`/../libs" + cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && make + cp libmicrohttpd-$(LIBMICROHTTPD_VERSION)/src/include/*.h libs/include/ + cp libmicrohttpd-$(LIBMICROHTTPD_VERSION)/src/microhttpd/.libs/*.a libs/lib/ + cp libmicrohttpd-$(LIBMICROHTTPD_VERSION)/src/microhttpd/.libs/*.dll libs/bin/ + rm -r -f libmicrohttpd-$(LIBMICROHTTPD_VERSION) + touch libmicrohttpd + +copylibs: + read -p "Do you want to copy libs to retroshare? (yes|no)" answer; \ + if [ "$$answer" = "yes" ] ; then \ + cp -r libs ../../libs ; \ + fi diff --git a/win_build_libs/build_ext.sh b/win_build_libs/build_ext.sh new file mode 100755 index 000000000..bcb555094 --- /dev/null +++ b/win_build_libs/build_ext.sh @@ -0,0 +1,201 @@ +cd Build + +mkdir -p libs/include +mkdir -p libs/lib +mkdir -p libs/bin + +[ -s zlib-1.2.3.tar.gz ] || curl -L http://sourceforge.net/projects/libpng/files/zlib/1.2.3/zlib-1.2.3.tar.gz/download -o zlib-1.2.3.tar.gz +if [ -s zlib-1.2.3.tar.gz ]; then + tar xvf zlib-1.2.3.tar.gz + cd zlib-1.2.3 + ./configure + #make install prefix="`pwd`/../libs" + make + cp zlib.h ../libs/include/ + cp zconf.h ../libs/include/ + cp libz.a ../libs/lib/ + cd .. + rm -r -f zlib-1.2.3 +fi + +[ -s bzip2-1.0.6.tar.gz ] || curl http://bzip.org/1.0.6/bzip2-1.0.6.tar.gz -o bzip2-1.0.6.tar.gz +if [ -s bzip2-1.0.6.tar.gz ]; then + tar xvf bzip2-1.0.6.tar.gz + cd bzip2-1.0.6 + #make install PREFIX="`pwd`/../libs" + make + cp bzlib.h ../libs/include/ + cp libbz2.a ../libs/lib/ + cd .. + rm -r -f bzip2-1.0.6 +fi + +[ -s miniupnpc-1.3.tar.gz ] || curl -L http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.3.tar.gz -o miniupnpc-1.3.tar.gz +if [ -s miniupnpc-1.3.tar.gz ]; then + tar xvf miniupnpc-1.3.tar.gz + cd miniupnpc-1.3 + make -f Makefile.mingw init libminiupnpc.a miniupnpc.dll + mkdir -p ../libs/include/miniupnpc && cp *.h ../libs/include/miniupnpc/ + cp libminiupnpc.a ../libs/lib/ + cp miniupnpc.dll ../libs/bin/ + cd .. + rm -r -f miniupnpc-1.3 +fi + +[ -s openssl-1.0.1h.tar.gz ] || curl -k https://www.openssl.org/source/openssl-1.0.1h.tar.gz -o openssl-1.0.1h.tar.gz +if [ -s openssl-1.0.1h.tar.gz ]; then + tar xvf openssl-1.0.1h.tar.gz + cd openssl-1.0.1h + #./config --prefix="`pwd`/../libs" + #make install + ./config + make + mkdir -p ../libs/include/openssl && cp include/openssl/*.h ../libs/include/openssl/ + cp libcrypto.a ../libs/lib/ + cp libssl.a ../libs/lib/ + cd .. + rm -r -f openssl-1.0.1h +fi + +[ -s speex-1.2rc1.tar.gz ] || curl http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz -o speex-1.2rc1.tar.gz +if [ -s speex-1.2rc1.tar.gz ]; then + tar xvf speex-1.2rc1.tar.gz + cd speex-1.2rc1 + ./configure + #make install exec_prefix="`pwd`/../libs" + make + mkdir -p ../libs/include/speex && cp include/speex/*.h ../libs/include/speex/ + cp libspeex/.libs/libspeex.a ../libs/lib + cp libspeex/.libs/libspeexdsp.a ../libs/lib + cd .. + rm -r -f speex-1.2rc1 +fi + +[ -s opencv-2.4.9.tar.gz ] || curl -L -k https://github.com/Itseez/opencv/archive/2.4.9.tar.gz -o opencv-2.4.9.tar.gz +if [ -s opencv-2.4.9.tar.gz ]; then + tar xvf opencv-2.4.9.tar.gz + cd opencv-2.4.9 + mkdir -p build + cd build + #cmake .. -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="`pwd`/../../libs" + cmake .. -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="`pwd`/install" + make install + cp -r install/include/* ../../libs/include/ + mkdir -p ../../libs/lib/opencv && cp -r install/x64/mingw/staticlib/* ../../libs/lib/opencv/ + cd ../.. + rm -r -f opencv-2.4.9 +fi + +[ -s libxml2-2.9.1.tar.gz ] || curl ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz -o libxml2-2.9.1.tar.gz +[ -s libxslt-1.1.28.tar.gz ] || curl ftp://xmlsoft.org/libxml2/libxslt-1.1.28.tar.gz -o libxslt-1.1.28.tar.gz +if [ -s libxml2-2.9.1.tar.gz -a -s libxslt-1.1.28.tar.gz ]; then + tar xvf libxml2-2.9.1.tar.gz + cd libxml2-2.9.1 + ./configure --without-iconv -enable-shared=no + #make install exec_prefix="`pwd`/../libs" + make + mkdir -p ../libs/include/libxml && cp include/libxml/*.h ../libs/include/libxml/ + cp .libs/libxml2.a ../libs/lib/ + cd .. + + tar xvf libxslt-1.1.28.tar.gz + tar xvf libxslt-1.1.28-fix.tar.gz + cd libxslt-1.1.28 + ./configure --with-libxml-src=../libxml2-2.9.1 -enable-shared=no CFLAGS=-DLIBXML_STATIC + make + mkdir -p ../libs/include/libxslt && cp libxslt/*.h ../libs/include/libxslt/ + cp libxslt/.libs/libxslt.a ../libs/lib/ + cp libexslt/.libs/libexslt.a ../libs/lib/ + cd .. + rm -r -f libxml2-2.9.1 + rm -r -f libxslt-1.1.28 +fi + +[ -s curl-7.34.0.tar.gz ] || curl http://curl.haxx.se/download/curl-7.34.0.tar.gz -o curl-7.34.0.tar.gz +if [ -s curl-7.34.0.tar.gz ]; then + tar xvf curl-7.34.0.tar.gz + cd curl-7.34.0 + LIBS_OLD=$LIBS + LIBS="-L`pwd`/../libs/lib $LIBS" + export LIBS + ./configure --disable-shared --with-ssl="`pwd`/../libs" + #make install exec_prefix="`pwd`/../libs" + make + LIBS=$LIBS_OLD + LIBS_OLD= + export LIBS + mkdir -p ../libs/include/curl && cp include/curl/*.h ../libs/include/curl/ + cp lib/.libs/libcurl.a ../libs/lib/ + cd .. + rm -r -f curl-7.34.0 +fi + +[ -s libssh-0.5.4.tar.gz ] || curl -k https://red.libssh.org/attachments/download/41/libssh-0.5.4.tar.gz -o libssh-0.5.4.tar.gz +if [ -s libssh-0.5.4.tar.gz ]; then + tar xvf libssh-0.5.4.tar.gz + tar xvf libssh-0.5.4-fix.tar.gz + cd libssh-0.5.4 + mkdir -p build + cd build + cmake .. -G"MSYS Makefiles" -DWITH_STATIC_LIB:BOOL=ON -DZLIB_LIBRARY:FILEPATH="`pwd`/../../libs/lib/libz.a" -DZLIB_INCLUDE_DIR:PATH="`pwd`/../../libs/include" -DOPENSSL_LIBRARIES:FILEPATH="`pwd`/../../libs/lib/libcrypto.a" -DOPENSSL_INCLUDE_DIRS:PATH="`pwd`/../../libs/include" + make + cp src/libssh.a ../../libs/lib/ + cp src/threads/libssh_threads.a ../../libs/lib/ + cd .. + rm -r -f build + mkdir -p ../libs/include/libssh && cp include/libssh/*.h ../libs/include/libssh/ + cd .. + rm -r -f libssh-0.5.4 +fi + +[ -s protobuf-2.4.1.tar.gz ] || curl -k https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz -o protobuf-2.4.1.tar.gz +if [ -s protobuf-2.4.1.tar.gz ]; then + tar xvf protobuf-2.4.1.tar.gz + cd protobuf-2.4.1 + ./configure --disable-shared + #make install exec_prefix="`pwd`/../libs" + make + mkdir -p ../libs/include/protobuf && cp -r src/google/ ../libs/include/protobuf/ + cp src/.libs/libprotobuf.a ../libs/lib/ + cp src/protoc.exe ../libs/bin/ + cd .. + rm -r -f protobuf-2.4.1 +fi + +[ -s tcl8.6.2-src.tar.gz ] || curl -L http://prdownloads.sourceforge.net/tcl/tcl8.6.2-src.tar.gz -o tcl8.6.2-src.tar.gz +[ -s sqlcipher-2.2.1.tar.gz ] || curl -L -k https://github.com/sqlcipher/sqlcipher/archive/v2.2.1.tar.gz -o sqlcipher-2.2.1.tar.gz +if [ -s tcl8.6.2-src.tar.gz -a -s sqlcipher-2.2.1.tar.gz ]; then + tar xvf tcl8.6.2-src.tar.gz + cd tcl8.6.2 + mkdir -p build + cd build + ../win/configure + make + #make clean + cd ../.. + + tar xvf sqlcipher-2.2.1.tar.gz + cd sqlcipher-2.2.1 + ln -s ../tcl8.6.2/build/tclsh86.exe tclsh + mkdir -p `pwd`/../tcl8.6.2/lib + ln -s `pwd`/../tcl8.6.2/library `pwd`/../tcl8.6.2/lib/tcl8.6 + PATH=$PATH:`pwd`/../tcl8.6.2/build + LIBS_OLD=$LIBS + LIBS="-L`pwd`/../libs/lib -lgdi32 $LIBS" + export LIBS + ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../libs/include -I`pwd`/../tcl8.6.2/generic" LDFLAGS="-L`pwd`/../libs/lib -lcrypto -lgdi32" --with-tcl="`pwd`/../tcl8.6.2/build" + make install prefix="`pwd`/install" + LIBS=$LIBS_OLD + LIBS_OLD= + export LIBS + cp -r install/include/* ../libs/include/ + cp install/lib/libsqlcipher.a ../libs/lib/ + cp install/bin/sqlcipher.exe ../libs/bin/ + rm -r -f `pwd`/../tcl8.6.2/lib + rm tclsh + cd .. + rm -r -f sqlcipher-2.2.1 + rm -r -f tcl8.6.2 +fi + +cd .. diff --git a/win_build_libs/libssh-0.5.4-fix.tar.gz b/win_build_libs/libssh-0.5.4-fix.tar.gz new file mode 100755 index 0000000000000000000000000000000000000000..0189c5a064be669f8db3008c75e7247ba5d1c8d1 GIT binary patch literal 6452 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 DKW^3- literal 0 HcmV?d00001 From a4ccd18da1b5936bd95c6ec8f12c5b939e02ecc0 Mon Sep 17 00:00:00 2001 From: Phenom Date: Sun, 6 Sep 2015 07:06:04 +0200 Subject: [PATCH 02/11] Add compilation for libavutil in libs script. --- win_build_libs/Makefile | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/win_build_libs/Makefile b/win_build_libs/Makefile index 4a51dc1ae..c170528d3 100755 --- a/win_build_libs/Makefile +++ b/win_build_libs/Makefile @@ -12,8 +12,9 @@ PROTOBUF_VERSION=2.4.1 TCL_VERSION=8.6.2 SQLCIPHER_VERSION=2.2.1 LIBMICROHTTPD_VERSION=0.9.42 +FFMPEG_VERSION=2.7.2 -all: dirs zlib bzip2 miniupnpc openssl speex opencv libxml2 libxslt curl libssh protobuf sqlcipher libmicrohttpd copylibs +all: dirs zlib bzip2 miniupnpc openssl speex opencv libxml2 libxslt curl libssh protobuf sqlcipher libmicrohttpd ffmpeg copylibs dirs: mkdir -p libs/include @@ -216,8 +217,26 @@ libmicrohttpd: libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz rm -r -f libmicrohttpd-$(LIBMICROHTTPD_VERSION) touch libmicrohttpd +ffmpeg-$(FFMPEG_VERSION).tar.gz: + curl.exe -L -k http://ffmpeg.org/releases/ffmpeg-$(FFMPEG_VERSION).tar.gz -o ffmpeg-$(FFMPEG_VERSION).tar.gz + +ffmpeg: ffmpeg-$(FFMPEG_VERSION).tar.gz + tar xvf ffmpeg-$(FFMPEG_VERSION).tar.gz + cd ffmpeg-$(FFMPEG_VERSION) && ./configure --enable-shared --disable-yasm + cd ffmpeg-$(FFMPEG_VERSION) && make + mkdir -p libs/include/libavcodec && cp -r ffmpeg-$(FFMPEG_VERSION)/libavcodec/*.h libs/include/libavcodec/ + cp -r ffmpeg-$(FFMPEG_VERSION)/libavcodec/*.a libs/lib/ + cp -r ffmpeg-$(FFMPEG_VERSION)/libavcodec/*.dll libs/bin/ + mkdir -p libs/include/libavutil && cp -r ffmpeg-$(FFMPEG_VERSION)/libavutil/*.h libs/include/libavutil/ + cp -r ffmpeg-$(FFMPEG_VERSION)/libavutil/*.a libs/lib/ + cp -r ffmpeg-$(FFMPEG_VERSION)/libavutil/*.dll libs/bin/ + rm -r -f ffmpeg-$(FFMPEG_VERSION) + touch ffmpeg + + copylibs: read -p "Do you want to copy libs to retroshare? (yes|no)" answer; \ if [ "$$answer" = "yes" ] ; then \ - cp -r libs ../../libs ; \ + cp -r libs ../../ ; \ fi + From d195b154bcf542d4d15ee5a9345217886b273a7b Mon Sep 17 00:00:00 2001 From: Phenom Date: Wed, 9 Sep 2015 23:06:56 +0200 Subject: [PATCH 03/11] Fix FeedReader compilation (Thanks to AsamK) --- plugins/FeedReader/FeedReader.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/FeedReader/FeedReader.pro b/plugins/FeedReader/FeedReader.pro index b415b5711..4ecc10352 100644 --- a/plugins/FeedReader/FeedReader.pro +++ b/plugins/FeedReader/FeedReader.pro @@ -89,7 +89,8 @@ linux-* { win32 { DEFINES += CURL_STATICLIB LIBXML_STATIC LIBXSLT_STATIC LIBEXSLT_STATIC - LIBS += -lcurl -lxml2 -lz -lxslt -lws2_32 -lwldap32 -lssl -lcrypto + #Have to reorder libs, else got /libs/lib/libcrypto.a(bio_lib.o):bio_lib.c:(.text+0x0): multiple definition of `BIO_new' + LIBS = -lcurl -lxml2 -lz -lxslt -lws2_32 -lwldap32 -lssl -lcrypto -lgdi32 $${LIBS} } openbsd-* { From 96597836dbb8d0d8bda498ff650a3ebda9dcc4ab Mon Sep 17 00:00:00 2001 From: Phenom Date: Sun, 13 Sep 2015 17:57:08 +0200 Subject: [PATCH 04/11] Remove libssh and protobuf. --- win_build_libs/Makefile | 31 +----------------------- win_build_libs/build_ext.sh | 32 ------------------------- win_build_libs/libssh-0.5.4-fix.tar.gz | Bin 6452 -> 0 bytes 3 files changed, 1 insertion(+), 62 deletions(-) delete mode 100755 win_build_libs/libssh-0.5.4-fix.tar.gz diff --git a/win_build_libs/Makefile b/win_build_libs/Makefile index c170528d3..250008ac4 100755 --- a/win_build_libs/Makefile +++ b/win_build_libs/Makefile @@ -14,7 +14,7 @@ SQLCIPHER_VERSION=2.2.1 LIBMICROHTTPD_VERSION=0.9.42 FFMPEG_VERSION=2.7.2 -all: dirs zlib bzip2 miniupnpc openssl speex opencv libxml2 libxslt curl libssh protobuf sqlcipher libmicrohttpd ffmpeg copylibs +all: dirs zlib bzip2 miniupnpc openssl speex opencv libxml2 libxslt curl sqlcipher libmicrohttpd ffmpeg copylibs dirs: mkdir -p libs/include @@ -149,35 +149,6 @@ curl: curl-$(CURL_VERSION).tar.gz rm -r -f curl-$(CURL_VERSION) touch curl -libssh-$(LIBSSH_VERSION).tar.gz: - curl.exe -k https://red.libssh.org/attachments/download/41/libssh-0.5.4.tar.gz -o libssh-0.5.4.tar.gz - -libssh: libssh-$(LIBSSH_VERSION).tar.gz - tar xvf libssh-$(LIBSSH_VERSION).tar.gz - tar xvf libssh-$(LIBSSH_VERSION)-fix.tar.gz - mkdir -p libssh-$(LIBSSH_VERSION)/build - cd libssh-$(LIBSSH_VERSION)/build && cmake .. -G"MSYS Makefiles" -DWITH_STATIC_LIB:BOOL=ON -DZLIB_LIBRARY:FILEPATH="`pwd`/../../libs/lib/libz.a" -DZLIB_INCLUDE_DIR:PATH="`pwd`/../../libs/include" -DOPENSSL_LIBRARIES:FILEPATH="`pwd`/../../libs/lib/libcrypto.a" -DOPENSSL_INCLUDE_DIRS:PATH="`pwd`/../../libs/include" - cd libssh-$(LIBSSH_VERSION)/build && make - cp libssh-$(LIBSSH_VERSION)/build/src/libssh.a libs/lib/ - cp libssh-$(LIBSSH_VERSION)/build/src/threads/libssh_threads.a libs/lib/ - mkdir -p libs/include/libssh && cp libssh-$(LIBSSH_VERSION)/include/libssh/*.h libs/include/libssh/ - rm -r -f libssh-$(LIBSSH_VERSION) - touch libssh - -protobuf-$(PROTOBUF_VERSION).tar.gz: - curl.exe -k https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz -o protobuf-2.4.1.tar.gz - -protobuf: protobuf-$(PROTOBUF_VERSION).tar.gz - tar xvf protobuf-$(PROTOBUF_VERSION).tar.gz - cd protobuf-$(PROTOBUF_VERSION) && ./configure --disable-shared - #cd protobuf-$(PROTOBUF_VERSION) && make install exec_prefix="`pwd`/../libs" - cd protobuf-$(PROTOBUF_VERSION) && make - mkdir -p libs/include/protobuf && cp -r protobuf-$(PROTOBUF_VERSION)/src/google/ libs/include/protobuf/ - cp protobuf-$(PROTOBUF_VERSION)/src/.libs/libprotobuf.a libs/lib/ - cp protobuf-$(PROTOBUF_VERSION)/src/protoc.exe libs/bin/ - rm -r -f protobuf-$(PROTOBUF_VERSION) - touch protobuf - tcl$(TCL_VERSION)-src.tar.gz: curl.exe -L http://prdownloads.sourceforge.net/tcl/tcl$(TCL_VERSION)-src.tar.gz -o tcl$(TCL_VERSION)-src.tar.gz diff --git a/win_build_libs/build_ext.sh b/win_build_libs/build_ext.sh index bcb555094..6c3721cdd 100755 --- a/win_build_libs/build_ext.sh +++ b/win_build_libs/build_ext.sh @@ -130,38 +130,6 @@ if [ -s curl-7.34.0.tar.gz ]; then rm -r -f curl-7.34.0 fi -[ -s libssh-0.5.4.tar.gz ] || curl -k https://red.libssh.org/attachments/download/41/libssh-0.5.4.tar.gz -o libssh-0.5.4.tar.gz -if [ -s libssh-0.5.4.tar.gz ]; then - tar xvf libssh-0.5.4.tar.gz - tar xvf libssh-0.5.4-fix.tar.gz - cd libssh-0.5.4 - mkdir -p build - cd build - cmake .. -G"MSYS Makefiles" -DWITH_STATIC_LIB:BOOL=ON -DZLIB_LIBRARY:FILEPATH="`pwd`/../../libs/lib/libz.a" -DZLIB_INCLUDE_DIR:PATH="`pwd`/../../libs/include" -DOPENSSL_LIBRARIES:FILEPATH="`pwd`/../../libs/lib/libcrypto.a" -DOPENSSL_INCLUDE_DIRS:PATH="`pwd`/../../libs/include" - make - cp src/libssh.a ../../libs/lib/ - cp src/threads/libssh_threads.a ../../libs/lib/ - cd .. - rm -r -f build - mkdir -p ../libs/include/libssh && cp include/libssh/*.h ../libs/include/libssh/ - cd .. - rm -r -f libssh-0.5.4 -fi - -[ -s protobuf-2.4.1.tar.gz ] || curl -k https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz -o protobuf-2.4.1.tar.gz -if [ -s protobuf-2.4.1.tar.gz ]; then - tar xvf protobuf-2.4.1.tar.gz - cd protobuf-2.4.1 - ./configure --disable-shared - #make install exec_prefix="`pwd`/../libs" - make - mkdir -p ../libs/include/protobuf && cp -r src/google/ ../libs/include/protobuf/ - cp src/.libs/libprotobuf.a ../libs/lib/ - cp src/protoc.exe ../libs/bin/ - cd .. - rm -r -f protobuf-2.4.1 -fi - [ -s tcl8.6.2-src.tar.gz ] || curl -L http://prdownloads.sourceforge.net/tcl/tcl8.6.2-src.tar.gz -o tcl8.6.2-src.tar.gz [ -s sqlcipher-2.2.1.tar.gz ] || curl -L -k https://github.com/sqlcipher/sqlcipher/archive/v2.2.1.tar.gz -o sqlcipher-2.2.1.tar.gz if [ -s tcl8.6.2-src.tar.gz -a -s sqlcipher-2.2.1.tar.gz ]; then diff --git a/win_build_libs/libssh-0.5.4-fix.tar.gz b/win_build_libs/libssh-0.5.4-fix.tar.gz deleted file mode 100755 index 0189c5a064be669f8db3008c75e7247ba5d1c8d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6452 zcmV-48O!D$iwFQm(=Jp11MEEgbK5qu{nh>}5ONjxy2Q{?w=pM zg8sc92d9IJUkUM;oeVC9{qdNcjLun)o%PNy21jpBd*|%z&H34A+;1{A=6pS^5tJhL zlo$sj^?2&|L83_TEATo2Bm6*S$=O-pxEwavc!?06K5aGF zk5Q6BSA_Mt$6BBQ+k5S&t?wG_&A5jPf3m&(wI8~{(&OxV9>-zSoV_rbPz1v3Vw(qB zwbbUzp;M1f+2nFCeA+QOto#r+ekVU{m2^^f;V?$Q6HmsYqo4X0li_ICZ{%8zM#EwM=mIvawY`6wZ|;vy3JvGyqw~VhQ&3~a z+jocC+pyo3Zkk7oS^#ailnIc-oA}{jp#{_{HUWX@c_IO*w!lf!3GHyzf&xETMPYgs zK+i*zDQrTbh0%(^$s(zbntq$vf1tA%jYp~qxU^3Uz_JFdvMJ z!2b`N99`Bbbjna!h5~W!k>;rx!k;wQP2_uQSM+GGC5(OA0X7FbtRLPFkT_6)=)%rO z^KiGfwhEBdHvN~eP1(P$VjpxOE-axVNddi0Qa)!jQ0-o{N?5Ysu0QqNI_ZQbXbNc+cmT*TnCR(pQG4C{sed^-KdyBefJcKpmebVPBZ-)h`k1H7IAnY6 zLu$C&mU>xWszip?T$d=?<%0m+VGjus1m-T&mV)v}0e3=BcO}}36P$Qz3c2XM8MWJL zQ5tJC91t&a0cdq(JU13yCH}ZPSkXGka$y4?;~W<971%no!szPX+)ZhLrXXj_guXS) zju-1OhY$l2z-A76K5}abAQw$*RjRgLKU5?`0uA4so|-gDIH}PnoEKvu{zKgXG|HL|neGNKLg*x1rR9|U&lUT9T` zPqYRlGG;5zb$i(2$GwyOa(ir!pqO%Fshe?lsGh6jZs z&Uj*+az?9E2VHfE>{fFj%kaqS7R-*rOerKerC{zLsUgleP(Nf8X++2&vlj1lqu;RYm8-S8Xqb*wLpn=DYh{_=OoXr+!re7Ry$&4?x3}Dx6HAr! zcE9zHXYZhmpvk|W@w%W*wr~_!;1g|a$;10Cb7MQok5xH7kgfToIKR9XrRPaH0 zX+Sh5K;?ETLLMHHVauP^9+`G{LXi?U_z?e`CA)P;y_L*8W@n?*Q*c+YBcgCL;~*a} z>xwgsMfo9x#=;O-MxHhuJvb+V(F(9@b)E_6mQ72NgM5fjufd=MtfNI*12&9Dr?LxN zN;kSj1m3Mb20}F+3)B9e_)wGg56H)|GbXDyBy-WNa3@Zd-FeH|h&d)AkDr~tb*R~-YPAS#$IHm>T zJm0qnG+Zvw&r-&o zFdFLEjpAY^VU2Y>MRqK}`?wW>WzuYDntG^bU`vPJrsTBxDfQmPElw;}npWv#!LhBa z1?x&vb;}T$4&B~KiXdUTT|rqJX*Z*-ChkWL{|vmLKpXv9e@$+@kj#Mjf217%yMc~A zI+S5E<4s5>asEga^GM6q@w^ER$eF%sgT))FGopr|b=3(V;Qc^oy6QJ5JPxgpxY#HO+v*_A;;GMx*G)U;*SD^wJr3=TL$gvemZ)KM#N zz+5?sS$M57iQxMy`Kj2ihKI~vFrlP!QS&eg6{9B8V42LM*>uM!>$M4c(l`pHLA25u zaD*xBm5=Ff?}o>zFMWySV!>k;z~TduX%?$MQp28reJ(A`GLzL5CYw)AN0*b!^T9>` zax}d7@f2Fu@%m08cQHC1J%>FSV)Azd+Y#)i#WH22jg?rF=OXBadnR(hHA@J&JF?i% zl_iHJGvX~{(&VZLk0Yimy8}yhV!6+ywAHfkf{K5k-Z3H#Sy=3!ILGrWa%_z&2)H7C z?}xY;0}t5y;8iAzh$Kh3go69z2dW4y2oo&EM?VDa&>`XP{Y3hlY6^<7I;gntOfv(* z#bin$#%n$*CK4aq{xDf*r?ekh%5tGs0Zv0V}s;fOd?}l z-7Ksn1-`@>5sfrrLpf|L7;eZu0QI-#AK+h(A{rco=XEnEYqXnzH=<~nkI;M%Bh_T< zIhk#|JR|e*J~K#bwn|povK_}f;3C_RiPr10DqPCAnr8yS;@C> z3+74hWb$S>_=TQ_3sA}_u-WK{bAh!evp&LRDWr7jtwmd!as<9s5E!;w zXOAUU8`@CHbGu&0nBzlMm|L5g{^Qrfit+L(MoDCEGZQR*hDv2Z(`34&A|Ff&z^X;8 zfkA8jUCbopQ7KQkIE*&Q43N~Lq84)HhoV49>d#z~=W^V8$Sl>2p|!IIAjDDtOgMO~99mJ4RWW8ZJIiThkgL*HclqNBMkx#bgMqhc9+FzO*FNq zCf)*cN;_s!30BK;0j4-F>aY!~#&c_#k5_T1(Gt=fpgGQK7IJf{d zvF;wVJM(F*>^PFAmtA1QX;rXJ8OuA&2wguGN?=23i$#5AnpcsiXqT_2QUzrU@%%W_ zNF({LLYtz^TS=S>xzRRp6?xF?RrIMoF3MiuS^^2nULk6a(U`{yts^ssWtrj{TUg-} zM&W;W9Ep^cPAI~Trm9|BIhi`G?wcN!pG|GAMauE89*$8o(lo>{6BtRKU(n{$miCEa zEzA$PvJ4_Ch%rhK@+QAwRAhdQs+y3F6oQMndz1OPYJQkj*|GZcmE9fB+TBtY_JFhf zzO%QYK10$0Ff$FfVqr$9nl5(Na++dGNs-sG>suL1Ef-YYA^KTk-=oPp9;=78atA`2t z>W`>dRZEhoTS-e`zdFwf0#9OAECXxE0c;okQx&JV2urnNoH;vU?ehNQcrqA+|CnhY z0{#2%#V15!p4Qi{Ut0xg#Zylt(k0$#7AlhwyUm^Vuu^+y9i+y{_E za~Kv}BE(^_JtISLsu!@2z(dOX4Bafzvplq(nOVL<4K!S^|6vw|gtm-rdf8qvzw}rh zf&dQD7_5;4ohuPZ1+aB+TTutKMR3~DPxJyEUQ))NIw(g2Ym-2Qae(Be#!C`ce2VEt zkSWZN*!IqbCxm!ggPVoS`3h&TY@@iB<4PyW`B7!GH9Xc{WJ(12V#y(A;k~@NH}#LT z=vJek^HOr}YPzZ7cnx4(I!Sa4xO2k`OEJKXemYde}Sp*rMghn6`eH%>*VmO2Ln?7bIGfXAUcA?b`f8T|6PPZ{unnJ!LT z6@}UzpmbiuyNZi zMx+T*pu6n;EassmX4$GJ@vTB~QY z%yrJHQ$gxTq6$>sOsGGVSg#Z8jTu`~k=8;OQ$4ThdMjY=pKKK@1dQgg0zsz!|0!tm z(CzZK-4}u$ST;peKnYKIsEDx1fntl=6gHXd46r#Z?Mi@ozt#?~~LPTY#gFGzc(iFj;=BQXmS;%XA@;&1T5!SG9jFWeVM{QOsd^%V|4TaU?G{ z*~DlU6_C1?@6|373r{G{l#8yESgk!0tPaNQa^CM9PtN+oOCuGDYIWuKDV=%bt(r!y#EWW%tRaZ?^)vNGrg954k5*;92{c&-siQjg zaP`yyr93kWA+mE9yAALiHuH5TT@R_P0sWqc_)r5CtkCB-a&MDRi3@N{znG(62?ByL zMbT!3{NUjxW;T1wB5>RAztDlh7a6o*m|+Iv!x&L`>t_+gsrXN7v&x=Ve&|got8DC>H~1ElY&Zj03s|cdN60YJ$I*}Aff8HlaYCY9Eui{H%UF3CG{dn zB)9~T7bdy4Ty$!_&Op#DdI9bHZHI1!4=D>C#EmLdz-8am2;0^>^(vTL$!;CnWj8;q zweQUwkMJu(Sxp{ZpT*Jp+as~;ZS_gA>;Q3sm2;cObL5X5BT7P!N|N&F6}kW{Y9+Xu zd97NVERX<7s;YIY>>=I;&%|u9@E81T=UuLT4^391ofNb0sY}e)Sz~M6jUt}w)Ne&- zXUfCFO>fmacswoMbOF@v z+3Xz~lAurbj?Jb)8r!GOD0FZ~It>aHb%wn}@ z8CIa6w1`a0JQlqxwT!v^_LIlmz@cmxzBmnd%CG>vE1F}Jrmm`$DOSQNr01Yy-V>Ir zChD1X@hil2m1@H9k1P|Q2l{)AOn#7&)$*W>4>8gJkvPlw@%`cGb^kR51PHnf7aH3T zxitk3dq2v&VLC8GN116B6PmBo$QkKFLU;EN!Q(*h=vLDqOQmIms2Cyo;-nHOeNR^! zrH7zHndCAq5`?X Date: Wed, 23 Sep 2015 18:25:03 +0200 Subject: [PATCH 05/11] Add Win32 section in retroshare.pri And add MSys2 directories. --- libresapi/src/libresapi.pro | 2 +- libretroshare/src/libretroshare.pro | 6 ++---- libretroshare/src/upnp/upnputil.h | 6 +++--- openpgpsdk/src/openpgpsdk.pro | 6 ++---- plugins/Common/retroshare_plugin.pri | 14 +++++++------- plugins/FeedReader/FeedReader.pro | 6 ++++++ retroshare-gui/src/retroshare-gui.pro | 15 +++++---------- retroshare-nogui/src/retroshare-nogui.pro | 10 ++++------ retroshare.pri | 18 ++++++++++++++++++ 9 files changed, 48 insertions(+), 35 deletions(-) diff --git a/libresapi/src/libresapi.pro b/libresapi/src/libresapi.pro index d814219db..08dbfc6ac 100644 --- a/libresapi/src/libresapi.pro +++ b/libresapi/src/libresapi.pro @@ -24,7 +24,7 @@ unix { win32{ DEFINES *= WINDOWS_SYS - INCLUDEPATH += $$PWD/../../../libs/include + INCLUDEPATH += . $$INC_DIR } libmicrohttpd{ diff --git a/libretroshare/src/libretroshare.pro b/libretroshare/src/libretroshare.pro index 9c0ee33e6..8cb5e742c 100644 --- a/libretroshare/src/libretroshare.pro +++ b/libretroshare/src/libretroshare.pro @@ -253,10 +253,8 @@ win32 { LIBS += -lsqlcipher - LIBS_DIR = $$PWD/../../../libs - - DEPENDPATH += . $$LIBS_DIR/include $$LIBS_DIR/include/miniupnpc - INCLUDEPATH += . $$LIBS_DIR/include $$LIBS_DIR/include/miniupnpc + DEPENDPATH += . $$INC_DIR + INCLUDEPATH += . $$INC_DIR } ################################# MacOSX ########################################## diff --git a/libretroshare/src/upnp/upnputil.h b/libretroshare/src/upnp/upnputil.h index 64dca304a..b1bfe6e51 100644 --- a/libretroshare/src/upnp/upnputil.h +++ b/libretroshare/src/upnp/upnputil.h @@ -17,9 +17,9 @@ #include #define snprintf _snprintf #endif -#include -#include -#include +#include +#include +#include /* Ensure linking names are okay on OSX platform. (C interface) */ diff --git a/openpgpsdk/src/openpgpsdk.pro b/openpgpsdk/src/openpgpsdk.pro index f54f5d7f8..2cee7847d 100644 --- a/openpgpsdk/src/openpgpsdk.pro +++ b/openpgpsdk/src/openpgpsdk.pro @@ -35,10 +35,8 @@ win32 { #QMAKE_CXXFLAGS_DEBUG += -O2 #QMAKE_CFLAGS_DEBUG += -O2 - LIBS_DIR = $$PWD/../../../libs - - DEPENDPATH += $$LIBS_DIR/include - INCLUDEPATH += $$LIBS_DIR/include + DEPENDPATH += $$INC_DIR + INCLUDEPATH += $$INC_DIR } # Input diff --git a/plugins/Common/retroshare_plugin.pri b/plugins/Common/retroshare_plugin.pri index d9a03cdc6..8a5e332b2 100644 --- a/plugins/Common/retroshare_plugin.pri +++ b/plugins/Common/retroshare_plugin.pri @@ -37,7 +37,7 @@ win32 { UI_DIR = temp/ui DEFINES += WINDOWS_SYS WIN32 STATICLIB MINGW WIN32_LEAN_AND_MEAN _USE_32BIT_TIME_T - DEFINES += MINIUPNPC_VERSION=13 + #DEFINES += MINIUPNPC_VERSION=13 # DESTDIR = lib # Switch off optimization for release version @@ -53,16 +53,16 @@ win32 { DEFINES += USE_CMD_ARGS #miniupnp implementation files - HEADERS += upnp/upnputil.h - SOURCES += upnp/upnputil.c + #HEADERS += upnp/upnputil.h + #SOURCES += upnp/upnputil.c - LIBS_DIR = $$PWD/../../../libs - - INCLUDEPATH += . $$LIBS_DIR/include $$LIBS_DIR/include/miniupnpc + DEPENDPATH += . $$INC_DIR + INCLUDEPATH += . $$INC_DIR PRE_TARGETDEPS += ../../retroshare-gui/src/lib/libretroshare-gui.a LIBS += -L"../../retroshare-gui/src/lib" -lretroshare-gui - LIBS += -L"$$LIBS_DIR/lib" + for(lib, LIB_DIR):LIBS += -L"$$lib" + for(bin, BIN_DIR):LIBS += -L"$$bin" LIBS += -lpthread } diff --git a/plugins/FeedReader/FeedReader.pro b/plugins/FeedReader/FeedReader.pro index 4ecc10352..34fb2f794 100644 --- a/plugins/FeedReader/FeedReader.pro +++ b/plugins/FeedReader/FeedReader.pro @@ -91,6 +91,12 @@ win32 { #Have to reorder libs, else got /libs/lib/libcrypto.a(bio_lib.o):bio_lib.c:(.text+0x0): multiple definition of `BIO_new' LIBS = -lcurl -lxml2 -lz -lxslt -lws2_32 -lwldap32 -lssl -lcrypto -lgdi32 $${LIBS} + exists(C:/msys64/mingw32/include) { + message(msys2 xml2 is installed.) + INC_DIR += "C:/msys64/mingw32/include/libxml2" + } + DEPENDPATH += . $$INC_DIR + INCLUDEPATH += . $$INC_DIR } openbsd-* { diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro index cd4a57ceb..f5c3c33a6 100644 --- a/retroshare-gui/src/retroshare-gui.pro +++ b/retroshare-gui/src/retroshare-gui.pro @@ -174,14 +174,12 @@ win32 { #LIBS += -L"D/Qt/2009.03/qt/plugins/imageformats" #QTPLUGIN += qjpeg - LIBS_DIR = $$PWD/../../../libs - - LIBS += -L"$$LIBS_DIR/lib" - LIBS += -L"$$LIBS_DIR/bin" + for(lib, LIB_DIR):LIBS += -L"$$lib" + for(bin, BIN_DIR):LIBS += -L"$$bin" LIBS += -lssl -lcrypto -lpthread -lminiupnpc -lz -lws2_32 LIBS += -luuid -lole32 -liphlpapi -lcrypt32 -lgdi32 - LIBS += -lole32 -lwinmm + LIBS += -lwinmm RC_FILE = gui/images/retroshare_win.rc # export symbols for the plugins @@ -192,11 +190,8 @@ win32 { DEFINES *= WINDOWS_SYS WIN32_LEAN_AND_MEAN _USE_32BIT_TIME_T - DEPENDPATH += . - INCLUDEPATH += . - - DEPENDPATH += $$LIBS_DIR/include - INCLUDEPATH += $$LIBS_DIR/include + DEPENDPATH += . $$INC_DIR + INCLUDEPATH += . $$INC_DIR greaterThan(QT_MAJOR_VERSION, 4) { # Qt 5 diff --git a/retroshare-nogui/src/retroshare-nogui.pro b/retroshare-nogui/src/retroshare-nogui.pro index 043933278..718992cbc 100644 --- a/retroshare-nogui/src/retroshare-nogui.pro +++ b/retroshare-nogui/src/retroshare-nogui.pro @@ -72,22 +72,20 @@ win32 { # solve linker warnings because of the order of the libraries QMAKE_LFLAGS += -Wl,--start-group - LIBS_DIR = $$PWD/../../../libs - - LIBS += -L"$$LIBS_DIR/lib" + for(lib, LIB_DIR):LIBS += -L"$$lib" LIBS += -lssl -lcrypto -lpthread -lminiupnpc -lz LIBS += -lcrypto -lws2_32 -lgdi32 LIBS += -luuid -lole32 -liphlpapi -lcrypt32 LIBS += -lole32 -lwinmm - PROTOCPATH=$$LIBS_DIR/bin/ + PROTOCPATH=$$BIN_DIR RC_FILE = resources/retroshare_win.rc DEFINES *= WINDOWS_SYS _USE_32BIT_TIME_T - DEPENDPATH += $$LIBS_DIR/include - INCLUDEPATH += $$LIBS_DIR/include + DEPENDPATH += . $$INC_DIR + INCLUDEPATH += . $$INC_DIR } ##################################### MacOS ###################################### diff --git a/retroshare.pri b/retroshare.pri index 6e2ea0c9e..8a1f5fa3e 100644 --- a/retroshare.pri +++ b/retroshare.pri @@ -10,6 +10,24 @@ unix { isEmpty(PLUGIN_DIR) { PLUGIN_DIR = "$${LIB_DIR}/retroshare/extensions6" } } +win32 { + message(***retroshare.pri:Win32) + exists($$PWD/../libs) { + message(Get pre-compiled libraries.) + isEmpty(PREFIX) { PREFIX = "$$PWD/../libs" } + isEmpty(BIN_DIR) { BIN_DIR = "$${PREFIX}/bin" } + isEmpty(INC_DIR) { INC_DIR = "$${PREFIX}/include" } + isEmpty(LIB_DIR) { LIB_DIR = "$${PREFIX}/lib" } + } + exists(C:/msys64/mingw32/include) { + message(msys2 is installed.) + PREFIX_MSYS2 = "C:/msys64/mingw32" + BIN_DIR += "$${PREFIX_MSYS2}/bin" + INC_DIR += "$${PREFIX_MSYS2}/include" + LIB_DIR += "$${PREFIX_MSYS2}/lib" + } +} + unfinished { CONFIG += gxscircles CONFIG += gxsthewire From e47168baae4b31a8844de1626e04ddb3962e133d Mon Sep 17 00:00:00 2001 From: Phenom Date: Thu, 24 Sep 2015 00:20:51 +0200 Subject: [PATCH 06/11] Make VOIP running with newer FFmpeg version. --- plugins/VOIP/gui/VideoProcessor.cpp | 6 ++++++ plugins/VOIP/gui/VideoProcessor.h | 1 + win_build_libs/Makefile | 3 +++ 3 files changed, 10 insertions(+) diff --git a/plugins/VOIP/gui/VideoProcessor.cpp b/plugins/VOIP/gui/VideoProcessor.cpp index 4f73ea1e9..9604e8cde 100644 --- a/plugins/VOIP/gui/VideoProcessor.cpp +++ b/plugins/VOIP/gui/VideoProcessor.cpp @@ -105,6 +105,7 @@ void av_frame_free(AVFrame **frame) VideoProcessor::VideoProcessor() :_encoded_frame_size(640,480) , vpMtx("VideoProcessor") { + _lastTimeToShowFrame = time(NULL); _decoded_output_device = NULL ; //_encoding_current_codec = VIDEO_PROCESSOR_CODEC_ID_JPEG_VIDEO; @@ -272,7 +273,12 @@ void VideoProcessor::receiveEncodedData(const RsVOIPDataChunk& chunk) } if(_decoded_output_device) + if (time(NULL) > _lastTimeToShowFrame) + { _decoded_output_device->showFrame(img) ; + _lastTimeToShowFrame = time(NULL) ;//+ 1000/25; +#warning "\plugins\VOIP\gui\VideoProcessor.cpp:210 TODO: Get CPU usage to pass image." + } } void VideoProcessor::setMaximumBandwidth(uint32_t bytes_per_sec) diff --git a/plugins/VOIP/gui/VideoProcessor.h b/plugins/VOIP/gui/VideoProcessor.h index a3869dc5e..c8c45f43e 100644 --- a/plugins/VOIP/gui/VideoProcessor.h +++ b/plugins/VOIP/gui/VideoProcessor.h @@ -102,6 +102,7 @@ class VideoProcessor private: QVideoOutputDevice *_decoded_output_device ; std::list _decoded_image_queue ; + time_t _lastTimeToShowFrame ; // ===================================================================================== // =------------------------------------ ENCODING -------------------------------------= diff --git a/win_build_libs/Makefile b/win_build_libs/Makefile index 250008ac4..250dca2e2 100755 --- a/win_build_libs/Makefile +++ b/win_build_libs/Makefile @@ -201,6 +201,9 @@ ffmpeg: ffmpeg-$(FFMPEG_VERSION).tar.gz mkdir -p libs/include/libavutil && cp -r ffmpeg-$(FFMPEG_VERSION)/libavutil/*.h libs/include/libavutil/ cp -r ffmpeg-$(FFMPEG_VERSION)/libavutil/*.a libs/lib/ cp -r ffmpeg-$(FFMPEG_VERSION)/libavutil/*.dll libs/bin/ + mkdir -p libs/include/libswresample && cp -r ffmpeg-$(FFMPEG_VERSION)/libswresample/*.h libs/include/libswresample/ + cp -r ffmpeg-$(FFMPEG_VERSION)/libswresample/*.a libs/lib/ + cp -r ffmpeg-$(FFMPEG_VERSION)/libswresample/*.dll libs/bin/ rm -r -f ffmpeg-$(FFMPEG_VERSION) touch ffmpeg From 7e708ff4aad140d013bb2ba54d9bd09f74baff91 Mon Sep 17 00:00:00 2001 From: Phenom Date: Thu, 24 Sep 2015 00:37:31 +0200 Subject: [PATCH 07/11] Fix MiniUPnP IGD with newers versions. Only for windows, as other use UPnPBase. --- libretroshare/src/libretroshare.pro | 1 - .../src/upnp/upnphandler_miniupnp.cc | 100 +++- libretroshare/src/upnp/upnputil.c | 522 ++++++++++++++---- libretroshare/src/upnp/upnputil.h | 14 +- 4 files changed, 516 insertions(+), 121 deletions(-) diff --git a/libretroshare/src/libretroshare.pro b/libretroshare/src/libretroshare.pro index 8cb5e742c..2e53b8884 100644 --- a/libretroshare/src/libretroshare.pro +++ b/libretroshare/src/libretroshare.pro @@ -229,7 +229,6 @@ win32 { OBJECTS_DIR = temp/obj MOC_DIR = temp/moc DEFINES *= WINDOWS_SYS WIN32 STATICLIB MINGW WIN32_LEAN_AND_MEAN _USE_32BIT_TIME_T - DEFINES *= MINIUPNPC_VERSION=13 # This defines the platform to be WinXP or later and is needed for getaddrinfo (_WIN32_WINNT_WINXP) DEFINES *= WINVER=0x0501 diff --git a/libretroshare/src/upnp/upnphandler_miniupnp.cc b/libretroshare/src/upnp/upnphandler_miniupnp.cc index 3c2442527..0b4d32c53 100644 --- a/libretroshare/src/upnp/upnphandler_miniupnp.cc +++ b/libretroshare/src/upnp/upnphandler_miniupnp.cc @@ -30,13 +30,81 @@ bool upnphandler::initUPnPState() { /* allocate memory */ uPnPConfigData *upcd = new uPnPConfigData; - -#if MINIUPNPC_VERSION >= 11 - /* Starting from version 1.1, miniupnpc api has a new parameter (int sameport) */ - upcd->devlist = upnpDiscover(2000, NULL, NULL, 0); +#if MINIUPNPC_API_VERSION >= 14 //1.9 2015/07/23 + /* $Id: miniupnpc.h,v 1.44 2015/07/23 20:40:10 nanard Exp $ */ + //upnpDiscover(int delay, const char * multicastif, + // const char * minissdpdsock, int sameport, + // int ipv6, unsigned char ttl, + // int * error); + unsigned char ttl = 2; /* defaulting to 2 */ + upcd->devlist = upnpDiscover(2000, NULL, + NULL, 0, + 0, ttl, + NULL); #else - upcd->devlist = upnpDiscover(2000, NULL, NULL); -#endif +#if MINIUPNPC_API_VERSION >= 8 //1.5 2011/04/18 + /* $Id: miniupnpc.h,v 1.41 2015/05/22 10:23:48 nanard Exp $ */ + /* $Id: miniupnpc.h,v 1.23 2011/04/11 08:21:46 nanard Exp $ */ + //upnpDiscover(int delay, const char * multicastif, + // const char * minissdpdsock, int sameport, + // int ipv6, + // int * error); + upcd->devlist = upnpDiscover(2000, NULL, + NULL, 0, + 0, + NULL); +#else +#if MINIUPNPC_API_VERSION >= 6//1.5 2011/03/14 + /* $Id: miniupnpc.h,v 1.21 2011/03/14 13:37:12 nanard Exp $ */ + //upnpDiscover(int delay, const char * multicastif, + // const char * minissdpdsock, int sameport, + // int * error); + upcd->devlist = upnpDiscover(2000, NULL, + NULL, 0, + NULL); +#else +#if MINIUPNPC_API_VERSION >= -4//1.1 2008/09/25 + /* $Id: miniupnpc.h,v 1.20 2011/02/07 16:46:05 nanard Exp $ */ + /* $Id: miniupnpc.h,v 1.18 2008/09/25 18:02:50 nanard Exp $ */ + //upnpDiscover(int delay, const char * multicastif, + // const char * minissdpdsock, int sameport); + upcd->devlist = upnpDiscover(2000, NULL, + NULL, 0); +#else +#if MINIUPNPC_API_VERSION >= -5//1.0 2007/12/19 + /* $Id: miniupnpc.h,v 1.17 2007/12/19 14:58:54 nanard Exp $ */ + //upnpDiscover(int delay, const char * multicastif, + // const char * minissdpdsock); + upcd->devlist = upnpDiscover(2000, NULL, + NULL); +#else +#if MINIUPNPC_API_VERSION >= -6//1.0 2007/10/16 + /* $Id: miniupnpc.h,v 1.15 2007/10/16 15:07:32 nanard Exp $ */ + //LIBSPEC struct UPNPDev * upnpDiscover(int delay, const char * multicastif); + upcd->devlist = upnpDiscover(2000, NULL); +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + /* $Id: miniupnpc.h,v 1.14 2007/10/01 13:42:52 nanard Exp $ */ + /* $Id: miniupnpc.h,v 1.9 2006/09/04 09:30:17 nanard Exp $ */ + //struct UPNPDev * upnpDiscover(int); + upcd->devlist = upnpDiscover(2000); +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version + //2006/09/04 to 2007/10/01 => -7//Start return struct UPNPDev * for upnpDiscover + //2007/10/16 => -6 upnpDiscover + //2007/12/19 => -5 upnpDiscover + //2008/09/25 => -4 upnpDiscover + //2009/04/17 => -3 UPNP_AddPortMapping + //2010/12/09 => -2 //struct IGDdatas_service CIF; + //2011/02/15 => -1 UPNP_AddPortMapping + //2011/03/14 => 6 //Start of MINIUPNPC_API_VERSION +#endif//>=-7 +#endif//>=-6 +#endif//>=-5 +#endif//>=-4 +#endif//>=6 +#endif//>=8 +#endif//>=14 if(upcd->devlist) { @@ -305,12 +373,16 @@ bool upnphandler::start_upnp() std::cerr << std::endl; if (!SetRedirectAndTest(&(config -> urls), &(config->data), - in_addr, in_port1, eport1, eprot1)) + in_addr, in_port1, eport1, eprot1, + NULL /*leaseDuration*/, NULL /*description*/, + 0)) { upnpState = RS_UPNP_S_TCP_FAILED; } else if (!SetRedirectAndTest(&(config -> urls), &(config->data), - in_addr, in_port2, eport2, eprot2)) + in_addr, in_port2, eport2, eprot2, + NULL /*leaseDuration*/, NULL /*description*/, + 0)) { upnpState = RS_UPNP_S_UDP_FAILED; } @@ -323,8 +395,16 @@ bool upnphandler::start_upnp() /* now store the external address */ char externalIPAddress[32]; UPNP_GetExternalIPAddress(config -> urls.controlURL, - config->data.servicetype, - externalIPAddress); +#if MINIUPNPC_API_VERSION >= -2//1.4 2010/12/09 + config->data.first.servicetype, +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + config->data.servicetype, +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version +#endif +#endif + externalIPAddress); sockaddr_clear(&upnp_eaddr); diff --git a/libretroshare/src/upnp/upnputil.c b/libretroshare/src/upnp/upnputil.c index cd7f7da20..65d9a2227 100644 --- a/libretroshare/src/upnp/upnputil.c +++ b/libretroshare/src/upnp/upnputil.c @@ -1,8 +1,27 @@ //this file uses miniupnp +//From https://github.com/miniupnp/miniupnp/blob/master/miniupnpc/upnpc.c #include "upnp/upnputil.h" -/* protofix() checks if protocol is "UDP" or "TCP" +//Define this variable follow the date of used MiniUPnP Library +//#define MINIUPNPC_API_VERSION -7 +#ifndef MINIUPNPC_API_VERSION +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version + //2006/09/04 to 2007/10/01 => -7//Start return struct UPNPDev * for upnpDiscover + //2007/10/16 => -6 upnpDiscover + //2007/12/19 => -5 upnpDiscover + //2008/09/25 => -4 upnpDiscover + //2009/04/17 => -3 UPNP_AddPortMapping + //2010/12/09 => -2 //struct IGDdatas_service CIF; + //2011/02/15 => -1 UPNP_AddPortMapping + //2011/03/14 => 6 //Start of MINIUPNPC_API_VERSION +#endif//>=-7 + +#if MINIUPNPC_API_VERSION >= -4//1.0 2008/02/18 +#include +#endif + +/* protofix() checks if protocol is "UDP" or "TCP" * returns NULL if not */ const char * protofix(const char * proto) { @@ -10,13 +29,13 @@ const char * protofix(const char * proto) static const char proto_udp[4] = { 'U', 'D', 'P', 0}; int i, b; for(i=0, b=1; i<4; i++) - b = b && ( (proto[i] == proto_tcp[i]) - || (proto[i] == (proto_tcp[i] | 32)) ); + b = b && ( (proto[i] == proto_tcp[i]) + || (proto[i] == (proto_tcp[i] | 32)) ); if(b) return proto_tcp; for(i=0, b=1; i<4; i++) b = b && ( (proto[i] == proto_udp[i]) - || (proto[i] == (proto_udp[i] | 32)) ); + || (proto[i] == (proto_udp[i] | 32)) ); if(b) return proto_udp; return 0; @@ -25,42 +44,129 @@ const char * protofix(const char * proto) void DisplayInfos(struct UPNPUrls * urls, struct IGDdatas * data) { - char externalIPAddress[16]; + char externalIPAddress[40]; char connectionType[64]; char status[64]; - char lastconnerror[64]; + char lastconnerr[64]; unsigned int uptime; unsigned int brUp, brDown; - UPNP_GetConnectionTypeInfo(urls->controlURL, - data->servicetype, - connectionType); + time_t timenow, timestarted; + int r; +#if MINIUPNPC_API_VERSION >= -2//1.4 2010/12/09 + const char * servicetype = data->first.servicetype; + const char * servicetype_CIF = data->CIF.servicetype; +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + const char * servicetype = data->servicetype; + const char * servicetype_CIF = data->servicetype_CIF; +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version +#endif//>=-7 +#endif//>=-2 + +#if MINIUPNPC_API_VERSION >= -3//1.0 2009/04/17 + if(UPNP_GetConnectionTypeInfo(urls->controlURL, + servicetype, + connectionType) != UPNPCOMMAND_SUCCESS) +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + UPNP_GetConnectionTypeInfo(urls->controlURL, servicetype, + connectionType); if(connectionType[0]) - printf("Connection Type : %s\n", connectionType); - else +#endif//>=-7 +#endif//>=-3 printf("GetConnectionTypeInfo failed.\n"); - UPNP_GetStatusInfo(urls->controlURL, data->servicetype, status, &uptime, lastconnerror); - printf("Status : %s, uptime=%u LastConnError %s\n", status, uptime, lastconnerror); - UPNP_GetLinkLayerMaxBitRates(urls->controlURL_CIF, data->servicetype_CIF, - &brDown, &brUp); + else + printf("Connection Type : %s\n", connectionType); + +#if MINIUPNPC_API_VERSION >= -4//1.0 2008/02/18 + if(UPNP_GetStatusInfo(urls->controlURL, servicetype, + status, &uptime, lastconnerr) != UPNPCOMMAND_SUCCESS) + printf("GetStatusInfo failed.\n"); + else + printf("Status : %s, uptime=%us, LastConnectionError : %s\n", + status, uptime, lastconnerr); + timenow = time(NULL); + timestarted = timenow - uptime; + printf(" Time started : %s", ctime(×tarted)); +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + UPNP_GetStatusInfo(urls->controlURL, servicetype, + status, &uptime, lastconnerr); + printf("Status : %s, uptime=%u, LastConnectionError : %s\n", + status, uptime, lastconnerr); +#endif//>=-7 +#endif//>=-4 + +#if MINIUPNPC_API_VERSION >= -4//1.0 2008/02/18 + if(UPNP_GetLinkLayerMaxBitRates(urls->controlURL_CIF, servicetype_CIF, + &brDown, &brUp) != UPNPCOMMAND_SUCCESS) { + printf("GetLinkLayerMaxBitRates failed.\n"); + } else { + printf("MaxBitRateDown : %u bps", brDown); + if(brDown >= 1000000) { + printf(" (%u.%u Mbps)", brDown / 1000000, (brDown / 100000) % 10); + } else if(brDown >= 1000) { + printf(" (%u Kbps)", brDown / 1000); + } + printf(" MaxBitRateUp %u bps", brUp); + if(brUp >= 1000000) { + printf(" (%u.%u Mbps)", brUp / 1000000, (brUp / 100000) % 10); + } else if(brUp >= 1000) { + printf(" (%u Kbps)", brUp / 1000); + } + printf("\n"); + } +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + UPNP_GetLinkLayerMaxBitRates(urls->controlURL_CIF, + servicetype_CIF, + &brDown, &brUp); printf("MaxBitRateDown : %u bps MaxBitRateUp %u bps\n", brDown, brUp); +#endif//>=-7 +#endif//>=-4 + +#if MINIUPNPC_API_VERSION >= -5//1.0 2007/12/19 + r = UPNP_GetExternalIPAddress(urls->controlURL, + servicetype, + externalIPAddress); + if(r != UPNPCOMMAND_SUCCESS) { + printf("GetExternalIPAddress failed. (errorcode=%d)\n", r); + } else { + printf("ExternalIPAddress = %s\n", externalIPAddress); + } +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 UPNP_GetExternalIPAddress(urls->controlURL, - data->servicetype, - externalIPAddress); + servicetype, + externalIPAddress); if(externalIPAddress[0]) printf("ExternalIPAddress = %s\n", externalIPAddress); else printf("GetExternalIPAddress failed.\n"); +#endif//>=-7 +#endif//>=-4 } void GetConnectionStatus(struct UPNPUrls * urls, - struct IGDdatas * data) + struct IGDdatas * data) { unsigned int bytessent, bytesreceived, packetsreceived, packetssent; +#if MINIUPNPC_API_VERSION >= -2//1.4 2010/12/09 + const char * servicetype_CIF = data->CIF.servicetype; +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + const char * servicetype_CIF = data->servicetype_CIF; +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version +#endif//>=-7 +#endif//>=-2 + DisplayInfos(urls, data); - bytessent = UPNP_GetTotalBytesSent(urls->controlURL_CIF, data->servicetype_CIF); - bytesreceived = UPNP_GetTotalBytesReceived(urls->controlURL_CIF, data->servicetype_CIF); - packetssent = UPNP_GetTotalPacketsSent(urls->controlURL_CIF, data->servicetype_CIF); - packetsreceived = UPNP_GetTotalPacketsReceived(urls->controlURL_CIF, data->servicetype_CIF); + bytessent = UPNP_GetTotalBytesSent(urls->controlURL_CIF, servicetype_CIF); + bytesreceived = UPNP_GetTotalBytesReceived(urls->controlURL_CIF, servicetype_CIF); + packetssent = UPNP_GetTotalPacketsSent(urls->controlURL_CIF, servicetype_CIF); + packetsreceived = UPNP_GetTotalPacketsReceived(urls->controlURL_CIF, servicetype_CIF); printf("Bytes: Sent: %8u\tRecv: %8u\n", bytessent, bytesreceived); printf("Packets: Sent: %8u\tRecv: %8u\n", packetssent, packetsreceived); } @@ -71,7 +177,7 @@ void ListRedirections(struct UPNPUrls * urls, int r; int i = 0; char index[6]; - char intClient[16]; + char intClient[40]; char intPort[6]; char extPort[6]; char protocol[4]; @@ -79,6 +185,16 @@ void ListRedirections(struct UPNPUrls * urls, char enabled[6]; char rHost[64]; char duration[16]; +#if MINIUPNPC_API_VERSION >= -2//1.4 2010/12/09 + const char * servicetype = data->first.servicetype; +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + const char * servicetype = data->servicetype; +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version +#endif//>=-7 +#endif//>=-2 + /*unsigned int num=0; UPNP_GetPortMappingNumberOfEntries(urls->controlURL, data->servicetype, &num); printf("PortMappingNumberOfEntries : %u\n", num);*/ @@ -87,17 +203,22 @@ void ListRedirections(struct UPNPUrls * urls, rHost[0] = '\0'; enabled[0] = '\0'; duration[0] = '\0'; desc[0] = '\0'; extPort[0] = '\0'; intPort[0] = '\0'; intClient[0] = '\0'; - r = UPNP_GetGenericPortMappingEntry(urls->controlURL, data->servicetype, - index, - extPort, intClient, intPort, - protocol, desc, enabled, - rHost, duration); + r = UPNP_GetGenericPortMappingEntry(urls->controlURL, + servicetype, + index, + extPort, intClient, intPort, + protocol, desc, enabled, + rHost, duration); if(r==0) - printf("%02d - %s %s->%s:%s\tenabled=%s leaseDuration=%s\n" + printf("%02d - %s %5s->%s:%-5s" + "\tenabled=%s leaseDuration=%s\n" " desc='%s' rHost='%s'\n", i, protocol, extPort, intClient, intPort, - enabled, duration, - desc, rHost); + enabled, duration, + desc, rHost); + else + printf("GetGenericPortMappingEntry() returned %d (%s)\n", + r, strupnperror(r)); i++; } while(r==0); } @@ -109,17 +230,30 @@ void ListRedirections(struct UPNPUrls * urls, * 4 - get this port mapping from the IGD */ int SetRedirectAndTest(struct UPNPUrls * urls, struct IGDdatas * data, - const char * iaddr, - const char * iport, - const char * eport, - const char * proto) + const char * iaddr, + const char * iport, + const char * eport, + const char * proto, + const char * leaseDuration, + const char * description, + int addAny) { - char externalIPAddress[16]; - char intClient[16]; + char externalIPAddress[40]; + char intClient[40]; char intPort[6]; -// char leaseDuration[] = "3600"; /* 60 mins */ + char reservedPort[6]; + char duration[16]; int r; int ok = 1; +#if MINIUPNPC_API_VERSION >= -2//1.4 2010/12/09 + const char * servicetype = data->first.servicetype; +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + const char * servicetype = data->servicetype; +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version +#endif +#endif if(!iaddr || !iport || !eport || !proto) { @@ -132,56 +266,166 @@ int SetRedirectAndTest(struct UPNPUrls * urls, fprintf(stderr, "invalid protocol\n"); return 0; } - + +#if MINIUPNPC_API_VERSION >= -5//1.0 2007/12/19 + r = UPNP_GetExternalIPAddress(urls->controlURL, + servicetype, + externalIPAddress); + if(r != UPNPCOMMAND_SUCCESS) + printf("GetExternalIPAddress failed. (errorcode=%d)\n", r); + else + printf("ExternalIPAddress = %s\n", externalIPAddress); +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 UPNP_GetExternalIPAddress(urls->controlURL, - data->servicetype, - externalIPAddress); + servicetype, + externalIPAddress); if(externalIPAddress[0]) printf("ExternalIPAddress = %s\n", externalIPAddress); else printf("GetExternalIPAddress failed.\n"); +#endif//>=-7 +#endif//>=-4 -// Unix at the moment! -#if MINIUPNPC_VERSION >= 13 - /* Starting from miniupnpc version 1.2, lease duration parameter is gone */ - r = UPNP_AddPortMapping(urls->controlURL, data->servicetype, - eport, iport, iaddr, 0, proto, NULL); -#else - #if MINIUPNPC_VERSION >= 12 - /* Starting from miniupnpc version 1.2, lease duration parameter is gone */ - r = UPNP_AddPortMapping(urls->controlURL, data->servicetype, - eport, iport, iaddr, 0, proto); - #else - /* The lease parameter is also gone in minupnpc 1.0 */ - r = UPNP_AddPortMapping(urls->controlURL, data->servicetype, - eport, iport, iaddr,0, 0, proto); - #endif +#if MINIUPNPC_API_VERSION >= 11 + if (addAny) { + r = UPNP_AddAnyPortMapping(urls->controlURL, data->first.servicetype, + eport, iport, iaddr, description, + proto, 0, leaseDuration, reservedPort); + if(r==UPNPCOMMAND_SUCCESS) + eport = reservedPort; + else + printf("AddAnyPortMapping(%s, %s, %s) failed with code %d (%s)\n", + eport, iport, iaddr, r, strupnperror(r)); + } else #endif - -// r = UPNP_AddPortMapping(urls->controlURL, data->servicetype, -// eport, iport, iaddr, 0, leaseDuration, proto); - -// r = UPNP_AddPortMapping(urls->controlURL, data->servicetype, -// eport, iport, iaddr, 0, proto); - if(r==0) { - printf("AddPortMapping(%s, %s, %s) failed\n", eport, iport, iaddr); - //this seems to trigger for unknown reasons sometimes. - //rely on Checking it afterwards... - //should check IP address then! - //ok = 0; +#if MINIUPNPC_API_VERSION >= -1 + /* $Id: upnpcommands.h,v 1.30 2015/07/15 12:21:28 nanard Exp $ */ + /* $Id: upnpcommands.h,v 1.20 2011/02/15 11:13:22 nanard Exp $ */ + //UPNP_AddPortMapping(const char * controlURL, const char * servicetype, + // const char * extPort, + // const char * inPort, + // const char * inClient, + // const char * desc, + // const char * proto, + // const char * remoteHost, + // const char * leaseDuration); + r = UPNP_AddPortMapping(urls->controlURL, servicetype, + eport, iport, iaddr, NULL, proto, NULL, NULL); +#else +#if MINIUPNPC_API_VERSION >= -3 //1.0 2009/04/17 + /* $Id: upnpcommands.h,v 1.18 2010/06/09 10:59:09 nanard Exp $ */ + /* $Id: upnpcommands.h,v 1.17 2009/04/17 21:21:19 nanard Exp $ */ + //UPNP_AddPortMapping(const char * controlURL, const char * servicetype, + // const char * extPort, + // const char * inPort, + // const char * inClient, + // const char * desc, + // const char * proto, + // const char * remoteHost); + r = UPNP_AddPortMapping(urls->controlURL, servicetype, + eport, iport, iaddr, NULL, proto, NULL); +#else +#if MINIUPNPC_API_VERSION >= -7//Before 1.0 + /* $Id: upnpcommands.h,v 1.14 2008/09/25 18:02:50 nanard Exp $ */ + /* $Id: upnpcommands.h,v 1.7 2006/07/09 12:00:54 nanard Exp $ */ + //UPNP_AddPortMapping(const char * controlURL, const char * servicetype, + // const char * extPort, + // const char * inPort, + // const char * inClient, + // const char * desc, + // const char * proto); + r = UPNP_AddPortMapping(urls->controlURL, servicetype, + eport, iport, iaddr, NULL, proto); +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version +#endif//>=-7 +#endif//>=-3 +#endif//>=-1 + +#if MINIUPNPC_API_VERSION >= -5//2007/12/19 + if(r!=UPNPCOMMAND_SUCCESS){ +#else +#if MINIUPNPC_API_VERSION >= -7//Before 1.0 + if(r==0){ +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version +#endif//>=-7 +#endif//>=-5 + printf("AddPortMapping(%s, %s, %s) failed and returns %d\n", eport, iport, iaddr, r); + //this seems to trigger for unknown reasons sometimes. + //rely on Checking it afterwards... + //should check IP address then! + ok = 0; + } } +#if MINIUPNPC_API_VERSION >= 10//1.0 2006/09/04 + /* $Id: upnpcommands.h,v 1.30 2015/07/15 12:21:28 nanard Exp $ */ + /* $Id: upnpcommands.h,v 1.26 2014/01/31 13:18:26 nanard Exp $ */ + //UPNP_GetSpecificPortMappingEntry(const char * controlURL, + // const char * servicetype, + // const char * extPort, + // const char * proto, + // const char * remoteHost, + // char * intClient, + // char * intPort, + // char * desc, + // char * enabled, + // char * leaseDuration); + r = UPNP_GetSpecificPortMappingEntry(urls->controlURL, + data->first.servicetype, + eport, proto, NULL/*remoteHost*/, + intClient, intPort, NULL/*desc*/, + NULL/*enabled*/, duration); +#else +#if MINIUPNPC_API_VERSION >= 6//1.0 2006/09/04 + /* $Id: upnpcommands.h,v 1.24 2012/03/05 19:42:47 nanard Exp $ */ + /* $Id: upnpcommands.h,v 1.22 2011/03/14 13:36:01 nanard Exp $ */ + //UPNP_GetSpecificPortMappingEntry(const char * controlURL, + // const char * servicetype, + // const char * extPort, + // const char * proto, + // char * intClient, + // char * intPort, + // char * desc, + // char * enabled, + // char * leaseDuration); + r = UPNP_GetSpecificPortMappingEntry(urls->controlURL, + data->first.servicetype, + eport, proto, + intClient, intPort, NULL/*desc*/, + NULL/*enabled*/, duration); +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + /* $Id: upnpcommands.h,v 1.20 2011/02/15 11:13:22 nanard Exp $ */ + /* $Id: upnpcommands.h,v 1.7 2006/07/09 12:00:54 nanard Exp $ */ + //UPNP_GetSpecificPortMappingEntry(const char * controlURL, + // const char * servicetype, + // const char * extPort, + // const char * proto, + // char * intClient, + // char * intPort); UPNP_GetSpecificPortMappingEntry(urls->controlURL, - data->servicetype, - eport, proto, - intClient, intPort); - if(intClient[0]) - printf("InternalIP:Port = %s:%s\n", intClient, intPort); - else - { - printf("GetSpecificPortMappingEntry failed.\n"); + servicetype, + eport, + proto, + intClient, + intPort); + if(intClient[0]) r = UPNPCOMMAND_SUCCESS; +#endif//>=-7 +#endif//>=6 +#endif//>=10 + + if(r!=UPNPCOMMAND_SUCCESS) { + printf("GetSpecificPortMappingEntry() failed with code %d (%s)\n", + r, strupnperror(r)); ok = 0; + } else if(intClient[0]) { + printf("InternalIP:Port = %s:%s\n", intClient, intPort); + printf("external %s:%s %s is redirected to internal %s:%s (duration=%s)\n", + externalIPAddress, eport, proto, intClient, intPort, duration); } if ((strcmp(iaddr, intClient) != 0) || (strcmp(iport, intPort) != 0)) @@ -194,9 +438,6 @@ int SetRedirectAndTest(struct UPNPUrls * urls, ok = 0; } - printf("external %s:%s is redirected to internal %s:%s\n", - externalIPAddress, eport, intClient, intPort); - if (ok) { printf("uPnP Forward/Mapping Succeeded\n"); @@ -210,14 +451,17 @@ int SetRedirectAndTest(struct UPNPUrls * urls, } int TestRedirect(struct UPNPUrls * urls, - struct IGDdatas * data, - const char * iaddr, - const char * iport, - const char * eport, - const char * proto) + struct IGDdatas * data, + const char * iaddr, + const char * iport, + const char * eport, + const char * proto) { - char intClient[16]; + char externalIPAddress[40]; + char intClient[40]; char intPort[6]; + char duration[16]; + int r = 0; int ok = 1; if(!iaddr || !iport || !eport || !proto) @@ -231,21 +475,83 @@ int TestRedirect(struct UPNPUrls * urls, fprintf(stderr, "invalid protocol\n"); return 0; } - - UPNP_GetSpecificPortMappingEntry(urls->controlURL, - data->servicetype, - eport, proto, - intClient, intPort); - if(intClient[0]) - printf("uPnP Check: InternalIP:Port = %s:%s\n", intClient, intPort); - else - { - printf("GetSpecificPortMappingEntry failed.\n"); - ok = 0; - } - printf("uPnP Check: External port %s is redirected to internal %s:%s\n", - eport, intClient, intPort); +#if MINIUPNPC_API_VERSION >= -2//1.4 2010/12/09 + const char * servicetype = data->first.servicetype; +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + const char * servicetype = data->servicetype; +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version +#endif +#endif + +#if MINIUPNPC_API_VERSION >= 10//1.0 2006/09/04 + /* $Id: upnpcommands.h,v 1.30 2015/07/15 12:21:28 nanard Exp $ */ + /* $Id: upnpcommands.h,v 1.26 2014/01/31 13:18:26 nanard Exp $ */ + //UPNP_GetSpecificPortMappingEntry(const char * controlURL, + // const char * servicetype, + // const char * extPort, + // const char * proto, + // const char * remoteHost, + // char * intClient, + // char * intPort, + // char * desc, + // char * enabled, + // char * leaseDuration); + r = UPNP_GetSpecificPortMappingEntry(urls->controlURL, + servicetype, + eport, proto, NULL/*remoteHost*/, + intClient, intPort, NULL/*desc*/, + NULL/*enabled*/, duration); +#else +#if MINIUPNPC_API_VERSION >= 6//1.0 2006/09/04 + /* $Id: upnpcommands.h,v 1.24 2012/03/05 19:42:47 nanard Exp $ */ + /* $Id: upnpcommands.h,v 1.22 2011/03/14 13:36:01 nanard Exp $ */ + //UPNP_GetSpecificPortMappingEntry(const char * controlURL, + // const char * servicetype, + // const char * extPort, + // const char * proto, + // char * intClient, + // char * intPort, + // char * desc, + // char * enabled, + // char * leaseDuration); + r = UPNP_GetSpecificPortMappingEntry(urls->controlURL, + servicetype, + eport, proto, + intClient, intPort, NULL/*desc*/, + NULL/*enabled*/, duration); +#else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 + /* $Id: upnpcommands.h,v 1.20 2011/02/15 11:13:22 nanard Exp $ */ + /* $Id: upnpcommands.h,v 1.7 2006/07/09 12:00:54 nanard Exp $ */ + //UPNP_GetSpecificPortMappingEntry(const char * controlURL, + // const char * servicetype, + // const char * extPort, + // const char * proto, + // char * intClient, + // char * intPort); + UPNP_GetSpecificPortMappingEntry(urls->controlURL, + servicetype, + eport, + proto, + intClient, + intPort); + if(intClient[0]) r = UPNPCOMMAND_SUCCESS; +#endif//>=-7 +#endif//>=6 +#endif//>=10 + + if(r!=UPNPCOMMAND_SUCCESS) { + printf("GetSpecificPortMappingEntry() failed with code %d (%s)\n", + r, strupnperror(r)); + ok = 0; + } else if(intClient[0]) { + printf("uPnP Check: InternalIP:Port = %s:%s\n", intClient, intPort); + printf("external %s:%s %s is redirected to internal %s:%s (duration=%s)\n", + externalIPAddress, eport, proto, intClient, intPort, duration); + } if (ok) { @@ -259,13 +565,11 @@ int TestRedirect(struct UPNPUrls * urls, return ok; } - - int RemoveRedirect(struct UPNPUrls * urls, struct IGDdatas * data, - const char * eport, - const char * proto) + const char * eport, + const char * proto) { if(!proto || !eport) { @@ -278,11 +582,19 @@ RemoveRedirect(struct UPNPUrls * urls, fprintf(stderr, "protocol invalid\n"); return 0; } -#if MINIUPNPC_VERSION >= 13 +#if MINIUPNPC_API_VERSION >= -2//1.4 2010/12/09 + UPNP_DeletePortMapping(urls->controlURL, data->first.servicetype, eport, proto, NULL); +#else +#if MINIUPNPC_API_VERSION >= -3//1.3 2009/04/17 UPNP_DeletePortMapping(urls->controlURL, data->servicetype, eport, proto, NULL); #else +#if MINIUPNPC_API_VERSION >= -7//1.0 2006/09/04 UPNP_DeletePortMapping(urls->controlURL, data->servicetype, eport, proto); -#endif +#else +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version +#endif//>= -7 +#endif//>= -3 +#endif//>= -2 return 1; } diff --git a/libretroshare/src/upnp/upnputil.h b/libretroshare/src/upnp/upnputil.h index b1bfe6e51..458923f98 100644 --- a/libretroshare/src/upnp/upnputil.h +++ b/libretroshare/src/upnp/upnputil.h @@ -20,6 +20,7 @@ #include #include #include +#include /* Ensure linking names are okay on OSX platform. (C interface) */ @@ -41,11 +42,14 @@ void ListRedirections(struct UPNPUrls * urls, struct IGDdatas * data); int SetRedirectAndTest(struct UPNPUrls * urls, - struct IGDdatas * data, - const char * iaddr, - const char * iport, - const char * eport, - const char * proto); + struct IGDdatas * data, + const char * iaddr, + const char * iport, + const char * eport, + const char * proto, + const char *leaseDuration, + const char *description, + int addAny); int TestRedirect(struct UPNPUrls * urls, struct IGDdatas * data, From 3c9774d3de38845873ccd0a38131abe85727a646 Mon Sep 17 00:00:00 2001 From: Phenom Date: Thu, 24 Sep 2015 01:24:48 +0200 Subject: [PATCH 08/11] Fix some PreProcessor errors for MiniUPnP and LibAVUtil. --- libretroshare/src/upnp/upnputil.c | 14 -------------- libretroshare/src/upnp/upnputil.h | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/libretroshare/src/upnp/upnputil.c b/libretroshare/src/upnp/upnputil.c index 65d9a2227..448a15c85 100644 --- a/libretroshare/src/upnp/upnputil.c +++ b/libretroshare/src/upnp/upnputil.c @@ -3,20 +3,6 @@ #include "upnp/upnputil.h" -//Define this variable follow the date of used MiniUPnP Library -//#define MINIUPNPC_API_VERSION -7 -#ifndef MINIUPNPC_API_VERSION -#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version - //2006/09/04 to 2007/10/01 => -7//Start return struct UPNPDev * for upnpDiscover - //2007/10/16 => -6 upnpDiscover - //2007/12/19 => -5 upnpDiscover - //2008/09/25 => -4 upnpDiscover - //2009/04/17 => -3 UPNP_AddPortMapping - //2010/12/09 => -2 //struct IGDdatas_service CIF; - //2011/02/15 => -1 UPNP_AddPortMapping - //2011/03/14 => 6 //Start of MINIUPNPC_API_VERSION -#endif//>=-7 - #if MINIUPNPC_API_VERSION >= -4//1.0 2008/02/18 #include #endif diff --git a/libretroshare/src/upnp/upnputil.h b/libretroshare/src/upnp/upnputil.h index 458923f98..99ec61f4f 100644 --- a/libretroshare/src/upnp/upnputil.h +++ b/libretroshare/src/upnp/upnputil.h @@ -22,6 +22,20 @@ #include #include +//Define this variable follow the date of used MiniUPnP Library +//#define MINIUPNPC_API_VERSION -3 +#ifndef MINIUPNPC_API_VERSION +#error MINIUPNPC_API_VERSION is not defined. You may define one follow miniupnpc library version + //2006/09/04 to 2007/10/01 => -7//Start return struct UPNPDev * for upnpDiscover + //2007/10/16 => -6 upnpDiscover + //2007/12/19 => -5 upnpDiscover + //2008/09/25 => -4 upnpDiscover + //2009/04/17 => -3 UPNP_AddPortMapping + //2010/12/09 => -2 //struct IGDdatas_service CIF; + //2011/02/15 => -1 UPNP_AddPortMapping + //2011/03/14 => 6 //Start of MINIUPNPC_API_VERSION +#endif//>=-7 + /* Ensure linking names are okay on OSX platform. (C interface) */ #ifdef __cplusplus From 340e78f0640e7e5df5af970e4372ed36477e3836 Mon Sep 17 00:00:00 2001 From: Phenom Date: Thu, 24 Sep 2015 15:51:14 +0200 Subject: [PATCH 09/11] Fix MSys 32b depends and Add a specific MSys2 Makefile to compile missing libs. --- msys2_build_libs/Makefile | 41 +++++++++++++++++++++++++++++++ plugins/FeedReader/FeedReader.pro | 4 +++ retroshare.pri | 11 +++++++-- 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100755 msys2_build_libs/Makefile diff --git a/msys2_build_libs/Makefile b/msys2_build_libs/Makefile new file mode 100755 index 000000000..1b818d62d --- /dev/null +++ b/msys2_build_libs/Makefile @@ -0,0 +1,41 @@ +TCL_VERSION=8.6.2 +SQLCIPHER_VERSION=2.2.1 + +all: dirs sqlcipher copylibs + +dirs: + mkdir -p libs/include + mkdir -p libs/lib + mkdir -p libs/bin + +tcl$(TCL_VERSION)-src.tar.gz: + curl.exe -L http://prdownloads.sourceforge.net/tcl/tcl$(TCL_VERSION)-src.tar.gz -o tcl$(TCL_VERSION)-src.tar.gz + +sqlcipher-$(SQLCIPHER_VERSION).tar.gz: + curl.exe -L -k https://github.com/sqlcipher/sqlcipher/archive/v$(SQLCIPHER_VERSION).tar.gz -o sqlcipher-$(SQLCIPHER_VERSION).tar.gz + +sqlcipher: tcl$(TCL_VERSION)-src.tar.gz sqlcipher-$(SQLCIPHER_VERSION).tar.gz + # tcl + tar xvf tcl$(TCL_VERSION)-src.tar.gz + mkdir -p tcl$(TCL_VERSION)/build + cd tcl$(TCL_VERSION)/build && ../win/configure + cd tcl$(TCL_VERSION)/build && make + #sqlcipher + tar xvf sqlcipher-$(SQLCIPHER_VERSION).tar.gz + cd sqlcipher-$(SQLCIPHER_VERSION) && ln -s ../tcl$(TCL_VERSION)/build/tclsh86.exe tclsh + mkdir -p tcl$(TCL_VERSION)/lib + ln -s `pwd`/tcl$(TCL_VERSION)/library `pwd`/tcl$(TCL_VERSION)/lib/tcl8.6 + cd sqlcipher-$(SQLCIPHER_VERSION) && PATH=$$PATH:`pwd`/../tcl$(TCL_VERSION)/build && LIBS="-L`pwd`/../libs/lib -lgdi32 $$LIBS" && export LIBS && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../libs/include -I`pwd`/../tcl$(TCL_VERSION)/generic" LDFLAGS="-L`pwd`/../libs/lib -lcrypto -lgdi32" --with-tcl="`pwd`/../tcl$(TCL_VERSION)/build" && make install prefix="`pwd`/install" + cp -r sqlcipher-$(SQLCIPHER_VERSION)/install/include/* libs/include/ + cp sqlcipher-$(SQLCIPHER_VERSION)/install/lib/libsqlcipher.a libs/lib/ + cp sqlcipher-$(SQLCIPHER_VERSION)/install/bin/sqlcipher.exe libs/bin/ + rm -r -f sqlcipher-$(SQLCIPHER_VERSION) + rm -r -f tcl$(TCL_VERSION) + touch sqlcipher + +copylibs: + read -p "Do you want to copy libs to retroshare? (yes|no)" answer; \ + if [ "$$answer" = "yes" ] ; then \ + cp -r libs ../../ ; \ + fi + diff --git a/plugins/FeedReader/FeedReader.pro b/plugins/FeedReader/FeedReader.pro index 34fb2f794..179e83d4c 100644 --- a/plugins/FeedReader/FeedReader.pro +++ b/plugins/FeedReader/FeedReader.pro @@ -91,6 +91,10 @@ win32 { #Have to reorder libs, else got /libs/lib/libcrypto.a(bio_lib.o):bio_lib.c:(.text+0x0): multiple definition of `BIO_new' LIBS = -lcurl -lxml2 -lz -lxslt -lws2_32 -lwldap32 -lssl -lcrypto -lgdi32 $${LIBS} + exists(C:/msys32/mingw32/include) { + message(msys2 xml2 is installed.) + INC_DIR += "C:/msys32/mingw32/include/libxml2" + } exists(C:/msys64/mingw32/include) { message(msys2 xml2 is installed.) INC_DIR += "C:/msys64/mingw32/include/libxml2" diff --git a/retroshare.pri b/retroshare.pri index 8a1f5fa3e..5359c8230 100644 --- a/retroshare.pri +++ b/retroshare.pri @@ -13,14 +13,21 @@ unix { win32 { message(***retroshare.pri:Win32) exists($$PWD/../libs) { - message(Get pre-compiled libraries.) + message(Get pre-compiled libraries.) isEmpty(PREFIX) { PREFIX = "$$PWD/../libs" } isEmpty(BIN_DIR) { BIN_DIR = "$${PREFIX}/bin" } isEmpty(INC_DIR) { INC_DIR = "$${PREFIX}/include" } isEmpty(LIB_DIR) { LIB_DIR = "$${PREFIX}/lib" } } + exists(C:/msys32/mingw32/include) { + message(msys2 32b is installed.) + PREFIX_MSYS2 = "C:/msys32/mingw32" + BIN_DIR += "$${PREFIX_MSYS2}/bin" + INC_DIR += "$${PREFIX_MSYS2}/include" + LIB_DIR += "$${PREFIX_MSYS2}/lib" + } exists(C:/msys64/mingw32/include) { - message(msys2 is installed.) + message(msys2 64b is installed.) PREFIX_MSYS2 = "C:/msys64/mingw32" BIN_DIR += "$${PREFIX_MSYS2}/bin" INC_DIR += "$${PREFIX_MSYS2}/include" From 686c2377d3483867340bb891e9e926f2dfde91bd Mon Sep 17 00:00:00 2001 From: Phenom Date: Thu, 24 Sep 2015 15:55:44 +0200 Subject: [PATCH 10/11] Add MSys2 Install Guide --- WindowsMSys2_InstallGuide.txt | 89 +++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 WindowsMSys2_InstallGuide.txt diff --git a/WindowsMSys2_InstallGuide.txt b/WindowsMSys2_InstallGuide.txt new file mode 100644 index 000000000..ded6a1420 --- /dev/null +++ b/WindowsMSys2_InstallGuide.txt @@ -0,0 +1,89 @@ +############################# +###--- QT INSTALLATION ---### +############################# + +###Install Qt via: +http://www.qt.io/download/ + +###Use default options. +###Add to the PATH environment variable. +;C:\Qt\5.5\mingw492_32\bin;C:\Qt\Tools\mingw492_32\bin;C:\Qt\Tools\mingw492_32\opt\bin + +###Depends on wich version of Qt you use. + +###Change build-all-mingw32make.bat with these values too if you don't use MSys2. + + +############################### +###---MSYS2 INSTALLATION ---### +############################### + +###Choose your MSYS2 installer here: +http://msys2.github.io/ + +###Follow install procedure. +###Don't forget to sync & Update pacman. +pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime + +###Restart console +pacman -Su + +###Install all default programms +pacman -S base-devel git mercurial cvs wget p7zip gcc perl ruby python2 + +###Choose only w64-i686 if you want only compilation in 32b architecture. +pacman -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain + +###Install other binutils: +pacman -S mingw-w64-i686-miniupnpc mingw-w64-x86_64-miniupnpc +pacman -S mingw-w64-i686-sqlite3 mingw-w64-x86_64-sqlite3 +pacman -S mingw-w64-i686-speex mingw-w64-x86_64-speex +pacman -S mingw-w64-i686-opencv mingw-w64-x86_64-opencv +pacman -S mingw-w64-i686-ffmpeg mingw-w64-x86_64-ffmpeg +pacman -S mingw-w64-i686-libmicrohttpd mingw-w64-x86_64-libmicrohttpd +pacman -S mingw-w64-i686-libxslt mingw-w64-x86_64-libxslt + +### Add MSYS2 to PATH environment variable depends your windows +;C:\msys64\mingw32\bin +;C:\msys32\mingw32\bin + + +############################## +###--- GIT INSTALLATION ---### +############################## + +###Install Git Gui or other client: +https://git-scm.com/download/win + +###Create a new directory named: +C:\Development\GIT + +###Right-click on it and choose: +Git Bash Here + +###Paste this text on git console: +git clone https://github.com/RetroShare/RetroShare.git + + +########################### +###--- LAST SETTINGS ---### +########################### + +###In QtCreator Option Git add its path: +C:\Program Files\Git\bin +### and select "Pull" with "Rebase" + + +###Open an MSys2 32|64 shell +###Move to build_scripts: +cd /c/Development/GIT/RetroShare/msys2_build_libs/ + +###Compil missing library +make + +###You can now compile RS into Qt Creator + +###For using, and debugging Plugins, you can use SymLinker (http://amd989.github.io/Symlinker/) to link +### the files in \build-RetroShare-Desktop_Qt_X_Y_Z_MinGW_32bit-Debug\plugins\PluginName\debug\*.dll +### to %appdata%\RetroShare\extensions6 + From f0cf561ad396c640c5a8a647d7605ecdbc2be1db Mon Sep 17 00:00:00 2001 From: Phenom Date: Sun, 4 Oct 2015 14:38:33 +0200 Subject: [PATCH 11/11] Remove Time between display frame in VOIP But let message to take care of CPU usage at this point... --- plugins/VOIP/gui/VideoProcessor.cpp | 10 +++++----- plugins/VOIP/gui/VideoProcessor.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/VOIP/gui/VideoProcessor.cpp b/plugins/VOIP/gui/VideoProcessor.cpp index 9604e8cde..68d0adbd6 100644 --- a/plugins/VOIP/gui/VideoProcessor.cpp +++ b/plugins/VOIP/gui/VideoProcessor.cpp @@ -105,7 +105,7 @@ void av_frame_free(AVFrame **frame) VideoProcessor::VideoProcessor() :_encoded_frame_size(640,480) , vpMtx("VideoProcessor") { - _lastTimeToShowFrame = time(NULL); + //_lastTimeToShowFrame = time(NULL); _decoded_output_device = NULL ; //_encoding_current_codec = VIDEO_PROCESSOR_CODEC_ID_JPEG_VIDEO; @@ -273,12 +273,12 @@ void VideoProcessor::receiveEncodedData(const RsVOIPDataChunk& chunk) } if(_decoded_output_device) - if (time(NULL) > _lastTimeToShowFrame) - { +// if (time(NULL) > _lastTimeToShowFrame) +// { _decoded_output_device->showFrame(img) ; - _lastTimeToShowFrame = time(NULL) ;//+ 1000/25; +// _lastTimeToShowFrame = time(NULL) ;//+ 1000/25; #warning "\plugins\VOIP\gui\VideoProcessor.cpp:210 TODO: Get CPU usage to pass image." - } +// } } void VideoProcessor::setMaximumBandwidth(uint32_t bytes_per_sec) diff --git a/plugins/VOIP/gui/VideoProcessor.h b/plugins/VOIP/gui/VideoProcessor.h index c8c45f43e..4e47b2c29 100644 --- a/plugins/VOIP/gui/VideoProcessor.h +++ b/plugins/VOIP/gui/VideoProcessor.h @@ -102,7 +102,7 @@ class VideoProcessor private: QVideoOutputDevice *_decoded_output_device ; std::list _decoded_image_queue ; - time_t _lastTimeToShowFrame ; + //time_t _lastTimeToShowFrame ; // ===================================================================================== // =------------------------------------ ENCODING -------------------------------------=