How can the ECL include ASDF dependencies in the executable?

I have this ecl-make.lisp:

(asdf: oos' asdf: compile-op: stumpwm)

(defun system-objects (system)
  (loop for component in (asdf: module-components (asdf: find-system system))
    for pathname = (asdf: component-pathname component)
    for directory = (pathname-directory pathname)
    for name = (pathname-name pathname)
    when (equal "lisp" (pathname-type pathname))
    collect (make-pathname: directory directory: type "o": name name)))

(c: build-program "stumpwm": lisp-files
  (concatenate 'list
    (system-objects: cl-ppcre)
    (system-objects: clx)
    (mapcar (lambda (component)
              (concatenate 'string component ".o"))
      stumpwm-system :: * components *))
  : epilogue-code '(unwind-protect (stumpwm: stumpwm) (ext: quit)))

( stumpwm-system::*components*is my complement to stumpwm.asd, is used to create ASDF components in this file and a properly ordered list of files above.)

It just fails:

... same messages you get when (system-objects ...) are
... excluded from the c: build-program [it compiles in
... this case, but of course CL-PPCRE and CLX are unavailable.]
An error occurred during initialization:
Cannot find out entry point for binary file.

, , . ECL, , , , . , stumpwm ( my ~/.eclrc, ASDF, ). .

+3
1

, . :

  • ecl-make.lisp, stumpwm.asd

  • ecl -eval '(asdf:make-build :stumpwm :type :program)'

. ASDF asdf:build-op.]

: , . ecl-examples asdf:make-build

+3

Source: https://habr.com/ru/post/1703708/


All Articles