diff options
author | Warner Losh <imp@FreeBSD.org> | 2015-01-05 12:28:22 +0000 |
---|---|---|
committer | Warner Losh <imp@FreeBSD.org> | 2015-01-05 12:28:22 +0000 |
commit | 9aca3e0f2bbcceebd1e7dc87f3f16f562a463b9e (patch) | |
tree | 7d5f53ed6c06720d9d9f32e3b8dd14d5c4d77b6c /sys | |
parent | fe94dc19e84e9c1604d4ac511197d2fa0d8438cf (diff) |
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.
Notes
Notes:
svn path=/head/; revision=276696
Diffstat (limited to 'sys')
-rw-r--r-- | sys/conf/Makefile.amd64 | 3 | ||||
-rw-r--r-- | sys/conf/Makefile.i386 | 3 | ||||
-rw-r--r-- | sys/conf/Makefile.pc98 | 2 | ||||
-rw-r--r-- | sys/conf/kern.mk | 15 | ||||
-rw-r--r-- | sys/conf/kern.pre.mk | 8 | ||||
-rw-r--r-- | sys/modules/bios/smapi/Makefile | 2 |
6 files changed, 20 insertions, 13 deletions
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 <bsd.kmod.mk> + +CFLAGS.smapi_bios.S= ${CLANG_NO_IAS34} |