@@ -436,6 +436,10 @@ function ResolveDependency(const ADep: TDependency): string;
436436// Project classification helpers
437437// ---------------------------------------------------------------------------
438438
439+ // ---------------------------------------------------------------------------
440+ // Determine whether an .lpi project is GUI
441+ // ---------------------------------------------------------------------------
442+
439443// A project is considered GUI if its .lpi lists LCL as a required package.
440444// GUI projects cannot run headless in CI, so we skip them entirely.
441445function IsGUIProject (const ALpiPath: string): Boolean;
@@ -455,6 +459,10 @@ function IsGUIProject(const ALpiPath: string): Boolean;
455459 end ;
456460end ;
457461
462+ // ---------------------------------------------------------------------------
463+ // Determine whether an .lpi project is a test runner
464+ // ---------------------------------------------------------------------------
465+
458466// A console project is a test runner if its .lpr uses consoletestrunner.
459467function IsTestProject (const ALpiPath: string): Boolean;
460468var
@@ -528,6 +536,19 @@ procedure Main;
528536 // Install and register dependencies (safe when array is empty)
529537 if Length(Dependencies) > 0 then
530538 begin
539+ // FPC 3.2.2 hardcodes OpenSSL 1.1 DLL names on Windows, but
540+ // modern CI runners ship OpenSSL 3.x. Override so FPC can find
541+ // the libraries. This hack can be removed once we move to
542+ // FPC 3.2.4+ which natively includes OpenSSL 3.x DLL names.
543+ { $IFDEF MSWINDOWS}
544+ { $IFDEF WIN64}
545+ DLLSSLName := ' libssl-3-x64.dll' ;
546+ DLLUtilName := ' libcrypto-3-x64.dll' ;
547+ { $ELSE}
548+ DLLSSLName := ' libssl-3.dll' ;
549+ DLLUtilName := ' libcrypto-3.dll' ;
550+ { $ENDIF}
551+ { $ENDIF}
531552 InitSSLInterface;
532553 for I := 0 to High(Dependencies) do
533554 RegisterAllPackages(ResolveDependency(Dependencies[I]));
0 commit comments