1010use StaticPHP \Package \LibraryPackage ;
1111use StaticPHP \Package \PackageBuilder ;
1212use StaticPHP \Package \PackageInstaller ;
13+ use StaticPHP \Package \TargetPackage ;
1314use StaticPHP \Runtime \Shell \UnixShell ;
15+ use StaticPHP \Runtime \SystemTarget ;
1416use StaticPHP \Util \FileSystem ;
1517use StaticPHP \Util \InteractiveTerm ;
1618use StaticPHP \Util \PkgConfigUtil ;
19+ use StaticPHP \Util \SPCConfigUtil ;
1720use ZM \Logger \ConsoleColor ;
1821
1922/**
@@ -214,7 +217,7 @@ public function getConfigureArgsString(): string
214217 */
215218 private function getDefaultCMakeArgs (): array
216219 {
217- return $ this ->custom_default_args ?? [
220+ $ args = $ this ->custom_default_args ?? [
218221 '-DCMAKE_BUILD_TYPE=Release ' ,
219222 "-DCMAKE_INSTALL_PREFIX= {$ this ->package ->getBuildRootPath ()}" ,
220223 '-DCMAKE_INSTALL_BINDIR=bin ' ,
@@ -224,6 +227,20 @@ private function getDefaultCMakeArgs(): array
224227 '-DBUILD_SHARED_LIBS=OFF ' ,
225228 "-DCMAKE_TOOLCHAIN_FILE= {$ this ->makeCmakeToolchainFile ()}" ,
226229 ];
230+
231+ // EXE linker flags: base system libs + framework flags for target packages
232+ $ exeLinkerFlags = SystemTarget::getRuntimeLibs ();
233+ if ($ this ->package instanceof TargetPackage) {
234+ $ resolvedNames = array_keys ($ this ->installer ->getResolvedPackages ());
235+ $ resolvedNames [] = $ this ->package ->getName ();
236+ $ fwFlags = SPCConfigUtil::getFrameworksString ($ resolvedNames );
237+ if ($ fwFlags !== '' ) {
238+ $ exeLinkerFlags .= " {$ fwFlags }" ;
239+ }
240+ }
241+ $ args [] = "-DCMAKE_EXE_LINKER_FLAGS= \"{$ exeLinkerFlags }\"" ;
242+
243+ return $ args ;
227244 }
228245
229246 /**
@@ -274,13 +291,13 @@ private function makeCmakeToolchainFile(): string
274291SET(CMAKE_INSTALL_PREFIX " {$ root }")
275292SET(CMAKE_INSTALL_LIBDIR "lib")
276293
277- set(PKG_CONFIG_EXECUTABLE " {$ pkgConfigExecutable }")
294+ set(PKG_CONFIG_EXECUTABLE " {$ pkgConfigExecutable }" CACHE FILEPATH "pkg-config executable" FORCE )
278295set(PKG_CONFIG_ARGN "--static" CACHE STRING "Extra arguments for pkg-config" FORCE)
296+ set(ENV{PKG_CONFIG_PATH} " {$ root }/lib/pkgconfig")
279297set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
280298set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
281299set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
282300set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
283- set(CMAKE_EXE_LINKER_FLAGS "-ldl -lpthread -lm -lutil")
284301CMAKE ;
285302 // Whoops, linux may need CMAKE_AR sometimes
286303 if (PHP_OS_FAMILY === 'Linux ' ) {
0 commit comments