RetroShare/retroshare.pri
2018-01-05 21:59:22 +01:00

318 lines
11 KiB
Plaintext

# To disable RetroShare-gui append the following
# assignation to qmake command line "CONFIG+=no_retroshare_gui"
CONFIG *= retroshare_gui
no_retroshare_gui:CONFIG -= retroshare_gui
# To build the RetroTor executable, just uncomment the following option.
# RetroTor is a version of RS that automatically configures Tor for its own usage
# using only hidden nodes. It will not start if Tor is not working.
# CONFIG *= retrotor
# To disable RetroShare-nogui append the following
# assignation to qmake command line "CONFIG+=no_retroshare_nogui"
CONFIG *= retroshare_nogui
no_retroshare_nogui:CONFIG -= retroshare_nogui
# To disable RetroShare plugins append the following
# assignation to qmake command line "CONFIG+=no_retroshare_plugins"
CONFIG *= retroshare_plugins
no_retroshare_plugins:CONFIG -= retroshare_plugins
# To enable RetroShare-android-service append the following assignation to
# qmake command line "CONFIG+=retroshare_android_service"
CONFIG *= no_retroshare_android_service
retroshare_android_service:CONFIG -= no_retroshare_android_service
# To enable RetroShare-android-notify-service append the following
# assignation to qmake command line
# "CONFIG+=retroshare_android_notify_service"
CONFIG *= no_retroshare_android_notify_service
retroshare_android_notify_service:CONFIG -= no_retroshare_android_notify_service
# To enable RetroShare-QML-app append the following assignation to
# qmake command line "CONFIG+=retroshare_qml_app"
CONFIG *= no_retroshare_qml_app
retroshare_qml_app:CONFIG -= no_retroshare_qml_app
# To enable libresapi via local socket (unix domain socket or windows named
# pipes) append the following assignation to qmake command line
#"CONFIG+=libresapilocalserver"
CONFIG *= no_libresapilocalserver
libresapilocalserver:CONFIG -= no_libresapilocalserver
# To enable Qt dependencies in libresapi append the following
# assignation to qmake command line "CONFIG+=qt_dependencies"
CONFIG *= no_qt_dependencies
qt_dependencies:CONFIG -= no_qt_dependencies
# To disable libresapi via HTTP (based on libmicrohttpd) append the following
# assignation to qmake command line "CONFIG+=no_libresapihttpserver"
CONFIG *= libresapihttpserver
no_libresapihttpserver:CONFIG -= libresapihttpserver
# To disable SQLCipher support append the following assignation to qmake
# command line "CONFIG+=no_sqlcipher"
CONFIG *= sqlcipher
no_sqlcipher:CONFIG -= sqlcipher
# To enable autologin (this is higly discouraged as it may compromise your node
# security in multiple ways) append the following assignation to qmake command
# line "CONFIG+=rs_autologin"
CONFIG *= no_rs_autologin
rs_autologin:CONFIG -= no_rs_autologin
# To have only hidden node generation append the following assignation
# to qmake command line "CONFIG+=rs_onlyhiddennode"
CONFIG *= no_rs_onlyhiddennode
rs_onlyhiddennode:CONFIG -= no_rs_onlyhiddennode
# To disable GXS (General eXchange System) append the following
# assignation to qmake command line "CONFIG+=no_rs_gxs"
CONFIG *= rs_gxs
no_rs_gxs:CONFIG -= rs_gxs
# To enable RS Deprecated Warnings append the following assignation to qmake
# command line "CONFIG+=rs_deprecatedwarning"
CONFIG *= no_rs_deprecatedwarning
rs_deprecatedwarning:CONFIG -= no_rs_deprecatedwarning
# To enable CPP #warning append the following assignation to qmake command
# line "CONFIG+=rs_cppwarning"
CONFIG *= no_rs_cppwarning
rs_cppwarning:CONFIG -= no_rs_cppwarning
# To disable GXS mail append the following assignation to qmake command line
# "CONFIG+=no_rs_gxs_trans"
CONFIG *= rs_gxs_trans
#no_rs_gxs_trans:CONFIG -= rs_gxs_trans ## Disabing not supported ATM
# To enable GXS based async chat append the following assignation to qmake
# command line "CONFIG+=rs_async_chat"
CONFIG *= no_rs_async_chat
rs_async_chat:CONFIG -= no_rs_async_chat
# To select your MacOsX version append the following assignation to qmake
# command line "CONFIG+=rs_macos10.11" where 10.11 depends your version
CONFIG *= rs_macos10.11
rs_macos10.8:CONFIG -= rs_macos10.11
rs_macos10.9:CONFIG -= rs_macos10.11
rs_macos10.10:CONFIG -= rs_macos10.11
rs_macos10.12:CONFIG -= rs_macos10.11
linux-* {
isEmpty(PREFIX) { PREFIX = "/usr" }
isEmpty(BIN_DIR) { BIN_DIR = "$${PREFIX}/bin" }
isEmpty(INC_DIR) { INC_DIR = "$${PREFIX}/include/retroshare" }
isEmpty(LIB_DIR) { LIB_DIR = "$${PREFIX}/lib" }
isEmpty(DATA_DIR) { DATA_DIR = "$${PREFIX}/share/retroshare" }
isEmpty(PLUGIN_DIR) { PLUGIN_DIR = "$${LIB_DIR}/retroshare/extensions6" }
rs_autologin {
!macx {
DEFINES *= HAS_GNOME_KEYRING
PKGCONFIG *= gnome-keyring-1
}
}
}
android-g++ {
isEmpty(NATIVE_LIBS_TOOLCHAIN_PATH) {
NATIVE_LIBS_TOOLCHAIN_PATH = $$(NATIVE_LIBS_TOOLCHAIN_PATH)
}
retroshare_qml_app {
CONFIG -= no_retroshare_android_notify_service
CONFIG *= retroshare_android_notify_service
}
CONFIG *= no_libresapihttpserver no_sqlcipher upnp_libupnp
CONFIG -= libresapihttpserver sqlcipher upnp_miniupnpc
QT *= androidextras
DEFINES *= "fopen64=fopen"
DEFINES *= "fseeko64=fseeko"
DEFINES *= "ftello64=ftello"
INCLUDEPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
LIBS *= -L$$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/
LIBS *= -lbz2 -lupnp -lixml -lthreadutil -lsqlite3
ANDROID_EXTRA_LIBS *= $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/libsqlite3.so
# message(LIBS: $$LIBS)
# message(ANDROID_EXTRA_LIBS: $$ANDROID_EXTRA_LIBS)
# message(ANDROID_PLATFORM: $$ANDROID_PLATFORM)
# message(ANDROID_PLATFORM_ROOT_PATH: $$ANDROID_PLATFORM_ROOT_PATH)
# message(NATIVE_LIBS_TOOLCHAIN_PATH: $$NATIVE_LIBS_TOOLCHAIN_PATH)
}
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" }
}
# Check for msys2
PREFIX_MSYS2 = $$(MINGW_PREFIX)
isEmpty(PREFIX_MSYS2) {
exists(C:/msys32/mingw32/include) {
message(MINGW_PREFIX is empty. Set it in your environment variables.)
message(Found it here:C:\msys32\mingw32)
PREFIX_MSYS2 = "C:\msys32\mingw32"
}
exists(C:/msys64/mingw32/include) {
message(MINGW_PREFIX is empty. Set it in your environment variables.)
message(Found it here:C:\msys64\mingw32)
PREFIX_MSYS2 = "C:\msys64\mingw32"
}
}
!isEmpty(PREFIX_MSYS2) {
message(msys2 is installed.)
BIN_DIR += "$${PREFIX_MSYS2}/bin"
INC_DIR += "$${PREFIX_MSYS2}/include"
LIB_DIR += "$${PREFIX_MSYS2}/lib"
}
}
macx {
rs_macos10.8 {
message(***retroshare.pri: Set Target and SDK to MacOS 10.8 )
QMAKE_MACOSX_DEPLOYMENT_TARGET=10.8
QMAKE_MAC_SDK = macosx10.8
}
rs_macos10.9 {
message(***retroshare.pri: Set Target and SDK to MacOS 10.9 )
QMAKE_MACOSX_DEPLOYMENT_TARGET=10.9
QMAKE_MAC_SDK = macosx10.9
}
rs_macos10.10 {
message(***retroshare.pri: Set Target and SDK to MacOS 10.10 )
QMAKE_MACOSX_DEPLOYMENT_TARGET=10.10
QMAKE_MAC_SDK = macosx10.10
}
rs_macos10.11 {
message(***retroshare.pri: Set Target and SDK to MacOS 10.11 )
QMAKE_MACOSX_DEPLOYMENT_TARGET=10.11
QMAKE_MAC_SDK = macosx10.11
}
rs_macos10.12 {
message(***retroshare.pri: Set Target and SDK to MacOS 10.12 )
QMAKE_MACOSX_DEPLOYMENT_TARGET=10.12
QMAKE_MAC_SDK = macosx10.12
QMAKE_CXXFLAGS += -Wno-nullability-completeness
QMAKE_CFLAGS += -Wno-nullability-completeness
}
message(***retroshare.pri:MacOSX)
BIN_DIR += "/usr/bin"
INC_DIR += "/usr/include"
INC_DIR += "/usr/local/include"
INC_DIR += "/opt/local/include"
LIB_DIR += "/usr/local/lib"
LIB_DIR += "/opt/local/lib"
CONFIG += c++11
}
unfinished {
CONFIG += gxscircles
CONFIG += gxsthewire
CONFIG += gxsphotoshare
CONFIG += wikipoos
}
wikipoos:DEFINES *= RS_USE_WIKI
rs_gxs:DEFINES *= RS_ENABLE_GXS
libresapilocalserver:DEFINES *= LIBRESAPI_LOCAL_SERVER
qt_dependencies:DEFINES *= LIBRESAPI_QT
libresapihttpserver:DEFINES *= ENABLE_WEBUI
sqlcipher:DEFINES -= NO_SQLCIPHER
no_sqlcipher:DEFINES *= NO_SQLCIPHER
rs_autologin {
DEFINES *= RS_AUTOLOGIN
warning("You have enabled RetroShare auto-login, this is discouraged. The usage of auto-login on some linux distributions may allow someone having access to your session to steal the SSL keys of your node location and therefore compromise your security")
}
retrotor {
DEFINES *= RS_ONLYHIDDENNODE
}
rs_onlyhiddennode {
DEFINES *= RS_ONLYHIDDENNODE
warning("QMAKE: You have enabled only hidden node.")
}
no_rs_deprecatedwarning {
QMAKE_CXXFLAGS += -Wno-deprecated
QMAKE_CXXFLAGS += -Wno-deprecated-declarations
DEFINES *= RS_NO_WARN_DEPRECATED
warning("QMAKE: You have disabled deprecated warnings.")
}
no_rs_cppwarning {
QMAKE_CXXFLAGS += -Wno-cpp
DEFINES *= RS_NO_WARN_CPP
warning("QMAKE: You have disabled C preprocessor warnings.")
}
rs_gxs_trans {
DEFINES *= RS_GXS_TRANS
greaterThan(QT_MAJOR_VERSION, 4) {
CONFIG += c++11
} else {
QMAKE_CXXFLAGS += -std=c++0x
}
}
rs_async_chat {
DEFINES *= RS_ASYNC_CHAT
}
rs_chatserver {
DEFINES *= RS_CHATSERVER
}
###########################################################################################################################################################
#
# V07_NON_BACKWARD_COMPATIBLE_CHANGE_001:
#
# What: Computes the node id by performing a sha256 hash of the certificate's PGP signature, instead of simply picking up the last 20 bytes of it.
#
# Why: There is no real risk in forging a certificate with the same ID as the authentication is performed over the PGP signature of the certificate
# which hashes the full SSL certificate (i.e. the full serialized CERT_INFO structure). However the possibility to
# create two certificates with the same IDs is a problem, as it can be used to cause disturbance in the software.
#
# Backward compat: connexions impossible with non patched peers older than Nov 2017, probably because the SSL id that is computed is not the same on both side,
# and in particular unpatched peers see a cerficate with ID different (because computed with the old method) than the ID that was
# submitted when making friends.
#
# Note: the advantage of basing the ID on the signature rather than the public key is not very clear, given that the signature is based on a hash
# of the public key (and the rest of the certificate info).
#
# V07_NON_BACKWARD_COMPATIBLE_CHANGE_002:
#
# What: Use RSA+SHA256 instead of RSA+SHA1 for PGP certificate signatures
#
# Why: Sha1 is likely to be prone to primary collisions anytime soon, so it is urgent to turn to a more secure solution.
#
# Backward compat: unpatched peers after Nov 2017 are able to verify signatures since openpgp-sdk already handle it.
#
# V07_NON_BACKWARD_COMPATIBLE_CHANGE_003:
#
# What: Do not hash PGP certificate twice when signing
#
# Why: hasing twice is not per se a security issue, but it makes it harder to change the settings for hashing.
#
# Backward compat: patched peers cannot connect to non patched peers older than Nov 2017.
###########################################################################################################################################################
#CONFIG += rs_v07_changes
rs_v07_changes {
DEFINES += V07_NON_BACKWARD_COMPATIBLE_CHANGE_001
DEFINES += V07_NON_BACKWARD_COMPATIBLE_CHANGE_002
DEFINES += V07_NON_BACKWARD_COMPATIBLE_CHANGE_003
}