@@ -426,6 +426,7 @@ func (m *DepsManager) GetBuildEnv(phpVersion string) []string {
426426 var ldflags []string
427427 var cflags []string
428428 var libs []string
429+ var opensslCflags []string
429430 var env []string
430431
431432 for _ , dep := range deps {
@@ -456,25 +457,56 @@ func (m *DepsManager) GetBuildEnv(phpVersion string) []string {
456457
457458 // Add explicit static library paths for OpenSSL
458459 if dep .Name == "openssl" {
459- libssl := filepath .Join (prefix , "lib" , "libssl.a" )
460- libcrypto := filepath .Join (prefix , "lib" , "libcrypto.a" )
460+ libDir := filepath .Join (prefix , "lib" )
461+ libDir64 := filepath .Join (prefix , "lib64" )
462+ libssl := filepath .Join (libDir , "libssl.a" )
463+ libcrypto := filepath .Join (libDir , "libcrypto.a" )
464+ if ! fsutil .Exists (libssl ) || ! fsutil .Exists (libcrypto ) {
465+ libssl = filepath .Join (libDir64 , "libssl.a" )
466+ libcrypto = filepath .Join (libDir64 , "libcrypto.a" )
467+ }
461468 if fsutil .Exists (libssl ) && fsutil .Exists (libcrypto ) {
462469 libs = append (libs , libssl , libcrypto , "-ldl" , "-lpthread" )
463470 }
471+ includeDir := filepath .Join (prefix , "include" )
472+ if fsutil .Exists (includeDir ) {
473+ opensslCflags = append (opensslCflags , "-I" + includeDir )
474+ }
464475 }
465476
466477 // Add curl library with OpenSSL dependencies
467478 if dep .Name == "curl" {
468479 opensslPrefix := filepath .Join (depsDir , "openssl" )
469- libssl := filepath .Join (opensslPrefix , "lib" , "libssl.a" )
470- libcrypto := filepath .Join (opensslPrefix , "lib" , "libcrypto.a" )
471- libcurl := filepath .Join (prefix , "lib" , "libcurl.a" )
472- if fsutil .Exists (libcurl ) && fsutil .Exists (libssl ) && fsutil .Exists (libcrypto ) {
473- // Add curl libs with its OpenSSL dependencies
474- curlLibs := fmt .Sprintf ("-L%s/lib %s %s %s -ldl -lpthread -lz" ,
475- prefix , libcurl , libssl , libcrypto )
480+ libDir := filepath .Join (prefix , "lib" )
481+ libDir64 := filepath .Join (prefix , "lib64" )
482+ curlLibDir := libDir
483+ libcurl := filepath .Join (curlLibDir , "libcurl.a" )
484+ if ! fsutil .Exists (libcurl ) {
485+ curlLibDir = libDir64
486+ libcurl = filepath .Join (curlLibDir , "libcurl.a" )
487+ }
488+
489+ opensslLibDir := filepath .Join (opensslPrefix , "lib" )
490+ opensslLibDir64 := filepath .Join (opensslPrefix , "lib64" )
491+ libssl := filepath .Join (opensslLibDir , "libssl.a" )
492+ libcrypto := filepath .Join (opensslLibDir , "libcrypto.a" )
493+ if ! fsutil .Exists (libssl ) || ! fsutil .Exists (libcrypto ) {
494+ libssl = filepath .Join (opensslLibDir64 , "libssl.a" )
495+ libcrypto = filepath .Join (opensslLibDir64 , "libcrypto.a" )
496+ }
497+
498+ if fsutil .Exists (libcurl ) {
499+ // Override pkg-config to control link order for static libcurl.
500+ curlCflags := fmt .Sprintf ("-I%s/include -DCURL_STATICLIB" , prefix )
501+ curlLibs := fmt .Sprintf ("-L%s -lcurl" , curlLibDir )
502+ env = append (env , "CURL_CFLAGS=" + curlCflags )
476503 env = append (env , "CURL_LIBS=" + curlLibs )
477504 }
505+
506+ // Ensure OpenSSL libs are available in LIBS (appended at end by configure).
507+ if fsutil .Exists (libssl ) && fsutil .Exists (libcrypto ) {
508+ libs = append (libs , libssl , libcrypto , "-ldl" , "-lpthread" , "-lz" )
509+ }
478510 }
479511 }
480512
@@ -517,6 +549,15 @@ func (m *DepsManager) GetBuildEnv(phpVersion string) []string {
517549 env = append (env , "LIBS=" + libsStr )
518550 }
519551
552+ if len (opensslCflags ) > 0 {
553+ existing := os .Getenv ("OPENSSL_CFLAGS" )
554+ newFlags := strings .Join (opensslCflags , " " )
555+ if existing != "" {
556+ newFlags = newFlags + " " + existing
557+ }
558+ env = append (env , "OPENSSL_CFLAGS=" + newFlags )
559+ }
560+
520561 return env
521562}
522563
0 commit comments