d28ac1d5ce
Before, it would find the first instance of "msvc" in the directory path, but since I happen to be using this repository within another "*msvc*" directory, it was not using the correct path within the repository itself! This ensures that the last instance of "msvc" is used, which will definitely be within the repository.
110 lines
3.3 KiB
Batchfile
110 lines
3.3 KiB
Batchfile
@echo off
|
|
rem %1 = full target path
|
|
rem %2 = last two digits of the Visual Studio version number (e.g. 17)
|
|
|
|
set vs_ver=%2
|
|
set str=%~1
|
|
|
|
rem delete anything from the path before the FINAL 'msvc'
|
|
:dele
|
|
set str=%str:~1%
|
|
set str2=%str:~0,4%
|
|
|
|
if "%str%" EQU "" (
|
|
goto dele_done
|
|
) else if "%str2%" EQU "msvc" (
|
|
set str_confirmed=%str%
|
|
)
|
|
goto dele
|
|
:dele_done
|
|
set str=%str_confirmed%
|
|
echo "Final subpath %str%"
|
|
|
|
rem we now have: msvc.\vs<nn>\<project_directory>\<win32|x64>\<debug|release>\mpir.<lib|dll>
|
|
rem extract: project_directory, platform (plat=<win32|x64>), configuration (conf=<debug|release>) and file name
|
|
|
|
set file=
|
|
for /f "tokens=1,2,3,4,5,6 delims=\" %%a in ("%str%") do set tloc=%%c&set plat=%%d&set conf=%%e&set file=%%f
|
|
if /i "%file%" NEQ "" (goto next)
|
|
call :seterr & echo ERROR: %1 is not supported & exit /b %errorlevel%
|
|
|
|
:next
|
|
echo target=%tloc%, platform=%plat%, configuration=%conf%, file=%file%
|
|
|
|
rem get the filename extension (lib/dll) to set the output directory
|
|
set loc=%tloc%\
|
|
set extn=%file%#
|
|
set filename=%extn:~0,-5%
|
|
set extn=%extn:~-4,3%
|
|
if "%extn%" EQU "lib" (goto is2nd)
|
|
if "%extn%" EQU "dll" (goto is2nd)
|
|
call :seterr & echo "postbuild copy error ERROR: target=%tloc%, plat=%plat%, conf=%conf%, file=%file%, filename=%filename%, extn=%extn%" & exit /b %errorlevel%
|
|
|
|
:is2nd:
|
|
rem set the target and final binary output directories
|
|
set tgt_dir="vs%vs_ver%\%loc%%plat%\%conf%\"
|
|
set bin_dir="..\%extn%\%plat%\%conf%\"
|
|
set hdr_dir="..\%extn%\%plat%\%conf%\"
|
|
|
|
rem output parametrers for the MPIR tests
|
|
if /i "%filename%" EQU "mpirxx" goto skip
|
|
echo (set ldir=%loc%) > output_params.bat
|
|
echo (set libr=%extn%) >> output_params.bat
|
|
echo (set plat=%plat%) >> output_params.bat
|
|
echo (set conf=%conf%) >> output_params.bat
|
|
:skip
|
|
|
|
echo copying outputs from %tgt_dir% to %bin_dir%
|
|
if not exist %bin_dir% md %bin_dir%
|
|
call :copyh %tgt_dir%
|
|
call :copyh %hdr_dir%
|
|
call :copyb %tgt_dir% %bin_dir% %conf% %extn% %filename%
|
|
exit /b 0
|
|
|
|
rem copy binaries to final bin_dirination directory
|
|
rem %1 = target (build output) directory
|
|
rem %2 = binary destination directory
|
|
rem %3 = configuration (debug/release)
|
|
rem %4 = library (lib/dll)
|
|
rem %5 = file name
|
|
:copyb
|
|
if "%4" EQU "dll" (
|
|
copy %1mpir.dll %2mpir.dll > nul 2>&1
|
|
copy %1mpir.exp %2mpir.exp > nul 2>&1
|
|
copy %1mpir.lib %2mpir.lib > nul 2>&1
|
|
if exist %1mpir.pdb (copy %1mpir.pdb %2mpir.pdb > nul 2>&1)
|
|
) else if "%4" EQU "lib" (
|
|
if "%5" EQU "mpir" (
|
|
if exist %1mpir.lib (
|
|
copy %1mpir.lib %2mpir.lib > nul 2>&1
|
|
if exist %1mpir.pdb (copy %1mpir.pdb %2mpir.pdb > nul 2>&1)
|
|
)
|
|
) else if "%5" EQU "mpirxx" (
|
|
if exist %1mpirxx.lib (
|
|
copy %1mpirxx.lib %2mpirxx.lib > nul 2>&1
|
|
if exist %1mpirxx.pdb (copy %1mpirxx.pdb %2mpirxx.pdb > nul 2>&1)
|
|
)
|
|
)
|
|
) else (
|
|
call :seterr & echo ERROR: illegal library type %4 & exit /b %errorlevel%
|
|
)
|
|
|
|
rem set configuration for the tests
|
|
call gen_test_config_props %plat% %conf% %vs_ver%
|
|
exit /b 0
|
|
|
|
rem copy headers to final destination directory
|
|
:copyh
|
|
copy ..\config.h %1config.h > nul 2>&1
|
|
copy ..\gmp-mparam.h %1gmp-mparam.h > nul 2>&1
|
|
copy ..\mpir.h %1mpir.h > nul 2>&1
|
|
copy ..\mpir.h %1gmp.h > nul 2>&1
|
|
copy ..\gmp-impl.h %1gmp-impl.h > nul 2>&1
|
|
copy ..\longlong.h %1longlong.h > nul 2>&1
|
|
copy ..\mpirxx.h %1mpirxx.h > nul 2>&1
|
|
copy ..\mpirxx.h %1gmpxx.h > nul 2>&1
|
|
exit /b 0
|
|
|
|
:seterr
|
|
exit /b 1
|