mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-19 05:39:17 +02:00
Recompute library dep tree after macro expansion
Fix the compiler to recompute library dependencies for a program if additional import expressions were encountered during macro expansion.
This commit is contained in:
parent
e8ef39c76b
commit
6f5a60bfa4
2 changed files with 30 additions and 5 deletions
|
@ -5,6 +5,7 @@
|
|||
Bug Fixes
|
||||
|
||||
- Fixed compilation error in `runtime.c` on Raspberry Pi / ARM.
|
||||
- Fix the compiler to recompute library dependencies for a program if additional import expressions were encountered during macro expansion.
|
||||
|
||||
## 0.22 - November 3, 2020
|
||||
|
||||
|
|
34
cyclone.scm
34
cyclone.scm
|
@ -255,13 +255,21 @@
|
|||
(trace:info meta))
|
||||
(set! input-program (cdr program:imports/code))
|
||||
;(set! lib-deps (append lib-deps (lib:get-all-import-deps (car program:imports/code) append-dirs prepend-dirs)))
|
||||
(let ((new-lib-deps (lib:get-all-import-deps (car program:imports/code) append-dirs prepend-dirs #f)))
|
||||
(let ((changed #f)
|
||||
(new-lib-deps (lib:get-all-import-deps (car program:imports/code) append-dirs prepend-dirs #f)))
|
||||
(for-each
|
||||
(lambda (dep)
|
||||
(if (not (member dep lib-deps))
|
||||
(set! lib-deps (cons dep lib-deps))))
|
||||
(when (not (member dep lib-deps))
|
||||
(set! changed #t)
|
||||
(set! lib-deps (cons dep lib-deps))))
|
||||
new-lib-deps)
|
||||
(change-lib-deps! lib-deps))
|
||||
(when changed
|
||||
;; Library dependencies can change if additional import
|
||||
;; expressions were encountered during macro expansion.
|
||||
;; If so, update the list of dependencies now
|
||||
(set! ;; Use new deps
|
||||
lib-deps
|
||||
(change-lib-deps! lib-deps)))) ;; Caller updates and returns new deps
|
||||
(trace:info lib-deps)
|
||||
)))
|
||||
;; END additional top-level imports
|
||||
|
@ -728,7 +736,23 @@
|
|||
program:imports/code
|
||||
lib-deps
|
||||
(lambda (new-lib-deps)
|
||||
(set! lib-deps new-lib-deps))
|
||||
;; Deps changed so we need to
|
||||
;; resolve dependency tree again
|
||||
(set!
|
||||
lib-deps
|
||||
(lib:get-all-import-deps
|
||||
new-lib-deps
|
||||
append-dirs
|
||||
prepend-dirs
|
||||
expander))
|
||||
;; Recompute linker options
|
||||
(set! c-linker-options
|
||||
(lib:get-all-c-linker-options
|
||||
lib-deps
|
||||
append-dirs
|
||||
prepend-dirs))
|
||||
;; Return new deps
|
||||
lib-deps)
|
||||
in-file
|
||||
append-dirs
|
||||
prepend-dirs)))))
|
||||
|
|
Loading…
Add table
Reference in a new issue