Re: make: remote dependencies?

"Colin S. Miller" <[email protected]> Mon, 20 Apr 2009 22:30:29 +0100
Newsgroups gmane.comp.gnu.utils
Organization SunSITE.dk - Supporting Open source
Message-ID <[email protected]>
Henrik Carlqvist wrote:
> "curl -I" is one way to find out the time stamp of a remote file on a web
> server.
> 
> rsync is a very nice tool to mirror files from a remote severe to which
> you have ssh access.
> 
> regards Henrik

wget can also be used to check if a file is up-to-date,
and if not, then fetch the new version.

make will then notice that the source-file is newer than its dependants,
and remake the dependants.

I think .phony is correct on remote.c, to force it to be always remade,
but not always its dependants.


Thus, I think this is a valid makefile for what you want:

#!/bin/make -f

.phony: ALL
ALL:remote

.phony: remote.c
# phony is needed on remote.c to force make to always
# remake it (run wget)
# the time stamp won't be updated if it is up-to-date,
# and thus it's dependant won't be rebuilt

remote.c:
   wget -N http://my-server.example:80/path/to/remote.c || rm remote.c

remote.o: remote.c
   gcc -c -o remote.o remote.c

remote: remote.o
   gcc -o remote remote.o

# end of makefile



HTH,
Colin S. Miller

-- 
Replace the obvious in my email address with the first three letters of the hostname to reply.