Clang's 3.5 integrated assembler now handles these files correctly (it
has support for the .codeXX directives). However, it is desirable, for a time, to allow kernels to be built with clang 3.4. Historically, it has been advantageous to allow stable X-1 to build kernels the old way (so long as the impact of doing so is small), and this restores that ability. Also, centralize the addition of ${ASM_CFLAGS.${.IMPSRC}}, place it in kern.mk rather than kern.pre.mk so that all modules can benefit, and give the same treatment to CFLAGS in kern.mk as well.
This commit is contained in:
parent
fe94dc19e8
commit
9aca3e0f2b
@ -37,6 +37,9 @@ INCLUDES+= -I$S/contrib/libfdt
|
||||
CFLAGS+= -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer
|
||||
.endif
|
||||
|
||||
ASM_CFLAGS.acpi_wakecode.S= ${CLANG_NO_IAS34}
|
||||
ASM_CFLAGS.mpboot.S= ${CLANG_NO_IAS34}
|
||||
|
||||
%BEFORE_DEPEND
|
||||
|
||||
%OBJS
|
||||
|
@ -32,6 +32,9 @@ S= ../../..
|
||||
|
||||
INCLUDES+= -I$S/contrib/libfdt
|
||||
|
||||
ASM_CFLAGS.acpi_wakecode.S= ${CLANG_NO_IAS34}
|
||||
ASM_CFLAGS.mpboot.s= ${CLANG_NO_IAS34}
|
||||
|
||||
%BEFORE_DEPEND
|
||||
|
||||
%OBJS
|
||||
|
@ -30,6 +30,8 @@ S= ../../..
|
||||
.endif
|
||||
.include "$S/conf/kern.pre.mk"
|
||||
|
||||
ASM_CFLAGS.mpboot.s= ${CLANG_NO_IAS34}
|
||||
|
||||
%BEFORE_DEPEND
|
||||
|
||||
%OBJS
|
||||
|
@ -29,9 +29,16 @@ NO_WSOMETIMES_UNINITIALIZED= -Wno-error-sometimes-uninitialized
|
||||
CWARNEXTRA?= -Wno-error-tautological-compare -Wno-error-empty-body \
|
||||
-Wno-error-parentheses-equality -Wno-error-unused-function \
|
||||
-Wno-error-pointer-sign -Wno-error-format -Wno-error-parentheses
|
||||
|
||||
CLANG_NO_IAS= -no-integrated-as
|
||||
.if ${COMPILER_VERSION} < 30500
|
||||
# XXX: clang < 3.5 integrated-as doesn't grok .codeNN directives
|
||||
CLANG_NO_IAS34= -no-integrated-as
|
||||
.endif
|
||||
.endif
|
||||
|
||||
.if ${COMPILER_TYPE} == "gcc"
|
||||
GCC_MS_EXTENSIONS= -fms-extensions
|
||||
.if ${COMPILER_VERSION} >= 40300
|
||||
# Catch-all for all the things that are in our tree, but for which we're
|
||||
# not yet ready for this compiler. Note: we likely only really "support"
|
||||
@ -168,9 +175,8 @@ CFLAGS+= -fstack-protector
|
||||
CFLAGS+= -gdwarf-2
|
||||
.endif
|
||||
|
||||
CFLAGS+= ${CWARNEXTRA}
|
||||
|
||||
CFLAGS+= ${CFLAGS.${COMPILER_TYPE}}
|
||||
CFLAGS+= ${CWARNEXTRA} ${CWARNFLAGS} ${CWARNFLAGS.${.IMPSRC:T}}
|
||||
CFLAGS+= ${CFLAGS.${COMPILER_TYPE}} ${CFLAGS.${.IMPSRC}}
|
||||
|
||||
# Tell bmake not to mistake standard targets for things to be searched for
|
||||
# or expect to ever be up-to-date.
|
||||
@ -199,6 +205,3 @@ CFLAGS+= -std=iso9899:1999
|
||||
.else # CSTD
|
||||
CFLAGS+= -std=${CSTD}
|
||||
.endif # CSTD
|
||||
|
||||
# Pull in any CWARNFLAGS the modules have added.
|
||||
CFLAGS+= ${CWARNFLAGS} ${CWARNFLAGS.${.IMPSRC:T}}
|
||||
|
@ -103,13 +103,7 @@ CFLAGS.gcc+=${CFLAGS_ARCH_PARAMS}
|
||||
WERROR?= -Werror
|
||||
|
||||
# XXX LOCORE means "don't declare C stuff" not "for locore.s".
|
||||
ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS}
|
||||
|
||||
.if ${COMPILER_TYPE} == "clang"
|
||||
CLANG_NO_IAS= -no-integrated-as
|
||||
.else
|
||||
GCC_MS_EXTENSIONS= -fms-extensions
|
||||
.endif
|
||||
ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} ${ASM_CFLAGS.${.IMPSRC}}
|
||||
|
||||
.if defined(PROFLEVEL) && ${PROFLEVEL} >= 1
|
||||
CFLAGS+= -DGPROF
|
||||
|
@ -8,3 +8,5 @@ SRCS= smapi.c smapi_bios.S \
|
||||
bus_if.h device_if.h
|
||||
|
||||
.include <bsd.kmod.mk>
|
||||
|
||||
CFLAGS.smapi_bios.S= ${CLANG_NO_IAS34}
|
||||
|
Loading…
Reference in New Issue
Block a user