Re: svn commit: r359681 - in head: . share/mk

2020-04-06 Thread Antoine Brodin
On Tue, Apr 7, 2020 at 1:38 AM Brooks Davis  wrote:
>
> Author: brooks
> Date: Mon Apr  6 23:38:46 2020
> New Revision: 359681
> URL: https://svnweb.freebsd.org/changeset/base/359681
>
> Log:
>   Fix compilation with upstream clang builtin headers.
>
>   By using -nobuiltininc and adding the clang builtin headers resource dir
>   to the end of the compiler header search path, we can still find headers
>   such as immintrin.h but find the FreeBSD version of stddef.h/stdarg.h/..
>   first.
>
>   This is a workaround until we are able to settle on and complete a plan
>   to harmonize guard macros with LLVM.  We've mostly worked out this on
>   FreeBSD systems by removing select headers from the installed set of
>   devel/llvm*, but that isn't a good solution for cross build.
>
>   Submitted by: arichardson
>   Obtained from:CheriBSD
>   Sponsored by: DARPA, AFRL
>   Differential Revision:https://reviews.freebsd.org/D17002
>
> Modified:
>   head/Makefile.inc1
>   head/share/mk/bsd.compiler.mk
>   head/share/mk/bsd.sys.mk
>

This breaks ports:

make[1]: "/usr/share/mk/bsd.sys.mk" line 219: Malformed conditional
(${MK_CLANG_BOOTSTRAP} == "no" && ${COMPILER_RESOURCE_DIR} !=
"unknown" &&  !defined(BOOTSTRAPPING))

Antoine
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


Re: svn commit: r359681 - in head: . share/mk

