Tony wrote:
> On Thu, Aug 29, 2019 at 8:59 PM Bram Moolenaar <b...@moolenaar.net> 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 ../$@ AFAIK only GNU make accepts wildcards here, it doesn't work everywhere. > (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. OK, that makes sense. -- hundred-and-one symptoms of being an internet addict: 136. You decide to stay in a low-paying job teaching just for the free Internet access. /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -- -- 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 vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/201908301200.x7UC06WW015607%40masaka.moolenaar.net.