Refactoring

This commit is contained in:
Justin Ethier 2015-05-18 17:35:58 -04:00
parent 2497fa0554
commit a4a6e7d602
2 changed files with 27 additions and 33 deletions

View file

@ -216,14 +216,11 @@
(let* ((in-file (car args)) (let* ((in-file (car args))
(in-prog (read-file in-file)) (in-prog (read-file in-file))
(program? (not (library? (car in-prog)))) (program? (not (library? (car in-prog))))
; TODO: trying to get this here, then can pass it to (lib-deps
; compiler code (for entry points) and below for (if (and program?
; gcc calls (need to wrap in .o string for that though) (tagged-list? 'import (car in-prog)))
;(lib-deps (delete-duplicates (lib:get-all-import-deps (cdar in-prog)))
; (if (and program? '()))
; (tagged-list? 'import (car in-prog)))
; (lib:get-all-import-deps (cadr in-prog))
; '()))
(exec-file (basename in-file)) (exec-file (basename in-file))
(src-file (string-append exec-file ".c")) (src-file (string-append exec-file ".c"))
(create-c-file (create-c-file
@ -256,16 +253,14 @@
(cond (cond
(program? (program?
(let ((objs-str (let ((objs-str
(if (tagged-list? 'import (car in-prog))
(apply (apply
string-append string-append
(delete-duplicates
(map (map
(lambda (str) (lambda (i)
(string-append " " str " ")) (string-append " " (lib:import->filename i ".o") " "))
(lib:imports->objs (cdar in-prog))))) lib-deps))))
"")))
;(write `(DEBUG all imports ,lib-deps objs ,objs-str)) ;(write `(DEBUG all imports ,lib-deps objs ,objs-str))
;(write `(DEBUG ,(lib:get-all-import-deps (cdar in-prog))))
(if (equal? 0 (if (equal? 0
(system (system
(string-append "gcc " src-file " -I" (cyc:get-include-dir) " -g -c -o " exec-file ".o"))) (string-append "gcc " src-file " -I" (cyc:get-include-dir) " -g -c -o " exec-file ".o")))

View file

@ -1628,27 +1628,26 @@
;; libs requires. will probably need to prune duplicates from completed list. ;; libs requires. will probably need to prune duplicates from completed list.
;; Longer-term, do we want to look at file timestamps to see if files need to ;; Longer-term, do we want to look at file timestamps to see if files need to
;; be recompiled? ;; be recompiled?
(define (lib:imports->objs imports) ;(define (lib:imports->objs imports)
(apply ; (apply
append ; append
(map ; (map
(lambda (i) ; (lambda (i)
(cons ; (cons
(lib:import->filename i ".o") ; (lib:import->filename i ".o")
(lib:imports->objs (lib:read-imports i)) ; (lib:imports->objs (lib:read-imports i))
)) ; ))
imports))) ; imports)))
;; Given import names, get all dependant import names that are required ;; Given import names, get all dependant import names that are required
;; Note: does not filter out duplicates
(define (lib:get-all-import-deps imports) (define (lib:get-all-import-deps imports)
(delete-duplicates
(apply (apply
append append
(map (map
(lambda (i) (lambda (i)
(write `(DEBUG i ,i))
(cons i (lib:get-all-import-deps (lib:read-imports i)))) (cons i (lib:get-all-import-deps (lib:read-imports i))))
imports)))) imports)))
;; 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.