On linux you can use inotify to avoid polling. I use such a rule for my makefiles :
watch:
while true ; do inotifywait -qe close_write $(SRC); $(MAKE) ; done