blob: 8aabc77bb29221f698ca80916920db9039a0129b [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 MODULESNAME
ifdef USEDMODULES
ProjLibsPaths := $(addprefix $(LibDir)/,$(USEDMODULES))
$(MODULESNAME).bc : $(ProjLibsPaths)
$(Echo) Building $(BuildMode) Bytecode Module $(notdir $@)
$(Verb) $(LLVMLD) -link-as-library -o $@ $(ProjLibsPaths)
$(MODULESNAME).s : $(MODULESNAME).bc
$(Echo) Building $(BuildMode) Assembly file $(notdir $@)
$(Verb) $(LOPT) -load=$(LibDir)/StaticGCPass$(SHLIBEXT) -std-compile-opts -StaticGCPass -f $(MODULESNAME).bc -o vmkitoptimized.bc
$(Verb) $(LLC) -disable-fp-elim -f vmkitoptimized.bc -o $(MODULESNAME).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 vmkitoptimized.bc $(MODULESNAME).bc $(MODULESNAME).s
endif
endif
ifdef RUN_ANT
ifdef ANT
ADDITIONAL_ARGS := -load-bc=$(LibDir)/MMTKRuntime.bc
all::
$(Verb) $(ANT)
$(Echo) Building $(BuildMode) $(JARNAME).jar $(notdir $@)
$(Verb) $(LOPT) -load=$(LibDir)/JITGCPass$(SHLIBEXT) -std-compile-opts -JITGCPass -f $(LibDir)/MMTKAlloc.bc -o $(LibDir)/MMTKAlloc.bc
$(Verb) $(VMJC) -std-compile-opts $(ADDITIONAL_ARGS) -load=$(LibDir)/MMTKFake$(SHLIBEXT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -LowerMagic -verify $(JARNAME).jar -disable-exceptions -disable-cooperativegc -with-clinit=org/mmtk/vm/VM,org/mmtk/utility/*,org/mmtk/policy/*,org/j3/config/* -Dmmtk.hostjvm=org.j3.mmtk.Factory -o $(JARNAME).bc -Dmmtk.properties=vmkit.properties -disable-stubs -assume-compiled -llvm-lazy
$(Verb) $(LOPT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -std-compile-opts -LowerJavaRT -f $(JARNAME).bc -o $(JARNAME)-optimized.bc
$(Verb) $(LLVMLD) -r -o $(LibDir)/FinalMMTk.bc $(LibDir)/MMTKAlloc.bc $(JARNAME)-optimized.bc $(LibDir)/MMTKRuntime.bc
$(Verb) $(LOPT) -std-compile-opts $(LibDir)/FinalMMTk.bc -o $(LibDir)/FinalMMTk.bc
#$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=gcmalloc $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/lib/Mvm/Compiler/MMTkInline.inc
endif
clean-local::
$(Verb) $(RM) -rf classes $(JARNAME).jar $(JARNAME).bc $(JARNAME)-optimized.bc
endif