blob: c6e1d5501d50f6b04d3b1e2680e019193006bee3 [file] [log] [blame]
ifdef VMKIT_RUNTIME
.PRECIOUS: LLVMRuntime.inc
# All of these files depend on tblgen and the .td files.
LLVMRuntime.inc : $(LLVMAS) $(LLC) $(VMKIT_RUNTIME)
LLVMRuntime.gen.ll : $(VMKIT_RUNTIME)
$(Verb) cat $(VMKIT_RUNTIME) > LLVMRuntime.gen.ll
LLVMRuntime.inc : LLVMRuntime.gen.ll
$(Echo) "Building LLVM runtime with $(VMKIT_RUNTIME)"
$(Verb) $(LLVMAS) -f $(<F) -o - | $(LLC) -march=cpp -cppgen=contents -f -o $@
clean-local::
$(Verb) $(RM) -f LLVMRuntime.inc LLVMRuntime.gen.ll LLVMRuntime.bc
endif
ifdef VMKIT_ASSEMBLY
.PRECIOUS: LLVMAssembly.s
LLVMAssembly.o : $(LLVMAS) $(LLC) $(VMKIT_ASSEMBLY)
LLVMAssembly.gen.ll : $(VMKIT_ASSEMBLY)
$(Verb) cat $(VMKIT_ASSEMBLY) > LLVMAssembly.gen.ll
LLVMAssembly.s : LLVMAssembly.gen.ll
$(Echo) "Building LLVM assembly with $(VMKIT_ASSEMBLY)"
$(Verb) $(LLVMAS) -f $(<F) -o - | $(LLC) -f -o $@
$(ObjDir)/%.lo $(ObjDir)/%.o: %.s $(ObjDir)/.dir $(BUILT_SOURCES)
$(Echo) "Compiling $*.s for $(BuildMode) build " $(PIC_FLAG)
$(Verb) $(GAS) $< -o $(ObjDir)/$*.o
clean-local::
$(Verb) $(RM) -f LLVMAssembly.s LLVMAssembly.bc LLVMAssembly.gen.ll
endif
ifndef VMJC
VMJC := $(ToolDir)/vmjc$(EXEEXT)
endif
ifdef VMJC_ASSEMBLY
.PRECIOUS: glibj.zip.s
glibj.zip.s : $(LOPT) $(LLC) $(VMJC)
glibj.zip.bc :
$(Echo) "Compiling glibj.zip to llvm"
$(Verb) if test -d $(GLIBJ); then \
$(VMJC) -f -std-compile-opts $(GLIBJ)/glibj.zip -o glibj.zip.bc; \
else \
$(VMJC) -f -std-compile-opts $(GLIBJ) -o glibj.zip.bc; \
fi
glibj-optimized.zip.bc : glibj.zip.bc
$(Echo) "Optimizing glibj.zip"
$(Verb) $(LOPT) -std-compile-opts -f glibj.zip.bc -o glibj-optimized.zip.bc
glibj.zip.s : glibj-optimized.zip.bc
$(Echo) "Compiling glibj.zip.bc to native"
$(Verb) $(LLC) -relocation-model=pic -disable-fp-elim -f glibj-optimized.zip.bc -o glibj.zip.s
$(ObjDir)/%.o: %.s $(ObjDir)/.dir $(BUILT_SOURCES)
$(Echo) "Compiling $*.s for $(BuildMode) build" $(PIC_FLAG)
$(Verb) $(Compile.C) $< -o $(ObjDir)/$*.o
clean-local::
$(Verb) $(RM) -f glibj.zip.s glibj.zip.bc glibj-optimized.zip.bc
endif
ifdef VMKIT_BUILD_ARCHIVE
LibName.A := $(LibDir)/lib$(VMKIT_LIBRARYNAME).a
all-local:: $(LibName.A)
$(LibName.A): $(ProjLibsPaths) $(LibDir)/.dir
$(Echo) Building $(BuildMode) Archive Library $(notdir $@)
-$(Verb) $(RM) -f $@
$(Verb) $(Archive) $@ $(ProjLibsPaths)
$(Verb) $(Ranlib) $@
clean-local::
ifneq ($(strip $(LibName.A)),)
-$(Verb) $(RM) -f $(LibName.A)
endif
endif
ifdef TOOLNAME
ifdef USEDMODULES
ProjLibsPaths := $(addprefix $(LibDir)/,$(USEDMODULES))
$(TOOLNAME).bc : $(ProjLibsPaths)
$(Echo) Building $(BuildMode) Bytecode Module $(notdir $@)
$(Verb) $(LLVMLD) -L$(CFERuntimeLibDir) -r -o $@ $(ProjLibsPaths)
$(TOOLNAME).s : $(TOOLNAME).bc
$(Echo) Building $(BuildMode) Assembly file $(notdir $@)
$(Verb) $(LOPT) -f $(TOOLNAME).bc -o $(TOOLNAME)-optimized.bc
$(Verb) $(LLC) -disable-fp-elim -f $(TOOLNAME)-optimized.bc -o $(TOOLNAME).s
$(ObjDir)/%.o: %.s $(ObjDir)/.dir $(BUILT_SOURCES)
$(Echo) "Compiling $*.s for $(BuildMode) build" $(PIC_FLAG)
$(Verb) $(Compile.C) $< -o $(ObjDir)/$*.o
clean-local::
$(Verb) $(RM) -f $(TOOLNAME)-optimized.bc $(TOOLNAME).bc $(TOOLNAME).s
endif
endif