|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH] Add support for clang compilation
Remove some flags (-fno-tree-sra, -mno-fp-ret-in-387, -fno-reorder-blocks) to
add support for clang compilation.
Add the CONFIG_COMPILER variable to define the compiler to be used (gcc or
clang). By default the variable is set to gcc.
Use 'make COMPILER=clang' to compile with clang.
Signed-off-by: Alice Suiu <alicesuiu17@xxxxxxxxx>
---
Makefile | 12 ++++++++++--
Makefile.uk | 6 +++---
arch/x86/x86_64/Makefile.uk | 6 +++---
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/Makefile b/Makefile
index 84adb16..5828891 100644
--- a/Makefile
+++ b/Makefile
@@ -481,11 +481,19 @@ ifneq ("$(origin CROSS_COMPILE)","undefined")
CONFIG_CROSS_COMPILE := $(CROSS_COMPILE:"%"=%)
endif
+# Use 'make COMPILER=clang' to compile with clang
+ifeq ("$(origin COMPILER)", "command line")
+ CONFIG_COMPILER := $(COMPILER)
+endif
+ifndef CONFIG_COMPILER
+ CONFIG_COMPILER = gcc
+endif
+
include $(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/Compiler.uk
# Make variables (CC, etc...)
-LD := $(CONFIG_CROSS_COMPILE)gcc
-CC := $(CONFIG_CROSS_COMPILE)gcc
+LD := $(CONFIG_CROSS_COMPILE)$(CONFIG_COMPILER)
+CC := $(CONFIG_CROSS_COMPILE)$(CONFIG_COMPILER)
CPP := $(CC)
CXX := $(CPP)
GOC := $(CONFIG_CROSS_COMPILE)gccgo-7
diff --git a/Makefile.uk b/Makefile.uk
index 3f01a25..3890d62 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -8,17 +8,17 @@ ASFLAGS += -U __linux__ -U __FreeBSD__ -U __sun__
-D__ASSEMBLY__
ASINCLUDES += -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/include
CFLAGS += -U __linux__ -U __FreeBSD__ -U __sun__
-CFLAGS += -fno-stack-protector -fno-omit-frame-pointer -fno-tree-sra
+CFLAGS += -fno-stack-protector -fno-omit-frame-pointer
CFLAGS += -Wall -Wextra
CINCLUDES += -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/include
CXXFLAGS += -U __linux__ -U __FreeBSD__ -U __sun__
-CXXFLAGS += -fno-stack-protector -fno-omit-frame-pointer -fno-tree-sra
+CXXFLAGS += -fno-stack-protector -fno-omit-frame-pointer
CXXFLAGS += -Wall -Wextra
CXXINCLUDES += -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/include
GOCFLAGS += -U __linux__ -U __FreeBSD__ -U __sun__
-GOCFLAGS += -fno-stack-protector -fno-omit-frame-pointer -fno-tree-sra
+GOCFLAGS += -fno-stack-protector -fno-omit-frame-pointer
GOCFLAGS += -fno-split-stack -Wall -Wextra
GOCINCLUDES += -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/include
diff --git a/arch/x86/x86_64/Makefile.uk b/arch/x86/x86_64/Makefile.uk
index 8ec7d6b..285a4e9 100644
--- a/arch/x86/x86_64/Makefile.uk
+++ b/arch/x86/x86_64/Makefile.uk
@@ -1,9 +1,9 @@
ASFLAGS += -D__X86_64__
ASFLAGS += -m64
CFLAGS += -D__X86_64__
-CFLAGS += -m64 -mno-red-zone -fno-reorder-blocks
-fno-asynchronous-unwind-tables
+CFLAGS += -m64 -mno-red-zone -fno-asynchronous-unwind-tables
CXXFLAGS += -D__X86_64__
-CXXFLAGS += -m64 -mno-red-zone -fno-reorder-blocks
-fno-asynchronous-unwind-tables
+CXXFLAGS += -m64 -mno-red-zone -fno-asynchronous-unwind-tables
CINCLUDES += -I$(CONFIG_UK_BASE)/arch/x86/x86_64/include
ASINCLUDES += -I$(CONFIG_UK_BASE)/arch/x86/x86_64/include
@@ -11,7 +11,7 @@ CXXINCLUDES += -I$(CONFIG_UK_BASE)/arch/x86/x86_64/include
# compiler flags to prevent use of extended (FP, SSE, AVX) registers.
# This is for files that contain trap/exception/interrupt handlers
-NO_X86_EXTREGS_FLAGS := -mno-80387 -mno-fp-ret-in-387 -mno-mmx -mno-sse
-mno-avx
+NO_X86_EXTREGS_FLAGS := -mno-80387 -mno-mmx -mno-sse -mno-avx
ASFLAGS-$(CONFIG_MARCH_X86_64_GENERIC) += -mtune=generic
CFLAGS-$(CONFIG_MARCH_X86_64_GENERIC) += -mtune=generic
--
2.17.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |