From 2db8dbd45fc9e5093412d37ae1fe2bba8d142d57 Mon Sep 17 00:00:00 2001 From: Phenom Date: Sat, 16 Jul 2016 23:10:00 +0200 Subject: [PATCH] Fix El Capitan OSX 10.11 Compil --- MacOS_X_InstallGuide.md | 76 ++- libresapi/src/libresapi.pro | 3 +- libretroshare/src/libretroshare.pro | 5 +- libretroshare/src/util/rsthreads.cc | 34 +- openpgpsdk/src/openpgpsdk.pro | 30 +- openpgpsdk/src/openpgpsdk/opsdir.c | 3 +- retroshare-gui/src/gui/GenCertDialog.cpp | 6 +- retroshare-gui/src/retroshare-gui.pro | 3 + retroshare.pri | 8 +- tests/librssimulator/librssimulator.pro | 47 +- tests/unittests/unittests.pro | 735 ++++++++++++----------- 11 files changed, 502 insertions(+), 448 deletions(-) diff --git a/MacOS_X_InstallGuide.md b/MacOS_X_InstallGuide.md index ab20893e3..f79d5fa0e 100644 --- a/MacOS_X_InstallGuide.md +++ b/MacOS_X_InstallGuide.md @@ -1,65 +1,83 @@ -##Compilation on MacOS +# Compilation on MacOS -### Qt Installation +## Qt Installation -Install Qt via: [Qt Download](http://www.qt.io/download/) +Install Qt via: [Qt Download](http://www.qt.io/download/) -Use default options. -Add to the PATH environment variable with this temporary solution. +Use default options. And add Qt Script support. - export PATH=/users/$USER/Qt/5.5/clang_64/bin:$PATH +Add to the PATH environment variable by editing your *~/.profile* file. + + export PATH="/users/$USER/Qt/5.5/clang_64/bin:$PATH" Depends on wich version of Qt you use. -###MacPort Installation +## ***Choose if you use MacPort or HomeBrew*** + +### MacPort Installation Install MacPort and XCode following this guide: [MacPort and XCode](http://guide.macports.org/#installing.xcode) -Start XCode to get it updated and to able C compiler to create executables. +Start XCode to get it updated and to able C compiler to create executables. -###Install libraries +#### Install libraries $sudo port -v selfupdate $sudo port install openssl $sudo port install miniupnpc + $sudo port install libmicrohttpd For VOIP Plugin: $sudo port install speex-devel $sudo port install opencv -Get Your OSX SDK if missing: [MacOSX-SDKs](https://github.com/phracker/MacOSX-SDKs) +Get Your OSX SDK if missing: [MacOSX-SDKs](https://github.com/phracker/MacOSX-SDKs) -###Last Settings +### HOMEBREW Installation -In QtCreator Option Git add its path: +Install HomeBrew following this guide: [HomeBrew](http://brew.sh/) - C:\Program Files\Git\bin +Install XCode command line developer tools: + + $xcode-select --install + +Start XCode to get it updated and to able C compiler to create executables. + +#### Install libraries + + $brew install openssl + $brew install miniupnpc + $brew install libmicrohttpd -and select "Pull" with "Rebase" +If you have error in linking, run this: -###Compil missing libraries -####SQLCipher + $sudo chown -R $(whoami) /usr/local/lib/pkgconfig + +For VOIP Plugin: + + $brew install speex + $brew install homebrew/science/opencv + $brew install ffmpeg + +Get Your OSX SDK if missing: [MacOSX-SDKs](https://github.com/phracker/MacOSX-SDKs) + +## Last Settings + +In QtCreator Option Git select "Pull" with "Rebase" + +## Compil missing libraries +### SQLCipher cd git clone https://github.com/sqlcipher/sqlcipher.git cd sqlcipher - ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto" + ./configure --disable-shared --disable-tcl --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I/opt/local/include" LDFLAGS="-lcrypto" make sudo make install NOTE, might be necessary to *chmod 000 /usr/local/ssl* temporarily during *./configure* if -homebrew uses newer, non-stock ssl dependencies found there. configure might get confused. - -####libMicroHTTPD -The one with port don't have good support. - - cd - wget http://ftpmirror.gnu.org/libmicrohttpd/libmicrohttpd-0.9.46.tar.gz - tar zxvf libmicrohttpd-0.9.46.tar.gz - cd libmicrohttpd-0.9.46 - bash ./configure - sudo make install +homebrew uses newer, non-stock ssl dependencies found there. Configure might get confused. You can now compile RS into Qt Creator or with terminal @@ -68,4 +86,6 @@ You can now compile RS into Qt Creator or with terminal cd retroshare qmake; make +You can change Target and SDK in *./retroshare.pri:82* changing value of QMAKE_MACOSX_DEPLOYMENT_TARGET and QMAKE_MAC_SDK + You can find compiled application on *./retroshare/retroshare-gui/src/RetroShare06.app* diff --git a/libresapi/src/libresapi.pro b/libresapi/src/libresapi.pro index b76b2a30b..f310198fb 100644 --- a/libresapi/src/libresapi.pro +++ b/libresapi/src/libresapi.pro @@ -113,7 +113,8 @@ libresapihttpserver { } else { mac { INCLUDEPATH += . $$INC_DIR - for(lib, LIB_DIR):exists($$lib/libmicrohttpd.a){ LIBS *= $$lib/libmicrohttpd.a} + #for(lib, LIB_DIR):exists($$lib/libmicrohttpd.a){ LIBS *= $$lib/libmicrohttpd.a} + LIBS *= -lmicrohttpd } else { LIBS *= -lmicrohttpd } diff --git a/libretroshare/src/libretroshare.pro b/libretroshare/src/libretroshare.pro index 85ff8dce7..7ca15b08b 100644 --- a/libretroshare/src/libretroshare.pro +++ b/libretroshare/src/libretroshare.pro @@ -295,7 +295,7 @@ mac { OBJECTS_DIR = temp/obj MOC_DIR = temp/moc #DEFINES = WINDOWS_SYS WIN32 STATICLIB MINGW - DEFINES *= MINIUPNPC_VERSION=13 + #DEFINES *= MINIUPNPC_VERSION=13 CONFIG += upnp_miniupnpc CONFIG += c++11 @@ -305,7 +305,7 @@ mac { #CONFIG += zcnatassist # Beautiful Hack to fix 64bit file access. - QMAKE_CXXFLAGS *= -Dfseeko64=fseeko -Dftello64=ftello -Dfopen64=fopen -Dvstatfs64=vstatfs + QMAKE_CXXFLAGS *= -Dfseeko64=fseeko -Dftello64=ftello -Dfopen64=fopen -Dvstatfs64=vstatfs #GPG_ERROR_DIR = ../../../../libgpg-error-1.7 #GPGME_DIR = ../../../../gpgme-1.1.8 @@ -315,6 +315,7 @@ mac { DEPENDPATH += . $$INC_DIR INCLUDEPATH += . $$INC_DIR + INCLUDEPATH += ../../../. # We need a explicit path here, to force using the home version of sqlite3 that really encrypts the database. LIBS += /usr/local/lib/libsqlcipher.a diff --git a/libretroshare/src/util/rsthreads.cc b/libretroshare/src/util/rsthreads.cc index bf2f34042..fcf4483be 100644 --- a/libretroshare/src/util/rsthreads.cc +++ b/libretroshare/src/util/rsthreads.cc @@ -30,7 +30,17 @@ #include #include +#ifdef __APPLE__ +int __attribute__((weak)) pthread_setname_np(const char *__buf) ; +int RS_pthread_setname_np(pthread_t /*__target_thread*/, const char *__buf) { + return pthread_setname_np(__buf); +} +#else int __attribute__((weak)) pthread_setname_np(pthread_t __target_thread, const char *__buf) ; +int RS_pthread_setname_np(pthread_t __target_thread, const char *__buf) { + return pthread_setname_np(__target_thread, __buf); +} +#endif #ifdef RSMUTEX_DEBUG #include @@ -167,19 +177,21 @@ void RsThread::start(const std::string &threadName) // set name if(pthread_setname_np) - if(!threadName.empty()) - { - // thread names are restricted to 16 characters including the terminating null byte - if(threadName.length() > 15) - { + { + if(!threadName.empty()) + { + // thread names are restricted to 16 characters including the terminating null byte + if(threadName.length() > 15) + { #ifdef DEBUG_THREADS - THREAD_DEBUG << "RsThread::start called with to long name '" << name << "' truncating..." << std::endl; + THREAD_DEBUG << "RsThread::start called with to long name '" << name << "' truncating..." << std::endl; #endif - pthread_setname_np(mTid, threadName.substr(0, 15).c_str()); - } else { - pthread_setname_np(mTid, threadName.c_str()); - } - } + RS_pthread_setname_np(mTid, threadName.substr(0, 15).c_str()); + } else { + RS_pthread_setname_np(mTid, threadName.c_str()); + } + } + } } else { diff --git a/openpgpsdk/src/openpgpsdk.pro b/openpgpsdk/src/openpgpsdk.pro index 2cee7847d..f624619fc 100644 --- a/openpgpsdk/src/openpgpsdk.pro +++ b/openpgpsdk/src/openpgpsdk.pro @@ -1,11 +1,7 @@ !include("../../retroshare.pri"): error("Could not include file ../../retroshare.pri") TEMPLATE = lib -macx { - CONFIG = staticlib -} else { - CONFIG += staticlib -} +CONFIG += staticlib DEFINES *= OPENSSL_NO_IDEA @@ -13,8 +9,8 @@ QMAKE_CXXFLAGS *= -Wall -Werror -W TARGET = ops DESTDIR = lib -DEPENDPATH += . -INCLUDEPATH += . +DEPENDPATH += . $$INC_DIR +INCLUDEPATH += . $$INC_DIR #################################### Windows ##################################### @@ -34,9 +30,13 @@ win32 { # Switch on optimization for debug version #QMAKE_CXXFLAGS_DEBUG += -O2 #QMAKE_CFLAGS_DEBUG += -O2 +} - DEPENDPATH += $$INC_DIR - INCLUDEPATH += $$INC_DIR + +macx { + for(lib, LIB_DIR):LIBS += -L"$$lib" + for(bin, BIN_DIR):LIBS += -L"$$bin" + DEFINES += OPENSSL_NO_CAMELLIA } # Input @@ -73,8 +73,10 @@ HEADERS += openpgpsdk/writer.h \ openpgpsdk/armour.h \ openpgpsdk/parse_local.h \ openpgpsdk/keyring_local.h \ - openpgpsdk/opsdir.h \ - openpgpsdk/opsstring.h + openpgpsdk/opsdir.h +win32{ +HEADERS += openpgpsdk/opsstring.h +} SOURCES += openpgpsdk/accumulate.c \ openpgpsdk/compress.c \ @@ -113,5 +115,7 @@ SOURCES += openpgpsdk/accumulate.c \ openpgpsdk/writer_memory.c \ openpgpsdk/writer_skey_checksum.c \ openpgpsdk/writer_stream_encrypt_se_ip.c \ - openpgpsdk/opsdir.c \ - openpgpsdk/opsstring.c + openpgpsdk/opsdir.c +win32{ +SOURCES += openpgpsdk/opsstring.c +} diff --git a/openpgpsdk/src/openpgpsdk/opsdir.c b/openpgpsdk/src/openpgpsdk/opsdir.c index df7ce76c2..b966f090f 100644 --- a/openpgpsdk/src/openpgpsdk/opsdir.c +++ b/openpgpsdk/src/openpgpsdk/opsdir.c @@ -1,6 +1,7 @@ #include "opsdir.h" +#ifdef WIN32 #include "opsstring.h" - +#endif #include int ops_open(const char* filename, int flag, int pmode) diff --git a/retroshare-gui/src/gui/GenCertDialog.cpp b/retroshare-gui/src/gui/GenCertDialog.cpp index a6f62a4ef..d9b2c7c75 100644 --- a/retroshare-gui/src/gui/GenCertDialog.cpp +++ b/retroshare-gui/src/gui/GenCertDialog.cpp @@ -584,10 +584,13 @@ void GenCertDialog::genPerson() QCoreApplication::processEvents(); QAbstractEventDispatcher* ed = QAbstractEventDispatcher::instance(); + std::cout << "Waiting ed->processEvents()" << std::endl; + time_t waitEnd = time(NULL) + 10;//Wait no more than 10 sec to processEvents if (ed->hasPendingEvents()) - while(ed->processEvents(QEventLoop::AllEvents)); + while(ed->processEvents(QEventLoop::AllEvents) && (time(NULL) < waitEnd)); std::string email_str = "" ; + std::cout << "RsAccounts::GeneratePGPCertificate" << std::endl; RsAccounts::GeneratePGPCertificate( ui.name_input->text().toUtf8().constData(), email_str.c_str(), @@ -609,6 +612,7 @@ void GenCertDialog::genPerson() std::cerr << "GenCertDialog::genPerson() Generating SSL cert with gpg id : " << PGPId << std::endl; std::string err; this->hide();//To show dialog asking password PGP Key. + std::cout << "RsAccounts::GenerateSSLCertificate" << std::endl; bool okGen = RsAccounts::GenerateSSLCertificate(PGPId, "", genLoc, "", isHiddenLoc, sslPasswd, sslId, err); if (okGen) diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro index b548108ca..ea2bc97e6 100644 --- a/retroshare-gui/src/retroshare-gui.pro +++ b/retroshare-gui/src/retroshare-gui.pro @@ -234,6 +234,9 @@ macx { mac_icon.files = $$files($$PWD/rsMacIcon.icns) mac_icon.path = Contents/Resources QMAKE_BUNDLE_DATA += mac_icon + mac_webui.files = $$files($$PWD/../../libresapi/src/webui) + mac_webui.path = Contents/Resources + QMAKE_BUNDLE_DATA += mac_webui CONFIG += version_detail_bash_script LIBS += -lssl -lcrypto -lz diff --git a/retroshare.pri b/retroshare.pri index 5d8572807..f0f016d38 100644 --- a/retroshare.pri +++ b/retroshare.pri @@ -77,12 +77,12 @@ macx { LIB_DIR += "/usr/local/lib" LIB_DIR += "/opt/local/lib" !QMAKE_MACOSX_DEPLOYMENT_TARGET { - message(***retroshare.pri: No Target, set it to MacOS 10.10 ) - QMAKE_MACOSX_DEPLOYMENT_TARGET=10.10 + message(***retroshare.pri: No Target. Set it to MacOS 10.11 ) + QMAKE_MACOSX_DEPLOYMENT_TARGET=10.11 } !QMAKE_MAC_SDK { - message(***retroshare.pri: No SDK, set it to MacOS 10.10 ) - QMAKE_MAC_SDK = macosx10.10 + message(***retroshare.pri: No SDK. Set it to MacOS 10.11 ) + QMAKE_MAC_SDK = macosx10.11 } CONFIG += c++11 } diff --git a/tests/librssimulator/librssimulator.pro b/tests/librssimulator/librssimulator.pro index 9ef336b57..94c942f53 100644 --- a/tests/librssimulator/librssimulator.pro +++ b/tests/librssimulator/librssimulator.pro @@ -182,33 +182,40 @@ win32 { ################################# MacOSX ########################################## mac { - QMAKE_CC = $${QMAKE_CXX} - OBJECTS_DIR = temp/obj - MOC_DIR = temp/moc - #DEFINES = WINDOWS_SYS WIN32 STATICLIB MINGW - #DEFINES *= MINIUPNPC_VERSION=13 - DESTDIR = lib + QMAKE_CC = $${QMAKE_CXX} + OBJECTS_DIR = temp/obj + MOC_DIR = temp/moc + #DEFINES = WINDOWS_SYS WIN32 STATICLIB MINGW + #DEFINES *= MINIUPNPC_VERSION=13 + DESTDIR = lib - CONFIG += upnp_miniupnpc + CONFIG += upnp_miniupnpc - # zeroconf disabled at the end of libretroshare.pro (but need the code) - CONFIG += zeroconf - CONFIG += zcnatassist + # zeroconf disabled at the end of libretroshare.pro (but need the code) + #CONFIG += zeroconf + #CONFIG += zcnatassist - # Beautiful Hack to fix 64bit file access. - QMAKE_CXXFLAGS *= -Dfseeko64=fseeko -Dftello64=ftello -Dfopen64=fopen -Dvstatfs64=vstatfs + # Beautiful Hack to fix 64bit file access. + QMAKE_CXXFLAGS *= -Dfseeko64=fseeko -Dftello64=ftello -Dfopen64=fopen -Dvstatfs64=vstatfs - UPNPC_DIR = ../../../miniupnpc-1.0 - #GPG_ERROR_DIR = ../../../../libgpg-error-1.7 - #GPGME_DIR = ../../../../gpgme-1.1.8 + #UPNPC_DIR = ../../../miniupnpc-1.0 + #GPG_ERROR_DIR = ../../../../libgpg-error-1.7 + #GPGME_DIR = ../../../../gpgme-1.1.8 + #OPENPGPSDK_DIR = ../../openpgpsdk/src + #INCLUDEPATH += . $${UPNPC_DIR} + #INCLUDEPATH += $${OPENPGPSDK_DIR} - OPENPGPSDK_DIR = ../../openpgpsdk/src + #for(lib, LIB_DIR):exists($$lib/libminiupnpc.a){ LIBS += $$lib/libminiupnpc.a} + for(lib, LIB_DIR):LIBS += -L"$$lib" + for(bin, BIN_DIR):LIBS += -L"$$bin" - INCLUDEPATH += . $${UPNPC_DIR} - INCLUDEPATH += $${OPENPGPSDK_DIR} + DEPENDPATH += . $$INC_DIR + INCLUDEPATH += . $$INC_DIR + INCLUDEPATH += ../../../. - #../openpgpsdk - #INCLUDEPATH += . $${UPNPC_DIR} $${GPGME_DIR}/src $${GPG_ERROR_DIR}/src + # We need a explicit path here, to force using the home version of sqlite3 that really encrypts the database. + LIBS += /usr/local/lib/libsqlcipher.a + #LIBS += -lsqlite3 } ################################# FreeBSD ########################################## diff --git a/tests/unittests/unittests.pro b/tests/unittests/unittests.pro index d0485ca92..a023133b6 100644 --- a/tests/unittests/unittests.pro +++ b/tests/unittests/unittests.pro @@ -1,156 +1,156 @@ !include("../../retroshare.pri"): error("Could not include file ../../retroshare.pri") -QT += network xml script -CONFIG += bitdht - -CONFIG += gxs debug - -gxs { - DEFINES += RS_ENABLE_GXS -} - -TEMPLATE = app -TARGET = unittests - -OPENPGPSDK_DIR = ../../openpgpsdk/src -INCLUDEPATH *= $${OPENPGPSDK_DIR} ../openpgpsdk - -# it is impossible to use precompield googletest lib -# because googletest must be compiled with same compiler flags as the tests! -!exists(../googletest/googletest/src/gtest-all.cc){ - message(trying to git clone googletest...) - !system(git clone https://github.com/google/googletest.git ../googletest){ - error(Could not git clone googletest files. You can manually download them to /tests/googletest) - } -} - -INCLUDEPATH += \ - ../googletest/googletest/include \ - ../googletest/googletest - -SOURCES += ../googletest/googletest/src/gtest-all.cc - -################################# Linux ########################################## -# Put lib dir in QMAKE_LFLAGS so it appears before -L/usr/lib -linux-* { - #CONFIG += version_detail_bash_script - QMAKE_CXXFLAGS *= -D_FILE_OFFSET_BITS=64 - - PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a - PRE_TARGETDEPS *= ../../openpgpsdk/src/lib/libops.a - - LIBS += ../../libretroshare/src/lib/libretroshare.a - LIBS += ../librssimulator/lib/librssimulator.a - LIBS += ../../openpgpsdk/src/lib/libops.a -lbz2 - LIBS += -lssl -lupnp -lixml -lXss -lgnome-keyring - LIBS *= -lcrypto -ldl -lX11 -lz -lpthread - - #LIBS += ../../supportlibs/pegmarkdown/lib/libpegmarkdown.a - - contains(CONFIG, NO_SQLCIPHER) { - DEFINES *= NO_SQLCIPHER - PKGCONFIG *= sqlite3 - } else { - # We need a explicit path here, to force using the home version of sqlite3 that really encrypts the database. - - SQLCIPHER_OK = $$system(pkg-config --exists sqlcipher && echo yes) - isEmpty(SQLCIPHER_OK) { - # We need a explicit path here, to force using the home version of sqlite3 that really encrypts the database. - - ! exists(../../../lib/sqlcipher/.libs/libsqlcipher.a) { - message(../../../lib/sqlcipher/.libs/libsqlcipher.a does not exist) - error(Please fix this and try again. Will stop now.) - } - - LIBS += ../../../lib/sqlcipher/.libs/libsqlcipher.a - INCLUDEPATH += ../../../lib/sqlcipher/src/ - INCLUDEPATH += ../../../lib/sqlcipher/tsrc/ - } else { - LIBS += -lsqlcipher - } - } - - - LIBS *= -lglib-2.0 - LIBS *= -rdynamic - DEFINES *= HAVE_XSS # for idle time, libx screensaver extensions - DEFINES *= HAS_GNOME_KEYRING -} - -linux-g++ { - OBJECTS_DIR = temp/linux-g++/obj -} - -linux-g++-64 { - OBJECTS_DIR = temp/linux-g++-64/obj -} - -#################### Cross compilation for windows under Linux ################### - -win32-x-g++ { - OBJECTS_DIR = temp/win32-x-g++/obj - - LIBS += ../../libretroshare/src/lib.win32xgcc/libretroshare.a - LIBS += ../../../../lib/win32-x-g++-v0.5/libssl.a - LIBS += ../../../../lib/win32-x-g++-v0.5/libcrypto.a - LIBS += ../../../../lib/win32-x-g++-v0.5/libgpgme.dll.a - LIBS += ../../../../lib/win32-x-g++-v0.5/libminiupnpc.a - LIBS += ../../../../lib/win32-x-g++-v0.5/libz.a - LIBS += -L${HOME}/.wine/drive_c/pthreads/lib -lpthreadGCE2 - LIBS += -lQtUiTools - LIBS += -lws2_32 -luuid -lole32 -liphlpapi -lcrypt32 -gdi32 - LIBS += -lole32 -lwinmm - - DEFINES *= WINDOWS_SYS WIN32 WIN32_CROSS_UBUNTU - - INCLUDEPATH += ../../../../gpgme-1.1.8/src/ - INCLUDEPATH += ../../../../libgpg-error-1.7/src/ - - RC_FILE = gui/images/retroshare_win.rc -} - -#################################### Windows ##################################### - -win32 { - # Switch on extra warnings - QMAKE_CFLAGS += -Wextra - QMAKE_CXXFLAGS += -Wextra - +QT += network xml script +CONFIG += bitdht + +CONFIG += gxs debug + +gxs { + DEFINES += RS_ENABLE_GXS +} + +TEMPLATE = app +TARGET = unittests + +OPENPGPSDK_DIR = ../../openpgpsdk/src +INCLUDEPATH *= $${OPENPGPSDK_DIR} ../openpgpsdk + +# it is impossible to use precompield googletest lib +# because googletest must be compiled with same compiler flags as the tests! +!exists(../googletest/googletest/src/gtest-all.cc){ + message(trying to git clone googletest...) + !system(git clone https://github.com/google/googletest.git ../googletest){ + error(Could not git clone googletest files. You can manually download them to /tests/googletest) + } +} + +INCLUDEPATH += \ + ../googletest/googletest/include \ + ../googletest/googletest + +SOURCES += ../googletest/googletest/src/gtest-all.cc + +################################# Linux ########################################## +# Put lib dir in QMAKE_LFLAGS so it appears before -L/usr/lib +linux-* { + #CONFIG += version_detail_bash_script + QMAKE_CXXFLAGS *= -D_FILE_OFFSET_BITS=64 + + PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a + PRE_TARGETDEPS *= ../../openpgpsdk/src/lib/libops.a + + LIBS += ../../libretroshare/src/lib/libretroshare.a + LIBS += ../librssimulator/lib/librssimulator.a + LIBS += ../../openpgpsdk/src/lib/libops.a -lbz2 + LIBS += -lssl -lupnp -lixml -lXss -lgnome-keyring + LIBS *= -lcrypto -ldl -lX11 -lz -lpthread + + #LIBS += ../../supportlibs/pegmarkdown/lib/libpegmarkdown.a + + contains(CONFIG, NO_SQLCIPHER) { + DEFINES *= NO_SQLCIPHER + PKGCONFIG *= sqlite3 + } else { + # We need a explicit path here, to force using the home version of sqlite3 that really encrypts the database. + + SQLCIPHER_OK = $$system(pkg-config --exists sqlcipher && echo yes) + isEmpty(SQLCIPHER_OK) { + # We need a explicit path here, to force using the home version of sqlite3 that really encrypts the database. + + ! exists(../../../lib/sqlcipher/.libs/libsqlcipher.a) { + message(../../../lib/sqlcipher/.libs/libsqlcipher.a does not exist) + error(Please fix this and try again. Will stop now.) + } + + LIBS += ../../../lib/sqlcipher/.libs/libsqlcipher.a + INCLUDEPATH += ../../../lib/sqlcipher/src/ + INCLUDEPATH += ../../../lib/sqlcipher/tsrc/ + } else { + LIBS += -lsqlcipher + } + } + + + LIBS *= -lglib-2.0 + LIBS *= -rdynamic + DEFINES *= HAVE_XSS # for idle time, libx screensaver extensions + DEFINES *= HAS_GNOME_KEYRING +} + +linux-g++ { + OBJECTS_DIR = temp/linux-g++/obj +} + +linux-g++-64 { + OBJECTS_DIR = temp/linux-g++-64/obj +} + +#################### Cross compilation for windows under Linux ################### + +win32-x-g++ { + OBJECTS_DIR = temp/win32-x-g++/obj + + LIBS += ../../libretroshare/src/lib.win32xgcc/libretroshare.a + LIBS += ../../../../lib/win32-x-g++-v0.5/libssl.a + LIBS += ../../../../lib/win32-x-g++-v0.5/libcrypto.a + LIBS += ../../../../lib/win32-x-g++-v0.5/libgpgme.dll.a + LIBS += ../../../../lib/win32-x-g++-v0.5/libminiupnpc.a + LIBS += ../../../../lib/win32-x-g++-v0.5/libz.a + LIBS += -L${HOME}/.wine/drive_c/pthreads/lib -lpthreadGCE2 + LIBS += -lQtUiTools + LIBS += -lws2_32 -luuid -lole32 -liphlpapi -lcrypt32 -gdi32 + LIBS += -lole32 -lwinmm + + DEFINES *= WINDOWS_SYS WIN32 WIN32_CROSS_UBUNTU + + INCLUDEPATH += ../../../../gpgme-1.1.8/src/ + INCLUDEPATH += ../../../../libgpg-error-1.7/src/ + + RC_FILE = gui/images/retroshare_win.rc +} + +#################################### Windows ##################################### + +win32 { + # Switch on extra warnings + QMAKE_CFLAGS += -Wextra + QMAKE_CXXFLAGS += -Wextra + # solve linker warnings because of the order of the libraries QMAKE_LFLAGS += -Wl,--start-group - # Switch off optimization for release version - QMAKE_CXXFLAGS_RELEASE -= -O2 - QMAKE_CXXFLAGS_RELEASE += -O0 - QMAKE_CFLAGS_RELEASE -= -O2 - QMAKE_CFLAGS_RELEASE += -O0 - - # Switch on optimization for debug version - #QMAKE_CXXFLAGS_DEBUG += -O2 - #QMAKE_CFLAGS_DEBUG += -O2 - - OBJECTS_DIR = temp/obj - #LIBS += -L"D/Qt/2009.03/qt/plugins/imageformats" - #QTPLUGIN += qjpeg - - PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a - PRE_TARGETDEPS *= ../librssimulator/lib/librssimulator.a - PRE_TARGETDEPS *= ../../openpgpsdk/src/lib/libops.a - + # Switch off optimization for release version + QMAKE_CXXFLAGS_RELEASE -= -O2 + QMAKE_CXXFLAGS_RELEASE += -O0 + QMAKE_CFLAGS_RELEASE -= -O2 + QMAKE_CFLAGS_RELEASE += -O0 + + # Switch on optimization for debug version + #QMAKE_CXXFLAGS_DEBUG += -O2 + #QMAKE_CFLAGS_DEBUG += -O2 + + OBJECTS_DIR = temp/obj + #LIBS += -L"D/Qt/2009.03/qt/plugins/imageformats" + #QTPLUGIN += qjpeg + + PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a + PRE_TARGETDEPS *= ../librssimulator/lib/librssimulator.a + PRE_TARGETDEPS *= ../../openpgpsdk/src/lib/libops.a + for(lib, LIB_DIR):LIBS += -L"$$lib" for(bin, BIN_DIR):LIBS += -L"$$bin" - LIBS += ../../libretroshare/src/lib/libretroshare.a + LIBS += ../../libretroshare/src/lib/libretroshare.a LIBS += ../librssimulator/lib/librssimulator.a - LIBS += ../../openpgpsdk/src/lib/libops.a -lbz2 - LIBS += -L"$$PWD/../../../lib" - - LIBS += -lssl -lcrypto -lpthread -lminiupnpc -lz - LIBS += -luuid -lole32 -liphlpapi -lcrypt32 -lgdi32 + LIBS += ../../openpgpsdk/src/lib/libops.a -lbz2 + LIBS += -L"$$PWD/../../../lib" + + LIBS += -lssl -lcrypto -lpthread -lminiupnpc -lz + LIBS += -luuid -lole32 -liphlpapi -lcrypt32 -lgdi32 LIBS += -lwinmm - - DEFINES *= WINDOWS_SYS WIN32_LEAN_AND_MEAN _USE_32BIT_TIME_T - + + DEFINES *= WINDOWS_SYS WIN32_LEAN_AND_MEAN _USE_32BIT_TIME_T + # create lib directory message(CHK_DIR_EXISTS=$(CHK_DIR_EXISTS)) message(MKDIR=$(MKDIR)) @@ -166,227 +166,228 @@ win32 { # Qt 4 QMAKE_RC += --include-dir=$$_PRO_FILE_PWD_/../../libretroshare/src } -} - -##################################### MacOS ###################################### - -macx { - # ENABLE THIS OPTION FOR Univeral Binary BUILD. - CONFIG += ppc x86 - QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.4 - - CONFIG += version_detail_bash_script - LIBS += ../../libretroshare/src/lib/libretroshare.a - LIBS += ../librssimulator/lib/librssimulator.a - LIBS += ../../openpgpsdk/src/lib/libops.a -lbz2 - LIBS += -lssl -lcrypto -lz - #LIBS += -lssl -lcrypto -lz -lgpgme -lgpg-error -lassuan - LIBS += ../../../miniupnpc-1.0/libminiupnpc.a - LIBS += -framework CoreFoundation - LIBS += -framework Security - - gxs { - LIBS += ../../supportlibs/pegmarkdown/lib/libpegmarkdown.a - - LIBS += ../../../lib/libsqlcipher.a - #LIBS += -lsqlite3 - - } - - - INCLUDEPATH += . - #DEFINES* = MAC_IDLE # for idle feature - CONFIG -= uitools - - -} - -##################################### FreeBSD ###################################### - -freebsd-* { - INCLUDEPATH *= /usr/local/include/gpgme - LIBS *= ../../libretroshare/src/lib/libretroshare.a - LIBS *= ../librssimulator/lib/librssimulator.a - LIBS *= -lssl - LIBS *= -lgpgme - LIBS *= -lupnp - LIBS *= -lgnome-keyring - PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a - - gxs { - LIBS += ../../supportlibs/pegmarkdown/lib/libpegmarkdown.a - LIBS += -lsqlite3 - } - -} - -##################################### OpenBSD ###################################### - -openbsd-* { - INCLUDEPATH *= /usr/local/include - - PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a - PRE_TARGETDEPS *= ../../openpgpsdk/src/lib/libops.a - - LIBS *= ../../libretroshare/src/lib/libretroshare.a - LIBS *= ../librssimulator/lib/librssimulator.a - LIBS *= ../../openpgpsdk/src/lib/libops.a -lbz2 - LIBS *= -lssl -lcrypto - LIBS *= -lgpgme - LIBS *= -lupnp - LIBS *= -lgnome-keyring - PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a - - gxs { - LIBS += ../../supportlibs/pegmarkdown/lib/libpegmarkdown.a - LIBS += -lsqlite3 - } - - LIBS *= -rdynamic -} - - - -############################## Common stuff ###################################### - -# On Linux systems that alredy have libssl and libcrypto it is advisable -# to rename the patched version of SSL to something like libsslxpgp.a and libcryptoxpg.a - -# ########################################### - -bitdht { - LIBS += ../../libbitdht/src/lib/libbitdht.a - PRE_TARGETDEPS *= ../../libbitdht/src/lib/libbitdht.a -} - -win32 { -# must be added after bitdht - LIBS += -lws2_32 -} - -DEPENDPATH += . \ - -INCLUDEPATH += ../../libretroshare/src/ -INCLUDEPATH += ../librssimulator/ - -SOURCES += unittests.cc \ - -################################ Serialiser ################################ -HEADERS += libretroshare/serialiser/support.h \ - libretroshare/serialiser/rstlvutil.h \ - -SOURCES += libretroshare/serialiser/rsturtleitem_test.cc \ - libretroshare/serialiser/rsbaseitem_test.cc \ - libretroshare/serialiser/rsgxsupdateitem_test.cc \ - libretroshare/serialiser/rsmsgitem_test.cc \ - libretroshare/serialiser/rsstatusitem_test.cc \ - libretroshare/serialiser/rsnxsitems_test.cc \ - libretroshare/serialiser/rsgxsiditem_test.cc \ -# libretroshare/serialiser/rsphotoitem_test.cc \ - libretroshare/serialiser/tlvbase_test2.cc \ - libretroshare/serialiser/tlvrandom_test.cc \ - libretroshare/serialiser/tlvbase_test.cc \ - libretroshare/serialiser/tlvstack_test.cc \ - libretroshare/serialiser/tlvitems_test.cc \ -# libretroshare/serialiser/rsgrouteritem_test.cc \ - libretroshare/serialiser/tlvtypes_test.cc \ - libretroshare/serialiser/tlvkey_test.cc \ - libretroshare/serialiser/support.cc \ - libretroshare/serialiser/rstlvutil.cc \ - -# Still to convert these. -# libretroshare/serialiser/rsconfigitem_test.cc \ -# libretroshare/serialiser/rsgrouteritem_test.cc \ - - -################################## GXS ##################################### - -HEADERS += libretroshare/gxs/common/data_support.h \ - -SOURCES += libretroshare/gxs/common/data_support.cc \ - -HEADERS += libretroshare/gxs/nxs_test/nxsdummyservices.h \ - libretroshare/gxs/nxs_test/nxsgrptestscenario.h \ - libretroshare/gxs/nxs_test/nxsmsgtestscenario.h \ - libretroshare/gxs/nxs_test/nxsgrpsync_test.h \ - libretroshare/gxs/nxs_test/nxsmsgsync_test.h \ - libretroshare/gxs/nxs_test/nxstesthub.h \ - libretroshare/gxs/nxs_test/nxstestscenario.h \ - libretroshare/gxs/nxs_test/nxsgrpsyncdelayed.h - -SOURCES += libretroshare/gxs/nxs_test/nxsdummyservices.cc \ - libretroshare/gxs/nxs_test/nxsgrptestscenario.cc \ - libretroshare/gxs/nxs_test/nxsmsgtestscenario.cc \ - libretroshare/gxs/nxs_test/nxstesthub.cc \ - libretroshare/gxs/nxs_test/rsgxsnetservice_test.cc \ - libretroshare/gxs/nxs_test/nxsmsgsync_test.cc \ - libretroshare/gxs/nxs_test/nxsgrpsync_test.cc \ - libretroshare/gxs/nxs_test/nxsgrpsyncdelayed.cc - -HEADERS += libretroshare/gxs/gen_exchange/genexchangetester.h \ - libretroshare/gxs/gen_exchange/gxspublishmsgtest.h \ - libretroshare/gxs/gen_exchange/genexchangetestservice.h \ - libretroshare/gxs/gen_exchange/gxspublishgrouptest.h \ - libretroshare/gxs/gen_exchange/rsdummyservices.h \ - libretroshare/gxs/gen_exchange/gxsteststats.cpp - -# libretroshare/gxs/gen_exchange/gxsmsgrelatedtest.h \ - -SOURCES += libretroshare/gxs/gen_exchange/gxspublishgrouptest.cc \ - libretroshare/gxs/gen_exchange/gxsteststats.cpp \ - libretroshare/gxs/gen_exchange/gxspublishmsgtest.cc \ - libretroshare/gxs/gen_exchange/rsdummyservices.cc \ - libretroshare/gxs/gen_exchange/rsgenexchange_test.cc \ - libretroshare/gxs/gen_exchange/genexchangetester.cc \ - libretroshare/gxs/gen_exchange/genexchangetestservice.cc \ - -SOURCES += libretroshare/gxs/security/gxssecurity_test.cc - -# libretroshare/gxs/gen_exchange/gxsmsgrelatedtest.cc \ - -HEADERS += libretroshare/gxs/data_service/rsdataservice_test.h \ - -SOURCES += libretroshare/gxs/data_service/rsdataservice_test.cc \ - libretroshare/gxs/data_service/rsgxsdata_test.cc \ - - -################################ dbase ##################################### - - -#SOURCES += libretroshare/dbase/fisavetest.cc \ -# libretroshare/dbase/fitest2.cc \ -# libretroshare/dbase/searchtest.cc \ - -# libretroshare/dbase/ficachetest.cc \ -# libretroshare/dbase/fimontest.cc \ - - -############################### services ################################### - -SOURCES += libretroshare/services/status/status_test.cc \ - -############################### gxs ######################################## - -HEADERS += libretroshare/services/gxs/rsgxstestitems.h \ - libretroshare/services/gxs/gxstestservice.h \ - libretroshare/services/gxs/GxsIsolatedServiceTester.h \ - libretroshare/services/gxs/GxsPeerNode.h \ - libretroshare/services/gxs/GxsPairServiceTester.h \ - libretroshare/services/gxs/FakePgpAuxUtils.h \ - -# libretroshare/services/gxs/RsGxsNetServiceTester.h \ - -SOURCES += libretroshare/services/gxs/rsgxstestitems.cc \ - libretroshare/services/gxs/gxstestservice.cc \ - libretroshare/services/gxs/GxsIsolatedServiceTester.cc \ - libretroshare/services/gxs/GxsPeerNode.cc \ - libretroshare/services/gxs/GxsPairServiceTester.cc \ - libretroshare/services/gxs/FakePgpAuxUtils.cc \ - libretroshare/services/gxs/nxsbasic_test.cc \ - libretroshare/services/gxs/nxspair_tests.cc \ - libretroshare/services/gxs/gxscircle_tests.cc \ - -# libretroshare/services/gxs/gxscircle_mintest.cc \ - - -# libretroshare/services/gxs/RsGxsNetServiceTester.cc \ +} + +##################################### MacOS ###################################### + +macx { + # ENABLE THIS OPTION FOR Univeral Binary BUILD. + #CONFIG += ppc x86 + #QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.4 + + CONFIG += version_detail_bash_script + LIBS += ../../libretroshare/src/lib/libretroshare.a + LIBS += ../librssimulator/lib/librssimulator.a + LIBS += ../../openpgpsdk/src/lib/libops.a -lbz2 + LIBS += -lssl -lcrypto -lz + #LIBS += -lssl -lcrypto -lz -lgpgme -lgpg-error -lassuan + for(lib, LIB_DIR):exists($$lib/libminiupnpc.a){ LIBS += $$lib/libminiupnpc.a} + LIBS += -framework CoreFoundation + LIBS += -framework Security + + + for(lib, LIB_DIR):LIBS += -L"$$lib" + for(bin, BIN_DIR):LIBS += -L"$$bin" + + DEPENDPATH += . $$INC_DIR + INCLUDEPATH += . $$INC_DIR + + #LIBS += ../../supportlibs/pegmarkdown/lib/libpegmarkdown.a + + # We need a explicit path here, to force using the home version of sqlite3 that really encrypts the database. + LIBS += /usr/local/lib/libsqlcipher.a + #LIBS += -lsqlite3 + + #DEFINES* = MAC_IDLE # for idle feature + CONFIG -= uitools +} + +##################################### FreeBSD ###################################### + +freebsd-* { + INCLUDEPATH *= /usr/local/include/gpgme + LIBS *= ../../libretroshare/src/lib/libretroshare.a + LIBS *= ../librssimulator/lib/librssimulator.a + LIBS *= -lssl + LIBS *= -lgpgme + LIBS *= -lupnp + LIBS *= -lgnome-keyring + PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a + + gxs { + LIBS += ../../supportlibs/pegmarkdown/lib/libpegmarkdown.a + LIBS += -lsqlite3 + } + +} + +##################################### OpenBSD ###################################### + +openbsd-* { + INCLUDEPATH *= /usr/local/include + + PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a + PRE_TARGETDEPS *= ../../openpgpsdk/src/lib/libops.a + + LIBS *= ../../libretroshare/src/lib/libretroshare.a + LIBS *= ../librssimulator/lib/librssimulator.a + LIBS *= ../../openpgpsdk/src/lib/libops.a -lbz2 + LIBS *= -lssl -lcrypto + LIBS *= -lgpgme + LIBS *= -lupnp + LIBS *= -lgnome-keyring + PRE_TARGETDEPS *= ../../libretroshare/src/lib/libretroshare.a + + gxs { + LIBS += ../../supportlibs/pegmarkdown/lib/libpegmarkdown.a + LIBS += -lsqlite3 + } + + LIBS *= -rdynamic +} + + + +############################## Common stuff ###################################### + +# On Linux systems that alredy have libssl and libcrypto it is advisable +# to rename the patched version of SSL to something like libsslxpgp.a and libcryptoxpg.a + +# ########################################### + +bitdht { + LIBS += ../../libbitdht/src/lib/libbitdht.a + PRE_TARGETDEPS *= ../../libbitdht/src/lib/libbitdht.a +} + +win32 { +# must be added after bitdht + LIBS += -lws2_32 +} + +DEPENDPATH += . \ + +INCLUDEPATH += ../../libretroshare/src/ +INCLUDEPATH += ../librssimulator/ + +SOURCES += unittests.cc \ + +################################ Serialiser ################################ +HEADERS += libretroshare/serialiser/support.h \ + libretroshare/serialiser/rstlvutil.h \ + +SOURCES += libretroshare/serialiser/rsturtleitem_test.cc \ + libretroshare/serialiser/rsbaseitem_test.cc \ + libretroshare/serialiser/rsgxsupdateitem_test.cc \ + libretroshare/serialiser/rsmsgitem_test.cc \ + libretroshare/serialiser/rsstatusitem_test.cc \ + libretroshare/serialiser/rsnxsitems_test.cc \ + libretroshare/serialiser/rsgxsiditem_test.cc \ +# libretroshare/serialiser/rsphotoitem_test.cc \ + libretroshare/serialiser/tlvbase_test2.cc \ + libretroshare/serialiser/tlvrandom_test.cc \ + libretroshare/serialiser/tlvbase_test.cc \ + libretroshare/serialiser/tlvstack_test.cc \ + libretroshare/serialiser/tlvitems_test.cc \ +# libretroshare/serialiser/rsgrouteritem_test.cc \ + libretroshare/serialiser/tlvtypes_test.cc \ + libretroshare/serialiser/tlvkey_test.cc \ + libretroshare/serialiser/support.cc \ + libretroshare/serialiser/rstlvutil.cc \ + +# Still to convert these. +# libretroshare/serialiser/rsconfigitem_test.cc \ +# libretroshare/serialiser/rsgrouteritem_test.cc \ + + +################################## GXS ##################################### + +HEADERS += libretroshare/gxs/common/data_support.h \ + +SOURCES += libretroshare/gxs/common/data_support.cc \ + +HEADERS += libretroshare/gxs/nxs_test/nxsdummyservices.h \ + libretroshare/gxs/nxs_test/nxsgrptestscenario.h \ + libretroshare/gxs/nxs_test/nxsmsgtestscenario.h \ + libretroshare/gxs/nxs_test/nxsgrpsync_test.h \ + libretroshare/gxs/nxs_test/nxsmsgsync_test.h \ + libretroshare/gxs/nxs_test/nxstesthub.h \ + libretroshare/gxs/nxs_test/nxstestscenario.h \ + libretroshare/gxs/nxs_test/nxsgrpsyncdelayed.h + +SOURCES += libretroshare/gxs/nxs_test/nxsdummyservices.cc \ + libretroshare/gxs/nxs_test/nxsgrptestscenario.cc \ + libretroshare/gxs/nxs_test/nxsmsgtestscenario.cc \ + libretroshare/gxs/nxs_test/nxstesthub.cc \ + libretroshare/gxs/nxs_test/rsgxsnetservice_test.cc \ + libretroshare/gxs/nxs_test/nxsmsgsync_test.cc \ + libretroshare/gxs/nxs_test/nxsgrpsync_test.cc \ + libretroshare/gxs/nxs_test/nxsgrpsyncdelayed.cc + +HEADERS += libretroshare/gxs/gen_exchange/genexchangetester.h \ + libretroshare/gxs/gen_exchange/gxspublishmsgtest.h \ + libretroshare/gxs/gen_exchange/genexchangetestservice.h \ + libretroshare/gxs/gen_exchange/gxspublishgrouptest.h \ + libretroshare/gxs/gen_exchange/rsdummyservices.h \ + libretroshare/gxs/gen_exchange/gxsteststats.cpp + +# libretroshare/gxs/gen_exchange/gxsmsgrelatedtest.h \ + +SOURCES += libretroshare/gxs/gen_exchange/gxspublishgrouptest.cc \ + libretroshare/gxs/gen_exchange/gxsteststats.cpp \ + libretroshare/gxs/gen_exchange/gxspublishmsgtest.cc \ + libretroshare/gxs/gen_exchange/rsdummyservices.cc \ + libretroshare/gxs/gen_exchange/rsgenexchange_test.cc \ + libretroshare/gxs/gen_exchange/genexchangetester.cc \ + libretroshare/gxs/gen_exchange/genexchangetestservice.cc \ + +SOURCES += libretroshare/gxs/security/gxssecurity_test.cc + +# libretroshare/gxs/gen_exchange/gxsmsgrelatedtest.cc \ + +HEADERS += libretroshare/gxs/data_service/rsdataservice_test.h \ + +SOURCES += libretroshare/gxs/data_service/rsdataservice_test.cc \ + libretroshare/gxs/data_service/rsgxsdata_test.cc \ + + +################################ dbase ##################################### + + +#SOURCES += libretroshare/dbase/fisavetest.cc \ +# libretroshare/dbase/fitest2.cc \ +# libretroshare/dbase/searchtest.cc \ + +# libretroshare/dbase/ficachetest.cc \ +# libretroshare/dbase/fimontest.cc \ + + +############################### services ################################### + +SOURCES += libretroshare/services/status/status_test.cc \ + +############################### gxs ######################################## + +HEADERS += libretroshare/services/gxs/rsgxstestitems.h \ + libretroshare/services/gxs/gxstestservice.h \ + libretroshare/services/gxs/GxsIsolatedServiceTester.h \ + libretroshare/services/gxs/GxsPeerNode.h \ + libretroshare/services/gxs/GxsPairServiceTester.h \ + libretroshare/services/gxs/FakePgpAuxUtils.h \ + +# libretroshare/services/gxs/RsGxsNetServiceTester.h \ + +SOURCES += libretroshare/services/gxs/rsgxstestitems.cc \ + libretroshare/services/gxs/gxstestservice.cc \ + libretroshare/services/gxs/GxsIsolatedServiceTester.cc \ + libretroshare/services/gxs/GxsPeerNode.cc \ + libretroshare/services/gxs/GxsPairServiceTester.cc \ + libretroshare/services/gxs/FakePgpAuxUtils.cc \ + libretroshare/services/gxs/nxsbasic_test.cc \ + libretroshare/services/gxs/nxspair_tests.cc \ + libretroshare/services/gxs/gxscircle_tests.cc \ + +# libretroshare/services/gxs/gxscircle_mintest.cc \ + + +# libretroshare/services/gxs/RsGxsNetServiceTester.cc \