diff --git a/os/common/startup/ARMCMx/compilers/LLVM/mk/clang.mk b/os/common/startup/ARMCMx/compilers/LLVM/mk/clang.mk index db0f1e4a8..812f277d2 100644 --- a/os/common/startup/ARMCMx/compilers/LLVM/mk/clang.mk +++ b/os/common/startup/ARMCMx/compilers/LLVM/mk/clang.mk @@ -1,19 +1,20 @@ -############################################################################## -# Compiler settings -# - -TRGT = aarch32- -CC = clang -CPPC = clang++ -LD = clang -CP = $(TRGT)objcopy -AS = $(TRGT)as -x assembler-with-cpp -AR = $(TRGT)ar -OD = $(TRGT)objdump -SZ = $(TRGT)size -HEX = $(CP) -O ihex -BIN = $(CP) -O binary - -# -# Compiler settings -############################################################################## +############################################################################## +# Compiler settings +# + +TRGT = llvm- +CC = clang +GCC_CC = arm-none-eabi-gcc +CPPC = clang++ +LD = $(GCC_CC) +CP = $(TRGT)objcopy +AS = $(TRGT)as -x assembler-with-cpp +AR = $(TRGT)ar +OD = $(TRGT)objdump +SZ = $(TRGT)size +HEX = $(CP) -O ihex +BIN = $(CP) -O binary + +# +# Compiler settings +############################################################################## diff --git a/os/common/startup/ARMCMx/compilers/LLVM/mk/rules.mk b/os/common/startup/ARMCMx/compilers/LLVM/mk/rules.mk index 0d6af76e4..b448f8d07 100644 --- a/os/common/startup/ARMCMx/compilers/LLVM/mk/rules.mk +++ b/os/common/startup/ARMCMx/compilers/LLVM/mk/rules.mk @@ -98,14 +98,13 @@ LSTDIR := $(BUILDDIR)/lst # Object files groups TCOBJS := $(addprefix $(OBJDIR)/, $(notdir $(TCSRC:.c=.o))) -TCPPOBJS := $(addprefix $(OBJDIR)/, $(notdir $(TCPPSRC:.cpp=.o))) +#TCPPOBJS := $(addprefix $(OBJDIR)/, $(notdir $(TCPPSRC:.cpp=.o))) +TCPPOBJS := $(addprefix $(OBJDIR)/, $(notdir $(patsubst %.cpp, %.o, $(filter %.cpp, $(TCPPSRC))))) +TCCOBJS := $(addprefix $(OBJDIR)/, $(notdir $(patsubst %.cc, %.o, $(filter %.cc, $(TCPPSRC))))) ASMOBJS := $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o))) ASMXOBJS := $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o))) -OBJS := $(ASMXOBJS) $(ASMOBJS) $(ACOBJS) $(TCOBJS) $(ACPPOBJS) $(TCPPOBJS) - -# Paths -IINCDIR := $(patsubst %,-I%,$(INCDIR) $(DINCDIR) $(UINCDIR)) -LLIBDIR := $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) +#OBJS := $(ASMXOBJS) $(ASMOBJS) $(ACOBJS) $(TCOBJS) $(ACPPOBJS) $(TCPPOBJS) +OBJS := $(ASMXOBJS) $(ASMOBJS) $(ACOBJS) $(TCOBJS) $(ACPPOBJS) $(TCPPOBJS) $(TCCOBJS) # Macros DEFS := $(DDEFS) $(UDEFS) @@ -121,11 +120,18 @@ ASFLAGS = $(MCFLAGS) $(OPT) $(ADEFS) ASXFLAGS = $(MCFLAGS) $(OPT) $(ADEFS) CFLAGS = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) $(DEFS) CPPFLAGS = $(MCFLAGS) $(OPT) $(CPPOPT) $(CPPWARN) $(DEFS) -#ASFLAGS = $(MCFLAGS) $(OPT) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.s=.lst)) $(ADEFS) -#ASXFLAGS = $(MCFLAGS) $(OPT) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.S=.lst)) $(ADEFS) -#CFLAGS = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.c=.lst)) $(DEFS) -#CPPFLAGS = $(MCFLAGS) $(OPT) $(CPPOPT) $(CPPWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.cpp=.lst)) $(DEFS) -LDFLAGS = $(MCFLAGS) $(OPT) -nostartfiles $(LLIBDIR) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,--library-path=$(STARTUPLD),--script=$(LDSCRIPT)$(LDOPT) + +ARM_CORTEXM_SYSROOT := \ + $(shell $(GCC_CC) $(CFLAGS) -print-sysroot 2>&1) +ARM_CORTEXM_MULTI_DIR := \ + $(shell $(GCC_CC) $(CFLAGS) -print-multi-directory 2>&1) +ARM_CORTEXM_BUILTINS := \ + $(shell $(GCC_CC) $(CFLAGS) -print-libgcc-file-name 2>&1) + +ASFLAGS += --target=arm-none-eabi --sysroot=$(ARM_CORTEXM_SYSROOT) +ASXFLAGS += --target=arm-none-eabi --sysroot=$(ARM_CORTEXM_SYSROOT) +CFLAGS += --target=arm-none-eabi --sysroot=$(ARM_CORTEXM_SYSROOT) +CPPFLAGS += --target=arm-none-eabi --sysroot=$(ARM_CORTEXM_SYSROOT) # Generate dependency information ASFLAGS += -MD -MP -MF $(DEPDIR)/$(@F).d @@ -133,6 +139,11 @@ ASXFLAGS += -MD -MP -MF $(DEPDIR)/$(@F).d CFLAGS += -MD -MP -MF $(DEPDIR)/$(@F).d CPPFLAGS += -MD -MP -MF $(DEPDIR)/$(@F).d +# Paths +IINCDIR := $(patsubst %,-I%,$(INCDIR) $(DINCDIR) $(UINCDIR)) +LLIBDIR := $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR) $(ARM_CORTEXM_SYSROOT)/lib/$(ARM_CORTEXM_MULTI_DIR)) +LDFLAGS = $(MCFLAGS) $(OPT) -nostartfiles $(LLIBDIR) $(ARM_CORTEXM_BUILTINS) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,--library-path=$(STARTUPLD),--script=$(LDSCRIPT)$(LDOPT) + # Paths where to search for sources VPATH = $(SRCPATHS) @@ -174,6 +185,15 @@ else @$(CPPC) -c $(CPPFLAGS) -I. $(IINCDIR) $< -o $@ endif +$(TCCOBJS) : $(OBJDIR)/%.o : %.cc $(MAKEFILE_LIST) +ifeq ($(USE_VERBOSE_COMPILE),yes) + @echo + $(CPPC) -c $(CPPFLAGS) -I. $(IINCDIR) $< -o $@ +else + @echo Compiling $(