To run these tests, you will have to replace /bin/sh with the shell to
test, the symlink trick doesn't work since we want the shell that make
uses to be the testshell as well.
You may
TESTMAKE=gmake ./test01.sh
to test various makes.
Currently, FreeBSD's make depends on the /bin/sh to exit on SIGINT even
when a foreground job is run to behave right. GNU make works right
with fixed FreeBSD shells.
The following fix makes FreeBSD behave right (IMHO) for the non-compat
case. Note that if you don't pass a `-j` parameter to make, it will be
in compat mode even if you don't pass -B. test it like this
export TESTMAKE=/foo/bar/make -j 1
./test01.sh
diff -c make.original/job.c make.work/job.c
*** make.original/job.c Tue Aug 26 12:06:38 1997
--- make.work/job.c Wed Mar 11 12:49:52 1998
***************
*** 2904,2910 ****
}
}
(void) eunlink(tfile);
! exit(signo);
}
/*
--- 2904,2918 ----
}
}
(void) eunlink(tfile);
!
! /*
! * For some signals, we don't want a direct exit, but to
! * let them resent to ourself, which is done by the calling
! * Routine.
! */
!
! if (signo != SIGINT && signo != SIGTERM && signo != SIGHUP)
! exit(signo);
}
/*