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
|
Bug Fixes
|
||||||
|
|
||||||
- Fixed compilation error in `runtime.c` on Raspberry Pi / ARM.
|
- 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
|
## 0.22 - November 3, 2020
|
||||||
|
|
||||||
|
|
34
cyclone.scm
34
cyclone.scm
|
@ -255,13 +255,21 @@
|
||||||
(trace:info meta))
|
(trace:info meta))
|
||||||
(set! input-program (cdr program:imports/code))
|
(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)))
|
;(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
|
(for-each
|
||||||
(lambda (dep)
|
(lambda (dep)
|
||||||
(if (not (member dep lib-deps))
|
(when (not (member dep lib-deps))
|
||||||
(set! lib-deps (cons dep lib-deps))))
|
(set! changed #t)
|
||||||
|
(set! lib-deps (cons dep lib-deps))))
|
||||||
new-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)
|
(trace:info lib-deps)
|
||||||
)))
|
)))
|
||||||
;; END additional top-level imports
|
;; END additional top-level imports
|
||||||
|
@ -728,7 +736,23 @@
|
||||||
program:imports/code
|
program:imports/code
|
||||||
lib-deps
|
lib-deps
|
||||||
(lambda (new-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
|
in-file
|
||||||
append-dirs
|
append-dirs
|
||||||
prepend-dirs)))))
|
prepend-dirs)))))
|
||||||
|
|
Loading…
Add table
Reference in a new issue