From 1b1cfe1b92659775c0d3a693fe8abad874c25409 Mon Sep 17 00:00:00 2001 From: R4SAS Date: Tue, 21 Mar 2017 15:03:31 +0300 Subject: [PATCH] rewrote win build script and moved it to build folder --- build/build_mingw.cmd | 62 +++++++++++++++++++++++++++++ contrib/build_mingw.cmd | 25 ------------ contrib/build_mingw.sh | 88 ----------------------------------------- 3 files changed, 62 insertions(+), 113 deletions(-) create mode 100644 build/build_mingw.cmd delete mode 100644 contrib/build_mingw.cmd delete mode 100644 contrib/build_mingw.sh diff --git a/build/build_mingw.cmd b/build/build_mingw.cmd new file mode 100644 index 00000000..022df45e --- /dev/null +++ b/build/build_mingw.cmd @@ -0,0 +1,62 @@ +@echo off +setlocal enableextensions enabledelayedexpansion +title Building i2pd + +REM Copyright (c) 2013-2017, The PurpleI2P Project +REM This file is part of Purple i2pd project and licensed under BSD3 +REM See full license text in LICENSE file at top of project tree + +REM To use that script, you must have installed in your MSYS installation theese packages: +REM Base: git make zip +REM x86_64: mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-gcc +REM i686: mingw-w64-i686-boost mingw-w64-i686-openssl mingw-w64-i686-gcc + +REM setting up variables for MSYS +REM Note: if you installed MSYS64 to different path, edit WD variable (only C:\msys64 needed to edit)! +set "WD=C:\msys64\usr\bin\" +set MSYS2_PATH_TYPE=inherit +set CHERE_INVOKING=enabled_from_arguments +set MSYSTEM=MSYS + +REM detecting number of processors and subtract 1. +set /a threads=%NUMBER_OF_PROCESSORS%-1 + +REM we must work in root of repo +cd .. + +echo Receiving latest commit and cleaning up... +"%WD%bash" -lc "git pull && make clean" > build/build_git.log 2>&1 +echo. + +REM set to variable current commit hash +FOR /F "usebackq" %%a IN (`%WD%bash -lc 'git describe --tags'`) DO ( + set tag=%%a +) + +REM starting building +set MSYSTEM=MINGW32 +set bitness=32 +call :BUILDING +echo. + +set MSYSTEM=MINGW64 +set bitness=64 +call :BUILDING +echo. + +echo Build complete... +pause +exit /b 0 + +:BUILDING +echo Building i2pd %tag% for win%bitness%: +echo Build AVX+AESNI... +"%WD%bash" -lc "make USE_UPNP=yes USE_AVX=1 USE_AESNI=1 -j%threads% && zip -9 build/i2pd_%tag%_win%bitness%_mingw_avx_aesni.zip i2pd.exe && make clean" > build/build_win%bitness%_avx_aesni.log 2>&1 +echo Build AVX... +"%WD%bash" -lc "make USE_UPNP=yes USE_AVX=1 -j%threads% && zip -9 build/i2pd_%tag%_win%bitness%_mingw_avx.zip i2pd.exe && make clean" > build/build_win%bitness%_avx.log 2>&1 +echo Build AESNI... +"%WD%bash" -lc "make USE_UPNP=yes USE_AESNI=1 -j%threads% && zip -9 build/i2pd_%tag%_win%bitness%_mingw_aesni.zip i2pd.exe && make clean" > build/build_win%bitness%_aesni.log 2>&1 +echo Build without extensions... +"%WD%bash" -lc "make USE_UPNP=yes -j%threads% && zip -9 build/i2pd_%tag%_win%bitness%_mingw.zip i2pd.exe && make clean" > build/build_win%bitness%.log 2>&1 + +:EOF \ No newline at end of file diff --git a/contrib/build_mingw.cmd b/contrib/build_mingw.cmd deleted file mode 100644 index b104d79c..00000000 --- a/contrib/build_mingw.cmd +++ /dev/null @@ -1,25 +0,0 @@ -@echo off -setlocal - -title Building i2pd - -set "WD=C:\msys64\usr\bin\" -set MSYS2_PATH_TYPE=inherit -set CHERE_INVOKING=enabled_from_arguments -set MSYSCON= - -echo Building i2pd for win32. Press Enter after the end of compilation... -set MSYSTEM=MINGW32 -set CONTITLE=MinGW x32 -start "%CONTITLE%" /WAIT "%WD%bash" --login build_mingw.sh -pause > nul - -echo Building i2pd for win64. Press Enter after the end of compilation... -set MSYSTEM=MINGW64 -set CONTITLE=MinGW x64 -start "%CONTITLE%" /WAIT "%WD%bash" --login build_mingw.sh -pause > nul - -echo Build complete... -pause -exit /b 0 \ No newline at end of file diff --git a/contrib/build_mingw.sh b/contrib/build_mingw.sh deleted file mode 100644 index ecc388c1..00000000 --- a/contrib/build_mingw.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/sh - -# Определяем архитектуру. -if [ $MSYSTEM == MINGW64 ]; then - export arch="win64" -elif [ $MSYSTEM == MINGW32 ]; then - export arch="win32" -else - echo "Не могу понять, какая у вас архитектура, используемая для сборки."; - echo "Вы точно запустили скрипт в оболочке MSYS2 MinGW [64/32]-bit ?"; - echo "Обычно её можно запустить выполнив c:\msys64\mingw64.exe или c:\msys64\mingw32.exe"; - exit 1; -fi; - -# Задаём переменной contrib текущий путь и переходим на уровень выше. -export contrib=$PWD -cd .. - -# Очистка от предыдущей сборки (на всякий случай =) ). -make clean >> /dev/null - -# Обновляем репозиторий, и получаем хеш последнего коммита. -echo "Получаем обновления из репозитория."; -git pull -if [ "$?" != 0 ]; then - echo "Не удалось обновить локальный репозиторий."; - echo "Вы точно запустили скрипт в папке репозитория?"; - exit 1; -fi; - -export commit=$(git rev-parse --verify HEAD | cut -c -7) -if [ -z commit ]; then - echo "Не удалось получить хеш последнего коммита."; - echo "Вы точно запустили скрипт в папке репозитория?"; - exit 1; -fi; - -# Получаем версию приложения -export version=$(grep -E "I2PD_VERSION_(MAJOR|MINOR|MICRO)\ " version.h | grep -oE '[^ ]+$' | tr '\n' '.'|head -c -1) - -# Получаем количество ядер, и уменьшаем количество потоков на 1 от количества ядер (если их больше чем 1). -if [ $NUMBER_OF_PROCESSORS -ge 2 ]; then - export threads=$(( $NUMBER_OF_PROCESSORS - 1 )) -else - export threads=$NUMBER_OF_PROCESSORS -fi; - -echo "Собираем i2pd ${version} (коммит ${commit}) для ${arch}."; - -# Собираем приложение с разными параметрами, и архивируем в zip архивы. -echo "Сборка AVX+AESNI"; -make USE_UPNP=yes USE_AVX=1 USE_AESNI=1 -j ${threads} > ${contrib}/build_${arch}_avx_aesni.log 2>&1 -if [ "$?" != 0 ]; then - echo "Сборка не удалась. Смотрите в build_avx_aesni.log"; - exit 1; -fi; -zip -9 ${contrib}/i2pd_${version}_${commit}_${arch}_mingw_avx_aesni.zip i2pd.exe >> /dev/null -make clean >> /dev/null - -echo "Сборка AVX"; -make USE_UPNP=yes USE_AVX=1 -j ${threads} > ${contrib}/build_${arch}_avx.log 2>&1 -if [ "$?" != 0 ]; then - echo "Сборка не удалась. Смотрите в build_avx.log."; - exit 1; -fi; -zip -9 ${contrib}/i2pd_${version}_${commit}_${arch}_mingw_avx.zip i2pd.exe >> /dev/null -make clean >> /dev/null - -echo "Сборка AESNI"; -make USE_UPNP=yes USE_AESNI=1 -j ${threads} > ${contrib}/build_${arch}_aesni.log 2>&1 -if [ "$?" != 0 ]; then - echo "Сборка не удалась. Смотрите в build_aesni.log"; - exit 1; -fi; -zip -9 ${contrib}/i2pd_${version}_${commit}_${arch}_mingw_aesni.zip i2pd.exe >> /dev/null -make clean >> /dev/null - -echo "Сборка без дополнительных инструкций"; -make USE_UPNP=yes -j ${threads} > ${contrib}/build_${arch}.log 2>&1 -if [ "$?" != 0 ]; then - echo "Сборка не удалась. Смотрите в build.log"; - exit 1; -fi; -zip -9 ${contrib}/i2pd_${version}_${commit}_${arch}_mingw.zip i2pd.exe >> /dev/null -make clean >> /dev/null - -echo "Сборка i2pd ${version} для ${arch} завершена."; -exit 0;