|
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 ====================================================================================== |
| 7 | +call %~dp0php-fb-config.dist.bat |
4 | 8 | call %~dp0php-fb-config.bat |
5 | 9 |
|
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 | 10 | set pfb_php_tag=%1 |
56 | 11 | set pfb_cpp_vers=%2 |
| 12 | +set pfb_ts=%3 |
| 13 | +set pfb_arch=%4 |
57 | 14 |
|
58 | 15 | if "%pfb_php_tag%" == "" ( |
| 16 | + call :log "pfb_php_tag varible not set" |
59 | 17 | call :usage |
60 | | - echo pfb_php_tag varible not set |
61 | 18 | exit 1 |
62 | 19 | ) |
63 | 20 |
|
64 | 21 | if "%pfb_cpp_vers%" == "" ( |
| 22 | + call :log "pfb_cpp_vers varible not set" |
65 | 23 | call :usage |
66 | | - echo pfb_cpp_vers varible not set |
67 | 24 | exit 1 |
68 | 25 | ) |
69 | 26 |
|
| 27 | +if "%pfb_ts%" == "1" ( |
| 28 | + set pfb_ts=1 |
| 29 | +) else ( |
| 30 | + set pfb_ts=0 |
| 31 | +) |
| 32 | + |
| 33 | +if not "%pfb_arch%" == "x86" ( |
| 34 | + set pfb_arch=x64 |
| 35 | +) |
| 36 | + |
70 | 37 | @REM Convert php-8.4.13 -> 8.4 |
71 | 38 | for /f "tokens=2,3 delims=-." %%a in ("%pfb_php_tag%") do set pfb_php_vers=%%a.%%b |
72 | 39 |
|
73 | 40 | if "%pfb_php_vers%" == "" ( |
74 | | - echo BUG: pfb_php_vers should be set at this point |
| 41 | + call :log "BUG: pfb_php_vers should be set at this point" |
75 | 42 | exit 1 |
76 | 43 | ) |
77 | 44 |
|
78 | | -set pfb_build_root=php%pfb_php_vers%\%pfb_cpp_vers%\ |
| 45 | +@REM Grab version |
| 46 | +for /f "tokens=3" %%i in ('findstr /b /c:"#define PHP_INTERBASE_VER_MAJOR" %~dp0..\php_interbase.h') do set VER_MAJOR=%%i |
| 47 | +for /f "tokens=3" %%i in ('findstr /b /c:"#define PHP_INTERBASE_VER_MINOR" %~dp0..\php_interbase.h') do set VER_MINOR=%%i |
| 48 | +for /f "tokens=3" %%i in ('findstr /b /c:"#define PHP_INTERBASE_VER_REV" %~dp0..\php_interbase.h') do set VER_REV=%%i |
| 49 | +for /f "tokens=3" %%i in ('findstr /b /c:"#define PHP_INTERBASE_VER_PRE" %~dp0..\php_interbase.h') do set VER_PRE=%%~i |
| 50 | +set PFB_VERS=%VER_MAJOR%.%VER_MINOR%.%VER_REV%%VER_PRE% |
| 51 | + |
| 52 | +if %PFB_ATTACH_GIT_HASH_TO_VERS% equ 1 ( |
| 53 | + for /f %%i in ('git -C %~dp0..\ rev-parse --short HEAD') do set PFB_VERS=%PFB_VERS%-%%i |
| 54 | +) |
| 55 | + |
| 56 | +@REM Initialize |
| 57 | +set php_root=php%pfb_php_vers%\%pfb_cpp_vers%\%pfb_arch%\php-src\ |
| 58 | +set php_interbase=php_interbase-%PFB_VERS%-%pfb_php_vers%-%pfb_cpp_vers% |
79 | 59 |
|
80 | | -(for %%a in (x64 x86) do ( |
81 | | - set pfb_arch=%%a |
| 60 | +if not exist "%php_root%.git\" ( |
| 61 | + call :log "Cloning %pfb_php_tag% %pfb_arch%" |
| 62 | + call phpsdk-%pfb_cpp_vers%-%pfb_arch%.bat -t %~dp0php-fb-sdk-init.bat || goto :error |
| 63 | +) |
82 | 64 |
|
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 | | - ) |
| 65 | +if "%pfb_arch%" == "x86" ( |
| 66 | + set build_root=%php_root% |
| 67 | + set php_interbase=%php_interbase%-x86 |
| 68 | +) else ( |
| 69 | + set build_root=%php_root%x64\ |
| 70 | +) |
87 | 71 |
|
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 | | - ) |
| 72 | +if %pfb_ts% equ 1 ( |
| 73 | + set build_root=%build_root%Release_TS\ |
| 74 | +) else ( |
| 75 | + set build_root=%build_root%Release\ |
| 76 | + set php_interbase=%php_interbase%-nts |
| 77 | +) |
| 78 | + |
| 79 | +@REM Build |
| 80 | +call :log "Building %php_interbase%.dll..." |
| 81 | +call phpsdk-%pfb_cpp_vers%-%pfb_arch%.bat -t %~dp0php-fb-sdk-build.bat || goto :error |
| 82 | + |
| 83 | +@REM Validate |
| 84 | +set vb_check_code=^ |
| 85 | +if(!extension_loaded('interbase')){ print \"Extension not loaded\n\"; exit(1); }^ |
| 86 | +if('php-'.PHP_VERSION != '%pfb_php_tag%'){ printf(\"Version mismatch: expected '%pfb_php_tag%', but got '%%s' \n\", 'php-'.PHP_VERSION); exit(1); }^ |
| 87 | +if((int)ZEND_THREAD_SAFE != %pfb_ts%){ printf(\"Thread Safety mismatch: expected %pfb_ts%, but got %%d \n\", ZEND_THREAD_SAFE); exit(1); }^ |
| 88 | +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); } |
93 | 89 |
|
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 | | - ) |
| 90 | +if "%pfb_arch%" == "x86" ( |
| 91 | + set vb_libs=%PFB_FB32_DIR% |
| 92 | +) else ( |
| 93 | + set vb_libs=%PFB_FB64_DIR% |
| 94 | +) |
102 | 95 |
|
103 | | - if "!php_exe!" == "" ( |
104 | | - echo BUG: php_exe should be set at this point |
105 | | - exit 1 |
106 | | - ) |
| 96 | +call :log "Validating %php_interbase%.dll..." |
| 97 | +set vb_cmd=cmd /c set "PATH=%vb_libs%;%PATH%" %build_root%php_exe -dextension=.\php_interbase.dll -r "%vb_check_code%" |
| 98 | +%vb_cmd% || goto :error |
107 | 99 |
|
108 | | - call phpsdk-%pfb_cpp_vers%-%%a.bat -t %~dp0php-fb-sdk-build.bat || goto :error |
| 100 | +call :log "Copying %php_interbase%.dll..." |
| 101 | +copy "%build_root%php_interbase.dll" "%PFB_OUTPUT_DIR%%php_interbase%.dll" || goto :error |
109 | 102 |
|
110 | | - call :validate_build !php_exe! !pfb_arch! !pfb_ts! || goto :error |
111 | | - )) |
112 | | -)) |
| 103 | +call :log "Build OK" "%pfb_php_tag% %pfb_cpp_vers% %pfb_arch% Thread Safety %pfb_ts%" "%php_interbase%.dll" |
113 | 104 |
|
114 | | -echo. |
115 | | -call :log "%pfb_php_tag% build OK" |
| 105 | +exit /B |
116 | 106 |
|
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 |
| 107 | +@REM log ========================================================================================= |
| 108 | +@REM log <msg> |
| 109 | +@REM example> call :log "<msg1>" |
| 110 | +:log |
| 111 | + echo --------------------------------------------------------------------- |
| 112 | + for %%a in (%*) do ( echo %%~a ) |
| 113 | + echo --------------------------------------------------------------------- |
| 114 | +exit /B |
122 | 115 |
|
123 | | -exit /B 0 |
| 116 | +@REM usage ======================================================================================= |
| 117 | +:usage |
| 118 | + call :log "Usage: %~nx0 php_tag cpp_vers [ts=0|1] [arch=x86|x64]" " Example: %~nx0 php-8.4.13 vs17 1 x86" |
| 119 | +exit /B |
124 | 120 |
|
| 121 | +@REM error ======================================================================================= |
125 | 122 | :error |
126 | | - call :log "%pfb_php_tag% build FAILED" |
127 | | - |
| 123 | + call :log "Build FAILED" "%pfb_php_tag% %pfb_cpp_vers% %pfb_arch% Thread Safety %pfb_ts%" "%php_interbase%.dll" |
128 | 124 | exit /B 1 |
0 commit comments