@@ -122,6 +122,8 @@ public function buildFrankenphpForUnix(TargetPackage $package, PackageInstaller
122122 $ staticFlags = '' ;
123123 }
124124
125+ [$ extra_build_flags , $ extra_ldflags , $ extra_tags ] = $ this ->getExtraGoFlags ();
126+
125127 $ config = new SPCConfigUtil ()->configForResolvedBuild ([$ package ->getName ()], $ installer );
126128 $ cflags = "{$ package ->getLibExtraCFlags ()} {$ config ['cflags ' ]} " . getenv ('SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS ' ) . " -DFRANKENPHP_VERSION= {$ frankenphp_version }" ;
127129 $ libs = $ config ['libs ' ];
@@ -143,8 +145,9 @@ public function buildFrankenphpForUnix(TargetPackage $package, PackageInstaller
143145 '-X \'github.com/caddyserver/caddy/v2/modules/caddyhttp.ServerHeader=FrankenPHP Caddy \' ' .
144146 '-X \'github.com/caddyserver/caddy/v2.CustomBinaryName=frankenphp \' ' .
145147 '-X \'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ' .
146- "v {$ frankenphp_version } PHP {$ libphp_version } Caddy' \\\" " .
147- "-tags= {$ muslTags }nobadger,nomysql,nopgx,deprecated_topic,deprecated_claim {$ no_brotli }{$ no_watcher }" ,
148+ "v {$ frankenphp_version } PHP {$ libphp_version } Caddy' {$ extra_ldflags }\\\" " .
149+ "-tags= {$ muslTags }nobadger,nomysql,nopgx,deprecated_topic,deprecated_claim {$ no_brotli }{$ no_watcher }{$ extra_tags } " .
150+ $ extra_build_flags ,
148151 'LD_LIBRARY_PATH ' => BUILD_LIB_PATH ,
149152 ];
150153 InteractiveTerm ::setMessage ('Building frankenphp: ' . ConsoleColor ::yellow ('building with xcaddy ' ));
@@ -307,12 +310,15 @@ public function buildFrankenphpForWindows(TargetPackage $package, PackageInstall
307310 if (!$ installer ->isPackageResolved ('brotli ' )) {
308311 $ go_build_tags .= ',nobrotli ' ;
309312 }
313+ [$ extra_build_flags , $ extra_ldflags , $ extra_tags ] = $ this ->getExtraGoFlags ();
314+ $ go_build_tags .= $ extra_tags ;
310315
311316 $ go_ldflags =
312317 '-extldflags=-fuse-ld=lld ' .
313318 "-X 'github.com/caddyserver/caddy/v2/modules/caddyhttp.ServerHeader=FrankenPHP Caddy' " .
314319 "-X 'github.com/caddyserver/caddy/v2.CustomBinaryName=frankenphp' " .
315- "-X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v {$ frankenphp_version } PHP {$ libphp_version } Caddy' " ;
320+ "-X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP v {$ frankenphp_version } PHP {$ libphp_version } Caddy' " .
321+ $ extra_ldflags ;
316322
317323 // CGO on Windows tokenizes CC/CXX like a shell command line, splitting on spaces.
318324 // Paths like "C:\Program Files\..." break because only "C:\Program" is used.
@@ -336,7 +342,7 @@ public function buildFrankenphpForWindows(TargetPackage $package, PackageInstall
336342
337343 cmd ()->cd ("{$ source_dir }\\caddy \\frankenphp " )
338344 ->setEnv ($ env )
339- ->exec ("go build -v -tags \"{$ go_build_tags }\" -ldflags \"{$ go_ldflags }\" -o frankenphp.exe . " );
345+ ->exec ("go build -v -tags \"{$ go_build_tags }\" -ldflags \"{$ go_ldflags }\" { $ extra_build_flags } -o frankenphp.exe . " );
340346
341347 $ builder ->deployBinary ("{$ source_dir }\\caddy \\frankenphp \\frankenphp.exe " , BUILD_BIN_PATH . '\frankenphp.exe ' );
342348 $ package ->setOutput ('Binary path for FrankenPHP SAPI ' , BUILD_BIN_PATH . '\frankenphp.exe ' );
@@ -485,4 +491,21 @@ protected function getFrankenPHPVersion(TargetPackage $package): string
485491
486492 throw new SPCInternalException ('Could not find FrankenPHP version in caddy/go.mod ' );
487493 }
494+
495+ /**
496+ * Extra Go flags from env.ini or the environment. Ldflags and tags are merged into
497+ * ours because Go keeps only the last -ldflags and -tags.
498+ *
499+ * @return array{string, string, string} build flags, ldflags, tags (with a leading comma)
500+ */
501+ private function getExtraGoFlags (): array
502+ {
503+ $ tags = trim ((string ) getenv ('SPC_CMD_VAR_FRANKENPHP_GO_TAGS ' ), " \t, " );
504+
505+ return [
506+ trim ((string ) getenv ('SPC_CMD_VAR_FRANKENPHP_GO_BUILD_FLAGS ' )),
507+ trim ((string ) getenv ('SPC_CMD_VAR_FRANKENPHP_GO_LDFLAGS ' )),
508+ $ tags === '' ? '' : ", {$ tags }" ,
509+ ];
510+ }
488511}
0 commit comments