diff --git a/sys/conf/Makefile.amd64 b/sys/conf/Makefile.amd64 index d34359f1d30b..696ef55a3fb0 100644 --- a/sys/conf/Makefile.amd64 +++ b/sys/conf/Makefile.amd64 @@ -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 diff --git a/sys/conf/Makefile.i386 b/sys/conf/Makefile.i386 index 621ebff79e19..6b1eca42f1bb 100644 --- a/sys/conf/Makefile.i386 +++ b/sys/conf/Makefile.i386 @@ -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 diff --git a/sys/conf/Makefile.pc98 b/sys/conf/Makefile.pc98 index 28d0956912bc..9d0f25b57a57 100644 --- a/sys/conf/Makefile.pc98 +++ b/sys/conf/Makefile.pc98 @@ -30,6 +30,8 @@ S= ../../.. .endif .include "$S/conf/kern.pre.mk" +ASM_CFLAGS.mpboot.s= ${CLANG_NO_IAS34} + %BEFORE_DEPEND %OBJS diff --git a/sys/conf/kern.mk b/sys/conf/kern.mk index 3cf3d94e1d04..157f5b50a1b0 100644 --- a/sys/conf/kern.mk +++ b/sys/conf/kern.mk @@ -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}} diff --git a/sys/conf/kern.pre.mk b/sys/conf/kern.pre.mk index 21a42900f993..48982c5de5b6 100644 --- a/sys/conf/kern.pre.mk +++ b/sys/conf/kern.pre.mk @@ -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 diff --git a/sys/modules/bios/smapi/Makefile b/sys/modules/bios/smapi/Makefile index 30c9058dea2f..f55ab5af3bbf 100644 --- a/sys/modules/bios/smapi/Makefile +++ b/sys/modules/bios/smapi/Makefile @@ -8,3 +8,5 @@ SRCS= smapi.c smapi_bios.S \ bus_if.h device_if.h .include + +CFLAGS.smapi_bios.S= ${CLANG_NO_IAS34}