Page MenuHomeFreeBSD

D17002.id70286.diff
No OneTemporary

D17002.id70286.diff

Index: head/Makefile.inc1
===================================================================
--- head/Makefile.inc1
+++ head/Makefile.inc1
@@ -337,6 +337,7 @@
COMPILER_TYPE \
COMPILER_FEATURES \
COMPILER_FREEBSD_VERSION \
+ COMPILER_RESOURCE_DIR \
LINKER_VERSION \
LINKER_FEATURES \
LINKER_TYPE \
Index: head/share/mk/bsd.compiler.mk
===================================================================
--- head/share/mk/bsd.compiler.mk
+++ head/share/mk/bsd.compiler.mk
@@ -143,7 +143,7 @@
# 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 @@
.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_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
Index: head/share/mk/bsd.sys.mk
===================================================================
--- head/share/mk/bsd.sys.mk
+++ head/share/mk/bsd.sys.mk
@@ -206,6 +206,21 @@
# 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

File Metadata

Mime Type
text/plain
Expires
Mon, Oct 27, 3:41 AM (8 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24268322
Default Alt Text
D17002.id70286.diff (2 KB)

Event Timeline