-(define (library-files-linked args)
- ;; Return the file names of shared libraries explicitly linked against via
- ;; `-l' or with an absolute file name in ARGS.
- (define path+files
+(define (library-search-path args)
+ ;; Return the library search path as a list of directory names. The GNU ld
+ ;; manual notes that "[a]ll `-L' options apply to all `-l' options,
+ ;; regardless of the order in which the options appear", so we must compute
+ ;; the search path independently of the -l options.
+ (let loop ((args args)
+ (path '()))
+ (match args
+ (()
+ (reverse path))
+ (("-L" directory . rest)
+ (loop rest (cons directory path)))
+ ((argument . rest)
+ (if (string-prefix? "-L" argument) ;augment the search path
+ (loop rest
+ (cons (string-drop argument 2) path))
+ (loop rest path))))))
+
+(define (library-files-linked args library-path)
+ ;; Return the absolute file names of shared libraries explicitly linked
+ ;; against via `-l' or with an absolute file name in ARGS, looking them up
+ ;; in LIBRARY-PATH.
+ (define files+args