Skip to content

Commit 103b4c6

Browse files
committed
Refactor out inner loops in php-fb-build.bat
1 parent 01e2ff5 commit 103b4c6

File tree

3 files changed

+105
-109
lines changed

3 files changed

+105
-109
lines changed

build_scripts/php-fb-build-all.bat

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
@echo off
22

3-
call %~dp0php-fb-build.bat php-7.3.33 vc15 || exit %ERRORLEVEL%
4-
call %~dp0php-fb-build.bat php-7.4.13 vc15 || exit %ERRORLEVEL%
5-
call %~dp0php-fb-build.bat php-8.0.30 vs16 || exit %ERRORLEVEL%
6-
call %~dp0php-fb-build.bat php-8.1.33 vs16 || exit %ERRORLEVEL%
7-
call %~dp0php-fb-build.bat php-8.2.29 vs16 || exit %ERRORLEVEL%
8-
call %~dp0php-fb-build.bat php-8.3.26 vs16 || exit %ERRORLEVEL%
9-
call %~dp0php-fb-build.bat php-8.4.13 vs17 || exit %ERRORLEVEL%
10-
call %~dp0php-fb-build.bat php-8.5.0RC2 vs17 || exit %ERRORLEVEL%
3+
set "phps="php-7.4.13 vc15" "php-8.0.30 vs16" "php-8.1.33 vs16" "php-8.2.29 vs16" "php-8.3.26 vs16" "php-8.4.13 vs17" "php-8.5.0RC2 vs17""
4+
5+
setlocal enabledelayedexpansion
6+
for %%p in (%phps%) do (
7+
for /f "tokens=1,2" %%a in (%%p) do (
8+
set php_vers=%%a
9+
set cpp_vers=%%b
10+
call %~dp0php-fb-build.bat !php_vers! !cpp_vers! 1 x64 || exit %ERRORLEVEL%
11+
call %~dp0php-fb-build.bat !php_vers! !cpp_vers! 0 x64 || exit %ERRORLEVEL%
12+
call %~dp0php-fb-build.bat !php_vers! !cpp_vers! 1 x86 || exit %ERRORLEVEL%
13+
call %~dp0php-fb-build.bat !php_vers! !cpp_vers! 0 x86 || exit %ERRORLEVEL%
14+
)
15+
)
16+
endlocal

build_scripts/php-fb-build.bat

Lines changed: 74 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,128 +1,112 @@
11
@echo off
2+
@REM php-fb-build.bat <pfb_php_tag> <pfb_cpp_vers> <pfb_ts> <pfb_arch>
3+
@REM php-fb-build.bat php-7.4.13 vc15 [0|1] [x64|x86]
4+
@REM
25

36
@REM config ======================================================================================
47
call %~dp0php-fb-config.bat
58

