Mark Karpov
Mark Karpov

Reputation: 7599

Get result of compilation as single file with ASDF

Is it possible to tell ASDF that it should produce only one fas(l) file for entire system? This file should be concatenation (in right order) of all compiled files of the system, including all files of systems on which target system depends.

Upvotes: 2

Views: 359

Answers (3)

Svante
Svante

Reputation: 51501

Yes, with compile-bundle-op (ASDF 3.1): http://common-lisp.net/project/asdf/asdf/Predefined-operations-of-ASDF.html

edit: Actually, monolithic-compile-bundle-op seemes to be asked for (as shown in other answers).

Upvotes: 4

Faré
Faré

Reputation: 960

If you have to predict the extension, use uiop:compile-file-type. And/or you can just call (asdf:output-files 'asdf:monolithic-compile-bundle-op :my-system) to figure out what is actually used.

Upvotes: 2

Mark Karpov
Mark Karpov

Reputation: 7599

Option monolithic-compile-bundle-op will create single compiled file which includes all dependencies, while compile-bundle-op creates a file for every system.

Example of use:

(asdf:operate 'asdf:monolithic-compile-bundle-op :my-system)

This command will create file my-system--all-systems.fas(l) in output directory of target project, as well as "bundle" files for every system, named like my-system--system.fas(l).

Upvotes: 1

Related Questions