11@ echo off
22
33@ REM config ======================================================================================
4- call php -fb-config.bat
4+ call %~dp0 php -fb-config.bat
55
66goto :MAIN
77
@@ -15,69 +15,114 @@ goto :MAIN
1515 echo ---------------------------------------------------------------------
1616exit /B
1717
18+ @ REM usage =======================================================================================
1819:usage
19- call :log " Usage: %~nx0 php_vers cpp_vers"
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+
2051exit /B
2152
2253:MAIN
23- set pfb_php_vers = %1
54+
55+ set pfb_php_tag = %1
2456set pfb_cpp_vers = %2
2557
26- if [ %pfb_php_vers% ] == [] (
58+ if " %pfb_php_tag% " == " " (
2759 call :usage
28- echo pfb_php_vers varible not set
60+ echo pfb_php_tag varible not set
2961 exit 1
3062)
3163
32- if [ %pfb_cpp_vers% ] == [] (
64+ if " %pfb_cpp_vers% " == " " (
3365 call :usage
3466 echo pfb_cpp_vers varible not set
3567 exit 1
3668)
3769
70+ @ REM Convert php-8.4.13 -> 8.4
71+ for /f " tokens=2,3 delims=-." %%a in (" %pfb_php_tag% " ) do set pfb_php_vers = %%a .%%b
72+
73+ if " %pfb_php_vers% " == " " (
74+ echo BUG: pfb_php_vers should be set at this point
75+ exit 1
76+ )
77+
3878set pfb_build_root = php%pfb_php_vers% \%pfb_cpp_vers% \
3979
40- (for %%a in (x86 x64) do (
41- @ REM check out or pull PHP version of interest
42- if exist %pfb_build_root% \%%a \php-src\.git\ (
43- call :log " Checking out PHP-%pfb_php_vers% %%a "
44- git -C %pfb_build_root% \%%a \php-src pull || goto :error
80+ (for %%a in (x64 x86) do (
81+ set pfb_arch = %%a
82+
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 %~dp0 php-fb-sdk-init.bat || goto :error
86+ )
87+
88+ if " %%a " == " x86" (
89+ set php_exe_arch = %pfb_build_root% %%a \php-src\
4590 ) else (
46- call :log " Cloning PHP-%pfb_php_vers% %%a "
47- call phpsdk-%pfb_cpp_vers% -%%a .bat -t php-fb-sdk-init.bat || goto :error
91+ set php_exe_arch = %pfb_build_root% %%a \php-src\x64\
4892 )
4993
50- if %%a EQU x86 ( set pfb_x86 = 1 ) else ( set pfb_x86 = 0 )
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+ )
51102
52- (for %%n in (0 1) do (
53- set pfb_nts = %%n
54- call phpsdk-%pfb_cpp_vers% -%%a .bat -t php-fb-sdk-build.bat || goto :error
55- ))
56- ))
103+ if " !php_exe! " == " " (
104+ echo BUG: php_exe should be set at this point
105+ exit 1
106+ )
57107
58- @ REM check if ibase_connect() function exists in newly compiled extension
59- set check_code = " if(!function_exists('ibase_connect'))exit(1);"
108+ call phpsdk-%pfb_cpp_vers% -%%a .bat -t %~dp0 php-fb-sdk-build.bat || goto :error
60109
61- set TPATH = %PATH%
62- set PATH = %FB64_DIR% ;%TPATH%
63- " %pfb_build_root% x64\php-src\x64\Release_TS\php.exe" -dextension=.\php_interbase.dll -r %check_code% || goto :error
64- " %pfb_build_root% x64\php-src\x64\Release\php.exe" -dextension=.\php_interbase.dll -r %check_code% || goto :error
65- set PATH = %FB32_DIR% ;%TPATH%
66- " %pfb_build_root% x86\php-src\Release_TS\php.exe" -dextension=.\php_interbase.dll -r %check_code% || goto :error
67- " %pfb_build_root% x86\php-src\Release\php.exe" -dextension=.\php_interbase.dll -r %check_code% || goto :error
68- set PATH = %TPATH%
110+ call :validate_build !php_exe! !pfb_arch! !pfb_ts! || goto :error
111+ ))
112+ ))
69113
70- call :log " PHP %pfb_php_vers% build OK"
114+ echo .
115+ call :log " %pfb_php_tag% build OK"
71116
72117@ REM copy compiled extension to target directory
73- 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% -x86_64 .dll> nul
74- 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-x86_64 .dll> nul
75- 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> nul
76- 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> nul
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
77122
78123exit /B 0
79124
80125:error
81- call :log " PHP %pfb_php_vers % build FAILED"
126+ call :log " %pfb_php_tag % build FAILED"
82127
83128exit /B 1
0 commit comments