6-
goto :MAIN
7-
8-
@REM log =========================================================================================
9-
@REM log <msg>
10-
@REM example> call :log "<msg>"
11-
:log
12-
set msg=%~1
13-
echo ---------------------------------------------------------------------
14-
echo %msg%
15-
echo ---------------------------------------------------------------------
16-
exit /B
17-
18-
@REM usage =======================================================================================
19-
:usage
20-
call :log "Usage: %~nx0 php_tag cpp_vers"
21-
exit /B
22-
23-
@REM validate_build ===============================================================================
24-
@REM validate_build <path_to_php_exe>:string <arch>:string <ts>:int
25-
:validate_build
26-
setlocal disabledelayedexpansion
27-
set vb_php=%~1
28-
set vb_arch=%~2
29-
set vb_ts=%~3
30-
31-
set vb_check_code=^
32-
if(!extension_loaded('interbase')){ print \"Extension not loaded\n\"; exit(1); }^
33-
if('php-'.PHP_VERSION != '%pfb_php_tag%'){ printf(\"Version mismatch: expected '%pfb_php_tag%', but got '%%s' \n\", 'php-'.PHP_VERSION); exit(1); }^
34-
if((int)ZEND_THREAD_SAFE != %vb_ts%){ printf(\"Thread Safety mismatch: expected %vb_ts%, but got %%d \n\", ZEND_THREAD_SAFE); exit(1); }^
35-
if((PHP_INT_SIZE == 8 ? 'x64' : 'x86') != '%vb_arch%'){ printf(\"Architecture mismatch: expected '%vb_arch%', but got '%%s' \n\", (PHP_INT_SIZE == 8 ? 'x64' : 'x86')); exit(1); }
36-
37-
if "%vb_arch%" == "x86" (
38-
set vb_libs=%PFB_FB32_DIR%
39-
) else (
40-
set vb_libs=%PFB_FB64_DIR%
41-
)
42-
43-
call :log "Validating %pfb_php_tag% %vb_arch% Thread Safety %vb_ts%"
44-
45-
set vb_cmd=cmd /c set "PATH=%vb_libs%;%PATH%" %php_exe% -dextension=.\php_interbase.dll -r "%vb_check_code%"
46-
%vb_cmd% || exit /B 1
47-
48-
echo Validated OK
49-
echo ---------------------------------------------------------------------
50-
51-
exit /B
52-
53-
:MAIN
54-
559
set pfb_php_tag=%1
5610
set pfb_cpp_vers=%2
11+
set pfb_ts=%3
12+
set pfb_arch=%4
5713

5814
if "%pfb_php_tag%" == "" (
15+
call :log "pfb_php_tag varible not set"
5916
call :usage
60-
echo pfb_php_tag varible not set
6117
exit 1
6218
)
6319

6420
if "%pfb_cpp_vers%" == "" (
21+
call :log "pfb_cpp_vers varible not set"
6522
call :usage
66-
echo pfb_cpp_vers varible not set
6723
exit 1
6824
)
6925

26+
if "%pfb_ts%" gtr "0" (
27+
set pfb_ts=1
28+
) else (
29+
set pfb_ts=0
30+
)
31+
32+
if not "%pfb_arch%" == "x86" (
33+
set pfb_arch=x64
34+
)
35+
7036
@REM Convert php-8.4.13 -> 8.4
7137
for /f "tokens=2,3 delims=-." %%a in ("%pfb_php_tag%") do set pfb_php_vers=%%a.%%b
7238

7339
if "%pfb_php_vers%" == "" (
74-
echo BUG: pfb_php_vers should be set at this point
40+
call :log "BUG: pfb_php_vers should be set at this point"
7541
exit 1
7642
)
7743

78-
set pfb_build_root=php%pfb_php_vers%\%pfb_cpp_vers%\
44+
@REM Initialize
45+
set php_root=php%pfb_php_vers%\%pfb_cpp_vers%\%pfb_arch%\php-src\
46+
set php_interbase=php_interbase-%PFB_VERS%-%pfb_php_vers%-%pfb_cpp_vers%
7947

80-
(for %%a in (x64 x86) do (
81-
set pfb_arch=%%a
48+
if not exist "%php_root%.git\" (
49+
call :log "Cloning %pfb_php_tag% %pfb_arch%"
50+
call phpsdk-%pfb_cpp_vers%-%pfb_arch%.bat -t %~dp0php-fb-sdk-init.bat || goto :error
51+
)
8252

83-
if not exist "%pfb_build_root%\%%a\php-src\.git\" (
84-
call :log "Cloning %pfb_php_tag% %%a"
85-
call phpsdk-%pfb_cpp_vers%-%%a.bat -t %~dp0php-fb-sdk-init.bat || goto :error
86-
)
53+
if "%pfb_arch%" == "x86" (
54+
set build_root=%php_root%
55+
set php_interbase=%php_interbase%-x86
56+
) else (
57+
set build_root=%php_root%x64\
58+
)
8759

88-
if "%%a" == "x86" (
89-
set php_exe_arch=%pfb_build_root%%%a\php-src\
90-
) else (
91-
set php_exe_arch=%pfb_build_root%%%a\php-src\x64\
92-
)
60+
if "%pfb_ts%" gtr "0" (
61+
set build_root=%build_root%Release_TS\
62+
) else (
63+
set build_root=%build_root%Release\
64+
set php_interbase=%php_interbase%-nts
65+
)
9366

94-
setlocal enabledelayedexpansion
95-
(for %%t in (0 1) do (
96-
set pfb_ts=%%t
97-
if "%%t" equ "1" (
98-
set php_exe="!php_exe_arch!Release_TS\php.exe"
99-
) else (
100-
set php_exe="!php_exe_arch!Release\php.exe"
101-
)
67+
@REM Build
68+
call :log "Building %php_interbase%.dll..."
69+
call phpsdk-%pfb_cpp_vers%-%pfb_arch%.bat -t %~dp0php-fb-sdk-build.bat || goto :error
10270

103-
if "!php_exe!" == "" (
104-
echo BUG: php_exe should be set at this point
105-
exit 1
106-
)
71+
@REM Validate
72+
set vb_check_code=^
73+
if(!extension_loaded('interbase')){ print \"Extension not loaded\n\"; exit(1); }^
74+
if('php-'.PHP_VERSION != '%pfb_php_tag%'){ printf(\"Version mismatch: expected '%pfb_php_tag%', but got '%%s' \n\", 'php-'.PHP_VERSION); exit(1); }^
75+
if((int)ZEND_THREAD_SAFE != %pfb_ts%){ printf(\"Thread Safety mismatch: expected %pfb_ts%, but got %%d \n\", ZEND_THREAD_SAFE); exit(1); }^
76+
if((PHP_INT_SIZE == 8 ? 'x64' : 'x86') != '%pfb_arch%'){ printf(\"Architecture mismatch: expected '%pfb_arch%', but got '%%s' \n\", (PHP_INT_SIZE == 8 ? 'x64' : 'x86')); exit(1); }
10777

108-
call phpsdk-%pfb_cpp_vers%-%%a.bat -t %~dp0php-fb-sdk-build.bat || goto :error
78+
if "%pfb_arch%" == "x86" (
79+
set vb_libs=%PFB_FB32_DIR%
80+
) else (
81+
set vb_libs=%PFB_FB64_DIR%
82+
)
10983

110-
call :validate_build !php_exe! !pfb_arch! !pfb_ts! || goto :error
111-
))
112-
))
84+
call :log "Validating %php_interbase%.dll..."
85+
set vb_cmd=cmd /c set "PATH=%vb_libs%;%PATH%" %build_root%php_exe -dextension=.\php_interbase.dll -r "%vb_check_code%"
86+
%vb_cmd% || goto :error
11387

114-
echo.
115-
call :log "%pfb_php_tag% build OK"
88+
call :log "Copying %php_interbase%.dll..."
89+
copy "%build_root%php_interbase.dll" "%PFB_OUTPUT_DIR%%php_interbase%.dll" || goto :error
11690

117-
@REM copy compiled extension to target directory
118-
copy %pfb_build_root%x64\php-src\x64\Release_TS\php_interbase.dll %PFB_OUTPUT_DIR%php_interbase-%PFB_VERS%-%pfb_php_vers%-%pfb_cpp_vers%-x64.dll
119-
copy %pfb_build_root%x64\php-src\x64\Release\php_interbase.dll %PFB_OUTPUT_DIR%php_interbase-%PFB_VERS%-%pfb_php_vers%-%pfb_cpp_vers%-nts-x64.dll
120-
copy %pfb_build_root%x86\php-src\Release_TS\php_interbase.dll %PFB_OUTPUT_DIR%php_interbase-%PFB_VERS%-%pfb_php_vers%-%pfb_cpp_vers%.dll
121-
copy %pfb_build_root%x86\php-src\Release\php_interbase.dll %PFB_OUTPUT_DIR%php_interbase-%PFB_VERS%-%pfb_php_vers%-%pfb_cpp_vers%-nts.dll
91+
call :log "Build OK" "%pfb_php_tag% %pfb_cpp_vers% %pfb_arch% Thread Safety %pfb_ts%" "%php_interbase%.dll"
12292

123-
exit /B 0
93+
exit /B
12494

125-
:error
126-
call :log "%pfb_php_tag% build FAILED"
95+
@REM log =========================================================================================
96+
@REM log <msg>
97+
@REM example> call :log "<msg1>"
98+
:log
99+
echo ---------------------------------------------------------------------
100+
for %%a in (%*) do ( echo %%~a )
101+
echo ---------------------------------------------------------------------
102+
exit /B
127103

104+
@REM usage =======================================================================================
105+
:usage
106+
call :log "Usage: %~nx0 php_tag cpp_vers [ts=0|1] [arch=x86|x64]" " Example: %~nx0 php-8.4.13 vs17 1 x86"
107+
exit /B
108+
109+
@REM error =======================================================================================
110+
:error
111+
call :log "Build FAILED" "%pfb_php_tag% %pfb_cpp_vers% %pfb_arch% Thread Safety %pfb_ts%" "%php_interbase%.dll"
128112
exit /B 1

build_scripts/php-fb-config.bat

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1-
@REM
2-
@REM git command must be in PATH
3-
@REM
4-
1+
@echo off
52
@REM php-firebird source directory
6-
set PFB_SOURCE_DIR=D:\php-firebird\
7-
8-
for /f %%i in ('git -C %PFB_SOURCE_DIR%\php-firebird\ rev-parse --short HEAD') do set GIT_HASH=%%i
9-
10-
@REM sets php-firebird version part in extension file, for example, php_interbase-<<3.0.1-ba8e63b>>-7.3-vc15.dll
11-
set PFB_VERS=3.0.1-%GIT_HASH%
3+
@REM Should point one level up. For example
4+
@REM PFB_SOURCE_DIR=D:\php-firebird\ then your source should reside in D:\php-firebird\php-firebird\
5+
set PFB_SOURCE_DIR=%~dp0..\..\
126

137
@REM Directory where all compiled files will be copied
14-
set PFB_OUTPUT_DIR=D:\php-firebird\releases\
8+
set PFB_OUTPUT_DIR=%PFB_SOURCE_DIR%releases\
159

1610
@REM FB 32-bit and 64-bit libraries
1711
set PFB_FB32_DIR=C:\Program Files\Firebird\Firebird_5_0-x86
1812
set PFB_FB64_DIR=C:\Program Files\Firebird\Firebird_5_0
13+
14+
@REM Attach current git commit hash. git command must be in PATH
15+
set USE_GIT_HASH=0
16+
17+
for /f "tokens=3" %%i in ('findstr /b /c:"#define PHP_INTERBASE_VER_MAJOR" %~dp0..\php_interbase.h') do set VER_MAJOR=%%i
18+
for /f "tokens=3" %%i in ('findstr /b /c:"#define PHP_INTERBASE_VER_MINOR" %~dp0..\php_interbase.h') do set VER_MINOR=%%i
19+
for /f "tokens=3" %%i in ('findstr /b /c:"#define PHP_INTERBASE_VER_REV" %~dp0..\php_interbase.h') do set VER_REV=%%i
20+
set PFB_VERS=%VER_MAJOR%.%VER_MINOR%.%VER_REV%-beta
21+
22+
if "%USE_GIT_HASH%" gtr "0" (
23+
for /f %%i in ('git -C %~dp0..\ rev-parse --short HEAD') do set PFB_VERS=%PFB_VERS%-%%i
24+
)

0 commit comments

Comments
 (0)