On Thu, Aug 29, 2019 at 8:59 PM Bram Moolenaar <[email protected]> wrote:
>
>
> Christian wrote:
>
> > On Mi, 28 Aug 2019, Bram Moolenaar wrote:
> >
> > >
> > > > Recently you've been proposing (and Bram has accepted) to create a lot
> > > > of new source files to make the existing source easier to understand.
> > > > The notion is laudable but it doesn't work well with my shadow
> > > > directories: every time there is a new .c source (or .h; .pro sources
> > > > are taken care of automatically by virtue of their being in a special
> > > > src/proto directory for which a symlink has ben creted once and for
> > > > all in the shadow directory), I have to manually create a symlink
> > > > newsourcename.c -> ../newsourcename.c in each shadow directory,
> > > > otherwise the "make" step ends in error with "No rule to make
> > > > newsourcename.c. Stop.".
> > > >
> > > > Do you think the following rule (added to the src/Makefile which is
> > > > soft-linked from every shadow directory) could take care of my problem
> > > > without undesired side-effects?
> > > >
> > > > *: ../$@
> > > >         ln -sv ../$@
> > > >
> > > > The idea is to create a link if a needed file exist inthe parent (src)
> > > > directory but not in the current (shadow) directory. Maybe the target
> > > > sould be made less general to avoid using this rule out of turn.
> > >
> > > What happens with "make foo"?  Doesn't it execute "ln -sv ../foo" then?
> > > Or say "../foo" does not exist"?  Both are very confusing.
> > >
> > > Perhaps we can the "ln" line from "make shadow" and add it with a
> > > "shadowupdate" target:
> > >
> > > shadowupdate:
> > >     ln -s ../*.[chm] ../*.in ../*.sh ../*.xs ../*.xbm ../gui_gtk_res.xml 
> > > ../toolcheck ../proto ../libvterm ../vimtutor ../gvimtutor ../install-sh 
> > > ../Make_all.mak .
> > >
> > > Probably reports a lot of error for already existing links.
> >
> > using -f should force (re-creation) of the link and should not error.
>
> Assuming that the user hasn't replaced the link with something else, I
> suppose it's not a problem to overwrite the link.  I would prefer to
> skip the existing files, but I don't see a flag for "ln" for that.

OK, what about the following, which skips the existing files?

*.[chm] *.cc *.in *.sh *.xs *.xbm *.xml : ../$@
        ln -sv ../$@

(links to directories are created by "make shadow" and don't need to
be created again; in the case of future directories we don't know what
they will be, so if new *subdirectories* are created I'll still have
to link them manually; but that happened much less often recently than
new .c sources). This won't recreate an already existing link because
"make" finds the link's date by following the link (otherwise
incremental compiles wouldn't work).

I intentionally set the -v (--verbose) switch to ln, in order to have
a trace of the link creation (which is not an everyday event) in the
log, so an alert user can check that it happened the way it should.

>
> I can add the shadowupdate rule, but I do wonder how you keep Makefile
> up-to-date, since that also needs to be changed.
>
I keep the src/shadow-*/Makefile up-to-date by replacing (once and for
all) the *copy* of the src/Makefile created by "make shadow" by a
*soft link* to ../Makefile. My config arguments are set by means of
environment variables, not by modifying the Makefile.

Best regards,
Tony.

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAJkCKXuPuTDETMZgjGWMwCqEgQSDx1KPQK57%3DAKZoid4hHRpHw%40mail.gmail.com.

Raspunde prin e-mail lui