@@ -139,36 +139,23 @@ func ProcessArgsWithLDFlags(args []string, projectRoot, pythonPath, pythonHome s
139139 result := make ([]string , 0 , len (args ))
140140
141141 // Prepare the -X flags we want to add
142- var xFlags []string
143- if pythonHome != "" {
144- xFlags = append (xFlags , fmt .Sprintf ("-X 'github.com/cpunion/go-python.ProjectRoot=%s'" , projectRoot ))
145- }
142+ ldflags := fmt .Sprintf ("-X 'github.com/cpunion/go-python.ProjectRoot=%s'" , projectRoot )
146143
147144 // Prepare rpath flag if needed
148- var rpathFlag string
149- if pythonHome != "" {
150- pythonLibDir := filepath .Join (pythonHome , "lib" )
151- switch runtime .GOOS {
152- case "darwin" , "linux" :
153- rpathFlag = fmt .Sprintf ("-extldflags '-Wl,-rpath,%s'" , pythonLibDir )
154- case "windows" :
155- // Windows doesn't use rpath
156- rpathFlag = ""
157- default :
158- // Use Linux format for other Unix-like systems
159- rpathFlag = fmt .Sprintf ("-extldflags '-Wl,-rpath=%s'" , pythonLibDir )
160- }
145+ pythonLibDir := env .GetPythonLibDir (projectRoot )
146+ switch runtime .GOOS {
147+ case "darwin" , "linux" :
148+ ldflags += fmt .Sprintf (" -extldflags '-Wl,-rpath,%s'" , pythonLibDir )
149+ case "windows" :
150+ // Windows doesn't use rpath
151+ default :
152+ // Use Linux format for other Unix-like systems
153+ ldflags += fmt .Sprintf (" -extldflags '-Wl,-rpath=%s'" , pythonLibDir )
161154 }
162155
163- // Find existing -ldflags if any
164- foundLDFlags := false
165156 for i := 0 ; i < len (args ); i ++ {
166157 arg := args [i ]
167158 if strings .HasPrefix (arg , "-ldflags=" ) || arg == "-ldflags" {
168- foundLDFlags = true
169- // Copy everything before this arg
170- result = append (result , args [:i ]... )
171-
172159 // Get existing flags
173160 var existingFlags string
174161 if strings .HasPrefix (arg , "-ldflags=" ) {
@@ -177,44 +164,15 @@ func ProcessArgsWithLDFlags(args []string, projectRoot, pythonPath, pythonHome s
177164 existingFlags = args [i + 1 ]
178165 i ++ // Skip the next arg since we've consumed it
179166 }
180-
181- // Combine all flags
182- var allFlags []string
183- if len (xFlags ) > 0 {
184- allFlags = append (allFlags , xFlags ... )
185- }
186- if strings .TrimSpace (existingFlags ) != "" {
187- allFlags = append (allFlags , existingFlags )
188- }
189- if rpathFlag != "" {
190- allFlags = append (allFlags , rpathFlag )
191- }
192-
193- // Add combined ldflags
194- result = append (result , "-ldflags" )
195- result = append (result , strings .Join (allFlags , " " ))
196-
197- // Add remaining args
198- result = append (result , args [i + 1 :]... )
199- break
200- }
201- }
202-
203- // If no existing -ldflags found, add new ones at the beginning if we have any flags to add
204- if ! foundLDFlags {
205- if len (xFlags ) > 0 || rpathFlag != "" {
206- var allFlags []string
207- allFlags = append (allFlags , xFlags ... )
208- if rpathFlag != "" {
209- allFlags = append (allFlags , rpathFlag )
167+ existingFlags = strings .TrimSpace (existingFlags )
168+ if ldflags != "" {
169+ ldflags += " " + existingFlags
210170 }
211- result = append ( result , "-ldflags" )
212- result = append (result , strings . Join ( allFlags , " " ) )
171+ } else {
172+ result = append (result , arg )
213173 }
214- result = append (result , args ... )
215174 }
216-
217- return result
175+ return append ([]string {"-ldflags" , ldflags }, result ... )
218176}
219177
220178// GetGoCommandHelp returns the formatted help text for the specified go command
0 commit comments