<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 24 Jan 2020, at 15:30, Phoebe Goldman wrote:</p>

<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px">
<p dir="auto">The impetus for this question is, I have subclassed cl-source-file with org-source-file and have defined tangle-op (as a subclass of both sideway-operation and upward-operation). my perform method is:</p>

<p dir="auto">(defmethod perform ((op tangle-op) (file org-source-file))<br>
  (let* ((input-file (first (input-files op file)))<br>
         (output-file (first (output-files op file))))<br>
    (tangle input-file output-file)))</p>

<p dir="auto">where (tangle input-file output-file) runs emacs in batch mode to produce a lisp source file.</p>

<p dir="auto">How can I define my input-files and output-files methods to make the lisp source files appear in some build directory maintained by ASDF, rather than in my source tree?</p>
</blockquote>

<p dir="auto">If I understand Faré correctly, you define output files normally, but then I believe you need to do the following:</p>

<pre style="background-color:#F7F7F7; border-radius:5px 5px 5px 5px; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px" bgcolor="#F7F7F7"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0" bgcolor="#F7F7F7">(defmethod input-files ((op compile-op) (file org-source-file))
    (output-files (asdf:make-operation 'tangle-op) file))
</code></pre>

<p dir="auto">If I'm right, this will ensure that <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">compile-op</code> sees the translated pathnames for the lisp files, instead of looking in the source directory.</p>
</div>
</div>
</body>
</html>