|
1 | 1 | @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 |
2 | 5 |
|
3 | 6 | @REM config ====================================================================================== |
4 | 7 | call %~dp0php-fb-config.bat |
5 | 8 |
|
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 | | - |
55 | 9 | set pfb_php_tag=%1 |
56 | 10 | set pfb_cpp_vers=%2 |
| 11 | +set pfb_ts=%3 |
| 12 | +set pfb_arch=%4 |
57 | 13 |
|
58 | 14 | if "%pfb_php_tag%" == "" ( |
| 15 | + call :log "pfb_php_tag varible not set" |
59 | 16 | call :usage |
60 | | - echo pfb_php_tag varible not set |
61 | 17 | exit 1 |
62 | 18 | ) |
63 | 19 |
|
64 | 20 | if "%pfb_cpp_vers%" == "" ( |
| 21 | + call :log "pfb_cpp_vers varible not set" |
65 | 22 | call :usage |
66 | | - echo pfb_cpp_vers varible not set |
67 | 23 | exit 1 |
68 | 24 | ) |
69 | 25 |
|
| 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 | + |
70 | 36 | @REM Convert php-8.4.13 -> 8.4 |
71 | 37 | for /f "tokens=2,3 delims=-." %%a in ("%pfb_php_tag%") do set pfb_php_vers=%%a.%%b |
72 | 38 |
|
73 | 39 | 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" |
75 | 41 | exit 1 |
76 | 42 | ) |
77 | 43 |
|
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% |
79 | 47 |
|
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 | +) |
82 | 52 |
|
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 | +) |
87 | 59 |
|
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 | +) |
93 | 66 |
|
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 |
102 | 70 |
|
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); } |
107 | 77 |
|
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 | +) |
109 | 83 |
|
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 |
113 | 87 |
|
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 |
116 | 90 |
|
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" |
122 | 92 |
|
123 | | -exit /B 0 |
| 93 | +exit /B |
124 | 94 |
|
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 |
127 | 103 |
|
| 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" |
128 | 112 | exit /B 1 |
0 commit comments