1
0
mirror of https://github.com/imapsync/imapsync.git synced 2024-11-17 00:02:29 +01:00
imapsync/W/build_exe.bat
Nick Bebout 1d08afaba6 1.977
2020-04-10 18:15:57 -05:00

207 lines
6.1 KiB
Batchfile
Executable File

REM $Id: build_exe.bat,v 1.56 2019/12/11 18:57:20 gilles Exp gilles $
@SETLOCAL
@ECHO Currently running through %0 %*
@ECHO Building imapsync.exe
@REM the following command change current directory to the dirname of the current batch pathname
CD /D %~dp0
REM Remove the error file because its existence means an error occurred during this script execution
IF EXIST LOG_bat\%~nx0.txt DEL LOG_bat\%~nx0.txt
CALL :handle_error CALL :detect_perl
CALL :handle_error CALL :check_modules
CALL :handle_error CALL :rename_to_old
CALL :handle_error CALL :pp_exe
CALL :handle_error CALL :copy_with_architecture_name
@REM Do a PAUSE if run by double-click, aka, explorer (then ). No PAUSE in a DOS window or via ssh.
IF %0 EQU "%~dpnx0" IF "%SSH_CLIENT%"=="" PAUSE
@ENDLOCAL
EXIT /B
:pp_exe
@SETLOCAL
@REM In order to verify that all Strawberry dlls are statically included in the exe
@REM get https://docs.microsoft.com/en-us/sysinternals/downloads/listdlls
@REM You'll need a first run with Listdlls.exe -accepteula
@REM Run test_exe_tests.bat
@REM In parallel, run Listdlls.exe imapsync|findstr Strawberry
@REM No line should be in the output
@REM Now imapsync can check this itself if Listdlls.exe is in its dir
@REM .\imapsync.exe --testsunit tests_check_binary_embed_all_dyn_libs
@REM CALL pp -o imapsync.exe --link libeay32_.dll --link zlib1_.dll --link ssleay32_.dll .\imapsync
@IF [%PROCESSOR_ARCHITECTURE%] == [x86] (
@REM 32 bits
@REM Do not add command after this one since it will anihilate the %ERRORLEVEL% of pp
ECHO Building 32 bits binary PROCESSOR_ARCHITECTURE = %PROCESSOR_ARCHITECTURE%
CALL pp -u -x -o imapsync.exe -M Test2::Formatter -M Test2::Formatter::TAP -M Test2::Event ^
--link zlib1_.dll ^
--link libcrypto-1_1_.dll ^
--link libssl-1_1_.dll ^
.\imapsync
) ELSE (
@REM 64 bits
@REM Do not add command after this one since it will anihilate the %ERRORLEVEL% of pp
ECHO Building 64 bits binary PROCESSOR_ARCHITECTURE = %PROCESSOR_ARCHITECTURE%
CALL pp -u -x -o imapsync.exe -M Test2::Formatter -M Test2::Formatter::TAP -M Test2::Event ^
-M Test2::EventFacet -M Test2::Event::Pass ^
-M Test2::Event::Fail -M Test2::Event::V2 ^
--link libcrypto-1_1-x64__.dll ^
--link zlib1__.dll ^
--link libssl-1_1-x64__.dll ^
.\imapsync
)
@ENDLOCAL
EXIT /B
@REM -M Test2::Event::Info
::------------------------------------------------------
::--------------- Copy with architecture name ----------
:copy_with_architecture_name
@SETLOCAL
IF [%PROCESSOR_ARCHITECTURE%] == [x86] (
@REM 32 bits
COPY /B .\imapsync.exe .\imapsync_32bit.exe
) ELSE (
@REM 64 bits
COPY /B .\imapsync.exe .\imapsync_64bit.exe
)
@ENDLOCAL
EXIT /B
::------------------------------------------------------
::------------------------------------------------------
::--------------- Copy with architecture name ----------
:rename_to_old
@SETLOCAL
IF EXIST imapsync_old.exe DEL imapsync_old.exe
IF EXIST imapsync.exe RENAME imapsync.exe imapsync_old.exe
@ENDLOCAL
EXIT /B
::------------------------------------------------------
::------------------------------------------------------
::--------------- Detect Perl --------------------------
:detect_perl
@SETLOCAL
perl -v
@ENDLOCAL
EXIT /B
::------------------------------------------------------
::------------------------------------------------------
::--------------- Check modules are here --------------
:check_modules
@SETLOCAL
perl ^
-mApp::cpanminus ^
-mTest::MockObject ^
-mPAR::Packer ^
-mReadonly ^
-mAuthen::NTLM ^
-mData::Dumper ^
-mData::Uniqid ^
-mDigest::HMAC_MD5 ^
-mDigest::HMAC_SHA1 ^
-mDigest::MD5 ^
-mFile::Copy::Recursive ^
-mFile::Spec ^
-mIO::Socket ^
-mIO::Socket::INET ^
-mIO::Socket::IP ^
-mIO::Socket::SSL ^
-mIO::Tee ^
-mMail::IMAPClient ^
-mRegexp::Common ^
-mTerm::ReadKey ^
-mTime::Local ^
-mUnicode::String ^
-mURI::Escape ^
-mJSON::WebToken ^
-mLWP::UserAgent ^
-mHTML::Entities ^
-mJSON ^
-mCrypt::OpenSSL::RSA ^
-mEncode::Byte ^
-mFile::Tail ^
-mEncode ^
-mEncode::IMAPUTF7 ^
-mMIME::Base64 ^
-e ''
IF ERRORLEVEL 1 CALL .\install_modules.bat
@ECHO Calling a second time to check all modules are now installed
perl ^
-mApp::cpanminus ^
-mTest::MockObject ^
-mPAR::Packer ^
-mReadonly ^
-mAuthen::NTLM ^
-mData::Dumper ^
-mData::Uniqid ^
-mDigest::HMAC_MD5 ^
-mDigest::HMAC_SHA1 ^
-mDigest::MD5 ^
-mFile::Copy::Recursive ^
-mFile::Spec ^
-mIO::Socket ^
-mIO::Socket::INET ^
-mIO::Socket::IP ^
-mIO::Socket::SSL ^
-mIO::Tee ^
-mMail::IMAPClient ^
-mRegexp::Common ^
-mTerm::ReadKey ^
-mTime::Local ^
-mUnicode::String ^
-mURI::Escape ^
-mJSON::WebToken ^
-mLWP::UserAgent ^
-mHTML::Entities ^
-mJSON ^
-mCrypt::OpenSSL::RSA ^
-mEncode::Byte ^
-mFile::Tail ^
-mEncode ^
-mEncode::IMAPUTF7 ^
-mMIME::Base64 ^
-e ''
@ENDLOCAL
EXIT /B
::------------------------------------------------------
::------------------------------------------------------
::--------------- Handle error -------------------------
:handle_error
@SETLOCAL
ECHO IN %0 with parameters %*
%*
SET CMD_RETURN=%ERRORLEVEL%
IF %CMD_RETURN% EQU 0 (
ECHO GOOD END
) ELSE (
ECHO BAD END
IF NOT EXIST LOG_bat MKDIR LOG_bat
ECHO Failure calling: %* >> LOG_bat\%~nx0.txt
)
@ENDLOCAL
EXIT /B
::------------------------------------------------------