blob: 80be2ae466394fc1a9a1863389c3cd9c8cbdba94 [file] [log] [blame]
##===- tools/precompiler/trainer/Makefile ------------------*- Makefile -*-===##
#
# The VMKit project
#
# This file is distributed under the University of Illinois Open Source
# License. See LICENSE.TXT for details.
#
##===----------------------------------------------------------------------===##
LEVEL = ../../..
include $(LEVEL)/Makefile.config
BUILT_SOURCES = Precompiled.bc BootstrapClasses.bc
include $(LEVEL)/Makefile.common
PRECOMPILER := $(ToolDir)/precompiler$(EXEEXT)
ifndef VERBOSE
J3.Flags := > /dev/null
endif
HelloWorld.class: HelloWorld.java
$(Echo) "Compiling trainer"
$(Verb) javac $< -d .
generated.bc: $(PRECOMPILER) HelloWorld.class
$(Echo) "Pre-compiling bootstrap code"
$(Verb) $(PRECOMPILER) -cp $$PWD HelloWorld $(J3.Flags)
Precompiled.bc: HelloWorld.class $(LibDir)/StaticGCPass$(SHLIBEXT) $(LibDir)/StaticGCPrinter$(SHLIBEXT) generated.bc
$(Echo) "Building precompiled bootstrap code"
$(Verb) $(MKDIR) $(ObjDir)
$(Verb) $(LLC) -disable-branch-fold -disable-cfi -disable-debug-info-print -disable-fp-elim -O3 -load=$(LibDir)/StaticGCPrinter$(SHLIBEXT) generated.bc -o $(ObjDir)/Precompiled.s
$(Verb) $(CC) -c $(ObjDir)/Precompiled.s -o $(ObjDir)/Precompiled.o
$(Verb) $(Archive) $(LibDir)/libPrecompiled.a $(ObjDir)/Precompiled.o
$(Verb) $(Ranlib) $(LibDir)/libPrecompiled.a
$(Verb) $(CP) generated.bc Precompiled.bc
classes.bc: $(PRECOMPILER)
$(Echo) "Pre-compiling classes"
$(Verb) $(PRECOMPILER) -emit-class-bytes $(J3.Flags)
BootstrapClasses.bc: classes.bc
$(Echo) "Building precompiled classes"
$(Verb) $(MKDIR) $(ObjDir)
$(Verb) $(LLC) classes.bc -o $(ObjDir)/BootstrapClasses.s
$(Verb) $(CC) -c $(ObjDir)/BootstrapClasses.s -o $(ObjDir)/BootstrapClasses.o
$(Verb) $(Archive) $(LibDir)/libBootstrapClasses.a $(ObjDir)/BootstrapClasses.o
$(Verb) $(Ranlib) $(LibDir)/libBootstrapClasses.a
$(Verb) $(CP) classes.bc BootstrapClasses.bc
clean-local::
$(Verb) $(RM) -f HelloWorld.class generated.bc classes.bc Precompiled.bc BootstrapClasses.bc