# Compilation on MacOS ## Qt Installation Install Qt via: [Qt Download](http://www.qt.io/download/) Use default options. And add Qt Script support. Add to the PATH environment variable by editing your *~/.profile* file. export PATH="/users/$USER/Qt/5.14.1/clang_64/bin:$PATH" Depends on which version of Qt you use. ## Get RetroShare In Qt Creator Projects -> New -> Import Project -> Git Clone -> Choose Add Repository and Continoue Repository: https://github.com/RetroShare/RetroShare.git via Terminal: cd git clone https://github.com/RetroShare/RetroShare.git retroshare via GitHub Desktop: [GitHub Desktop Download](https://central.github.com/deployments/desktop/desktop/latest/darwin) In GitHub Desktop -> Clone Repository -> URL Add Repository URL: https://github.com/RetroShare/RetroShare.git and Clone ## ***Get XCode & MacOSX SDK*** Install XCode following this guide: [XCode](http://guide.macports.org/#installing.xcode) To identify the correct version of Xcode to install, you need to know which OS you are running. Go to the [x] menu -> "About This Mac" and read the macOS version number. If you are running the macOS Catalina >= 10.15, you can install Xcode directly from App Store using the instructions below. You can find older versions of Xcode at [Apple Developer Downloads](https://developer.apple.com/downloads/). Find the appropriate .xip file for your macOS version To install from App Store: Select [x] menu - > "App Storeā€¦". Search for Xcode. Download and install. Once Xcode has installed, you must drag the XCode icon into your Applications folder. After you have done this, open Xcode from the Applications folder by double-clicking on the icon and then follow the remaining instructions below. Install XCode command line developer tools: $xcode-select --install Start XCode to get it updated and to able C compiler to create executables. Get Your MacOSX SDK if missing: [MacOSX-SDKs](https://github.com/phracker/MacOSX-SDKs) ## ***Choose if you use MacPort or HomeBrew*** ### MacPort Installation Install MacPort following this guide: [MacPort](http://guide.macports.org/#installing.xcode) #### 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 $ sudo port install ffmpeg ### HOMEBREW Installation Install HomeBrew following this guide: [HomeBrew](http://brew.sh/) #### Install libraries $ brew install openssl $ brew install miniupnpc $ brew install libmicrohttpd $ brew install rapidjson $ brew install sqlcipher If you have error in linking, run this: $sudo chown -R $(whoami) /usr/local/lib/pkgconfig For VOIP Plugin: $ brew install speex $ brew install speexdsp $ brew install opencv $ brew install ffmpeg For FeedReader Plugin: $ brew install libxslt ## Last Settings In QtCreator Projects -> Manage Kits > Version Control > Git: select "Pull with rebase" In QtCreator Projects -> Build -> Build Settings -> Build Environment -> Add this path: /usr/local/bin In QtCreator Projects -> Build -> Build Settings -> Build Steps -> Add Additional arguments: "CONFIG+=rs_autologin" "CONFIG+=rs_use_native_dialogs" ## Set your Mac OS SDK version Edit RetroShare.pro CONFIG += c++14 rs_macos11.1 Edit retroshare.pri macx:CONFIG *= rs_macos11.1 rs_macos10.8:CONFIG -= rs_macos11.1 rs_macos10.9:CONFIG -= rs_macos11.1 rs_macos10.10:CONFIG -= rs_macos11.1 rs_macos10.12:CONFIG -= rs_macos11.1 rs_macos10.13:CONFIG -= rs_macos11.1 rs_macos10.14:CONFIG -= rs_macos11.1 rs_macos10.15:CONFIG -= rs_macos11.1 ## Link Include & Libraries Edit your retroshare.pri and add to macx-* section INCLUDEPATH += "/usr/local/opt/openssl/include" QMAKE_LIBDIR += "/usr/local/opt/openssl/lib" QMAKE_LIBDIR += "/usr/local/opt/sqlcipher/lib" QMAKE_LIBDIR += "/usr/local/opt/miniupnpc/lib" alternative via Terminal $ qmake INCLUDEPATH+="/usr/local/opt/openssl/include" \ QMAKE_LIBDIR+="/usr/local/opt/openssl/lib" \ QMAKE_LIBDIR+="/usr/local/opt/sqlcipher/lib" \ QMAKE_LIBDIR+="/usr/local/opt/miniupnpc/lib" \ CONFIG+=rs_autologin \ CONFIG+=rs_use_native_dialogs \ CONFIG+=release \ .. With plugins: $ qmake \ INCLUDEPATH+="/usr/local/opt/openssl/include" QMAKE_LIBDIR+="/usr/local/opt/openssl/lib" \ QMAKE_LIBDIR+="/usr/local/opt/sqlcipher/lib" \ QMAKE_LIBDIR+="/usr/local/opt/miniupnpc/lib" \ INCLUDEPATH+="/usr/local/opt/opencv/include/opencv4" QMAKE_LIBDIR+="/usr/local/opt/opencv/lib" \ INCLUDEPATH+="/usr/local/opt/speex/include" QMAKE_LIBDIR+="/usr/local/opt/speex/lib/" \ INCLUDEPATH+="/usr/local/opt/speexdsp/include" QMAKE_LIBDIR+="/usr/local/opt/speexdsp/lib/" \ INCLUDEPATH+="/usr/local/opt/libxslt/include" QMAKE_LIBDIR+="/usr/local/opt/libxslt/lib" \ QMAKE_LIBDIR+="/usr/local/opt/ffmpeg/lib" \ LIBS+=-lopencv_videoio \ CONFIG+=retroshare_plugins \ CONFIG+=rs_autologin \ CONFIG+=rs_use_native_dialogs \ CONFIG+=release \ .. ## Compile RetroShare You can now compile RetroShare into Qt Creator or with Terminal $ cd /path/to/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 the compiled application at *./retroshare/retroshare-gui/src/retroshare.app* ## Issues If you have issues with openssl (Undefined symbols for architecture x86_64) try to add to *~/.profile* file this or via Terminal export PATH="/usr/local/opt/openssl/bin:$PATH" export LDFLAGS="-L/usr/local/opt/openssl/lib" export CPPFLAGS="-I/usr/local/opt/openssl/include" export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig" For Qt Creator -> QtCreator Projects -> Build -> Build Settings -> Build Steps -> Add Additional arguments: LDFLAGS="-L/usr/local/opt/openssl/lib" CPPFLAGS="-I/usr/local/opt/openssl/include" ## Copy Plugins $ cp \ ./plugins/FeedReader/lib/libFeedReader.dylib \ ./plugins/VOIP/lib/libVOIP.dylib \ ./plugins/RetroChess/lib/libRetroChess.dylib \ ./retroshare-gui/src/RetroShare.app/Contents/Resources/