diff --git a/build_scripts/Windows-msys2/build/build.bat b/build_scripts/Windows-msys2/build/build.bat index 6dc9d8503..c83583180 100644 --- a/build_scripts/Windows-msys2/build/build.bat +++ b/build_scripts/Windows-msys2/build/build.bat @@ -26,6 +26,9 @@ if "%ParamWebui%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-% :: Plugins if "%ParamPlugins%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-speex mingw-w64-%RsMSYS2Architecture%-speexdsp mingw-w64-%RsMSYS2Architecture%-curl mingw-w64-%RsMSYS2Architecture%-libxslt mingw-w64-%RsMSYS2Architecture%-opencv mingw-w64-%RsMSYS2Architecture%-ffmpeg" +:: Clang +if "%ParamClang%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-clang" + :: Initialize environment call "%~dp0env.bat" %* if errorlevel 2 exit /B 2 @@ -63,7 +66,11 @@ echo Qt %QtVersion% >> buildinfo.txt call "%ToolsPath%\msys2-path.bat" "%SourcePath%" MSYS2SourcePath call "%ToolsPath%\msys2-path.bat" "%EnvMSYS2Path%" MSYS2EnvMSYS2Path -%EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-g++ %RS_QMAKE_CONFIG%" +if "%ParamClang%"=="1" ( + %EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-clang-g++ %RS_QMAKE_CONFIG%" +) else ( + %EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-g++ %RS_QMAKE_CONFIG%" +) if errorlevel 1 goto error echo. diff --git a/build_scripts/Windows-msys2/build/env-base.bat b/build_scripts/Windows-msys2/build/env-base.bat index 2543eee7b..6f910649c 100644 --- a/build_scripts/Windows-msys2/build/env-base.bat +++ b/build_scripts/Windows-msys2/build/env-base.bat @@ -7,6 +7,7 @@ set ParamAutologin=0 set ParamPlugins=0 set ParamTor=0 set ParamWebui=0 +set ParamClang=0 set CoreCount=%NUMBER_OF_PROCESSORS% set RS_QMAKE_CONFIG= @@ -31,6 +32,8 @@ if "%~1" NEQ "" ( set ParamWebui=1 ) else if "%%~a"=="singlethread" ( set CoreCount=1 + ) else if "%%~a"=="clang" ( + set ParamClang=1 ) else if "%%~a"=="CONFIG+" ( set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% %1 ) else ( @@ -61,6 +64,10 @@ if "%Param64%"=="1" ( set RsMSYS2Architecture=x86_64 ) +if "%ParamClang%"=="1" ( + set RsArchitecture=%RsArchitecture%-Clang +) + if "%RsBit%"=="" goto :usage if "%ParamRelease%"=="1" ( @@ -89,7 +96,7 @@ exit /B 0 :usage echo. -echo Usage: 32^|64 release^|debug [version autologin plugins webui singlethread] +echo Usage: 32^|64 release^|debug [autologin plugins webui singlethread clang] echo. echo Mandatory parameter echo 32^|64 32-bit or 64-bit Version @@ -100,6 +107,7 @@ echo autologin Build with autologin echo plugins Build plugins echo webui Enable JsonAPI and pack webui files echo singlethread Use only 1 thread for building +echo clang Use clang compiler instead of GCC echo. echo Parameter for pack echo tor Pack tor version diff --git a/libbitdht/src/util/bdnet.cc b/libbitdht/src/util/bdnet.cc index 4c5f681a6..ba8c33553 100644 --- a/libbitdht/src/util/bdnet.cc +++ b/libbitdht/src/util/bdnet.cc @@ -285,12 +285,6 @@ int sleep(unsigned int sec) } #endif -int usleep(unsigned int usec) -{ - Sleep(usec / 1000); - return 0; -} - /********************************** WINDOWS/UNIX SPECIFIC PART ******************/ #else // UNIX diff --git a/libbitdht/src/util/bdnet.h b/libbitdht/src/util/bdnet.h index 639a2ed1a..89ecfa710 100644 --- a/libbitdht/src/util/bdnet.h +++ b/libbitdht/src/util/bdnet.h @@ -159,7 +159,6 @@ int bdnet_w2u_errno(int error); #ifndef __MINGW64_VERSION_MAJOR int sleep(unsigned int sec); #endif -int usleep(unsigned int usec); #endif // END of WINDOWS defines. /********************************** WINDOWS/UNIX SPECIFIC PART ******************/ diff --git a/libretroshare/src/libretroshare.pro b/libretroshare/src/libretroshare.pro index 3f9dde680..29d317dbf 100644 --- a/libretroshare/src/libretroshare.pro +++ b/libretroshare/src/libretroshare.pro @@ -237,7 +237,7 @@ win32-x-g++ { } ################################# Windows ########################################## -win32-g++ { +win32-g++|win32-clang-g++ { QMAKE_CC = $${QMAKE_CXX} OBJECTS_DIR = temp/obj MOC_DIR = temp/moc @@ -843,7 +843,7 @@ rs_jsonapi { no_rs_cross_compiling { DUMMYRESTBEDINPUT = FORCE CMAKE_GENERATOR_OVERRIDE="" - win32-g++:CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\"" + win32-g++|win32-clang-g++:CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\"" genrestbedlib.name = Generating librestbed. genrestbedlib.input = DUMMYRESTBEDINPUT genrestbedlib.output = $$clean_path($${RESTBED_BUILD_PATH}/librestbed.a) @@ -860,6 +860,7 @@ rs_jsonapi { mkdir -p $${RESTBED_BUILD_PATH} && cd $${RESTBED_BUILD_PATH} && \ cmake \ -DCMAKE_CXX_COMPILER=$$QMAKE_CXX \ + \"-DCMAKE_CXX_FLAGS=$${QMAKE_CXXFLAGS}\" \ $${CMAKE_GENERATOR_OVERRIDE} -DBUILD_SSL=OFF \ -DCMAKE_INSTALL_PREFIX=. -B. \ -H$$shell_path($${RESTBED_SRC_PATH}) && \ @@ -940,7 +941,7 @@ rs_broadcast_discovery { no_rs_cross_compiling { DUMMYQMAKECOMPILERINPUT = FORCE CMAKE_GENERATOR_OVERRIDE="" - win32-g++:CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\"" + win32-g++|win32-clang-g++:CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\"" udpdiscoverycpplib.name = Generating libudp-discovery.a. udpdiscoverycpplib.input = DUMMYQMAKECOMPILERINPUT udpdiscoverycpplib.output = $$clean_path($${UDP_DISCOVERY_BUILD_PATH}/libudp-discovery.a) @@ -954,6 +955,7 @@ rs_broadcast_discovery { cd $${UDP_DISCOVERY_BUILD_PATH} && \ cmake -DCMAKE_C_COMPILER=$$fixQmakeCC($$QMAKE_CC) \ -DCMAKE_CXX_COMPILER=$$QMAKE_CXX \ + \"-DCMAKE_CXX_FLAGS=$${QMAKE_CXXFLAGS}\" \ $${CMAKE_GENERATOR_OVERRIDE} \ -DBUILD_EXAMPLE=OFF -DBUILD_TOOL=OFF \ -DCMAKE_INSTALL_PREFIX=. -B. \ diff --git a/libretroshare/src/use_libretroshare.pri b/libretroshare/src/use_libretroshare.pri index 681805a7f..b8343ed36 100644 --- a/libretroshare/src/use_libretroshare.pri +++ b/libretroshare/src/use_libretroshare.pri @@ -46,7 +46,7 @@ rs_jsonapi { LIBS *= -L$$clean_path($${RESTBED_BUILD_PATH}/) -lrestbed } else:sLibs *= restbed - win32-g++:dLibs *= wsock32 + win32-g++|win32-clang-g++:dLibs *= wsock32 } linux-* { @@ -55,7 +55,7 @@ linux-* { rs_deep_channels_index | rs_deep_files_index { mLibs += xapian - win32-g++:mLibs += rpcrt4 + win32-g++|win32-clang-g++:mLibs += rpcrt4 } rs_deep_files_index_ogg { @@ -81,7 +81,7 @@ rs_broadcast_discovery { LIBS *= -L$$clean_path($${UDP_DISCOVERY_BUILD_PATH}) -ludp-discovery } else:sLibs *= udp-discovery - win32-g++:dLibs *= wsock32 + win32-g++|win32-clang-g++:dLibs *= wsock32 } static { diff --git a/openpgpsdk/src/openpgpsdk.pro b/openpgpsdk/src/openpgpsdk.pro index fa117381a..66341d0a3 100644 --- a/openpgpsdk/src/openpgpsdk.pro +++ b/openpgpsdk/src/openpgpsdk.pro @@ -21,7 +21,7 @@ linux-* { OBJECTS_DIR = temp/linux/obj } -win32-g++ { +win32-g++|win32-clang-g++ { HEADERS += openpgpsdk/opsstring.h SOURCES += openpgpsdk/opsstring.c diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro index a5d6838ae..9ff9f7ba2 100644 --- a/retroshare-gui/src/retroshare-gui.pro +++ b/retroshare-gui/src/retroshare-gui.pro @@ -59,7 +59,7 @@ rs_gui_cmark { DUMMYCMARKINPUT = FORCE CMAKE_GENERATOR_OVERRIDE="" - win32-g++:CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\"" + win32-g++|win32-clang-g++:CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\"" gencmarklib.name = Generating libcmark. gencmarklib.input = DUMMYCMARKINPUT gencmarklib.output = $$clean_path($${CMARK_BUILD_PATH}/src/libcmark.a) @@ -73,6 +73,7 @@ rs_gui_cmark { mkdir -p $${CMARK_BUILD_PATH} && cd $${CMARK_BUILD_PATH} && \ cmake \ -DCMAKE_CXX_COMPILER=$$QMAKE_CXX \ + \"-DCMAKE_CXX_FLAGS=$${QMAKE_CXXFLAGS}\" \ $${CMAKE_GENERATOR_OVERRIDE} \ -DCMAKE_INSTALL_PREFIX=. \ -B. \ @@ -209,7 +210,7 @@ win32-x-g++ { #################################### Windows ##################################### -win32-g++ { +win32-g++|win32-clang-g++ { CONFIG(debug, debug|release) { # show console output CONFIG += console diff --git a/retroshare-service/src/retroshare-service.pro b/retroshare-service/src/retroshare-service.pro index 75cb0b581..454d2d216 100644 --- a/retroshare-service/src/retroshare-service.pro +++ b/retroshare-service/src/retroshare-service.pro @@ -81,7 +81,7 @@ macx { INCLUDEPATH += . $$INC_DIR } -win32-g++ { +win32-g++|win32-clang-g++ { CONFIG(debug, debug|release) { # show console output CONFIG += console diff --git a/retroshare.pri b/retroshare.pri index 6bccc1f5a..802a3cd75 100644 --- a/retroshare.pri +++ b/retroshare.pri @@ -631,7 +631,7 @@ android-* { RS_THREAD_LIB = } -win32-g++ { +win32-g++|win32-clang-g++ { !isEmpty(EXTERNAL_LIB_DIR) { message(Use pre-compiled libraries in $${EXTERNAL_LIB_DIR}.) PREFIX = $$system_path($$EXTERNAL_LIB_DIR) @@ -683,6 +683,10 @@ win32-g++ { message(***retroshare.pri:Win32 PREFIX $$PREFIX INCLUDEPATH $$INCLUDEPATH QMAKE_LIBDIR $$QMAKE_LIBDIR DEFINES $$DEFINES) } +win32-clang-g++ { + QMAKE_CXXFLAGS += -femulated-tls +} + macx-* { rs_macos10.8 { message(***retroshare.pri: Set Target and SDK to MacOS 10.8 )