mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-03 19:26:34 +02:00
Expand library before reading imports
This commit is contained in:
parent
26a7542d18
commit
dc30dba735
3 changed files with 12 additions and 8 deletions
|
@ -255,7 +255,7 @@
|
||||||
(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)))
|
(let ((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))
|
(if (not (member dep lib-deps))
|
||||||
|
@ -704,7 +704,7 @@
|
||||||
(lib-deps
|
(lib-deps
|
||||||
(if (and program?
|
(if (and program?
|
||||||
(not (null? (car program:imports/code))))
|
(not (null? (car program:imports/code))))
|
||||||
(lib:get-all-import-deps (car program:imports/code) append-dirs prepend-dirs)
|
(lib:get-all-import-deps (car program:imports/code) append-dirs prepend-dirs expander)
|
||||||
'()))
|
'()))
|
||||||
(c-linker-options
|
(c-linker-options
|
||||||
(lib:get-all-c-linker-options lib-deps append-dirs prepend-dirs))
|
(lib:get-all-c-linker-options lib-deps append-dirs prepend-dirs))
|
||||||
|
|
|
@ -15,7 +15,8 @@
|
||||||
;;;;
|
;;;;
|
||||||
(define-library (scheme cyclone libraries)
|
(define-library (scheme cyclone libraries)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
;; Debug only (scheme write)
|
;; Debug only
|
||||||
|
(scheme write)
|
||||||
(scheme read)
|
(scheme read)
|
||||||
(scheme process-context)
|
(scheme process-context)
|
||||||
(scheme cyclone util)
|
(scheme cyclone util)
|
||||||
|
@ -385,12 +386,15 @@
|
||||||
|
|
||||||
;; Given a single import from an import-set, open the corresponding
|
;; Given a single import from an import-set, open the corresponding
|
||||||
;; library file and retrieve the library's import-set.
|
;; library file and retrieve the library's import-set.
|
||||||
(define (lib:read-imports import append-dirs prepend-dirs)
|
(define (lib:read-imports import append-dirs prepend-dirs expander)
|
||||||
(let* ((lib-name (lib:import->library-name import))
|
(let* ((lib-name (lib:import->library-name import))
|
||||||
(dir (lib:import->filename lib-name ".sld" append-dirs prepend-dirs))
|
(dir (lib:import->filename lib-name ".sld" append-dirs prepend-dirs))
|
||||||
(fp (open-input-file dir))
|
(fp (open-input-file dir))
|
||||||
(lib (read-all fp))
|
(lib (read-all fp))
|
||||||
(imports (lib:imports (car lib))))
|
(lib* (if expander
|
||||||
|
(list (lib:cond-expand (car lib) expander))
|
||||||
|
lib))
|
||||||
|
(imports (lib:imports (car lib*))))
|
||||||
(close-input-port fp)
|
(close-input-port fp)
|
||||||
imports))
|
imports))
|
||||||
|
|
||||||
|
@ -619,7 +623,7 @@
|
||||||
;; Given an import set, get all dependant import names that are required
|
;; Given an import set, get all dependant import names that are required
|
||||||
;; The list of deps is intended to be returned in order, such that the
|
;; The list of deps is intended to be returned in order, such that the
|
||||||
;; libraries can be initialized properly in sequence.
|
;; libraries can be initialized properly in sequence.
|
||||||
(define (lib:get-all-import-deps imports append-dirs prepend-dirs)
|
(define (lib:get-all-import-deps imports append-dirs prepend-dirs expander)
|
||||||
(letrec ((libraries/deps '())
|
(letrec ((libraries/deps '())
|
||||||
(find-deps!
|
(find-deps!
|
||||||
(lambda (import-sets)
|
(lambda (import-sets)
|
||||||
|
@ -631,7 +635,7 @@
|
||||||
;; Prevent cycles by only processing new libraries
|
;; Prevent cycles by only processing new libraries
|
||||||
((not (assoc lib-name libraries/deps))
|
((not (assoc lib-name libraries/deps))
|
||||||
;; Find all dependencies of i (IE, libraries it imports)
|
;; Find all dependencies of i (IE, libraries it imports)
|
||||||
(let* ((deps (lib:read-imports import-set append-dirs prepend-dirs))
|
(let* ((deps (lib:read-imports import-set append-dirs prepend-dirs expander))
|
||||||
(dep-libs (map lib:import->library-name deps)))
|
(dep-libs (map lib:import->library-name deps)))
|
||||||
(set!
|
(set!
|
||||||
libraries/deps
|
libraries/deps
|
||||||
|
|
|
@ -755,7 +755,7 @@
|
||||||
(explicit-lib-names
|
(explicit-lib-names
|
||||||
(map lib:import->library-name (lib:list->import-set import-sets)))
|
(map lib:import->library-name (lib:list->import-set import-sets)))
|
||||||
;; All dependent libraries
|
;; All dependent libraries
|
||||||
(lib-names (lib:get-all-import-deps import-sets *append-dirs* *prepend-dirs*))
|
(lib-names (lib:get-all-import-deps import-sets *append-dirs* *prepend-dirs* #f))
|
||||||
(renamed-syms (filter pair?
|
(renamed-syms (filter pair?
|
||||||
(map car
|
(map car
|
||||||
(lib:imports->idb import-sets *append-dirs* *prepend-dirs*))))
|
(lib:imports->idb import-sets *append-dirs* *prepend-dirs*))))
|
||||||
|
|
Loading…
Add table
Reference in a new issue