2020-04-06 Thread Maxim Sobolev
This broke Jenkins builds. :(

https://ci.freebsd.org/job/FreeBSD-head-armv7-build/8689/


-Max

On Mon, Apr 6, 2020 at 6:49 PM Bryan Drewery  wrote:

> On 4/6/2020 4:38 PM, Brooks Davis wrote:
> > Author: brooks
> > Date: Mon Apr  6 23:38:46 2020
> > New Revision: 359681
> > URL: https://svnweb.freebsd.org/changeset/base/359681
> >
> > Log:
> >   Fix compilation with upstream clang builtin headers.
> >
> >   By using -nobuiltininc and adding the clang builtin headers resource
> dir
> >   to the end of the compiler header search path, we can still find
> headers
> >   such as immintrin.h but find the FreeBSD version of
> stddef.h/stdarg.h/..
> >   first.
> >
> >   This is a workaround until we are able to settle on and complete a plan
> >   to harmonize guard macros with LLVM.  We've mostly worked out this on
> >   FreeBSD systems by removing select headers from the installed set of
> >   devel/llvm*, but that isn't a good solution for cross build.
> >
> >   Submitted by:   arichardson
> >   Obtained from:  CheriBSD
> >   Sponsored by:   DARPA, AFRL
> >   Differential Revision:  https://reviews.freebsd.org/D17002
> >
> > Modified:
> >   head/Makefile.inc1
> >   head/share/mk/bsd.compiler.mk
> >   head/share/mk/bsd.sys.mk
> >
> > Modified: head/Makefile.inc1
> >
> ==
> > --- head/Makefile.inc1Mon Apr  6 23:28:24 2020(r359680)
> > +++ head/Makefile.inc1Mon Apr  6 23:38:46 2020(r359681)
> > @@ -337,6 +337,7 @@ _TOOLCHAIN_METADATA_VARS= COMPILER_VERSION \
> >   COMPILER_TYPE \
> >   COMPILER_FEATURES \
> >   COMPILER_FREEBSD_VERSION \
> > + COMPILER_RESOURCE_DIR \
> >   LINKER_VERSION \
> >   LINKER_FEATURES \
> >   LINKER_TYPE \
> >
> > Modified: head/share/mk/bsd.compiler.mk
> >
> ==
> > --- head/share/mk/bsd.compiler.mk Mon Apr  6 23:28:24 2020
> (r359680)
> > +++ head/share/mk/bsd.compiler.mk Mon Apr  6 23:38:46 2020
> (r359681)
> > @@ -143,7 +143,7 @@ _cc_vars+=XCC X_
> >  # The value is only used/exported for the same environment that impacts
> >  # CC and COMPILER_* settings here.
> >  _exported_vars=  ${X_}COMPILER_TYPE ${X_}COMPILER_VERSION \
> > - ${X_}COMPILER_FREEBSD_VERSION
> > + ${X_}COMPILER_FREEBSD_VERSION ${X_}COMPILER_RESOURCE_DIR
> >  ${X_}_cc_hash=   ${${cc}}${MACHINE}${PATH}
> >  ${X_}_cc_hash:=  ${${X_}_cc_hash:hash}
> >  # Only import if none of the vars are set somehow else.
> > @@ -201,6 +201,10 @@ ${X_}COMPILER_FREEBSD_VERSION=   unknown
> >  .endif
> >  .endif
> >
> > +.if !defined(${X_}COMPILER_RESOURCE_DIR)
> > +${X_}COMPILER_RESOURCE_DIR!= ${${cc}:N${CCACHE_BIN}}
> -print-resource-dir 2>/dev/null || echo unknown
> > +.endif
> > +
> >  ${X_}COMPILER_FEATURES=
> >  .if (${${X_}COMPILER_TYPE} == "clang" && ${${X_}COMPILER_VERSION} >=
> 30300) || \
> >   (${${X_}COMPILER_TYPE} == "gcc" && ${${X_}COMPILER_VERSION} >=
> 40800)
> > @@ -224,6 +228,7 @@ X_COMPILER_TYPE=  ${COMPILER_TYPE}
> >  X_COMPILER_VERSION=  ${COMPILER_VERSION}
> >  X_COMPILER_FREEBSD_VERSION=  ${COMPILER_FREEBSD_VERSION}
> >  X_COMPILER_FEATURES= ${COMPILER_FEATURES}
> > +X_COMPILER_RESOURCE_DIR= ${COMPILER_RESOURCE_DIR}
> >  .endif   # ${cc} == "CC" || (${cc} == "XCC" && ${XCC} != ${CC})
> >
> >  # Export the values so sub-makes don't have to look them up again,
> using the
> >
> > Modified: head/share/mk/bsd.sys.mk
> >
> ==
> > --- head/share/mk/bsd.sys.mk  Mon Apr  6 23:28:24 2020(r359680)
> > +++ head/share/mk/bsd.sys.mk  Mon Apr  6 23:38:46 2020(r359681)
> > @@ -206,6 +206,21 @@ CWARNFLAGS+= -Wno-unknown-pragmas
> >  # This warning is utter nonsense
> >  CFLAGS+= -Wno-format-zero-length
> >
> > +.if ${COMPILER_TYPE} == "clang"
> > +# The headers provided by clang are incompatible with the FreeBSD
> headers.
> > +# If the version of clang is not one that has been patched to omit the
> > +# incompatible headers, we need to compile with -nobuiltininc and add
> the
> > +# resource dir to the end of the search paths. This ensures that
> headers such as
> > +# immintrin.h are still found but stddef.h, etc. are picked up from
> FreeBSD.
> > +#
> > +# XXX: This is a hack to support complete external installs of clang
> while
> > +# we work to synchronize our decleration guards with those in the clang
> tree.
> > +.if ${MK_CLANG_BOOTSTRAP} == "no" && ${COMPILER_RESOURCE_DIR} !=
> "unknown" && \
> > +!defined(BOOTSTRAPPING)
>
> I just realized MK_CLANG_BOOTSTRAP is not going to be defined here
> outside of the tree. Adding :Uno will fix it. Keep in mind this current
> change 

Re: svn commit: r359681 - in head: . share/mk

2020-04-06 Thread Bryan Drewery
On 4/6/2020 4:38 PM, Brooks Davis wrote:
> Author: brooks
> Date: Mon Apr  6 23:38:46 2020
> New Revision: 359681
> URL: https://svnweb.freebsd.org/changeset/base/359681
> 
> Log:
>   Fix compilation with upstream clang builtin headers.
>   
>   By using -nobuiltininc and adding the clang builtin headers resource dir
>   to the end of the compiler header search path, we can still find headers
>   such as immintrin.h but find the FreeBSD version of stddef.h/stdarg.h/..
>   first.
>   
>   This is a workaround until we are able to settle on and complete a plan
>   to harmonize guard macros with LLVM.  We've mostly worked out this on
>   FreeBSD systems by removing select headers from the installed set of
>   devel/llvm*, but that isn't a good solution for cross build.
>   
>   Submitted by:   arichardson
>   Obtained from:  CheriBSD
>   Sponsored by:   DARPA, AFRL
>   Differential Revision:  https://reviews.freebsd.org/D17002
> 
> Modified:
>   head/Makefile.inc1
>   head/share/mk/bsd.compiler.mk
>   head/share/mk/bsd.sys.mk
> 
> Modified: head/Makefile.inc1
> ==
> --- head/Makefile.inc1Mon Apr  6 23:28:24 2020(r359680)
> +++ head/Makefile.inc1Mon Apr  6 23:38:46 2020(r359681)
> @@ -337,6 +337,7 @@ _TOOLCHAIN_METADATA_VARS= COMPILER_VERSION \
>   COMPILER_TYPE \
>   COMPILER_FEATURES \
>   COMPILER_FREEBSD_VERSION \
> + COMPILER_RESOURCE_DIR \
>   LINKER_VERSION \
>   LINKER_FEATURES \
>   LINKER_TYPE \
> 
> Modified: head/share/mk/bsd.compiler.mk
> ==
> --- head/share/mk/bsd.compiler.mk Mon Apr  6 23:28:24 2020
> (r359680)
> +++ head/share/mk/bsd.compiler.mk Mon Apr  6 23:38:46 2020
> (r359681)
> @@ -143,7 +143,7 @@ _cc_vars+=XCC X_
>  # The value is only used/exported for the same environment that impacts
>  # CC and COMPILER_* settings here.
>  _exported_vars=  ${X_}COMPILER_TYPE ${X_}COMPILER_VERSION \
> - ${X_}COMPILER_FREEBSD_VERSION
> + ${X_}COMPILER_FREEBSD_VERSION ${X_}COMPILER_RESOURCE_DIR
>  ${X_}_cc_hash=   ${${cc}}${MACHINE}${PATH}
>  ${X_}_cc_hash:=  ${${X_}_cc_hash:hash}
>  # Only import if none of the vars are set somehow else.
> @@ -201,6 +201,10 @@ ${X_}COMPILER_FREEBSD_VERSION=   unknown
>  .endif
>  .endif
>  
> +.if !defined(${X_}COMPILER_RESOURCE_DIR)
> +${X_}COMPILER_RESOURCE_DIR!= ${${cc}:N${CCACHE_BIN}} -print-resource-dir 
> 2>/dev/null || echo unknown
> +.endif
> +
>  ${X_}COMPILER_FEATURES=
>  .if (${${X_}COMPILER_TYPE} == "clang" && ${${X_}COMPILER_VERSION} >= 30300) 
> || \
>   (${${X_}COMPILER_TYPE} == "gcc" && ${${X_}COMPILER_VERSION} >= 40800)
> @@ -224,6 +228,7 @@ X_COMPILER_TYPE=  ${COMPILER_TYPE}
>  X_COMPILER_VERSION=  ${COMPILER_VERSION}
>  X_COMPILER_FREEBSD_VERSION=  ${COMPILER_FREEBSD_VERSION}
>  X_COMPILER_FEATURES= ${COMPILER_FEATURES}
> +X_COMPILER_RESOURCE_DIR= ${COMPILER_RESOURCE_DIR}
>  .endif   # ${cc} == "CC" || (${cc} == "XCC" && ${XCC} != ${CC})
>  
>  # Export the values so sub-makes don't have to look them up again, using the
> 
> Modified: head/share/mk/bsd.sys.mk
> ==
> --- head/share/mk/bsd.sys.mk  Mon Apr  6 23:28:24 2020(r359680)
> +++ head/share/mk/bsd.sys.mk  Mon Apr  6 23:38:46 2020(r359681)
> @@ -206,6 +206,21 @@ CWARNFLAGS+= -Wno-unknown-pragmas
>  # This warning is utter nonsense
>  CFLAGS+= -Wno-format-zero-length
>  
> +.if ${COMPILER_TYPE} == "clang"
> +# The headers provided by clang are incompatible with the FreeBSD headers.
> +# If the version of clang is not one that has been patched to omit the
> +# incompatible headers, we need to compile with -nobuiltininc and add the
> +# resource dir to the end of the search paths. This ensures that headers 
> such as
> +# immintrin.h are still found but stddef.h, etc. are picked up from FreeBSD.
> +#
> +# XXX: This is a hack to support complete external installs of clang while
> +# we work to synchronize our decleration guards with those in the clang tree.
> +.if ${MK_CLANG_BOOTSTRAP} == "no" && ${COMPILER_RESOURCE_DIR} != "unknown" 
> && \
> +!defined(BOOTSTRAPPING)

I just realized MK_CLANG_BOOTSTRAP is not going to be defined here
outside of the tree. Adding :Uno will fix it. Keep in mind this current
change and the next will affect ports. It looks like by default clang
will always get these flags added on.

> +CFLAGS+=-nobuiltininc -idirafter ${COMPILER_RESOURCE_DIR}/include
> +.endif
> +.endif
> +
>  CLANG_OPT_SMALL= -mstack-alignment=8 -mllvm -inline-threshold=3\
>-mllvm -simplifycfg-dup-ret
>  .if 

svn commit: r359681 - in head: . share/mk

2020-04-06 Thread Brooks Davis
Author: brooks
Date: Mon Apr  6 23:38:46 2020
New Revision: 359681
URL: https://svnweb.freebsd.org/changeset/base/359681

Log:
  Fix compilation with upstream clang builtin headers.
  
  By using -nobuiltininc and adding the clang builtin headers resource dir
  to the end of the compiler header search path, we can still find headers
  such as immintrin.h but find the FreeBSD version of stddef.h/stdarg.h/..
  first.
  
  This is a workaround until we are able to settle on and complete a plan
  to harmonize guard macros with LLVM.  We've mostly worked out this on
  FreeBSD systems by removing select headers from the installed set of
  devel/llvm*, but that isn't a good solution for cross build.
  
  Submitted by: arichardson
  Obtained from:CheriBSD
  Sponsored by: DARPA, AFRL
  Differential Revision:https://reviews.freebsd.org/D17002

Modified:
  head/Makefile.inc1
  head/share/mk/bsd.compiler.mk
  head/share/mk/bsd.sys.mk

Modified: head/Makefile.inc1
==
--- head/Makefile.inc1  Mon Apr  6 23:28:24 2020(r359680)
+++ head/Makefile.inc1  Mon Apr  6 23:38:46 2020(r359681)
@@ -337,6 +337,7 @@ _TOOLCHAIN_METADATA_VARS=   COMPILER_VERSION \
COMPILER_TYPE \
COMPILER_FEATURES \
COMPILER_FREEBSD_VERSION \
+   COMPILER_RESOURCE_DIR \
LINKER_VERSION \
LINKER_FEATURES \
LINKER_TYPE \

Modified: head/share/mk/bsd.compiler.mk
==
--- head/share/mk/bsd.compiler.mk   Mon Apr  6 23:28:24 2020
(r359680)
+++ head/share/mk/bsd.compiler.mk   Mon Apr  6 23:38:46 2020
(r359681)
@@ -143,7 +143,7 @@ _cc_vars+=XCC X_
 # The value is only used/exported for the same environment that impacts
 # CC and COMPILER_* settings here.
 _exported_vars=${X_}COMPILER_TYPE ${X_}COMPILER_VERSION \
-   ${X_}COMPILER_FREEBSD_VERSION
+   ${X_}COMPILER_FREEBSD_VERSION ${X_}COMPILER_RESOURCE_DIR
 ${X_}_cc_hash= ${${cc}}${MACHINE}${PATH}
 ${X_}_cc_hash:=${${X_}_cc_hash:hash}
 # Only import if none of the vars are set somehow else.
@@ -201,6 +201,10 @@ ${X_}COMPILER_FREEBSD_VERSION= unknown
 .endif
 .endif
 
+.if !defined(${X_}COMPILER_RESOURCE_DIR)
+${X_}COMPILER_RESOURCE_DIR!=   ${${cc}:N${CCACHE_BIN}} -print-resource-dir 
2>/dev/null || echo unknown
+.endif
+
 ${X_}COMPILER_FEATURES=
 .if (${${X_}COMPILER_TYPE} == "clang" && ${${X_}COMPILER_VERSION} >= 30300) || 
\
(${${X_}COMPILER_TYPE} == "gcc" && ${${X_}COMPILER_VERSION} >= 40800)
@@ -224,6 +228,7 @@ X_COMPILER_TYPE=${COMPILER_TYPE}
 X_COMPILER_VERSION=${COMPILER_VERSION}
 X_COMPILER_FREEBSD_VERSION=${COMPILER_FREEBSD_VERSION}
 X_COMPILER_FEATURES=   ${COMPILER_FEATURES}
+X_COMPILER_RESOURCE_DIR=   ${COMPILER_RESOURCE_DIR}
 .endif # ${cc} == "CC" || (${cc} == "XCC" && ${XCC} != ${CC})
 
 # Export the values so sub-makes don't have to look them up again, using the

Modified: head/share/mk/bsd.sys.mk
==
--- head/share/mk/bsd.sys.mkMon Apr  6 23:28:24 2020(r359680)
+++ head/share/mk/bsd.sys.mkMon Apr  6 23:38:46 2020(r359681)
@@ -206,6 +206,21 @@ CWARNFLAGS+=   -Wno-unknown-pragmas
 # This warning is utter nonsense
 CFLAGS+=   -Wno-format-zero-length
 
+.if ${COMPILER_TYPE} == "clang"
+# The headers provided by clang are incompatible with the FreeBSD headers.
+# If the version of clang is not one that has been patched to omit the
+# incompatible headers, we need to compile with -nobuiltininc and add the
+# resource dir to the end of the search paths. This ensures that headers such 
as
+# immintrin.h are still found but stddef.h, etc. are picked up from FreeBSD.
+#
+# XXX: This is a hack to support complete external installs of clang while
+# we work to synchronize our decleration guards with those in the clang tree.
+.if ${MK_CLANG_BOOTSTRAP} == "no" && ${COMPILER_RESOURCE_DIR} != "unknown" && \
+!defined(BOOTSTRAPPING)
+CFLAGS+=-nobuiltininc -idirafter ${COMPILER_RESOURCE_DIR}/include
+.endif
+.endif
+
 CLANG_OPT_SMALL= -mstack-alignment=8 -mllvm -inline-threshold=3\
 -mllvm -simplifycfg-dup-ret
 .if ${COMPILER_VERSION} >= 30500 && ${COMPILER_VERSION} < 30700
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"