mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
Merge pull request #86 from PhenomRetroShare/Fix_Win7_32bCompilationFromScratch
Fix Windows 7 32b Compilation from scratch.
This commit is contained in:
commit
c41f98cb4c
11
Start_RetroShare-Gui_Debug.bat
Executable file
11
Start_RetroShare-Gui_Debug.bat
Executable file
@ -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
|
89
WindowsMSys2_InstallGuide.txt
Normal file
89
WindowsMSys2_InstallGuide.txt
Normal file
@ -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
|
||||
|
137
build-all-mingw32make.bat
Normal file → Executable file
137
build-all-mingw32make.bat
Normal file → Executable file
@ -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
|
@ -24,7 +24,7 @@ unix {
|
||||
|
||||
win32{
|
||||
DEFINES *= WINDOWS_SYS
|
||||
INCLUDEPATH += $$PWD/../../../libs/include
|
||||
INCLUDEPATH += . $$INC_DIR
|
||||
}
|
||||
|
||||
libmicrohttpd{
|
||||
|
@ -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
|
||||
|
||||
@ -253,10 +252,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 ##########################################
|
||||
|
@ -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)
|
||||
{
|
||||
@ -312,12 +380,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;
|
||||
}
|
||||
@ -330,8 +402,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);
|
||||
|
||||
|
@ -1,8 +1,13 @@
|
||||
//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"
|
||||
#if MINIUPNPC_API_VERSION >= -4//1.0 2008/02/18
|
||||
#include <time.h>
|
||||
#endif
|
||||
|
||||
/* protofix() checks if protocol is "UDP" or "TCP"
|
||||
* returns NULL if not */
|
||||
const char * protofix(const char * proto)
|
||||
{
|
||||
@ -10,13 +15,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 +30,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 +163,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 +171,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 +189,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 +216,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 +252,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 +424,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 +437,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 +461,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 +551,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 +568,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;
|
||||
}
|
||||
|
@ -17,9 +17,24 @@
|
||||
#include <winsock2.h>
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
#include <miniwget.h>
|
||||
#include <miniupnpc.h>
|
||||
#include <upnpcommands.h>
|
||||
#include <miniupnpc/miniwget.h>
|
||||
#include <miniupnpc/miniupnpc.h>
|
||||
#include <miniupnpc/upnpcommands.h>
|
||||
#include <miniupnpc/upnperrors.h>
|
||||
|
||||
//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) */
|
||||
|
||||
@ -41,11 +56,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,
|
||||
|
41
msys2_build_libs/Makefile
Executable file
41
msys2_build_libs/Makefile
Executable file
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -89,7 +89,18 @@ 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}
|
||||
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"
|
||||
}
|
||||
DEPENDPATH += . $$INC_DIR
|
||||
INCLUDEPATH += . $$INC_DIR
|
||||
}
|
||||
|
||||
openbsd-* {
|
||||
|
@ -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)
|
||||
|
@ -102,6 +102,7 @@ class VideoProcessor
|
||||
private:
|
||||
QVideoOutputDevice *_decoded_output_device ;
|
||||
std::list<QImage> _decoded_image_queue ;
|
||||
//time_t _lastTimeToShowFrame ;
|
||||
|
||||
// =====================================================================================
|
||||
// =------------------------------------ ENCODING -------------------------------------=
|
||||
|
@ -174,13 +174,12 @@ win32 {
|
||||
#LIBS += -L"D/Qt/2009.03/qt/plugins/imageformats"
|
||||
#QTPLUGIN += qjpeg
|
||||
|
||||
LIBS_DIR = $$PWD/../../../libs
|
||||
|
||||
LIBS += -L"$$LIBS_DIR/lib"
|
||||
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
|
||||
@ -191,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
|
||||
|
@ -38,7 +38,6 @@
|
||||
|
||||
#include "printpreview.h"
|
||||
|
||||
#include <QAbstractScrollArea>
|
||||
#include <QPrintDialog>
|
||||
#include <QPrinter>
|
||||
#include <QToolBar>
|
||||
@ -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"
|
||||
|
@ -39,6 +39,7 @@
|
||||
#ifndef PRINTPREVIEW_H
|
||||
#define PRINTPREVIEW_H
|
||||
|
||||
#include <QAbstractScrollArea>
|
||||
#include <QMainWindow>
|
||||
#include <QPrinter>
|
||||
#include <QPointF>
|
||||
@ -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
|
||||
|
||||
|
@ -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 ######################################
|
||||
|
@ -10,6 +10,31 @@ 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:/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 64b 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
|
||||
|
216
win_build_libs/Makefile
Executable file
216
win_build_libs/Makefile
Executable file
@ -0,0 +1,216 @@
|
||||
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
|
||||
FFMPEG_VERSION=2.7.2
|
||||
|
||||
all: dirs zlib bzip2 miniupnpc openssl speex opencv libxml2 libxslt curl sqlcipher libmicrohttpd ffmpeg 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
|
||||
|
||||
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
|
||||
|
||||
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/
|
||||
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
|
||||
|
||||
|
||||
copylibs:
|
||||
read -p "Do you want to copy libs to retroshare? (yes|no)" answer; \
|
||||
if [ "$$answer" = "yes" ] ; then \
|
||||
cp -r libs ../../ ; \
|
||||
fi
|
||||
|
169
win_build_libs/build_ext.sh
Executable file
169
win_build_libs/build_ext.sh
Executable file
@ -0,0 +1,169 @@
|
||||
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 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 ..
|
BIN
win_build_libs/libxslt-1.1.28-fix.tar.gz
Executable file
BIN
win_build_libs/libxslt-1.1.28-fix.tar.gz
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user