svn commit: r298219 - head/share/mk

Konstantin Belousov kostikbel at gmail.com
Tue Apr 19 12:16:02 UTC 2016


On Mon, Apr 18, 2016 at 06:14:02PM +0000, Bryan Drewery wrote:
> Author: bdrewery
> Date: Mon Apr 18 18:14:02 2016
> New Revision: 298219
> URL: https://svnweb.freebsd.org/changeset/base/298219
> 
> Log:
>   Cause an error during 'make install' if trying to compile with CC.
>   
>   This is limited to src-tree builds, meaning not extended to ports or other
>   out-of-tree builds.
>   
>   This will help ensure that read-only OBJDIRS will be respected at install-time
>   by causing a more consistent failure for those who don't use a read-only
>   OBJDIR.  It also will cause Jenkins to yell.  This is a better solution than
>   trying to see CC=false as has been attempted and discussed before.
>   
>   Of course this is only relevant for files generated by CC.
>   
>   Disable this for META_MODE since it will detect the CFLAGS/command
>   change and force a rebuild.
>   
>   Sponsored by:	EMC / Isilon Storage Division
> 
> Modified:
>   head/share/mk/bsd.sys.mk
> 
> Modified: head/share/mk/bsd.sys.mk
> ==============================================================================
> --- head/share/mk/bsd.sys.mk	Mon Apr 18 18:13:58 2016	(r298218)
> +++ head/share/mk/bsd.sys.mk	Mon Apr 18 18:14:02 2016	(r298219)
> @@ -178,6 +178,13 @@ ACFLAGS+=	${ACFLAGS.${.IMPSRC:T}}
>  CFLAGS+=	${CFLAGS.${.IMPSRC:T}}
>  CXXFLAGS+=	${CXXFLAGS.${.IMPSRC:T}}
>  
> +.if defined(SRCTOP)
> +# Prevent rebuilding during install to support read-only objdirs.
> +.if make(install) && empty(.MAKE.MODE:Mmeta)
> +CFLAGS+=	ERROR-tried-to-rebuild-during-make-install
> +.endif
> +.endif
> +
>  # Tell bmake not to mistake standard targets for things to be searched for
>  # or expect to ever be up-to-date.
>  PHONY_NOTMAIN = analyze afterdepend afterinstall all beforedepend beforeinstall \

It seems to cause the following behaviour:
make buildenv
cd lib/libthr
# make DEBUG_FLAGS=-g WITHOUT_TESTS=yes all install
cc   -O2 -pipe   -DPTHREAD_KERNEL -I/usr/home/kostik/work/build/bsd/DEV/src/lib/libthr/../libc/include -I/usr/home/kostik/work/build/bsd/DEV/src/lib/libthr/thread  -I/usr/home/kostik/work/build/bsd/DEV/src/lib/libthr/../../include -I/usr/home/kostik/work/build/bsd/DEV/src/lib/libthr/arch/amd64/include -I/usr/home/kostik/work/build/bsd/DEV/src/lib/libthr/sys -I/usr/home/kostik/work/build/bsd/DEV/src/lib/libthr/../../libexec/rtld-elf -I/usr/home/kostik/work/build/bsd/DEV/src/lib/libthr/../../libexec/rtld-elf/amd64 -I/usr/home/kostik/work/build/bsd/DEV/src/lib/libthr/../libthread_db -Winline -fexceptions -D_PTHREAD_FORCED_UNWIND -D_PTHREADS_INVARIANTS -mno-mmx -mno-sse -mno-avx -g -MD -MP -MF.depend.thr_init.o -MTthr_init.o -std=gnu99 -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef  -Qunused-arguments  ERROR-tried-to-rebuild-during-make-install -c /usr/home/kostik/work/build/bsd/DEV/src/lib/libthr/thread/thr_init.c -o thr_init.o
cc: error: no such file or directory: 'ERROR-tried-to-rebuild-during-make-install'
*** Error code 1

Stop.
make[3]: stopped in /usr/home/kostik/work/build/bsd/DEV/src/lib/libthr

Doing separate steps for all and install targets work, but before, it also
worked and was convenient to list sequential targets on the make command
line.


More information about the svn-src-head mailing list