diff --git a/Makefile b/Makefile
index e63e3ff5dafc0e486a996090c279854ef69d844f..86d8dcab183902462161a90826058a74070ec6b0 100644
--- a/Makefile
+++ b/Makefile
@@ -16,7 +16,7 @@ OD=arm-none-eabi-objdump
 
 else
 # CLANG
-CC=clang 
+CC=clang
 LD=llvm-link
 CC-native=arm-none-eabi-gcc
 #LD-native=arm-none-eabi-ld
@@ -46,29 +46,30 @@ OOCDFLAGS = -f interface/stlink-v2-1.cfg -f stm32f4x.cfg
 
 # STM32F401
 ifeq "$(MAKECMDGOALS)" "rel"
-DEFS = -DSTM32F40XX -DHSE_VALUE=8000000 -DTRACE -DOS_USE_TRACE_ITM 
+DEFS = -DSTM32F40XX -DSTM32F401xE -DHSE_VALUE=8000000 -DTRACE -DOS_USE_TRACE_ITM 
 else ifeq "$(MAKECMDGOALS)" "wcet"
-DEFS = -DSTM32F40XX -DHSE_VALUE=8000000 -DTRACE -DOS_USE_TRACE_ITM -DKLEE_WCET
+DEFS = -DSTM32F40XX -DSTM32F401xE -DHSE_VALUE=8000000 -DTRACE -DOS_USE_TRACE_ITM -DKLEE_WCET
 else
-DEFS = -DSTM32F40XX -DHSE_VALUE=8000000 -DKLEE
+DEFS = -DSTM32F40XX -DSTM32F401xE -DHSE_VALUE=8000000 -DKLEE
 endif
 
 # Definitions
 #ifeq "$(MAKECMDGOALS)" "debug"
-#DEFS = -DnoUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000 -DOS_USE_TRACE_ITM -DDEBUG -DxOS_USE_SEMIHOSTING -DTRACE -DxOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F746xx
 #else
+#DEFS = -DnoUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000 -DOS_USE_TRACE_ITM -DDEBUG -DxOS_USE_SEMIHOSTING -DTRACE -DxOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F746xx
 #DEFS = -DnoUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000 -DxOS_USE_SEMIHOSTING -DxOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F746xx
 #endif
 
 # Optimize for size
 #OPTIMIZE       = -Os
 # No optimization at all
-OPTIMIZE       = -O0
+OPTIMIZE       = -O0 -Xclang -disable-O0-optnone 
 
 #INCSEARCH = include
 #SRCIGNORE =! -iname 'tiny_printf.c'
 #INCLUDES := $(shell find $(INCSEARCH) -name '*.h' -exec dirname {} \; | uniq)
 INCLUDES = -I"include" \
+		   -I"/usr/arm-none-eabi/include" \
 		   -I"system" \
 		   -I"system/include/cmsis" \
 		   -I"system/include/cmsis/stm32f4-hal"
@@ -78,6 +79,7 @@ INCLUDES = -I"include" \
 		   #-I"Libraries/Device/STM32F4xx/Include"
 
 MCU = cortex-m4
+TARGETTRIPLE = armv7m-none-eabi
 
 ifeq "$(MAKECMDGOALS)" "gcc"
 # GCC
@@ -89,14 +91,14 @@ else
 # Start of the CLANG block
 
 # CLANG
-CLANGMCFLAGS =-target arm-none-eabi -fno-integrated-as
+CLANGMCFLAGS =-target $(TARGETTRIPLE) # -fno-integrated-as
 # MCU Specific flags
 MCFLAGS = -mcpu=$(MCU) -mlittle-endian -mthumb -ffreestanding \
 	-fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fshort-enums \
 	-g3 -std=gnu11 -Wall -Wextra 
 
 # For creating object file from LLVM IR
-LLCFLAGS = -mtriple=arm-none-eabi -march=thumb -mcpu=$(MCU) -filetype=obj -float-abi=hard
+LLCFLAGS = -mtriple=$(TARGETTRIPLE) -march=thumb -mcpu=$(MCU) -filetype=obj -float-abi=hard
 
 # Assembler flags
 ASFLAGS = -mcpu=$(MCU) -mlittle-endian -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard
@@ -108,7 +110,7 @@ LDFLAGS = --specs=nosys.specs  -Wl,-T "ldscripts/flash.ld" -nostartfiles -Wl,-no
 # Not used:
 #--specs=nano.specs --specs=nosys.specs  -lc -lnosys 
 
-CLANGLDFLAGS = -flto -target arm-none-eabi -mfloat-abi=hard # -save-temps=obj
+CLANGLDFLAGS = -flto -target $(TARGETTRIPLE) -mfloat-abi=hard # -save-temps=obj
 #or if you want .bc in objects -save-temps=obj
 
 # Build the compile command