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
