diff --git a/build_scripts/Windows/.gitignore b/build_scripts/Windows/.gitignore new file mode 100644 index 000000000..a7b500b79 --- /dev/null +++ b/build_scripts/Windows/.gitignore @@ -0,0 +1 @@ +/build/env-mod.bat \ No newline at end of file diff --git a/build_scripts/Windows/build/build-installer.bat b/build_scripts/Windows/build/build-installer.bat new file mode 100644 index 000000000..9d3aa837e --- /dev/null +++ b/build_scripts/Windows/build/build-installer.bat @@ -0,0 +1,56 @@ +@echo off + +setlocal + +:: Initialize environment +call "%~dp0..\env.bat" +if errorlevel 1 goto error_env +call "%EnvPath%\env.bat" +if errorlevel 1 goto error_env + +:: Get gcc versions +call "%ToolsPath%\get-gcc-version.bat" GCCVersion +if "%GCCVersion%"=="" echo Cannot get gcc version.& exit /B 1 + +:: Check external libraries +if not exist "%RootPath%\libs" echo Please build external libraries first.& exit /B 1 + +:: Check gcc version of external libraries +if not exist "%RootPath%\libs\gcc-version" echo Cannot get gcc version of external libraries.& exit /B 1 +set /P LibsGCCVersion=<"%RootPath%\libs\gcc-version" +if "%LibsGCCVersion%" NEQ "%GCCVersion%" echo Please use correct version of external libraries. (gcc %GCCVersion% ^<^> libs %LibsGCCVersion%).& exit /B 1 + +:: Initialize environment +call "%~dp0env.bat" +if errorlevel 1 goto error_env + +:: Build defines for script +set NSIS_PARAM= + +set NSIS_PARAM=%NSIS_PARAM% /DRELEASEDIR="%RsBuildPath%" +set NSIS_PARAM=%NSIS_PARAM% /DQTDIR="%QtPath%\.." +set NSIS_PARAM=%NSIS_PARAM% /DMINGWDIR="%MinGWPath%\.." +set NSIS_PARAM=%NSIS_PARAM% /DOUTDIR="%RsPackPath%" +set NSIS_PARAM=%NSIS_PARAM% /DINSTALLERADD="%RsArchiveAdd%" + +:: Scan version from source +set RsRevision= +set RsBuildAdd= +call "%ToolsPath%\get-rs-version.bat" RS_REVISION_STRING RsRevision +if "%RsRevision%"=="" echo Revision not found.& exit /B 1 +call "%ToolsPath%\get-rs-version.bat" RS_BUILD_NUMBER_ADD RsBuildAdd +if errorlevel 1 exit /B 1 + +set NSIS_PARAM=%NSIS_PARAM% /DREVISION=%RsRevision% /DBUILDADD=%RsBuildAdd% + +set QtMainVersion=%QtVersion:~0,1% + +:: Create installer +"%EnvMakeNSISExe%" %NSIS_PARAM% "%SourcePath%\build_scripts\Windows\installer\retroshare-Qt%QtMainVersion%.nsi" + +exit /B %ERRORLEVEL% + +:error_env +echo Failed to initialize environment. +endlocal +exit /B 1 diff --git a/build_scripts/Windows/build/build.bat b/build_scripts/Windows/build/build.bat new file mode 100644 index 000000000..4893a51d7 --- /dev/null +++ b/build_scripts/Windows/build/build.bat @@ -0,0 +1,81 @@ +@echo off + +setlocal + +:: Initialize environment +call "%~dp0..\env.bat" +if errorlevel 1 goto error_env +call "%EnvPath%\env.bat" +if errorlevel 1 goto error_env + +:: Get gcc versions +call "%ToolsPath%\get-gcc-version.bat" GCCVersion +if "%GCCVersion%"=="" echo Cannot get gcc version.& exit /B 1 + +:: Check external libraries +if not exist "%RootPath%\libs" echo Please build external libraries first.& exit /B 1 + +:: Check gcc version of external libraries +if not exist "%RootPath%\libs\gcc-version" echo Cannot get gcc version of external libraries.& exit /B 1 +set /P LibsGCCVersion=<"%RootPath%\libs\gcc-version" +if "%LibsGCCVersion%" NEQ "%GCCVersion%" echo Please use correct version of external libraries. (gcc %GCCVersion% ^<^> libs %LibsGCCVersion%).& exit /B 1 + +:: Initialize environment +call "%~dp0env.bat" +if errorlevel 1 goto error_env + +:: Check git executable +set GitPath= +call "%ToolsPath%\find-in-path.bat" GitPath git.exe +if "%GitPath%" NEQ "" goto found_git +choice /M "Git not found in PATH. Version information cannot be calculated. Do you want to proceed?" +if %errorlevel%==2 exit /B 1 +:found_git + +echo. +echo === Version +echo. + +title Build - %SourceName%-%RsBuildConfig% [Version] + +pushd "%SourcePath%\retroshare-gui\src\gui\images" +:: Touch resource file +copy /b retroshare_win.rc +,, +popd + +if not exist "%RsBuildPath%" mkdir "%RsBuildPath%" +pushd "%RsBuildPath%" + +echo. +echo === qmake +echo. + +title Build - %SourceName%-%RsBuildConfig% [qmake] + +qmake "%SourcePath%\RetroShare.pro" -r "CONFIG+=%RsBuildConfig% version_detail_bash_script" +if errorlevel 1 goto error + +echo. +echo === make +echo. + +title Build - %SourceName%-%RsBuildConfig% [make] + +if exist "%EnvJomExe%" ( + "%EnvJomExe%" +) else ( + mingw32-make +) + +:error +popd + +title %COMSPEC% + +if errorlevel 1 echo.& echo Build failed& echo. +exit /B %ERRORLEVEL% + +:error_env +echo Failed to initialize environment. +endlocal +exit /B 1 diff --git a/build_scripts/Windows/build/clean.bat b/build_scripts/Windows/build/clean.bat new file mode 100644 index 000000000..0797e7681 --- /dev/null +++ b/build_scripts/Windows/build/clean.bat @@ -0,0 +1,21 @@ +@echo off + +setlocal + +:: Initialize environment +call "%~dp0..\env.bat" +if errorlevel 1 goto error_env +call "%EnvPath%\env.bat" +if errorlevel 1 goto error_env +call "%~dp0env.bat" +if errorlevel 1 goto error_env + +if not exist "%RsBuildPath%" exit /B 0 +call "%ToolsPath%\remove-dir.bat" "%RsBuildPath%" + +exit /B %ERRORLEVEL% + +:error_env +echo Failed to initialize environment. +endlocal +exit /B 1 diff --git a/build_scripts/Windows/build/env.bat b/build_scripts/Windows/build/env.bat new file mode 100644 index 000000000..a99905161 --- /dev/null +++ b/build_scripts/Windows/build/env.bat @@ -0,0 +1,31 @@ +set CurPath=%~dp0 +set BuildPath=%EnvRootPath%\builds +set DeployPath=%EnvRootPath%\deploy + +if not exist "%BuildPath%" mkdir "%BuildPath%" +if not exist "%DeployPath%" mkdir "%DeployPath%" + +:: Check Qt environment +set QtPath= +call "%ToolsPath%\find-in-path.bat" QtPath qmake.exe +if "%QtPath%"=="" echo Please run command in the Qt Command Prompt.& exit /B 1 + +:: Check MinGW environment +set MinGWPath= +call "%ToolsPath%\find-in-path.bat" MinGWPath gcc.exe +if "%MinGWPath%"=="" echo Please run command in the Qt Command Prompt.& exit /B 1 + +:: Get Qt version +call "%ToolsPath%\get-qt-version.bat" QtVersion +if "%QtVersion%"=="" echo Cannot get Qt version.& exit /B 1 + +set RsBuildConfig=release +set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsBuildConfig% +set RsDeployPath=%DeployPath%\Qt-%QtVersion%-%RsBuildConfig% +set RsPackPath=%DeployPath% +set RsArchiveAdd= + +if exist "%~dp0env-mod.bat" call "%~dp0env-mod.bat" +if errorlevel 1 exit /B %ERRORLEVEL% + +exit /B 0 \ No newline at end of file diff --git a/build_scripts/Windows/build/git-log.bat b/build_scripts/Windows/build/git-log.bat new file mode 100644 index 000000000..49cfaef1e --- /dev/null +++ b/build_scripts/Windows/build/git-log.bat @@ -0,0 +1,106 @@ +@echo off + +setlocal + +:: Initialize environment +call "%~dp0..\env.bat" +if errorlevel 1 goto error_env +call "%EnvPath%\env.bat" +if errorlevel 1 goto error_env +call "%~dp0env.bat" +if errorlevel 1 goto error_env + +:: Check git executable +set GitPath= +call "%ToolsPath%\find-in-path.bat" GitPath git.exe +if "%GitPath%"=="" echo Git executable not found in PATH.& exit /B 1 + +:: Get compiled revision +set GetRsVersion=%SourcePath%\build_scripts\Windows\tools\get-rs-version.bat +if not exist "%GetRsVersion%" ( + echo File not found + echo %GetRsVersion% + exit /B 1 +) + +call "%GetRsVersion%" RS_REVISION_STRING RsRevision +if "%RsRevision%"=="" echo Revision not found.& exit /B 1 + +:: Get compiled version +call "%GetRsVersion%" RS_REVISION_STRING RsRevision +if "%RsRevision%"=="" echo Revision not found.& exit /B 1 + +call "%GetRsVersion%" RS_MAJOR_VERSION RsMajorVersion +if "%RsMajorVersion%"=="" echo Major version not found.& exit /B 1 + +call "%GetRsVersion%" RS_MINOR_VERSION RsMinorVersion +if "%RsMinorVersion%"=="" echo Minor version not found.& exit /B 1 + +call "%GetRsVersion%" RS_BUILD_NUMBER RsBuildNumber +if "%RsBuildNumber%"=="" echo Build number not found.& exit /B 1 + +call "%GetRsVersion%" RS_BUILD_NUMBER_ADD RsBuildNumberAdd + +set RsVersion=%RsMajorVersion%.%RsMinorVersion%.%RsBuildNumber%%RsBuildNumberAdd% + +:: Check WMIC is available +wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& exit /B 1 + +:: Use WMIC to retrieve date in format YYYYMMDD +set RsDate= +for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I +set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2% + +:: Get last revision +set RsLastRefFile=%BuildPath%\Qt-%QtVersion%-%RsBuildConfig%-LastRef.txt +set RsLastRef= +if exist "%RsLastRefFile%" set /P RsLastRef=<"%RsLastRefFile%" + +if not "%RsLastRef%"=="" echo Last Revision was %RsLastRef% +set /P RsLastRefInput=Last Revision: +if "%RsLastRefInput%" NEQ "" set RsLastRef=%RsLastRefInput% + +:: Get current revision +pushd "%SourcePath%" +call "%ToolsPath%\get-git-ref.bat" RsRef +popd + +if errorlevel 1 exit /B 1 +if "%RsRef%"=="" echo Cannot get git revision.& exit /B 1 + +echo. +echo Creating log from %RsLastRef% +echo to %RsRef% +choice /M "Do you want to proceed?" +if %errorlevel%==2 exit /B 1 + +if "%RsBuildConfig%" NEQ "release" ( + set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsArchiveAdd%-%RsBuildConfig%.txt +) else ( + set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsArchiveAdd%.txt +) + +title %SourceName%-%RsBuildConfig% [git log] + +pushd "%SourcePath%" +if "%RsLastRef%"=="" ( + git log %RsRef% >"%RsGitLog%" +) else ( + if "%RsLastRef%"=="%RsRef%" ( + git log %RsRef% --max-count=1 >"%RsGitLog%" + ) else ( + git log %RsLastRef%..%RsRef% >"%RsGitLog%" + ) +) +popd + +title %COMSPEC% + +echo %RsRef%>"%RsLastRefFile%" + +exit /B %ERRORLEVEL% + +:error_env +echo Failed to initialize environment. +endlocal +exit /B 1 diff --git a/build_scripts/Windows/build/pack.bat b/build_scripts/Windows/build/pack.bat new file mode 100644 index 000000000..a8e7fdaff --- /dev/null +++ b/build_scripts/Windows/build/pack.bat @@ -0,0 +1,210 @@ +@echo off + +setlocal + +set Quite=^>nul + +:: Initialize environment +call "%~dp0..\env.bat" +if errorlevel 1 goto error_env +call "%EnvPath%\env.bat" +if errorlevel 1 goto error_env + +:: Get gcc versions +call "%ToolsPath%\get-gcc-version.bat" GCCVersion +if "%GCCVersion%"=="" echo Cannot get gcc version.& exit /B 1 + +:: Check external libraries +if not exist "%RootPath%\libs" echo Please build external libraries first.& exit /B 1 + +:: Check gcc version of external libraries +if not exist "%RootPath%\libs\gcc-version" echo Cannot get gcc version of external libraries.& exit /B 1 +set /P LibsGCCVersion=<"%RootPath%\libs\gcc-version" +if "%LibsGCCVersion%" NEQ "%GCCVersion%" echo Please use correct version of external libraries. (gcc %GCCVersion% ^<^> libs %LibsGCCVersion%).& exit /B 1 + +:: Initialize environment +call "%~dp0env.bat" +if errorlevel 1 goto error_env + +:: Remove deploy path +if exist "%RsDeployPath%" rmdir /S /Q "%RsDeployPath%" + +:: Check compilation +if not exist "%RsBuildPath%\Makefile" echo Project is not compiled.& goto error + +:: Get compiled revision +set GetRsVersion=%SourcePath%\build_scripts\Windows\tools\get-rs-version.bat +if not exist "%GetRsVersion%" ( + echo File not found + echo %GetRsVersion% + goto error +) + +call "%GetRsVersion%" RS_REVISION_STRING RsRevision +if "%RsRevision%"=="" echo Revision not found.& goto error + +:: Get compiled version +call "%GetRsVersion%" RS_MAJOR_VERSION RsMajorVersion +if "%RsMajorVersion%"=="" echo Major version not found.& goto error + +call "%GetRsVersion%" RS_MINOR_VERSION RsMinorVersion +if "%RsMinorVersion%"=="" echo Minor version not found.& goto error + +call "%GetRsVersion%" RS_BUILD_NUMBER RsBuildNumber +if "%RsBuildNumber%"=="" echo Build number not found.& goto error + +call "%GetRsVersion%" RS_BUILD_NUMBER_ADD RsBuildNumberAdd + +set RsVersion=%RsMajorVersion%.%RsMinorVersion%.%RsBuildNumber%%RsBuildNumberAdd% + +:: Check WMIC is available +wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& goto error + +:: Use WMIC to retrieve date in format YYYYMMDD +set RsDate= +for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I +set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2% + +set QtMainVersion=%QtVersion:~0,1% + +rem Qt 4 = QtSvg4.dll +rem Qt 5 = Qt5Svg.dll +set QtMainVersion1= +set QtMainVersion2= +if "%QtMainVersion%"=="4" set QtMainVersion2=4 +if "%QtMainVersion%"=="5" set QtMainVersion1=5 + +if "%RsBuildConfig%" NEQ "release" ( + set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsArchiveAdd%-%RsBuildConfig%.7z +) else ( + set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsArchiveAdd%.7z +) + +if exist "%Archive%" del /Q "%Archive%" + +:: Create deploy path +mkdir "%RsDeployPath%" + +title Pack - %SourceName%-%RsBuildConfig% [copy files] + +set ExtensionsFile=%SourcePath%\libretroshare\src\rsserver\rsinit.cc +set Extensions= +for /f %%e in ('type "%ExtensionsFile%" ^| "%EnvSedExe%" -n "s/^.*\/\(extensions[^/]*\)\/.*$/\1/p" ^| "%EnvSedExe%" -n "1,1p"') do set Extensions=%%e +if "%Extensions%"=="" echo Folder for extensions not found in %ExtensionsFile%& goto error + +:: Copy files +mkdir "%RsDeployPath%\Data\%Extensions%" +mkdir "%RsDeployPath%\imageformats" +mkdir "%RsDeployPath%\qss" +mkdir "%RsDeployPath%\stylesheets" +mkdir "%RsDeployPath%\sounds" +mkdir "%RsDeployPath%\translations" + +copy nul "%RsDeployPath%\portable" %Quite% + +echo copy binaries +copy "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\RetroShare*.exe" "%RsDeployPath%" %Quite% +copy "%RsBuildPath%\retroshare-nogui\src\%RsBuildConfig%\retroshare*-nogui.exe" "%RsDeployPath%" %Quite% + +echo copy extensions +for /D %%D in ("%RsBuildPath%\plugins\*") do ( + call :copy_extension "%%D" "%RsDeployPath%\Data\%Extensions%" + call :copy_dependencies "%RsDeployPath%\Data\%Extensions%\%%~nxD.dll" "%RsDeployPath%" +) + +echo copy external binaries +copy "%RootPath%\libs\bin\*.dll" "%RsDeployPath%" %Quite% + +echo copy dependencies +call :copy_dependencies "%RsDeployPath%\RetroShare06.exe" "%RsDeployPath%" + +echo copy Qt DLL's +copy "%QtPath%\Qt%QtMainVersion1%Svg%QtMainVersion2%.dll" "%RsDeployPath%" %Quite% + +if "%QtMainVersion%"=="5" ( + mkdir "%RsDeployPath%\platforms" + copy "%QtPath%\..\plugins\platforms\qwindows.dll" "%RsDeployPath%\platforms" %Quite% + mkdir "%RsDeployPath%\audio" + copy "%QtPath%\..\plugins\audio\qtaudio_windows.dll" "%RsDeployPath%\audio" %Quite% +) + +copy "%QtPath%\..\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite% +del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite% + +echo copy qss +xcopy /S "%SourcePath%\retroshare-gui\src\qss" "%RsDeployPath%\qss" %Quite% + +echo copy stylesheets +xcopy /S "%SourcePath%\retroshare-gui\src\gui\qss\chat" "%RsDeployPath%\stylesheets" %Quite% +rmdir /S /Q "%RsDeployPath%\stylesheets\compact" %Quite% +rmdir /S /Q "%RsDeployPath%\stylesheets\standard" %Quite% +rmdir /S /Q "%RsDeployPath%\stylesheets\__MACOSX__Bubble" %Quite% + +echo copy sounds +xcopy /S "%SourcePath%\retroshare-gui\src\sounds" "%RsDeployPath%\sounds" %Quite% + +echo copy translation +copy "%SourcePath%\retroshare-gui\src\translations\qt_tr.qm" "%RsDeployPath%\translations" %Quite% +copy "%QtPath%\..\translations\qt_*.qm" "%RsDeployPath%\translations" %Quite% +if "%QtMainVersion%"=="5" ( + copy "%QtPath%\..\translations\qtbase_*.qm" "%RsDeployPath%\translations" %Quite% + copy "%QtPath%\..\translations\qtscript_*.qm" "%RsDeployPath%\translations" %Quite% + copy "%QtPath%\..\translations\qtquick1_*.qm" "%RsDeployPath%\translations" %Quite% + copy "%QtPath%\..\translations\qtmultimedia_*.qm" "%RsDeployPath%\translations" %Quite% + copy "%QtPath%\..\translations\qtxmlpatterns_*.qm" "%RsDeployPath%\translations" %Quite% +) + +echo copy bdboot.txt +copy "%SourcePath%\libbitdht\src\bitdht\bdboot.txt" "%RsDeployPath%" %Quite% + +echo copy changelog.txt +copy "%SourcePath%\retroshare-gui\src\changelog.txt" "%RsDeployPath%" %Quite% + +if exist "%SourcePath%\libresapi\src\webui" ( + echo copy webui + mkdir "%RsDeployPath%\webui" + xcopy /S "%SourcePath%\libresapi\src\webui" "%RsDeployPath%\webui" %Quite% +) + +rem pack files +title Pack - %SourceName%-%RsBuildConfig% [pack files] + +"%SevenZipExe%" a -mx=9 -t7z "%Archive%" "%RsDeployPath%\*" + +title %COMSPEC% + +call :cleanup + +endlocal +exit /B 0 + +:error +call :Cleanup +endlocal +exit /B 1 + +:cleanup +goto :EOF + +:error_env +echo Failed to initialize environment. +endlocal +exit /B 1 + +:copy_extension +if exist "%~1\%RsBuildConfig%\%~n1.dll" ( + copy "%~1\%RsBuildConfig%\%~n1.dll" %2 %Quite% +) +goto :EOF + +:copy_dependencies +for /F "usebackq" %%A in (`%ToolsPath%\depends.bat list %1`) do ( + if exist "%QtPath%\%%A" ( + copy "%QtPath%\%%A" %2 %Quite% + ) else ( + if exist "%MinGWPath%\%%A" ( + copy "%MinGWPath%\%%A" %2 %Quite% + ) + ) +) +goto :EOF diff --git a/build_scripts/Windows/build_libs/.gitignore b/build_scripts/Windows/build_libs/.gitignore deleted file mode 100644 index 9f502e129..000000000 --- a/build_scripts/Windows/build_libs/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/download -/msys -/libs -/tools/7z.dll -/tools/7z.exe -/tools/curl.exe \ No newline at end of file diff --git a/build_scripts/Windows/build_libs/1-prepare.bat b/build_scripts/Windows/build_libs/1-prepare.bat deleted file mode 100644 index 4c93d54ef..000000000 --- a/build_scripts/Windows/build_libs/1-prepare.bat +++ /dev/null @@ -1,43 +0,0 @@ -@setlocal - -@echo off - -:: Initialize environment -call "%~dp0_env.bat" - -set SevenZipUrl=http://7-zip.org/a/7z1602.msi -set SevenZipInstall=7z1602.msi -set CurlUrl=https://bintray.com/artifact/download/vszakats/generic/curl-7.50.1-win32-mingw.7z -set CurlInstall=curl-7.50.1-win32-mingw.7z - -if not exist "%DownloadPath%" mkdir "%DownloadPath%" - -call :remove_dir "%TempPath%" - -echo Download installation files -if not exist "%DownloadPath%\%SevenZipInstall%" call "%ToolsPath%\winhttpjs.bat" %SevenZipUrl% -saveTo "%DownloadPath%\%SevenZipInstall%" -if not exist "%DownloadPath%\%SevenZipInstall%" echo Cannot download 7z& goto :exit - -if not exist "%DownloadPath%\%CurlInstall%" call "%ToolsPath%\winhttpjs.bat" %CurlUrl% -saveTo "%DownloadPath%\%CurlInstall%" -if not exist "%DownloadPath%\%CurlInstall%" echo Cannot download Curl& goto :exit - -echo Unpack 7z -msiexec /a "%DownloadPath%\%SevenZipInstall%" /qb TARGETDIR="%TempPath%" -copy "%TempPath%\Files\7-Zip\7z.dll" "%ToolsPath%" -copy "%TempPath%\Files\7-Zip\7z.exe" "%ToolsPath%" -call :remove_dir "%TempPath%" - -echo Unpack Curl -"%SevenZipExe%" x -o"%TempPath%" "%DownloadPath%\%CurlInstall%" -copy "%TempPath%\curl-7.50.1-win32-mingw\bin\curl.exe" "%ToolsPath%" -call :remove_dir "%TempPath%" - -:exit -endlocal -exit /B 0 - -:remove_dir -if not exist %1 goto :EOF -del /s /f /q %1 >nul -rmdir /s /q %1 -goto :EOF diff --git a/build_scripts/Windows/build_libs/2-install-msys.bat b/build_scripts/Windows/build_libs/2-install-msys.bat deleted file mode 100644 index 7e17a2dc0..000000000 --- a/build_scripts/Windows/build_libs/2-install-msys.bat +++ /dev/null @@ -1,70 +0,0 @@ -@setlocal - -@echo off - -:: Initialize environment -call "%~dp0_env.bat" - -set MSYSInstall=mingw-get-0.6.2-mingw32-beta-20131004-1-bin.zip -set CMakeInstall=cmake-3.1.0-win32-x86.zip -set CMakeUnpackPath=%MSYSPath%\msys\1.0 - -if not exist "%DownloadPath%" mkdir "%DownloadPath%" - -echo Check existing installation -if not exist "%MSYSPath%\bin\mingw-get.exe" goto proceed -choice /M "Found existing MSYS version. Do you want to proceed?" -if %ERRORLEVEL%==2 goto exit - -:proceed -echo Remove previous MSYS version -call :remove_dir "%MSYSPath%" - -echo Download installation files -if not exist "%DownloadPath%\%MSYSInstall%" "%CurlExe%" -L -k http://sourceforge.net/projects/mingw/files/Installer/mingw-get/mingw-get-0.6.2-beta-20131004-1/%MSYSInstall%/download -o "%DownloadPath%\%MSYSInstall%" -if not exist "%DownloadPath%%\MSYSInstall%" echo Cannot download MSYS& goto :exit - -if not exist "%DownloadPath%\%CMakeInstall%" "%CurlExe%" -L -k http://www.cmake.org/files/v3.1/cmake-3.1.0-win32-x86.zip -o "%DownloadPath%\%CMakeInstall%" -if not exist "%DownloadPath%\%CMakeInstall%" echo Cannot download CMake& goto :exit - -echo Unpack MSYS -"%SevenZipExe%" x -o"%MSYSPath%" "%DownloadPath%\%MSYSInstall%" - -echo Install MSYS -if not exist "%MSYSPath%\var\lib\mingw-get\data\profile.xml" copy "%MSYSPath%\var\lib\mingw-get\data\defaults.xml" "%MSYSPath%\var\lib\mingw-get\data\profile.xml" -pushd "%MSYSPath%\bin" -mingw-get.exe install mingw32-mingw-get -mingw-get.exe install msys-coreutils -mingw-get.exe install msys-base -mingw-get.exe install msys-autoconf -mingw-get.exe install msys-automake -mingw-get.exe install msys-autogen -mingw-get.exe install msys-mktemp -mingw-get.exe install msys-wget -popd - -echo Unpack CMake -"%SevenZipExe%" x -o"%CMakeUnpackPath%" "%DownloadPath%\%CMakeInstall%" - -echo Install CMake -set CMakeVersion= -for /D %%F in (%CMakeUnpackPath%\cmake*) do set CMakeVersion=%%~nxF -if "%CMakeVersion%"=="" echo CMake version not found.& goto :exit -echo Found CMake version %CMakeVersion% - -set FoundProfile= -for /f "tokens=3" %%F in ('find /c /i "%CMakeVersion%" "%MSYSPath%\msys\1.0\etc\profile"') do set FoundProfile=%%F - -if "%FoundProfile%"=="0" ( - echo export PATH="${PATH}:/%CMakeVersion%/bin">>"%MSYSPath%\msys\1.0\etc\profile" -) - -:exit -endlocal -exit /B 0 - -:remove_dir -if not exist %1 goto :EOF -del /s /f /q %1 >nul -rmdir /s /q %1 -goto :EOF diff --git a/build_scripts/Windows/build_libs/3-build-libs.bat b/build_scripts/Windows/build_libs/3-build-libs.bat deleted file mode 100644 index 3b7a3c92c..000000000 --- a/build_scripts/Windows/build_libs/3-build-libs.bat +++ /dev/null @@ -1,29 +0,0 @@ -@setlocal - -@echo off - -:: Initialize environment -call "%~dp0_env.bat" - -set MSYSSH=%MSYSPath%\msys\1.0\bin\sh.exe -set MSYSCurPath=/%CurPath:~0,1%/%CurPath:~3% -set MSYSCurPath=%MSYSCurPath:\=/% - -if not exist "%MSYSSH%" echo Please install MSYS first.&& exit /B 1 - -set GCCPath= -call :FIND_IN_PATH g++.exe GCCPath -if "%GCCPath%"=="" echo Please run %~nx0 in the Qt Command Prompt or add the path to MinGW bin folder to PATH variable.&& exit /B 1 - -"%MSYSSH%" --login -i -c "cd "%MSYSCurPath%" && make -f makefile %*" - -exit /B %ERRORLEVEL% - -:FIND_IN_PATH -SET PathTemp="%Path:;=";"%" -FOR %%P IN (%PathTemp%) DO ( - IF EXIST "%%~P.\%~1" ( - set %2=%%~P - goto :EOF - ) -) diff --git a/build_scripts/Windows/build_libs/Makefile b/build_scripts/Windows/build_libs/Makefile index c53ada54f..5f0a2351f 100755 --- a/build_scripts/Windows/build_libs/Makefile +++ b/build_scripts/Windows/build_libs/Makefile @@ -13,214 +13,331 @@ SQLCIPHER_VERSION=2.2.1 LIBMICROHTTPD_VERSION=0.9.46 FFMPEG_VERSION=3.1.2 +MAKEFILE_PATH=$(dir $(MAKEFILE_LIST)) +LIBS_PATH?=$(MAKEFILE_PATH)../../../../libs + +DOWNLOAD_PATH?=download +COPY_ANSWER?= + all: dirs zlib bzip2 miniupnpc openssl speex speexdsp opencv libxml2 libxslt curl sqlcipher libmicrohttpd ffmpeg copylibs download: \ - download/zlib-$(ZLIB_VERSION).tar.gz \ - download/bzip2-$(BZIP2_VERSION).tar.gz \ - download/miniupnpc-$(MINIUPNPC_VERSION).tar.gz \ - download/openssl-$(OPENSSL_VERSION).tar.gz \ - download/speex-$(SPEEX_VERSION).tar.gz \ - download/speexdsp-$(SPEEXDSP_VERSION).tar.gz \ - download/opencv-$(OPENCV_VERSION).tar.gz \ - download/libxml2-$(LIBXML2_VERSION).tar.gz \ - download/libxslt-$(LIBXSLT_VERSION).tar.gz \ - download/curl-$(CURL_VERSION).tar.gz \ - download/tcl$(TCL_VERSION)-src.tar.gz \ - download/sqlcipher-$(SQLCIPHER_VERSION).tar.gz \ - download/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz \ - download/ffmpeg-$(FFMPEG_VERSION).tar.gz + $(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/openssl-$(OPENSSL_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/speex-$(SPEEX_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/opencv-$(OPENCV_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz \ + $(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz \ + $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz + +clean: + rm -r -f libs dirs: - mkdir -p download - mkdir -p libs/include - mkdir -p libs/lib - mkdir -p libs/bin + mkdir -p $(DOWNLOAD_PATH) + mkdir -p libs + gcc --version | head --lines 1 | tr ' ' '\n' | tail -1 >libs/gcc-version -download/zlib-$(ZLIB_VERSION).tar.gz: - wget --no-check-certificate http://sourceforge.net/projects/libpng/files/zlib/$(ZLIB_VERSION)/zlib-$(ZLIB_VERSION).tar.gz/download -O download/zlib-$(ZLIB_VERSION).tar.gz +$(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz: + wget --no-check-certificate http://sourceforge.net/projects/libpng/files/zlib/$(ZLIB_VERSION)/zlib-$(ZLIB_VERSION).tar.gz/download -O $(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz -zlib: download/zlib-$(ZLIB_VERSION).tar.gz - tar xvf download/zlib-$(ZLIB_VERSION).tar.gz +zlib: libs/zlib-$(ZLIB_VERSION) + +libs/zlib-$(ZLIB_VERSION): $(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz + # prepare + rm -r -f libs/zlib-* + tar xvf $(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz + # build 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/ + # copy files + mkdir -p libs/zlib-$(ZLIB_VERSION).tmp/include + cp zlib-$(ZLIB_VERSION)/zlib.h libs/zlib-$(ZLIB_VERSION).tmp/include/ + cp zlib-$(ZLIB_VERSION)/zconf.h libs/zlib-$(ZLIB_VERSION).tmp/include/ + mkdir -p libs/zlib-$(ZLIB_VERSION).tmp/lib + cp zlib-$(ZLIB_VERSION)/libz.a libs/zlib-$(ZLIB_VERSION).tmp/lib/ rm -r -f zlib-$(ZLIB_VERSION) - touch zlib + mv libs/zlib-$(ZLIB_VERSION).tmp libs/zlib-$(ZLIB_VERSION) -download/bzip2-$(BZIP2_VERSION).tar.gz: - wget http://bzip.org/$(BZIP2_VERSION)/bzip2-$(BZIP2_VERSION).tar.gz -O download/bzip2-$(BZIP2_VERSION).tar.gz +bzip2: libs/bzip2-$(BZIP2_VERSION) -bzip2: download/bzip2-$(BZIP2_VERSION).tar.gz - tar xvf download/bzip2-$(BZIP2_VERSION).tar.gz +$(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz: + wget http://bzip.org/$(BZIP2_VERSION)/bzip2-$(BZIP2_VERSION).tar.gz -O $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz + +libs/bzip2-$(BZIP2_VERSION): $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz + # prepare + rm -r -f libs/bzip2-* + tar xvf $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz + # build #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/ + # copy files + mkdir -p libs/bzip2-$(BZIP2_VERSION).tmp/include + cp bzip2-$(BZIP2_VERSION)/bzlib.h libs/bzip2-$(BZIP2_VERSION).tmp/include/ + mkdir -p libs/bzip2-$(BZIP2_VERSION).tmp/lib + cp bzip2-$(BZIP2_VERSION)/libbz2.a libs/bzip2-$(BZIP2_VERSION).tmp/lib/ rm -r -f bzip2-$(BZIP2_VERSION) - touch bzip2 + mv libs/bzip2-$(BZIP2_VERSION).tmp libs/bzip2-$(BZIP2_VERSION) -download/miniupnpc-$(MINIUPNPC_VERSION).tar.gz: - wget http://miniupnp.free.fr/files/download.php?file=miniupnpc-$(MINIUPNPC_VERSION).tar.gz -O download/miniupnpc-$(MINIUPNPC_VERSION).tar.gz +miniupnpc: libs/miniupnpc-$(MINIUPNPC_VERSION) -miniupnpc: download/miniupnpc-$(MINIUPNPC_VERSION).tar.gz - tar xvf download/miniupnpc-$(MINIUPNPC_VERSION).tar.gz +$(DOWNLOAD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tar.gz: + wget http://miniupnp.free.fr/files/download.php?file=miniupnpc-$(MINIUPNPC_VERSION).tar.gz -O $(DOWNLOAD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tar.gz + +libs/miniupnpc-$(MINIUPNPC_VERSION): $(DOWNLOAD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tar.gz + # prepare + rm -r -f libs/miniupnpc-* + tar xvf $(DOWNLOAD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tar.gz + # build cd miniupnpc-$(MINIUPNPC_VERSION) && CC=gcc && export CC && 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)/miniupnpc.lib libs/lib/ - cp miniupnpc-$(MINIUPNPC_VERSION)/miniupnpc.dll libs/bin/ + # copy files + mkdir -p libs/miniupnpc-$(MINIUPNPC_VERSION).tmp/include/miniupnpc + cp miniupnpc-$(MINIUPNPC_VERSION)/*.h libs/miniupnpc-$(MINIUPNPC_VERSION).tmp/include/miniupnpc/ + mkdir -p libs/miniupnpc-$(MINIUPNPC_VERSION).tmp/lib + cp miniupnpc-$(MINIUPNPC_VERSION)/miniupnpc.lib libs/miniupnpc-$(MINIUPNPC_VERSION).tmp/lib/ + mkdir -p libs/miniupnpc-$(MINIUPNPC_VERSION).tmp/bin + cp miniupnpc-$(MINIUPNPC_VERSION)/miniupnpc.dll libs/miniupnpc-$(MINIUPNPC_VERSION).tmp/bin/ rm -r -f miniupnpc-$(MINIUPNPC_VERSION) - touch miniupnpc + mv libs/miniupnpc-$(MINIUPNPC_VERSION).tmp libs/miniupnpc-$(MINIUPNPC_VERSION) -download/openssl-$(OPENSSL_VERSION).tar.gz: - wget --no-check-certificate https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz -O download/openssl-$(OPENSSL_VERSION).tar.gz +openssl: libs/openssl-$(OPENSSL_VERSION) -openssl: download/openssl-$(OPENSSL_VERSION).tar.gz - tar xvf download/openssl-$(OPENSSL_VERSION).tar.gz +$(DOWNLOAD_PATH)/openssl-$(OPENSSL_VERSION).tar.gz: + wget --no-check-certificate https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz -O $(DOWNLOAD_PATH)/openssl-$(OPENSSL_VERSION).tar.gz + +libs/openssl-$(OPENSSL_VERSION): $(DOWNLOAD_PATH)/openssl-$(OPENSSL_VERSION).tar.gz + # prepare + rm -r -f libs/openssl-* + tar xvf $(DOWNLOAD_PATH)/openssl-$(OPENSSL_VERSION).tar.gz + # build #cd openssl-$(OPENSSL_VERSION) && ./config --prefix="`pwd`/../libs" #cd openssl-$(OPENSSL_VERSION) && make install cd openssl-$(OPENSSL_VERSION) && ./config shared cd openssl-$(OPENSSL_VERSION) && make - mkdir -p libs/include/openssl && cp openssl-$(OPENSSL_VERSION)/include/openssl/*.h libs/include/openssl/ - cp openssl-$(OPENSSL_VERSION)/libeay32.dll libs/bin/ - cp openssl-$(OPENSSL_VERSION)/ssleay32.dll libs/bin/ - cp openssl-$(OPENSSL_VERSION)/libcrypto.dll.a libs/lib/ - cp openssl-$(OPENSSL_VERSION)/libssl.dll.a libs/lib/ + # copy files + mkdir -p libs/openssl-$(OPENSSL_VERSION).tmp/include/openssl + cp openssl-$(OPENSSL_VERSION)/include/openssl/*.h libs/openssl-$(OPENSSL_VERSION).tmp/include/openssl/ + mkdir -p libs/openssl-$(OPENSSL_VERSION).tmp/bin + cp openssl-$(OPENSSL_VERSION)/libeay32.dll libs/openssl-$(OPENSSL_VERSION).tmp/bin/ + cp openssl-$(OPENSSL_VERSION)/ssleay32.dll libs/openssl-$(OPENSSL_VERSION).tmp/bin/ + mkdir -p libs/openssl-$(OPENSSL_VERSION).tmp/lib + cp openssl-$(OPENSSL_VERSION)/libcrypto.dll.a libs/openssl-$(OPENSSL_VERSION).tmp/lib/ + cp openssl-$(OPENSSL_VERSION)/libssl.dll.a libs/openssl-$(OPENSSL_VERSION).tmp/lib/ rm -r -f openssl-$(OPENSSL_VERSION) - touch openssl + mv libs/openssl-$(OPENSSL_VERSION).tmp libs/openssl-$(OPENSSL_VERSION) -download/speex-$(SPEEX_VERSION).tar.gz: - wget http://downloads.xiph.org/releases/speex/speex-$(SPEEX_VERSION).tar.gz -O download/speex-$(SPEEX_VERSION).tar.gz +speex: libs/speex-$(SPEEX_VERSION) -speex: download/speex-$(SPEEX_VERSION).tar.gz - tar xvf download/speex-$(SPEEX_VERSION).tar.gz +$(DOWNLOAD_PATH)/speex-$(SPEEX_VERSION).tar.gz: + wget http://downloads.xiph.org/releases/speex/speex-$(SPEEX_VERSION).tar.gz -O $(DOWNLOAD_PATH)/speex-$(SPEEX_VERSION).tar.gz + +libs/speex-$(SPEEX_VERSION): $(DOWNLOAD_PATH)/speex-$(SPEEX_VERSION).tar.gz + # prepare + rm -r -f libs/speex-* + tar xvf $(DOWNLOAD_PATH)/speex-$(SPEEX_VERSION).tar.gz + # build 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 + # copy files + mkdir -p libs/speex-$(SPEEX_VERSION).tmp/include/speex + cp speex-$(SPEEX_VERSION)/include/speex/*.h libs/speex-$(SPEEX_VERSION).tmp/include/speex/ + mkdir -p libs/speex-$(SPEEX_VERSION).tmp/lib + cp speex-$(SPEEX_VERSION)/libspeex/.libs/libspeex.a libs/speex-$(SPEEX_VERSION).tmp/lib rm -r -f speex-$(SPEEX_VERSION) - touch speex + mv libs/speex-$(SPEEX_VERSION).tmp libs/speex-$(SPEEX_VERSION) -download/speexdsp-$(SPEEXDSP_VERSION).tar.gz: - wget http://downloads.xiph.org/releases/speex/speexdsp-$(SPEEXDSP_VERSION).tar.gz -O download/speexdsp-$(SPEEXDSP_VERSION).tar.gz +speexdsp: libs/speexdsp-$(SPEEXDSP_VERSION) -speexdsp: download/speexdsp-$(SPEEXDSP_VERSION).tar.gz - tar xvf download/speexdsp-$(SPEEXDSP_VERSION).tar.gz +$(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tar.gz: + wget http://downloads.xiph.org/releases/speex/speexdsp-$(SPEEXDSP_VERSION).tar.gz -O $(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tar.gz + +libs/speexdsp-$(SPEEXDSP_VERSION): $(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tar.gz + # prepare + rm -r -f libs/speexdsp-* + tar xvf $(DOWNLOAD_PATH)/speexdsp-$(SPEEXDSP_VERSION).tar.gz + # build cd speexdsp-$(SPEEXDSP_VERSION) && ./configure cd speexdsp-$(SPEEXDSP_VERSION) && make - mkdir -p libs/include/speex && cp speexdsp-$(SPEEXDSP_VERSION)/include/speex/*.h libs/include/speex/ - cp speexdsp-$(SPEEXDSP_VERSION)/libspeexdsp/.libs/libspeexdsp.a libs/lib + # copy files + mkdir -p libs/speexdsp-$(SPEEXDSP_VERSION).tmp/include/speex + cp speexdsp-$(SPEEXDSP_VERSION)/include/speex/*.h libs/speexdsp-$(SPEEXDSP_VERSION).tmp/include/speex/ + mkdir -p libs/speexdsp-$(SPEEXDSP_VERSION).tmp/lib + cp speexdsp-$(SPEEXDSP_VERSION)/libspeexdsp/.libs/libspeexdsp.a libs/speexdsp-$(SPEEXDSP_VERSION).tmp/lib rm -r -f speexdsp-$(SPEEXDSP_VERSION) - touch speexdsp + mv libs/speexdsp-$(SPEEXDSP_VERSION).tmp libs/speexdsp-$(SPEEXDSP_VERSION) -download/opencv-$(OPENCV_VERSION).tar.gz: - wget --no-check-certificate https://github.com/Itseez/opencv/archive/$(OPENCV_VERSION).tar.gz -O download/opencv-$(OPENCV_VERSION).tar.gz +opencv: libs/opencv-$(OPENCV_VERSION) -opencv: download/opencv-$(OPENCV_VERSION).tar.gz - tar xvf download/opencv-$(OPENCV_VERSION).tar.gz +$(DOWNLOAD_PATH)/opencv-$(OPENCV_VERSION).tar.gz: + wget --no-check-certificate https://github.com/Itseez/opencv/archive/$(OPENCV_VERSION).tar.gz -O $(DOWNLOAD_PATH)/opencv-$(OPENCV_VERSION).tar.gz + +libs/opencv-$(OPENCV_VERSION): $(DOWNLOAD_PATH)/opencv-$(OPENCV_VERSION).tar.gz + # prepare + rm -r -f libs/opencv-* + tar xvf $(DOWNLOAD_PATH)/opencv-$(OPENCV_VERSION).tar.gz + # build 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 && cp -r opencv-$(OPENCV_VERSION)/build/install/x86/mingw/staticlib/* libs/lib/opencv/ + # copy files + mkdir -p libs/opencv-$(OPENCV_VERSION).tmp/include + cp -r opencv-$(OPENCV_VERSION)/build/install/include/* libs/opencv-$(OPENCV_VERSION).tmp/include/ + mkdir -p libs/opencv-$(OPENCV_VERSION).tmp/lib/opencv + cp -r opencv-$(OPENCV_VERSION)/build/install/x86/mingw/staticlib/* libs/opencv-$(OPENCV_VERSION).tmp/lib/opencv/ rm -r -f opencv-$(OPENCV_VERSION) - touch opencv + mv libs/opencv-$(OPENCV_VERSION).tmp libs/opencv-$(OPENCV_VERSION) -download/libxml2-$(LIBXML2_VERSION).tar.gz: - wget ftp://xmlsoft.org/libxml2/libxml2-$(LIBXML2_VERSION).tar.gz -O download/libxml2-$(LIBXML2_VERSION).tar.gz +libxml2: libs/libxml2-$(LIBXML2_VERSION) -libxml2: download/libxml2-$(LIBXML2_VERSION).tar.gz - tar xvf download/libxml2-$(LIBXML2_VERSION).tar.gz +$(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz: + wget ftp://xmlsoft.org/libxml2/libxml2-$(LIBXML2_VERSION).tar.gz -O $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz + +libs/libxml2-$(LIBXML2_VERSION): $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz + # prepare + rm -r -f libs/libxml2-* + tar xvf $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz + # build 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 + # copy files + mkdir -p libs/libxml2-$(LIBXML2_VERSION).tmp/include/libxml + cp libxml2-$(LIBXML2_VERSION)/include/libxml/*.h libs/libxml2-$(LIBXML2_VERSION).tmp/include/libxml/ + mkdir -p libs/libxml2-$(LIBXML2_VERSION).tmp/lib + cp libxml2-$(LIBXML2_VERSION)/.libs/libxml2.a libs/libxml2-$(LIBXML2_VERSION).tmp/lib/ + #rm -r -f libxml2-$(LIBXML2_VERSION) # see libxslt + mv libs/libxml2-$(LIBXML2_VERSION).tmp libs/libxml2-$(LIBXML2_VERSION) -download/libxslt-$(LIBXSLT_VERSION).tar.gz: - wget ftp://xmlsoft.org/libxml2/libxslt-$(LIBXSLT_VERSION).tar.gz -O download/libxslt-$(LIBXSLT_VERSION).tar.gz +libxslt: libs/libxslt-$(LIBXSLT_VERSION) -libxslt: download/libxml2-$(LIBXML2_VERSION).tar.gz download/libxslt-$(LIBXSLT_VERSION).tar.gz - tar xvf download/libxml2-$(LIBXML2_VERSION).tar.gz - tar xvf download/libxslt-$(LIBXSLT_VERSION).tar.gz - tar xvf libxslt-$(LIBXSLT_VERSION)-fix.tar.gz +$(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz: + wget ftp://xmlsoft.org/libxml2/libxslt-$(LIBXSLT_VERSION).tar.gz -O $(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz + +libs/libxslt-$(LIBXSLT_VERSION): $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz $(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz + # prepare + rm -r -f libs/libxslt-* + tar xvf $(DOWNLOAD_PATH)/libxml2-$(LIBXML2_VERSION).tar.gz + tar xvf $(DOWNLOAD_PATH)/libxslt-$(LIBXSLT_VERSION).tar.gz + tar xvf $(MAKEFILE_PATH)libxslt-$(LIBXSLT_VERSION)-fix.tar.gz + # build 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/ + # copy files + mkdir -p libs/libxslt-$(LIBXSLT_VERSION).tmp/include/libxslt + cp libxslt-$(LIBXSLT_VERSION)/libxslt/*.h libs/libxslt-$(LIBXSLT_VERSION).tmp/include/libxslt/ + mkdir -p libs/libxslt-$(LIBXSLT_VERSION).tmp/lib + cp libxslt-$(LIBXSLT_VERSION)/libxslt/.libs/libxslt.a libs/libxslt-$(LIBXSLT_VERSION).tmp/lib/ + cp libxslt-$(LIBXSLT_VERSION)/libexslt/.libs/libexslt.a libs/libxslt-$(LIBXSLT_VERSION).tmp/lib/ rm -r -f libxml2-$(LIBXML2_VERSION) rm -r -f libxslt-$(LIBXSLT_VERSION) - touch libxslt + mv libs/libxslt-$(LIBXSLT_VERSION).tmp libs/libxslt-$(LIBXSLT_VERSION) -download/curl-$(CURL_VERSION).tar.gz: - wget --no-check-certificate http://curl.haxx.se/download/curl-$(CURL_VERSION).tar.gz -O download/curl-$(CURL_VERSION).tar.gz +curl: libs/curl-$(CURL_VERSION) -curl: download/curl-$(CURL_VERSION).tar.gz - tar xvf download/curl-$(CURL_VERSION).tar.gz - cd curl-$(CURL_VERSION) && ./configure --disable-shared --with-ssl="`pwd`/../libs" +$(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz: + wget --no-check-certificate http://curl.haxx.se/$(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz -O $(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz + +libs/curl-$(CURL_VERSION): $(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz + # prepare + rm -r -f libs/curl-* + tar xvf $(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz + # build + cd curl-$(CURL_VERSION) && ./configure --disable-shared --with-ssl="`pwd`/../libs/openssl-$(OPENSSL_VERSION)" #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/ + # copy files + mkdir -p libs/curl-$(CURL_VERSION).tmp/include/curl + cp curl-$(CURL_VERSION)/include/curl/*.h libs/curl-$(CURL_VERSION).tmp/include/curl/ + mkdir -p libs/curl-$(CURL_VERSION).tmp/lib + cp curl-$(CURL_VERSION)/lib/.libs/libcurl.a libs/curl-$(CURL_VERSION).tmp/lib/ rm -r -f curl-$(CURL_VERSION) - touch curl + mv libs/curl-$(CURL_VERSION).tmp libs/curl-$(CURL_VERSION) -download/tcl$(TCL_VERSION)-src.tar.gz: - wget http://prdownloads.sourceforge.net/tcl/tcl$(TCL_VERSION)-src.tar.gz -O download/tcl$(TCL_VERSION)-src.tar.gz +sqlcipher: libs/sqlcipher-$(SQLCIPHER_VERSION) -download/sqlcipher-$(SQLCIPHER_VERSION).tar.gz: - wget --no-check-certificate https://github.com/sqlcipher/sqlcipher/archive/v$(SQLCIPHER_VERSION).tar.gz -O download/sqlcipher-$(SQLCIPHER_VERSION).tar.gz +$(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz: + wget http://prdownloads.sourceforge.net/tcl/tcl$(TCL_VERSION)-src.tar.gz -O $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz -sqlcipher: download/tcl$(TCL_VERSION)-src.tar.gz download/sqlcipher-$(SQLCIPHER_VERSION).tar.gz +$(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz: + wget --no-check-certificate https://github.com/sqlcipher/sqlcipher/archive/v$(SQLCIPHER_VERSION).tar.gz -O $(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz + +libs/sqlcipher-$(SQLCIPHER_VERSION): $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz $(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz + # prepare + rm -r -f libs/sqlcipher-* # tcl - tar xvf download/tcl$(TCL_VERSION)-src.tar.gz + tar xvf $(DOWNLOAD_PATH)/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 download/sqlcipher-$(SQLCIPHER_VERSION).tar.gz + tar xvf $(DOWNLOAD_PATH)/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/ + # build + cd sqlcipher-$(SQLCIPHER_VERSION) && PATH=.:$$PATH:`pwd`/../tcl$(TCL_VERSION)/build && LIBS="-L`pwd`/../libs/openssl-$(OPENSSL_VERSION)/lib -lgdi32 $$LIBS" && export LIBS && ./configure --disable-shared --enable-static --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -I`pwd`/../libs/openssl-$(OPENSSL_VERSION)/include -I`pwd`/../tcl$(TCL_VERSION)/generic" LDFLAGS="-L`pwd`/../libs/openssl-$(OPENSSL_VERSION)/lib -lcrypto -lgdi32" --with-tcl="`pwd`/../tcl$(TCL_VERSION)/build" && make install prefix="`pwd`/install" + # copy files + mkdir -p libs/sqlcipher-$(SQLCIPHER_VERSION).tmp/include + cp -r sqlcipher-$(SQLCIPHER_VERSION)/install/include/* libs/sqlcipher-$(SQLCIPHER_VERSION).tmp/include/ + mkdir -p libs/sqlcipher-$(SQLCIPHER_VERSION).tmp/lib + cp sqlcipher-$(SQLCIPHER_VERSION)/install/lib/libsqlcipher.a libs/sqlcipher-$(SQLCIPHER_VERSION).tmp/lib/ + mkdir -p libs/sqlcipher-$(SQLCIPHER_VERSION).tmp/bin + cp sqlcipher-$(SQLCIPHER_VERSION)/install/bin/sqlcipher.exe libs/sqlcipher-$(SQLCIPHER_VERSION).tmp/bin/ rm -r -f sqlcipher-$(SQLCIPHER_VERSION) rm -r -f tcl$(TCL_VERSION) - touch sqlcipher + mv libs/sqlcipher-$(SQLCIPHER_VERSION).tmp libs/sqlcipher-$(SQLCIPHER_VERSION) -download/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz: - wget --no-check-certificate http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz -O download/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz +libmicrohttpd: libs/libmicrohttpd-$(LIBMICROHTTPD_VERSION) -libmicrohttpd: download/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz - tar xvf download/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz - cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && ./configure --disable-shared --enable-static --prefix="`pwd`/../libs" +$(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz: + wget --no-check-certificate http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz -O $(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz + +libs/libmicrohttpd-$(LIBMICROHTTPD_VERSION): $(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz + # prepare + rm -r -f libs/libmicrohttpd-* + tar xvf $(DOWNLOAD_PATH)/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tar.gz + # build + cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && ./configure --disable-shared --enable-static --prefix="`pwd`/../libs/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tmp" cd libmicrohttpd-$(LIBMICROHTTPD_VERSION) && make install + # copy files rm -r -f libmicrohttpd-$(LIBMICROHTTPD_VERSION) - touch libmicrohttpd + mv libs/libmicrohttpd-$(LIBMICROHTTPD_VERSION).tmp libs/libmicrohttpd-$(LIBMICROHTTPD_VERSION) -download/ffmpeg-$(FFMPEG_VERSION).tar.gz: - wget --no-check-certificate https://ffmpeg.org/releases/ffmpeg-$(FFMPEG_VERSION).tar.gz -O download/ffmpeg-$(FFMPEG_VERSION).tar.gz +ffmpeg: libs/ffmpeg-$(FFMPEG_VERSION) -ffmpeg: download/ffmpeg-$(FFMPEG_VERSION).tar.gz - tar xvf download/ffmpeg-$(FFMPEG_VERSION).tar.gz - cd ffmpeg-$(FFMPEG_VERSION) && ./configure --disable-shared --enable-static --disable-programs --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-yasm --disable-everything --enable-encoder=mpeg4 --enable-decoder=mpeg4 --prefix="`pwd`/../libs" +$(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz: + wget --no-check-certificate https://ffmpeg.org/releases/ffmpeg-$(FFMPEG_VERSION).tar.gz -O $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz + +libs/ffmpeg-$(FFMPEG_VERSION): $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz + # prepare + rm -r -f libs/ffmpeg-* + tar xvf $(DOWNLOAD_PATH)/ffmpeg-$(FFMPEG_VERSION).tar.gz + # build + cd ffmpeg-$(FFMPEG_VERSION) && ./configure --disable-shared --enable-static --disable-programs --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-yasm --disable-everything --enable-encoder=mpeg4 --enable-decoder=mpeg4 --prefix="`pwd`/../libs/ffmpeg-$(FFMPEG_VERSION).tmp" cd ffmpeg-$(FFMPEG_VERSION) && make install + # copy files rm -r -f ffmpeg-$(FFMPEG_VERSION) - touch ffmpeg + mv libs/ffmpeg-$(FFMPEG_VERSION).tmp libs/ffmpeg-$(FFMPEG_VERSION) - -copylibs: - read -p "Do you want to copy libs to retroshare? (yes|no)" answer; \ - if [ "$$answer" = "yes" ] ; then \ - cp -r libs ../../../../ ; \ +copylibs: + if [ "$(COPY_ANSWER)" = "" ] ; then \ + read -p "Do you want to copy libs to retroshare? (y|n)" answer; \ + else \ + answer=$(COPY_ANSWER) ; \ + fi ; \ + if [ "$$answer" = "y" ] ; then \ + rm -r -f $(LIBS_PATH) ; \ + mkdir -p $(LIBS_PATH) ; \ + cp ./libs/gcc-version $(LIBS_PATH) ; \ + find ./libs -mindepth 1 -maxdepth 1 -type d -not -name "*.tmp" -print -exec cp -r {}/. $(LIBS_PATH) \; ; \ fi - diff --git a/build_scripts/Windows/build_libs/_env.bat b/build_scripts/Windows/build_libs/_env.bat deleted file mode 100644 index 8ca4f15ec..000000000 --- a/build_scripts/Windows/build_libs/_env.bat +++ /dev/null @@ -1,9 +0,0 @@ -set CurPath=%~dp0 -set DownloadPath=%CurPath%download -set ToolsPath=%CurPath%tools -set TempPath=%CurPath%tmp -set MSYSPath=%CurPath%msys -set LibsPath=%CurPath%libs - -set CurlExe=%ToolsPath%\curl.exe -set SevenZipExe=%ToolsPath%\7z.exe diff --git a/build_scripts/Windows/build_libs/build-libs.bat b/build_scripts/Windows/build_libs/build-libs.bat new file mode 100644 index 000000000..197f0f97f --- /dev/null +++ b/build_scripts/Windows/build_libs/build-libs.bat @@ -0,0 +1,46 @@ +:: Usage: +:: call build-libs.bat [auto-copy] [make tasks] + +@echo off + +setlocal + +:: Parameter +set MakeParam="DOWNLOAD_PATH=../download" +if "%~1"=="auto-copy" set MakeParam=%MakeParam% "COPY_ANSWER=y"& shift /1 + +set MakeTask= +:param_loop +if "%~1" NEQ "" ( + set MakeTask=%MakeTask% %1 + shift /1 + goto param_loop +) + +:: Initialize environment +call "%~dp0..\env.bat" +if errorlevel 1 goto error_env +call "%EnvPath%\env-msys.bat" +if errorlevel 1 goto error_env + +:: Check MSYS environment +set MSYSSH=%EnvMSYSPath%\msys\1.0\bin\sh.exe +if not exist "%MSYSSH%" echo Please install MSYS first.& exit /B 1 + +:: Initialize environment +call "%~dp0env.bat" +if errorlevel 1 goto error_env + +call "%ToolsPath%\msys-path.bat" "%CurPath%" MSYSCurPath +call "%ToolsPath%\msys-path.bat" "%BuildLibsPath%" MSYSBuildLibsPath + +if not exist "%BuildLibsPath%" mkdir "%BuildLibsPath%" + +"%MSYSSH%" --login -i -c "cd "%MSYSBuildLibsPath%" && make -f %MSYSCurPath%/makefile %MakeParam% %MakeTask%" + +exit /B %ERRORLEVEL% + +:error_env +echo Failed to initialize environment. +endlocal +exit /B 1 diff --git a/build_scripts/Windows/build_libs/clean-all.bat b/build_scripts/Windows/build_libs/clean-all.bat deleted file mode 100644 index 740bf9d3e..000000000 --- a/build_scripts/Windows/build_libs/clean-all.bat +++ /dev/null @@ -1,30 +0,0 @@ -@setlocal - -@echo off - -:: Initialize environment -call "%~dp0_env.bat" - -::call :remove_dir "%DownloadPath%" -call :remove_dir "%MSYSPath%" -call :remove_dir "%TempPath%" - -call :remove_file "%ToolsPath%\7z.exe" -call :remove_file "%ToolsPath%\7z.dll" -call :remove_file "%ToolsPath%\curl.exe" - -call "%~dp0clean.bat" - -endlocal -exit /B 0 - -:remove_dir -if not exist %1 goto :EOF -del /s /f /q %1 >nul -rmdir /s /q %1 -goto :EOF - -:remove_file -if not exist %1 goto :EOF -del /q %1 >nul -goto :EOF diff --git a/build_scripts/Windows/build_libs/clean.bat b/build_scripts/Windows/build_libs/clean.bat index 171130fc2..a8c35a512 100644 --- a/build_scripts/Windows/build_libs/clean.bat +++ b/build_scripts/Windows/build_libs/clean.bat @@ -1,36 +1,3 @@ -@setlocal - @echo off -:: Initialize environment -call "%~dp0_env.bat" - -call :remove_dir "%LibsPath%" - -call :remove_file "%CurPath%bzip2" -call :remove_file "%CurPath%curl" -call :remove_file "%CurPath%ffmpeg" -call :remove_file "%CurPath%libmicrohttpd" -call :remove_file "%CurPath%libxml2" -call :remove_file "%CurPath%libxslt" -call :remove_file "%CurPath%miniupnpc" -call :remove_file "%CurPath%opencv" -call :remove_file "%CurPath%openssl" -call :remove_file "%CurPath%speex" -call :remove_file "%CurPath%speexdsp" -call :remove_file "%CurPath%sqlcipher" -call :remove_file "%CurPath%zlib" - -endlocal -exit /B 0 - -:remove_dir -if not exist %1 goto :EOF -del /s /f /q %1 >nul -rmdir /s /q %1 -goto :EOF - -:remove_file -if not exist %1 goto :EOF -del /q %1 >nul -goto :EOF +call "%~dp0build-libs.bat" clean diff --git a/build_scripts/Windows/build_libs/env.bat b/build_scripts/Windows/build_libs/env.bat new file mode 100644 index 000000000..affde05f9 --- /dev/null +++ b/build_scripts/Windows/build_libs/env.bat @@ -0,0 +1,14 @@ +set CurPath=%~dp0 + +:: Check MinGW environment +set MinGWPath= +call "%ToolsPath%\find-in-path.bat" MinGWPath gcc.exe +if "%MinGWPath%"=="" echo Please run command in the Qt Command Prompt or add the path to MinGW bin folder to PATH variable.& exit /B 1 + +:: Get gcc versions +call "%ToolsPath%\get-gcc-version.bat" GCCVersion +if "%GCCVersion%"=="" echo Cannot get gcc version.& exit /B 1 + +set BuildLibsPath=%EnvRootPath%\build-libs\gcc-%GCCVersion% + +exit /B 0 diff --git a/build_scripts/Windows/build_libs/update-msys.bat b/build_scripts/Windows/build_libs/update-msys.bat deleted file mode 100644 index 6ecc30eff..000000000 --- a/build_scripts/Windows/build_libs/update-msys.bat +++ /dev/null @@ -1,16 +0,0 @@ -@setlocal - -@echo off - -:: Initialize environment -call "%~dp0_env.bat" - -if not exist "%MSYSPath%\bin\mingw-get.exe" exit /B 0 - -echo Update MSYS -pushd "%MSYSPath%\bin" -mingw-get.exe update -mingw-get.exe upgrade -popd - -exit /B %ERRORLEVEL% diff --git a/build_scripts/Windows/env.bat b/build_scripts/Windows/env.bat new file mode 100644 index 000000000..863369162 --- /dev/null +++ b/build_scripts/Windows/env.bat @@ -0,0 +1,19 @@ +call :make_path SourcePath "%~dp0..\.." +call :make_path RootPath "%SourcePath%\.." +call :source_name SourceName "%SourcePath%" +set ToolsPath=%~dp0tools +set EnvPath=%~dp0env + +exit /B 0 + +:make_path +setlocal +set Var=%~1 +pushd %2 +set CD=%cd% +popd +endlocal & set %Var%=%CD% +goto :EOF + +:source_name +set %~1=%~nx2 diff --git a/build_scripts/Windows/env/env-msys.bat b/build_scripts/Windows/env/env-msys.bat new file mode 100644 index 000000000..9b1d98620 --- /dev/null +++ b/build_scripts/Windows/env/env-msys.bat @@ -0,0 +1,16 @@ +:: Usage: +:: call find-in-path.bat [reinstall|clean] + +:: Initialize environment +call "%~dp0env.bat" +if errorlevel 1 goto error_env + +set EnvMSYSPath=%EnvRootPath%\msys + +call "%~dp0tools\prepare-msys.bat" %1 +exit /B %ERRORLEVEL% + +:error_env +echo Failed to initialize environment. +endlocal +exit /B 1 diff --git a/build_scripts/Windows/env/env.bat b/build_scripts/Windows/env/env.bat new file mode 100644 index 000000000..d9052b5f3 --- /dev/null +++ b/build_scripts/Windows/env/env.bat @@ -0,0 +1,29 @@ +:: Initialize environment +call "%~dp0..\env.bat" +if errorlevel 1 goto error_env + +set EnvRootPath=%RootPath%\%SourceName%-env +set EnvToolsPath=%EnvRootPath%\tools +set EnvTempPath=%EnvRootPath%\tmp +set EnvDownloadPath=%EnvRootPath%\download + +set EnvCurlExe=%EnvToolsPath%\curl.exe +set EnvSevenZipExe=%EnvToolsPath%\7z.exe +set EnvJomExe=%EnvToolsPath%\jom.exe +set EnvSedExe=%EnvToolsPath%\sed.exe +set EnvCutExe=%EnvToolsPath%\cut.exe +set EnvDependsExe=%EnvToolsPath%\depends.exe +set EnvMakeNSISExe=%EnvToolsPath%\NSIS\makensis.exe + +:: Create folders +if not exist "%EnvRootPath%" mkdir "%EnvRootPath%" +if not exist "%EnvToolsPath%" mkdir "%EnvToolsPath%" +if not exist "%EnvDownloadPath%" mkdir "%EnvDownloadPath%" + +call "%~dp0tools\prepare-tools.bat" +exit /B %ERRORLEVEL% + +:error_env +echo Failed to initialize environment. +endlocal +exit /B 1 diff --git a/build_scripts/Windows/env/tools/prepare-msys.bat b/build_scripts/Windows/env/tools/prepare-msys.bat new file mode 100644 index 000000000..4799715ca --- /dev/null +++ b/build_scripts/Windows/env/tools/prepare-msys.bat @@ -0,0 +1,83 @@ +:: Usage: +:: call prepare-msys.bat [reinstall|clean] + +setlocal enabledelayedexpansion + +if "%EnvMSYSPath%"=="" exit /B 1 +if not exist "%EnvRootPath%"=="" exit /B 1 + +copy "%~dp0root\update-msys.bat" "%EnvRootPath%" >nul + +if "%~1"=="clean" ( + echo Clean MSYS + call "%ToolsPath%\remove-dir.bat" "%EnvMSYSPath%" + goto exit +) + +if exist "%EnvMSYSPath%\bin\mingw-get.exe" ( + if "%~1"=="reinstall" ( + choice /M "Found existing MSYS version. Do you want to proceed?" + if !ERRORLEVEL!==2 goto exit + ) else ( + goto exit + ) +) + +set MSYSInstall=mingw-get-0.6.2-mingw32-beta-20131004-1-bin.zip +set CMakeInstall=cmake-3.1.0-win32-x86.zip +set CMakeUnpackPath=%EnvMSYSPath%\msys\1.0 + +echo Remove previous MSYS version +call "%ToolsPath%\remove-dir.bat" "%EnvMSYSPath%" + +echo Download installation files +if not exist "%EnvDownloadPath%\%MSYSInstall%" "%EnvCurlExe%" -L -k http://sourceforge.net/projects/mingw/files/Installer/mingw-get/mingw-get-0.6.2-beta-20131004-1/%MSYSInstall%/download -o "%EnvDownloadPath%\%MSYSInstall%" +if not exist "%EnvDownloadPath%%\MSYSInstall%" echo Cannot download MSYS& goto error + +if not exist "%EnvDownloadPath%\%CMakeInstall%" "%EnvCurlExe%" -L -k http://www.cmake.org/files/v3.1/cmake-3.1.0-win32-x86.zip -o "%EnvDownloadPath%\%CMakeInstall%" +if not exist "%EnvDownloadPath%\%CMakeInstall%" echo Cannot download CMake& goto error + +echo Unpack MSYS +"%EnvSevenZipExe%" x -o"%EnvMSYSPath%" "%EnvDownloadPath%\%MSYSInstall%" + +echo Install MSYS +if not exist "%EnvMSYSPath%\var\lib\mingw-get\data\profile.xml" copy "%EnvMSYSPath%\var\lib\mingw-get\data\defaults.xml" "%EnvMSYSPath%\var\lib\mingw-get\data\profile.xml" +pushd "%EnvMSYSPath%\bin" +mingw-get.exe install mingw32-mingw-get +mingw-get.exe install msys-coreutils +mingw-get.exe install msys-base +mingw-get.exe install msys-autoconf +mingw-get.exe install msys-automake +mingw-get.exe install msys-autogen +mingw-get.exe install msys-mktemp +mingw-get.exe install msys-wget +popd + +echo Unpack CMake +"%EnvSevenZipExe%" x -o"%CMakeUnpackPath%" "%EnvDownloadPath%\%CMakeInstall%" + +echo Install CMake +set CMakeVersion= +for /D %%F in (%CMakeUnpackPath%\cmake*) do set CMakeVersion=%%~nxF +if "%CMakeVersion%"=="" echo CMake version not found.& goto :exit +echo Found CMake version %CMakeVersion% + +set FoundProfile= +for /f "tokens=3" %%F in ('find /c /i "%CMakeVersion%" "%EnvMSYSPath%\msys\1.0\etc\profile"') do set FoundProfile=%%F + +if "%FoundProfile%"=="0" ( + echo export PATH="${PATH}:/%CMakeVersion%/bin">>"%EnvMSYSPath%\msys\1.0\etc\profile" +) + +:exit +endlocal +exit /B 0 + +:error +endlocal +exit /B 1 + +:error_vars +echo Failed to initialize variables. +endlocal +exit /B 1 diff --git a/build_scripts/Windows/env/tools/prepare-tools.bat b/build_scripts/Windows/env/tools/prepare-tools.bat new file mode 100644 index 000000000..f453f35da --- /dev/null +++ b/build_scripts/Windows/env/tools/prepare-tools.bat @@ -0,0 +1,139 @@ +setlocal + +if "%EnvRootPath%"=="" exit /B 1 + +set SevenZipUrl=http://7-zip.org/a/7z1602.msi +set SevenZipInstall=7z1602.msi +set CurlUrl=https://bintray.com/artifact/download/vszakats/generic/curl-7.50.1-win32-mingw.7z +set CurlInstall=curl-7.50.1-win32-mingw.7z +set JomUrl=http://download.qt.io/official_releases/jom/jom.zip +set JomInstall=jom.zip +set DependsUrl=http://www.dependencywalker.com/depends22_x86.zip +set DependsInstall=depends22_x86.zip +set UnixToolsUrl=http://unxutils.sourceforge.net/UnxUpdates.zip +set UnixToolsInstall=UnxUpdates.zip +set NSISUrl=http://prdownloads.sourceforge.net/nsis/nsis-3.0-setup.exe?download +set NSISInstall=nsis-3.0-setup.exe +set NSISInstallPath=%EnvToolsPath%\NSIS + +if not exist "%EnvToolsPath%\7z.exe" ( + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" + mkdir "%EnvTempPath%" + + echo Download 7z installation + + if not exist "%EnvDownloadPath%\%SevenZipInstall%" call "%ToolsPath%\winhttpjs.bat" %SevenZipUrl% -saveTo "%EnvDownloadPath%\%SevenZipInstall%" + if not exist "%EnvDownloadPath%\%SevenZipInstall%" echo Cannot download 7z installation& goto error + + echo Unpack 7z + msiexec /a "%EnvDownloadPath%\%SevenZipInstall%" /qb TARGETDIR="%EnvTempPath%" + copy "%EnvTempPath%\Files\7-Zip\7z.dll" "%EnvToolsPath%" + copy "%EnvTempPath%\Files\7-Zip\7z.exe" "%EnvToolsPath%" + + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" +) + +if not exist "%EnvToolsPath%\curl.exe" ( + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" + mkdir "%EnvTempPath%" + + echo Download Curl installation + + if not exist "%EnvDownloadPath%\%CurlInstall%" call "%ToolsPath%\winhttpjs.bat" %CurlUrl% -saveTo "%EnvDownloadPath%\%CurlInstall%" + if not exist "%EnvDownloadPath%\%CurlInstall%" echo Cannot download Curl installation& goto error + + echo Unpack Curl + "%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%CurlInstall%" + copy "%EnvTempPath%\curl-7.50.1-win32-mingw\bin\curl.exe" "%EnvToolsPath%" + + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" +) + +if not exist "%EnvToolsPath%\jom.exe" ( + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" + mkdir "%EnvTempPath%" + + echo Download jom installation + + if not exist "%EnvDownloadPath%\%JomInstall%" call "%ToolsPath%\winhttpjs.bat" %JomUrl% -saveTo "%EnvDownloadPath%\%JomInstall%" + if not exist "%EnvDownloadPath%\%JomInstall%" echo Cannot download jom installation& goto error + + echo Unpack jom + "%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%JomInstall%" + copy "%EnvTempPath%\jom.exe" "%EnvToolsPath%" + + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" +) + +if not exist "%EnvToolsPath%\depends.exe" ( + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" + mkdir "%EnvTempPath%" + + echo Download Dependency Walker installation + + if not exist "%EnvDownloadPath%\%DependsInstall%" call "%ToolsPath%\winhttpjs.bat" %DependsUrl% -saveTo "%EnvDownloadPath%\%DependsInstall%" + if not exist "%EnvDownloadPath%\%DependsInstall%" echo Cannot download Dependendy Walker installation& goto error + + echo Unpack Dependency Walker + "%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%DependsInstall%" + copy "%EnvTempPath%\*" "%EnvToolsPath%" + + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" +) + +if not exist "%EnvToolsPath%\cut.exe" ( + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" + mkdir "%EnvTempPath%" + + echo Download Unix Tools installation + + if not exist "%EnvDownloadPath%\%UnixToolsInstall%" call "%ToolsPath%\winhttpjs.bat" %UnixToolsUrl% -saveTo "%EnvDownloadPath%\%UnixToolsInstall%" + if not exist "%EnvDownloadPath%\%UnixToolsInstall%" echo Cannot download unix Tools installation& goto error + + echo Unpack Unix Tools + "%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%UnixToolsInstall%" + copy "%EnvTempPath%\cut.exe" "%EnvToolsPath%" + + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" +) + +if not exist "%EnvToolsPath%\sed.exe" ( + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" + mkdir "%EnvTempPath%" + + echo Download Unix Tools installation + + if not exist "%EnvDownloadPath%\%UnixToolsInstall%" call "%ToolsPath%\winhttpjs.bat" %UnixToolsUrl% -saveTo "%EnvDownloadPath%\%UnixToolsInstall%" + if not exist "%EnvDownloadPath%\%UnixToolsInstall%" echo Cannot download Unix Tools installation& goto error + + echo Unpack Unix Tools + "%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%UnixToolsInstall%" + copy "%EnvTempPath%\sed.exe" "%EnvToolsPath%" + + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" +) + +if not exist "%EnvToolsPath%\NSIS\nsis.exe" ( + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" + mkdir "%EnvTempPath%" + + echo Download NSIS installation + + if not exist "%EnvDownloadPath%\%NSISInstall%" "%EnvCurlExe%" -L -k %NSISUrl% -o "%EnvDownloadPath%\%NSISInstall%" + if not exist "%EnvDownloadPath%\%NSISInstall%" echo Cannot download NSIS installation& goto error + + echo Unpack NSIS + "%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%NSISInstall%" + if not exist "%NSISInstallPath%" mkdir "%NSISInstallPath%" + xcopy /s "%EnvTempPath%" "%NSISInstallPath%" + + call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%" +) + +:exit +endlocal +exit /B 0 + +:error +endlocal +exit /B 1 diff --git a/build_scripts/Windows/env/tools/root/update-msys.bat b/build_scripts/Windows/env/tools/root/update-msys.bat new file mode 100644 index 000000000..b0a109d01 --- /dev/null +++ b/build_scripts/Windows/env/tools/root/update-msys.bat @@ -0,0 +1,15 @@ +@echo off + +setlocal + +set MSYSPath=%~dp0msys + +if not exist "%MSYSPath%\bin\mingw-get.exe" echo MSYS is not installed& exit /B 0 + +echo Update MSYS +pushd "%MSYSPath%\bin" +mingw-get.exe update +mingw-get.exe upgrade +popd + +exit /B %ERRORLEVEL% diff --git a/build_scripts/Windows/HeaderImage.bmp b/build_scripts/Windows/installer/HeaderImage.bmp similarity index 100% rename from build_scripts/Windows/HeaderImage.bmp rename to build_scripts/Windows/installer/HeaderImage.bmp diff --git a/build_scripts/Windows/HeaderImageEmpty.bmp b/build_scripts/Windows/installer/HeaderImageEmpty.bmp similarity index 100% rename from build_scripts/Windows/HeaderImageEmpty.bmp rename to build_scripts/Windows/installer/HeaderImageEmpty.bmp diff --git a/build_scripts/Windows/lang/ca_ES.nsh b/build_scripts/Windows/installer/lang/ca_ES.nsh similarity index 100% rename from build_scripts/Windows/lang/ca_ES.nsh rename to build_scripts/Windows/installer/lang/ca_ES.nsh diff --git a/build_scripts/Windows/lang/de.nsh b/build_scripts/Windows/installer/lang/de.nsh similarity index 100% rename from build_scripts/Windows/lang/de.nsh rename to build_scripts/Windows/installer/lang/de.nsh diff --git a/build_scripts/Windows/lang/en.nsh b/build_scripts/Windows/installer/lang/en.nsh similarity index 100% rename from build_scripts/Windows/lang/en.nsh rename to build_scripts/Windows/installer/lang/en.nsh diff --git a/build_scripts/Windows/lang/es.nsh b/build_scripts/Windows/installer/lang/es.nsh similarity index 100% rename from build_scripts/Windows/lang/es.nsh rename to build_scripts/Windows/installer/lang/es.nsh diff --git a/build_scripts/Windows/lang/fr.nsh b/build_scripts/Windows/installer/lang/fr.nsh similarity index 100% rename from build_scripts/Windows/lang/fr.nsh rename to build_scripts/Windows/installer/lang/fr.nsh diff --git a/build_scripts/Windows/lang/pl.nsh b/build_scripts/Windows/installer/lang/pl.nsh similarity index 100% rename from build_scripts/Windows/lang/pl.nsh rename to build_scripts/Windows/installer/lang/pl.nsh diff --git a/build_scripts/Windows/lang/ru.nsh b/build_scripts/Windows/installer/lang/ru.nsh similarity index 100% rename from build_scripts/Windows/lang/ru.nsh rename to build_scripts/Windows/installer/lang/ru.nsh diff --git a/build_scripts/Windows/lang/tr.nsh b/build_scripts/Windows/installer/lang/tr.nsh similarity index 100% rename from build_scripts/Windows/lang/tr.nsh rename to build_scripts/Windows/installer/lang/tr.nsh diff --git a/build_scripts/Windows/lang/ts/ca_ES.ts b/build_scripts/Windows/installer/lang/ts/ca_ES.ts similarity index 100% rename from build_scripts/Windows/lang/ts/ca_ES.ts rename to build_scripts/Windows/installer/lang/ts/ca_ES.ts diff --git a/build_scripts/Windows/lang/ts/convert_from_ts.bat b/build_scripts/Windows/installer/lang/ts/convert_from_ts.bat similarity index 100% rename from build_scripts/Windows/lang/ts/convert_from_ts.bat rename to build_scripts/Windows/installer/lang/ts/convert_from_ts.bat diff --git a/build_scripts/Windows/lang/ts/convert_from_ts.xsl b/build_scripts/Windows/installer/lang/ts/convert_from_ts.xsl similarity index 100% rename from build_scripts/Windows/lang/ts/convert_from_ts.xsl rename to build_scripts/Windows/installer/lang/ts/convert_from_ts.xsl diff --git a/build_scripts/Windows/lang/ts/convert_to_ts.bat b/build_scripts/Windows/installer/lang/ts/convert_to_ts.bat similarity index 100% rename from build_scripts/Windows/lang/ts/convert_to_ts.bat rename to build_scripts/Windows/installer/lang/ts/convert_to_ts.bat diff --git a/build_scripts/Windows/lang/ts/de.ts b/build_scripts/Windows/installer/lang/ts/de.ts similarity index 100% rename from build_scripts/Windows/lang/ts/de.ts rename to build_scripts/Windows/installer/lang/ts/de.ts diff --git a/build_scripts/Windows/lang/ts/en.ts b/build_scripts/Windows/installer/lang/ts/en.ts similarity index 100% rename from build_scripts/Windows/lang/ts/en.ts rename to build_scripts/Windows/installer/lang/ts/en.ts diff --git a/build_scripts/Windows/lang/ts/es.ts b/build_scripts/Windows/installer/lang/ts/es.ts similarity index 100% rename from build_scripts/Windows/lang/ts/es.ts rename to build_scripts/Windows/installer/lang/ts/es.ts diff --git a/build_scripts/Windows/lang/ts/fr.ts b/build_scripts/Windows/installer/lang/ts/fr.ts similarity index 100% rename from build_scripts/Windows/lang/ts/fr.ts rename to build_scripts/Windows/installer/lang/ts/fr.ts diff --git a/build_scripts/Windows/lang/ts/pl.ts b/build_scripts/Windows/installer/lang/ts/pl.ts similarity index 100% rename from build_scripts/Windows/lang/ts/pl.ts rename to build_scripts/Windows/installer/lang/ts/pl.ts diff --git a/build_scripts/Windows/lang/ts/ru.ts b/build_scripts/Windows/installer/lang/ts/ru.ts similarity index 100% rename from build_scripts/Windows/lang/ts/ru.ts rename to build_scripts/Windows/installer/lang/ts/ru.ts diff --git a/build_scripts/Windows/lang/ts/tr.ts b/build_scripts/Windows/installer/lang/ts/tr.ts similarity index 100% rename from build_scripts/Windows/lang/ts/tr.ts rename to build_scripts/Windows/installer/lang/ts/tr.ts diff --git a/build_scripts/Windows/lang/ts/xsltproc.exe b/build_scripts/Windows/installer/lang/ts/xsltproc.exe similarity index 100% rename from build_scripts/Windows/lang/ts/xsltproc.exe rename to build_scripts/Windows/installer/lang/ts/xsltproc.exe diff --git a/build_scripts/Windows/lang/ts/zh_CN.ts b/build_scripts/Windows/installer/lang/ts/zh_CN.ts similarity index 100% rename from build_scripts/Windows/lang/ts/zh_CN.ts rename to build_scripts/Windows/installer/lang/ts/zh_CN.ts diff --git a/build_scripts/Windows/lang/zh_CN.nsh b/build_scripts/Windows/installer/lang/zh_CN.nsh similarity index 100% rename from build_scripts/Windows/lang/zh_CN.nsh rename to build_scripts/Windows/installer/lang/zh_CN.nsh diff --git a/build_scripts/Windows/retroshare-Qt4.nsi b/build_scripts/Windows/installer/retroshare-Qt4.nsi similarity index 94% rename from build_scripts/Windows/retroshare-Qt4.nsi rename to build_scripts/Windows/installer/retroshare-Qt4.nsi index 139113a02..517c0745a 100644 --- a/build_scripts/Windows/retroshare-Qt4.nsi +++ b/build_scripts/Windows/installer/retroshare-Qt4.nsi @@ -3,7 +3,6 @@ # Needed defines ;!define BUILDADD "" -;!define SOURCEDIR "" ;!define RELEASEDIR "" ;!define QTDIR "" ;!define MINGWDIR "" @@ -16,10 +15,6 @@ !error "BUILDADD is not defined" !endif -!ifndef SOURCEDIR -!error "SOURCEDIR is not defined" -!endif - !ifndef RELEASEDIR !error "RELEASEDIR is not defined" !endif @@ -38,12 +33,22 @@ !define OUTDIR_ "" !endif +!ifndef INSTALLERADD +!define INSTALLERADD "" +!endif + +# Source directory +!define SOURCEDIR "..\..\.." + # Get version from executable !GetDllVersion "${RELEASEDIR}\retroshare-gui\src\release\RetroShare06.exe" VERSION_ - !define VERSION ${VERSION_1}.${VERSION_2}.${VERSION_3}${BUILDADD} ;!define REVISION ${VERSION_4} +# Get version of Qt +!GetDllVersion "${QTDIR}\bin\QtCore4.dll" QTVERSION_ +!define QTVERSION ${QTVERSION_1}.${QTVERSION_2}.${QTVERSION_3} + # Check version !ifndef REVISION !error "REVISION is not defined" @@ -71,7 +76,7 @@ # Main Install settings Name "${APPNAMEANDVERSION}" InstallDirRegKey HKLM "Software\${APPNAME}" "" -OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-setup.exe" +OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-Qt${QTVERSION}${INSTALLERADD}-setup.exe" BrandingText "${APPNAMEANDVERSION}" RequestExecutionlevel highest # Use compression @@ -92,7 +97,7 @@ Var StyleSheetDir # Interface Settings !define MUI_ABORTWARNING !define MUI_HEADERIMAGE -!define MUI_HEADERIMAGE_BITMAP "${SOURCEDIR}\build_scripts\Windows\HeaderImage.bmp" +!define MUI_HEADERIMAGE_BITMAP "${SOURCEDIR}\build_scripts\Windows\installer\HeaderImage.bmp" ;!define MUI_WELCOMEFINISHPAGE_BITMAP "...bmp" # MUI defines diff --git a/build_scripts/Windows/retroshare-Qt5.nsi b/build_scripts/Windows/installer/retroshare-Qt5.nsi similarity index 95% rename from build_scripts/Windows/retroshare-Qt5.nsi rename to build_scripts/Windows/installer/retroshare-Qt5.nsi index 918ce53b1..916710a5e 100644 --- a/build_scripts/Windows/retroshare-Qt5.nsi +++ b/build_scripts/Windows/installer/retroshare-Qt5.nsi @@ -3,7 +3,6 @@ # Needed defines ;!define BUILDADD "" -;!define SOURCEDIR "" ;!define RELEASEDIR "" ;!define QTDIR "" ;!define MINGWDIR "" @@ -16,10 +15,6 @@ !error "BUILDADD is not defined" !endif -!ifndef SOURCEDIR -!error "SOURCEDIR is not defined" -!endif - !ifndef RELEASEDIR !error "RELEASEDIR is not defined" !endif @@ -38,12 +33,22 @@ !define OUTDIR_ "" !endif +!ifndef INSTALLERADD +!define INSTALLERADD "" +!endif + +# Source directory +!define SOURCEDIR "..\..\.." + # Get version from executable !GetDllVersion "${RELEASEDIR}\retroshare-gui\src\release\RetroShare06.exe" VERSION_ - !define VERSION ${VERSION_1}.${VERSION_2}.${VERSION_3}${BUILDADD} ;!define REVISION ${VERSION_4} +# Get version of Qt +!GetDllVersion "${QTDIR}\bin\Qt5Core.dll" QTVERSION_ +!define QTVERSION ${QTVERSION_1}.${QTVERSION_2}.${QTVERSION_3} + # Check version !ifndef REVISION !error "REVISION is not defined" @@ -71,7 +76,7 @@ # Main Install settings Name "${APPNAMEANDVERSION}" InstallDirRegKey HKLM "Software\${APPNAME}" "" -OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-setup.exe" +OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-Qt${QTVERSION}${INSTALLERADD}-setup.exe" BrandingText "${APPNAMEANDVERSION}" RequestExecutionlevel highest # Use compression @@ -92,7 +97,7 @@ Var StyleSheetDir # Interface Settings !define MUI_ABORTWARNING !define MUI_HEADERIMAGE -!define MUI_HEADERIMAGE_BITMAP "${SOURCEDIR}\build_scripts\Windows\HeaderImage.bmp" +!define MUI_HEADERIMAGE_BITMAP "${SOURCEDIR}\build_scripts\Windows\installer\HeaderImage.bmp" ;!define MUI_WELCOMEFINISHPAGE_BITMAP "...bmp" # MUI defines @@ -216,9 +221,7 @@ Section $(Section_Main) Section_Main File /r "${QTDIR}\plugins\imageformats\qgif.dll" File /r "${QTDIR}\plugins\imageformats\qicns.dll" File /r "${QTDIR}\plugins\imageformats\qico.dll" - File /r "${QTDIR}\plugins\imageformats\qjp2.dll" File /r "${QTDIR}\plugins\imageformats\qjpeg.dll" - File /r "${QTDIR}\plugins\imageformats\qmng.dll" File /r "${QTDIR}\plugins\imageformats\qsvg.dll" File /r "${QTDIR}\plugins\imageformats\qtga.dll" File /r "${QTDIR}\plugins\imageformats\qtiff.dll" diff --git a/build_scripts/Windows/make_installer.bat b/build_scripts/Windows/make_installer.bat deleted file mode 100644 index 556680da8..000000000 --- a/build_scripts/Windows/make_installer.bat +++ /dev/null @@ -1,46 +0,0 @@ -@echo off - -setlocal - -:: Modify variable when makensis.exe doesn't exist in PATH -set NSIS_EXE=makensis.exe - -:: Needed environment variables -set SourceDir=%~dp0..\.. -::set ReleaseDir= -::set QtDir= -::set MinGWDir= - -:: Optional environment variables -::set OutDir= - -:: Build defines for script -set NSIS_PARAM= - -if "%SourceDir%" NEQ "" set NSIS_PARAM=%NSIS_PARAM% /DSOURCEDIR="%SourceDir%" -if "%ReleaseDir%" NEQ "" set NSIS_PARAM=%NSIS_PARAM% /DRELEASEDIR="%ReleaseDir%" -if "%QtDir%" NEQ "" set NSIS_PARAM=%NSIS_PARAM% /DQTDIR="%QtDir%" -if "%MinGWDir%" NEQ "" set NSIS_PARAM=%NSIS_PARAM% /DMINGWDIR="%MinGWDir%" -if "%OutDir%" NEQ "" set NSIS_PARAM=%NSIS_PARAM% /DOUTDIR="%OutDir%" - -:: Scan version from source -set Revision= -set BuildAdd= -call "%~dp0GetRsVersion.bat" RS_REVISION_STRING Revision -if errorlevel 1 goto exit -call "%~dp0GetRsVersion.bat" RS_BUILD_NUMBER_ADD BuildAdd -if errorlevel 1 goto exit - -if "%Revision%"=="" ( - echo. - echo Version not found - goto exit -) - -set NSIS_PARAM=%NSIS_PARAM% /DREVISION=%Revision% /DBUILDADD=%BuildAdd% - -:: Create installer -"%NSIS_EXE%" %NSIS_PARAM% "%~dp0retroshare.nsi" - -:exit -endlocal diff --git a/build_scripts/Windows/tools/depends.bat b/build_scripts/Windows/tools/depends.bat new file mode 100644 index 000000000..3f1bb3d08 --- /dev/null +++ b/build_scripts/Windows/tools/depends.bat @@ -0,0 +1,37 @@ +:: Usage: +:: call depends.bat [list^|missing] file + +setlocal + +if "%2"=="" ( + echo Usage: %~nx0 [list^|missing] File + goto :exit +) + +if not exist "%EnvDependsExe%" echo depends.exe not found in %EnvToolsPath%.& goto exit +if not exist "%EnvCutExe%" echo cut.exe not found in %EnvToolsPath%.& goto exit + +start /wait "" "%EnvDependsExe%" /c /oc:"%~dp0depends.tmp" %2 +if "%1"=="missing" ( + "%EnvCutExe%" --delimiter=, --fields=1,2 "%~dp0depends.tmp" >"%~dp0depends1.tmp" + for /F "tokens=1,2 delims=," %%A in (%~sdp0depends1.tmp) do ( + if "%%A"=="?" ( + echo %%~B + ) + ) +) + +if "%1"=="list" ( + "%EnvCutExe%" --delimiter=, --fields=2 "%~dp0depends.tmp" >"%~dp0depends1.tmp" + for /F "tokens=1 delims=," %%A in (%~sdp0depends1.tmp) do ( + if "%%A" NEQ "Module" ( + echo %%~A + ) + ) +) + +if exist "%~dp0depends.tmp" del /Q "%~dp0depends.tmp" +if exist "%~dp0depends1.tmp" del /Q "%~dp0depends1.tmp" + +:exit +endlocal diff --git a/build_scripts/Windows/tools/find-in-path.bat b/build_scripts/Windows/tools/find-in-path.bat new file mode 100644 index 000000000..0ee7407bf --- /dev/null +++ b/build_scripts/Windows/tools/find-in-path.bat @@ -0,0 +1,26 @@ +:: Usage: +:: call find-in-path.bat variable file + +setlocal + +set Var=%~1 +set File=%~2 + +if "%File%"=="" ( + echo. + echo Parameter error. + exit /B 1 +) + +set FoundPath= + +SET PathTemp="%Path:;=";"%" +FOR %%P IN (%PathTemp%) DO ( + IF EXIST "%%~P.\%File%" ( + set FoundPath=%%~P + goto :found + ) +) + +:found +endlocal & set %Var%=%FoundPath% diff --git a/build_scripts/Windows/tools/get-gcc-version.bat b/build_scripts/Windows/tools/get-gcc-version.bat new file mode 100644 index 000000000..c9998376b --- /dev/null +++ b/build_scripts/Windows/tools/get-gcc-version.bat @@ -0,0 +1,42 @@ +:: Usage: +:: call get-gcc-version.bat variable + +setlocal + +set Var=%~1 +if "%Var%"=="" ( + echo. + echo Parameter error. + exit /B 1 +) + +set GCCVersion= + +call "%~dp0find-in-path.bat" GCCPath gcc.exe +if "%GCCPath%"=="" ( + echo. + echo Cannot find gcc.exe in PATH. + goto exit +) + +gcc --version >"%~dp0gccversion.tmp" +for /F "tokens=1*" %%A in (%~sdp0gccversion.tmp) do ( + if "%%A"=="gcc" ( + call :find_version %%B + goto exit + ) +) + +:exit +if exist "%~dp0gccversion.tmp" del /Q "%~dp0gccversion.tmp" + +endlocal & set %Var%=%GCCVersion% +goto :EOF + +:find_version +:loop +if "%2" NEQ "" ( + shift + goto loop +) +set GCCVersion=%1 diff --git a/build_scripts/Windows/tools/get-git-ref.bat b/build_scripts/Windows/tools/get-git-ref.bat new file mode 100644 index 000000000..f8f6efdeb --- /dev/null +++ b/build_scripts/Windows/tools/get-git-ref.bat @@ -0,0 +1,39 @@ +REM Usage: +REM call get-git-ref.bat Variable [Branch] + +setlocal + +set Variable=%~1 +if "%Variable%"=="" ( + echo. + echo Parameter error + exit /B 1 +) + +set Ref= + +:: Check git executable +set GitPath= +call "%~dp0find-in-path.bat" GitPath git.exe +if "%GitPath%"=="" ( + echo. + echo Git executable not found in PATH. + goto exit +) + +set GitParameter= +set Branch=%~2 +if "%Branch%"=="" ( + set Branch=HEAD + set GitParameter=--head +) + +for /F "tokens=1*" %%A in ('git show-ref %GitParameter% %Branch%') do ( + if "%%B"=="%Branch%" ( + set Ref=%%A + ) +) + +:exit +endlocal & set %Variable%=%Ref% +exit /B 0 diff --git a/build_scripts/Windows/tools/get-qt-version.bat b/build_scripts/Windows/tools/get-qt-version.bat new file mode 100644 index 000000000..c49939970 --- /dev/null +++ b/build_scripts/Windows/tools/get-qt-version.bat @@ -0,0 +1,34 @@ +:: Usage: +:: call get-qt-version.bat variable + +setlocal + +set Var=%~1 +if "%Var%"=="" ( + echo. + echo Parameter error. + exit /B 1 +) + +set QtVersion= + +call "%~dp0find-in-path.bat" QMakePath qmake.exe +if "%QMakePath%"=="" ( + echo. + echo Cannot find qmake.exe in PATH. + goto exit +) + +qmake.exe -version >"%~dp0qtversion.tmp" +for /F "tokens=1,2,3,4" %%A in (%~sdp0qtversion.tmp) do ( + if "%%A"=="Using" ( + set QtVersion=%%D + goto exit + ) +) + +:exit +if exist "%~dp0qtversion.tmp" del /Q "%~dp0qtversion.tmp" + +endlocal & set %Var%=%QtVersion% +exit /B 0 \ No newline at end of file diff --git a/build_scripts/Windows/GetRsVersion.bat b/build_scripts/Windows/tools/get-rs-version.bat similarity index 54% rename from build_scripts/Windows/GetRsVersion.bat rename to build_scripts/Windows/tools/get-rs-version.bat index 153b5969d..c99ded405 100644 --- a/build_scripts/Windows/GetRsVersion.bat +++ b/build_scripts/Windows/tools/get-rs-version.bat @@ -1,33 +1,23 @@ -@:: Usage: -@:: call GetRsVersion.bat Define Variable +:: Usage: +:: call get-rs-version.bat Define Variable -@setlocal -@echo off +setlocal set Define=%~1 -if "%Define%"=="" ( - echo. - echo Parameter error - endlocal - exit /B1 -) - set Variable=%~2 if "%Variable%"=="" ( echo. - echo Parameter error - endlocal - exit /B1 + echo Parameter error. + exit /B 1 ) set Result= -set VersionFile="%~dp0..\..\libretroshare\src\retroshare\rsversion.h" +set VersionFile="%~dp0..\..\..\libretroshare\src\retroshare\rsversion.h" if not exist "%VersionFile%" ( echo. echo Version file doesn't exist. echo %VersionFile% - endlocal exit /B1 ) diff --git a/build_scripts/Windows/tools/msys-path.bat b/build_scripts/Windows/tools/msys-path.bat new file mode 100644 index 000000000..3b0c5fd69 --- /dev/null +++ b/build_scripts/Windows/tools/msys-path.bat @@ -0,0 +1,20 @@ +:: Usage: +:: call msys-path.bat path variable + +setlocal + +set WinPath=%~1 +set MSYSVar=%~2 + +if "%MSYSVar%"=="" ( + echo. + echo Parameter error. + exit /B 1 +) + +set MSYSPath=/%WinPath:~0,1%/%WinPath:~3% +set MSYSPath=%MSYSPath:\=/% + +endlocal & set %MSYSVar%=%MSYSPath% + +exit /B 0 diff --git a/build_scripts/Windows/tools/remove-dir.bat b/build_scripts/Windows/tools/remove-dir.bat new file mode 100644 index 000000000..2bcb14c51 --- /dev/null +++ b/build_scripts/Windows/tools/remove-dir.bat @@ -0,0 +1,15 @@ +:: Usage: +:: call remove-dir.bat path + +if "%~1"=="" ( + echo. + echo Parameter error. + exit /B 1 +) + +if exist %1 ( + del /s /f /q %1 >nul + rmdir /s /q %1 +) + +exit /B 0 diff --git a/build_scripts/Windows/build_libs/Tools/winhttpjs.bat b/build_scripts/Windows/tools/winhttpjs.bat similarity index 100% rename from build_scripts/Windows/build_libs/Tools/winhttpjs.bat rename to build_scripts/Windows/tools/winhttpjs.bat