blob: 1a071d9b09e14b44b06de1de221c78b0617c7b27 [file] [log] [blame]
VERSION = 0.3
CLASSPATH_CONFIG = tools/classpath-config
CLASSPATH_INSTALL_DIR ?= $(shell ./tools/classpath-config)
GLIBJ = $(CLASSPATH_INSTALL_DIR)/share/classpath/glibj.zip
MAKEFLAGS += --no-print-directory
uname_M := $(shell uname -m | sed -e s/i.86/i386/ | sed -e s/i86pc/i386/)
ARCH := $(shell sh scripts/gcc-arch.sh $(CC))
SYS := $(shell uname -s | tr A-Z a-z)
include scripts/build/arch.mk
ARCH_CONFIG=arch/$(ARCH)/include/arch/config$(ARCH_POSTFIX).h
# Make the build silent by default
V =
PROGRAMS = jato
LIB_FILE := libjvm.a
include arch/$(ARCH)/Makefile$(ARCH_POSTFIX)
include sys/$(SYS)-$(ARCH)/Makefile
LIB_OBJS += $(ARCH_OBJS)
LIB_OBJS += $(SYS_OBJS)
LIB_OBJS += cafebabe/annotations_attribute.o
LIB_OBJS += cafebabe/attribute_array.o
LIB_OBJS += cafebabe/attribute_info.o
LIB_OBJS += cafebabe/class.o
LIB_OBJS += cafebabe/code_attribute.o
LIB_OBJS += cafebabe/constant_pool.o
LIB_OBJS += cafebabe/constant_value_attribute.o
LIB_OBJS += cafebabe/enclosing_method_attribute.o
LIB_OBJS += cafebabe/error.o
LIB_OBJS += cafebabe/exceptions_attribute.o
LIB_OBJS += cafebabe/field_info.o
LIB_OBJS += cafebabe/inner_classes_attribute.o
LIB_OBJS += cafebabe/line_number_table_attribute.o
LIB_OBJS += cafebabe/method_info.o
LIB_OBJS += cafebabe/source_file_attribute.o
LIB_OBJS += cafebabe/stack_map_table_attribute.o
LIB_OBJS += cafebabe/stream.o
LIB_OBJS += jit/abc-removal.o
LIB_OBJS += jit/args.o
LIB_OBJS += jit/arithmetic-bc.o
LIB_OBJS += jit/basic-block.o
LIB_OBJS += jit/bc-offset-mapping.o
LIB_OBJS += jit/branch-bc.o
LIB_OBJS += jit/bytecode-to-ir.o
LIB_OBJS += jit/cfg-analyzer.o
LIB_OBJS += jit/clobber.o
LIB_OBJS += jit/compilation-unit.o
LIB_OBJS += jit/compiler.o
LIB_OBJS += jit/constant-pool.o
LIB_OBJS += jit/cu-mapping.o
LIB_OBJS += jit/dce.o
LIB_OBJS += jit/dominance.o
LIB_OBJS += jit/elf.o
LIB_OBJS += jit/emit.o
LIB_OBJS += jit/emulate.o
LIB_OBJS += jit/exception-bc.o
LIB_OBJS += jit/exception.o
LIB_OBJS += jit/expression.o
LIB_OBJS += jit/fixup-site.o
LIB_OBJS += jit/gdb.o
LIB_OBJS += jit/inline-cache.o
LIB_OBJS += jit/interval.o
LIB_OBJS += jit/invoke-bc.o
LIB_OBJS += jit/linear-scan.o
LIB_OBJS += jit/liveness.o
LIB_OBJS += jit/load-store-bc.o
LIB_OBJS += jit/method.o
LIB_OBJS += jit/nop-bc.o
LIB_OBJS += jit/object-bc.o
LIB_OBJS += jit/ostack-bc.o
LIB_OBJS += jit/pc-map.o
LIB_OBJS += jit/perf-map.o
LIB_OBJS += jit/spill-reload.o
LIB_OBJS += jit/ssa.o
LIB_OBJS += jit/stack-slot.o
LIB_OBJS += jit/statement.o
LIB_OBJS += jit/subroutine.o
LIB_OBJS += jit/switch-bc.o
LIB_OBJS += jit/text.o
LIB_OBJS += jit/trace-jit.o
LIB_OBJS += jit/trampoline.o
LIB_OBJS += jit/tree-node.o
LIB_OBJS += jit/tree-printer.o
LIB_OBJS += jit/typeconv-bc.o
LIB_OBJS += jit/vtable.o
LIB_OBJS += jit/wide-bc.o
LIB_OBJS += lib/arena.o
LIB_OBJS += lib/array.o
LIB_OBJS += lib/bitset.o
LIB_OBJS += lib/buffer.o
LIB_OBJS += lib/compile-lock.o
LIB_OBJS += lib/guard-page.o
LIB_OBJS += lib/hash-map.o
LIB_OBJS += lib/list.o
LIB_OBJS += lib/options.o
LIB_OBJS += lib/parse.o
LIB_OBJS += lib/pqueue.o
LIB_OBJS += lib/radix-tree.o
LIB_OBJS += lib/stack.o
LIB_OBJS += lib/symbol.o
LIB_OBJS += lib/string.o
LIB_OBJS += lib/zip.o
LIB_OBJS += runtime/gnu_java_lang_management_VMThreadMXBeanImpl.o
LIB_OBJS += runtime/java_lang_VMClass.o
LIB_OBJS += runtime/java_lang_VMClassLoader.o
LIB_OBJS += runtime/java_lang_VMRuntime.o
LIB_OBJS += runtime/java_lang_VMString.o
LIB_OBJS += runtime/java_lang_VMSystem.o
LIB_OBJS += runtime/java_lang_VMThread.o
LIB_OBJS += runtime/java_lang_reflect_VMField.o
LIB_OBJS += runtime/java_lang_reflect_VMMethod.o
LIB_OBJS += runtime/reflection.o
LIB_OBJS += runtime/stack-walker.o
LIB_OBJS += runtime/sun_misc_Unsafe.o
LIB_OBJS += vm/annotation.o
LIB_OBJS += vm/boehm-gc.o
LIB_OBJS += vm/bytecode.o
LIB_OBJS += vm/call.o
LIB_OBJS += vm/class.o
LIB_OBJS += vm/classloader.o
LIB_OBJS += vm/debug-dump.o
LIB_OBJS += vm/debug.o
LIB_OBJS += vm/die.o
LIB_OBJS += vm/fault-inject.o
LIB_OBJS += vm/field.o
LIB_OBJS += vm/gc.o
LIB_OBJS += vm/interp.o
LIB_OBJS += vm/itable.o
LIB_OBJS += vm/jar.o
LIB_OBJS += vm/jni-interface.o
LIB_OBJS += vm/jni.o
LIB_OBJS += vm/method.o
LIB_OBJS += vm/verify-functions.o
LIB_OBJS += vm/verifier.o
LIB_OBJS += vm/monitor.o
LIB_OBJS += vm/natives.o
LIB_OBJS += vm/object.o
LIB_OBJS += vm/preload.o
LIB_OBJS += vm/reference.o
LIB_OBJS += vm/signal.o
LIB_OBJS += vm/stack-trace.o
LIB_OBJS += vm/static.o
LIB_OBJS += vm/string.o
LIB_OBJS += vm/thread.o
LIB_OBJS += vm/trace.o
LIB_OBJS += vm/types.o
LIB_OBJS += vm/utf8.o
LIB_OBJS += vm/zalloc.o
CC ?= gcc
LINK ?= $(CC)
MONOBURG := ./tools/monoburg/monoburg
JAVA ?= $(shell pwd)/jato
JAVAC ?= ecj
INSTALL ?= install
ifeq ($(uname_M),x86_64)
JASMIN ?= java -jar tools/jasmin/jasmin.jar
else
JASMIN ?= $(JAVA) -jar tools/jasmin/jasmin.jar
endif
JAVAC_OPTS += -encoding utf-8
JAVAC_OPTS += -source 1.6 -target 1.6
DEFAULT_CFLAGS += $(ARCH_CFLAGS) -g -rdynamic -std=gnu99 -D_GNU_SOURCE
ifeq ($(uname_M),x86_64)
STACK_PROTECTOR = -fno-stack-protector
else
STACK_PROTECTOR = -fstack-protector-all -D_FORTIFY_SOURCE=2
endif
DEFAULT_CFLAGS += $(STACK_PROTECTOR)
HAS_TCMALLOC_MINIMAL:=$(shell scripts/gcc-has-lib.sh gcc tcmalloc_minimal)
ifeq ($(HAS_TCMALLOC_MINIMAL),y)
TCMALLOC_CFLAGS += -ltcmalloc_minimal -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
endif
HAS_TCMALLOC:=$(shell scripts/gcc-has-lib.sh gcc tcmalloc)
ifeq ($(HAS_TCMALLOC),y)
TCMALLOC_CFLAGS += -ltcmalloc -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
endif
HAS_LIBBFD:=$(shell scripts/gcc-has-lib.sh gcc bfd)
ifneq ($(HAS_LIBBFD),y)
$(error No libbfd found, please install binutils-devel or binutils-dev package.)
endif
HAS_LIBFFI:=$(shell scripts/gcc-has-lib.sh gcc ffi)
ifneq ($(HAS_LIBFFI),y)
$(error No libffi found, please install libffi-devel or libffi-dev package.)
endif
DEFAULT_CFLAGS += $(TCMALLOC_CFLAGS)
# boehmgc integration (see boehmgc/doc/README.linux)
DEFAULT_CFLAGS += -D_REENTRANT -DGC_LINUX_THREADS -DGC_USE_LD_WRAP
JATO_CFLAGS += -Wl,--wrap -Wl,pthread_create -Wl,--wrap -Wl,pthread_join \
-Wl,--wrap -Wl,pthread_detach -Wl,--wrap -Wl,pthread_sigmask \
-Wl,--wrap -Wl,sleep
# XXX: Temporary hack -Vegard
DEFAULT_CFLAGS += -DNOT_IMPLEMENTED='fprintf(stderr, "%s:%d: warning: %s not implemented\n", __FILE__, __LINE__, __func__)'
EXTRA_WARNINGS =
EXTRA_WARNINGS += -Wformat
EXTRA_WARNINGS += -Wformat-security
EXTRA_WARNINGS += -Wformat-y2k
EXTRA_WARNINGS += -Winit-self
EXTRA_WARNINGS += -Wmissing-declarations
EXTRA_WARNINGS += -Wmissing-prototypes
EXTRA_WARNINGS += -Wnested-externs
EXTRA_WARNINGS += -Wno-system-headers
EXTRA_WARNINGS += -Wno-unused-parameter
EXTRA_WARNINGS += -Wold-style-definition
EXTRA_WARNINGS += -Wredundant-decls
EXTRA_WARNINGS += -Wstrict-prototypes
EXTRA_WARNINGS += -Wswitch-default
EXTRA_WARNINGS += -Wundef
EXTRA_WARNINGS += -Wwrite-strings
EXTRA_WARNINGS += -Wcast-align
DEFAULT_CFLAGS += -Wall -Wextra $(EXTRA_WARNINGS)
ifeq ($(uname_M),i386)
OPTIMIZATION_LEVEL = -O3
else
OPTIMIZATION_LEVEL = -Os
endif
OPTIMIZATIONS += $(OPTIMIZATION_LEVEL)
OPTIMIZATIONS += -fno-delete-null-pointer-checks
OPTIMIZATIONS += -fno-omit-frame-pointer
DEFAULT_CFLAGS += $(OPTIMIZATIONS)
INCLUDES = -Iarch/$(ARCH)/include -Iinclude -Isys/$(SYS)-$(ARCH)/include -Ijit -Ijit/glib -include $(ARCH_CONFIG) -Iboehmgc/include
DEFAULT_CFLAGS += $(INCLUDES)
# Disable optimizations and turn on extra debugging information, if needed.
DEBUG =
ifeq ($(strip $(DEBUG)),1)
# This overrides DEFAULT_CFLAGS, but not user-supplied CFLAGS.
DEFAULT_CFLAGS += -O0 -ggdb -DCONFIG_DEBUG
endif
DEFAULT_LIBS = -L. -ljvm -lrt -lpthread -lm -ldl -lz -lbfd -lopcodes -liberty -Lboehmgc -lboehmgc $(ARCH_LIBS)
all: $(PROGRAMS)
.PHONY: all
.DEFAULT: all
VERSION_HEADER = include/vm/version.h
ASM_OFFSETS_HEADER = arch/$(ARCH)/include/arch/asm-offsets.h
GEN_ASM_OFFSETS_SRC = arch/$(ARCH)/asm-offsets.c
GEN_ASM_OFFSETS = arch/$(ARCH)/asm-offsets
$(VERSION_HEADER): FORCE
$(E) " GEN " $@
$(Q) echo "#define JATO_VERSION \"$(VERSION)\"" > $(VERSION_HEADER)
$(ASM_OFFSETS_HEADER): FORCE
$(E) " GEN " $@
$(Q) echo "#ifndef ASM_OFFSETS_H" > $@
$(Q) echo "#define ASM_OFFSETS_H" >> $@
$(Q) echo "/*" >> $@
$(Q) echo " * Autogenerated file: DO NOT EDIT" >> $@
$(Q) echo "*/" >> $@
$(Q) -test -f $(GEN_ASM_OFFSETS_SRC) && \
$(CC) -MD $(DEFAULT_CFLAGS) $(CFLAGS) $(GEN_ASM_OFFSETS_SRC) -o $(GEN_ASM_OFFSETS) && \
$(GEN_ASM_OFFSETS) >> $@
$(Q) echo "#endif /* ASM_OFFSETS_H */" >> $@
$(CLASSPATH_CONFIG):
$(E) " LINK " $@
$(Q) $(LINK) -Wall $(CLASSPATH_CONFIG).c -o $(CLASSPATH_CONFIG)
monoburg:
+$(Q) $(MAKE) -C tools/monoburg/
.PHONY: monoburg
boehmgc:
+$(Q) ARCH=$(ARCH) $(MAKE) -C boehmgc/
.PHONY: boehmgc
%.o: %.c
$(E) " CC " $@
$(Q) $(CC) -MD -c $(DEFAULT_CFLAGS) $(CFLAGS) $< -o $@
# -gstabs is needed for correct backtraces.
%.o: %.S
$(E) " AS " $@
$(Q) $(CC) -c -gstabs $(DEFAULT_CFLAGS) $(CFLAGS) $< -o $@
arch/$(ARCH)/insn-selector$(ARCH_POSTFIX).c: monoburg FORCE
$(E) " MONOBURG" $@
$(Q) $(MONOBURG) -p -e $(MB_DEFINES) $(@:.c=.brg) > $@
jato.o: $(VERSION_HEADER)
$(foreach p,$(PROGRAMS),$(eval $(p): $(LIB_FILE)))
$(PROGRAMS): % : %.o
$(E) " LINK " $@
$(Q) $(LINK) $(JATO_CFLAGS) -o $@ $^ $(DEFAULT_LIBS)
$(LIB_FILE): monoburg boehmgc $(VERSION_HEADER) $(ASM_OFFSETS_HEADER) $(CLASSPATH_CONFIG) $(LIB_OBJS)
$(E) " AR " $@
$(Q) rm -f $@ && $(AR) rcs $@ $(LIB_OBJS)
check-unit: arch/$(ARCH)/insn-selector$(ARCH_POSTFIX).c
+$(MAKE) -C test/unit/vm/ SYS=$(SYS) ARCH=$(ARCH) ARCH_POSTFIX=$(ARCH_POSTFIX) $(TEST)
+$(MAKE) -C test/unit/jit/ SYS=$(SYS) ARCH=$(ARCH) ARCH_POSTFIX=$(ARCH_POSTFIX) $(TEST)
+$(MAKE) -C test/unit/arch-$(ARCH)/ SYS=$(SYS) ARCH=$(ARCH) ARCH_POSTFIX=$(ARCH_POSTFIX) $(TEST)
.PHONY: check-unit
check-integration: $(LIB_FILE)
+$(MAKE) -C test/integration check
.PHONY: check-integration
JAVA_TESTS += test/functional/jato/internal/VM.java
JAVA_TESTS += test/functional/jvm/ArgsTest.java
JAVA_TESTS += test/functional/jvm/ArrayExceptionsTest.java
JAVA_TESTS += test/functional/jvm/ArrayMemberTest.java
JAVA_TESTS += test/functional/jvm/ArrayTest.java
JAVA_TESTS += test/functional/jvm/BranchTest.java
JAVA_TESTS += test/functional/jvm/CFGCrashTest.java
JAVA_TESTS += test/functional/jvm/ClassExceptionsTest.java
JAVA_TESTS += test/functional/jvm/ClassLoaderTest.java
JAVA_TESTS += test/functional/jvm/ClinitFloatTest.java
JAVA_TESTS += test/functional/jvm/CloneTest.java
JAVA_TESTS += test/functional/jvm/ControlTransferTest.java
JAVA_TESTS += test/functional/jvm/ConversionTest.java
JAVA_TESTS += test/functional/jvm/DoubleArithmeticTest.java
JAVA_TESTS += test/functional/jvm/DoubleConversionTest.java
JAVA_TESTS += test/functional/jvm/ExceptionsTest.java
JAVA_TESTS += test/functional/jvm/ExitStatusIsOneTest.java
JAVA_TESTS += test/functional/jvm/ExitStatusIsZeroTest.java
JAVA_TESTS += test/functional/jvm/FibonacciTest.java
JAVA_TESTS += test/functional/jvm/FinallyTest.java
JAVA_TESTS += test/functional/jvm/FloatArithmeticTest.java
JAVA_TESTS += test/functional/jvm/FloatConversionTest.java
JAVA_TESTS += test/functional/jvm/GcTortureTest.java
JAVA_TESTS += test/functional/jvm/GetstaticPatchingTest.java
JAVA_TESTS += test/functional/jvm/IntegerArithmeticExceptionsTest.java
JAVA_TESTS += test/functional/jvm/IntegerArithmeticTest.java
JAVA_TESTS += test/functional/jvm/InterfaceFieldInheritanceTest.java
JAVA_TESTS += test/functional/jvm/InterfaceInheritanceTest.java
JAVA_TESTS += test/functional/jvm/InvokeinterfaceTest.java
JAVA_TESTS += test/functional/jvm/InvokestaticPatchingTest.java
JAVA_TESTS += test/functional/jvm/LoadConstantsTest.java
JAVA_TESTS += test/functional/jvm/LongArithmeticExceptionsTest.java
JAVA_TESTS += test/functional/jvm/LongArithmeticTest.java
JAVA_TESTS += test/functional/jvm/MethodInvocationAndReturnTest.java
JAVA_TESTS += test/functional/jvm/MethodInvocationExceptionsTest.java
JAVA_TESTS += test/functional/jvm/MethodInvokeVirtualTest.java
JAVA_TESTS += test/functional/jvm/MonitorTest.java
JAVA_TESTS += test/functional/jvm/MultithreadingTest.java
JAVA_TESTS += test/functional/jvm/ObjectArrayTest.java
JAVA_TESTS += test/functional/jvm/ObjectCreationAndManipulationExceptionsTest.java
JAVA_TESTS += test/functional/jvm/ObjectCreationAndManipulationTest.java
JAVA_TESTS += test/functional/jvm/ObjectStackTest.java
JAVA_TESTS += test/functional/jvm/ParameterPassingLivenessTest.java
JAVA_TESTS += test/functional/jvm/ParameterPassingTest.java
JAVA_TESTS += test/functional/jvm/PrintTest.java
JAVA_TESTS += test/functional/jvm/PutfieldTest.java
JAVA_TESTS += test/functional/jvm/PutstaticPatchingTest.java
JAVA_TESTS += test/functional/jvm/PutstaticTest.java
JAVA_TESTS += test/functional/jvm/RegisterAllocatorTortureTest.java
JAVA_TESTS += test/functional/jvm/StackTraceTest.java
JAVA_TESTS += test/functional/jvm/StringTest.java
JAVA_TESTS += test/functional/jvm/SwitchTest.java
JAVA_TESTS += test/functional/jvm/SynchronizationExceptionsTest.java
JAVA_TESTS += test/functional/jvm/SynchronizationTest.java
JAVA_TESTS += test/functional/jvm/TestCase.java
JAVA_TESTS += test/functional/jvm/TrampolineBackpatchingTest.java
JAVA_TESTS += test/functional/jvm/VirtualAbstractInterfaceMethodTest.java
JAVA_TESTS += test/functional/test/java/lang/ClassTest.java
JAVA_TESTS += test/functional/test/java/lang/DoubleTest.java
JAVA_TESTS += test/functional/test/java/lang/JNITest.java
JAVA_TESTS += test/functional/test/java/lang/ref/ReferenceTest.java
JAVA_TESTS += test/functional/test/java/lang/reflect/FieldAccessorsTest.java
JAVA_TESTS += test/functional/test/java/lang/reflect/FieldTest.java
JAVA_TESTS += test/functional/test/java/lang/reflect/MethodTest.java
JAVA_TESTS += test/functional/test/java/util/HashMapTest.java
JAVA_TESTS += test/functional/test/sun/misc/UnsafeTest.java
JASMIN_TESTS += test/functional/jvm/DupTest.j
JASMIN_TESTS += test/functional/jvm/EntryTest.j
JASMIN_TESTS += test/functional/jvm/ExceptionHandlerTest.j
JASMIN_TESTS += test/functional/jvm/InvokeResultTest.j
JASMIN_TESTS += test/functional/jvm/InvokeTest.j
JASMIN_TESTS += test/functional/jvm/MethodOverridingFinal.j
JASMIN_TESTS += test/functional/jvm/NoSuchMethodErrorTest.j
JASMIN_TESTS += test/functional/jvm/PopTest.j
JASMIN_TESTS += test/functional/jvm/SubroutineTest.j
JASMIN_TESTS += test/functional/jvm/WideTest.j
MBENCH_TEST_SUITE_CLASSES = test/perf/ICTime.java
compile-java-tests: $(PROGRAMS) FORCE
$(E) " JAVAC " $(JAVA_TESTS)
$(Q) JAVA=$(JAVA) $(JAVAC) $(JAVAC_OPTS) -cp $(GLIBJ):test/functional -d test/functional $(JAVA_TESTS)
.PHONY: compile-java-tests
compile-mbench-tests: $(PROGRAMS) FORCE
$(E) " JAVAC " $(MBENCH_TEST_SUITE_CLASSES)
$(Q) JAVA=$(JAVA) $(JAVAC) $(JAVAC_OPTS) -cp $(GLIBJ):test/perf -d test/perf $(MBENCH_TEST_SUITE_CLASSES)
.PHONY: compile-mbench-tests
compile-jasmin-tests: $(PROGRAMS) FORCE
$(E) " JASMIN " $(JASMIN_TESTS)
$(Q) $(JASMIN) $(JASMIN_OPTS) -d test/functional $(JASMIN_TESTS) > /dev/null
.PHONY: compile-jasmin-tests
lib: $(CLASSPATH_CONFIG)
+$(MAKE) -C lib/ JAVAC=$(JAVAC) GLIBJ=$(GLIBJ)
.PHONY: lib
compile-jni-test-lib: $(PROGRAMS)
+$(MAKE) -C test/functional/jni CC='$(CC)' JAVA='$(JAVA)' JAVAC='$(JAVAC)'
.PHONY: compile-jni-test-lib
check-functional: monoburg $(CLASSPATH_CONFIG) $(PROGRAMS) compile-java-tests compile-jasmin-tests compile-jni-test-lib
$(E) " REGRESSION"
$(Q) ./tools/test.py
.PHONY: check-functional
check-mbench: monoburg $(CLASSPATH_CONFIG) $(PROGRAMS) compile-mbench-tests
$(E) " MICROBENCHMARKS"
$(Q) for i in $(patsubst %.java,%,$(MBENCH_TEST_SUITE_CLASSES))\
;do \
echo "MBENCH "$$i; $(JAVA) -classpath test/perf: $$i \
;done
.PHONY: check-mbench
check: check-unit check-integration check-functional
.PHONY: check
torture:
$(E) " MAKE"
$(Q) $(MAKE) -C torture JAVA=$(JAVA)
.PHONY: torture
clean:
$(E) " CLEAN"
$(Q) - rm -f $(PROGRAMS)
$(Q) - rm -f $(LIB_FILE)
$(Q) - rm -f $(VERSION_HEADER)
$(Q) - rm -f $(CLASSPATH_CONFIG)
$(Q) - rm -f $(OBJS)
$(Q) - rm -f $(OBJS:.o=.d)
$(Q) - rm -f $(LIB_OBJS)
$(Q) - rm -f $(LIB_OBJS:.o=.d)
$(Q) - rm -f $(ARCH_TEST_OBJS)
$(Q) - rm -f arch/$(ARCH)/insn-selector.c
$(Q) - rm -f $(ARCH_TEST_SUITE)
$(Q) - rm -f test-suite.o
$(Q) - rm -f $(ARCH_TESTRUNNER)
$(Q) - rm -f $(RUNTIME_CLASSES)
$(Q) - find test/functional/ -name "*.class" | grep -v corrupt | xargs rm -f
$(Q) - find runtime/ -name "*.class" | xargs rm -f
$(Q) - rm -f tags
+$(Q) - $(MAKE) -C tools/monoburg/ clean >/dev/null
+$(Q) - $(MAKE) -C boehmgc/ clean >/dev/null
+$(Q) - $(MAKE) -C test/functional/jni/ clean >/dev/null
+$(Q) - $(MAKE) -C test/unit/vm/ clean >/dev/null
+$(Q) - $(MAKE) -C test/unit/jit/ clean >/dev/null
+$(Q) - $(MAKE) -C test/unit/arch-$(ARCH)/ clean >/dev/null
+$(Q) - $(MAKE) -C test/integration/ clean >/dev/null
.PHONY: clean
INSTALL_PREFIX ?= $(HOME)
install: jato
$(E) " INSTALL " jato
$(Q) $(INSTALL) -d -m 755 $(INSTALL_PREFIX)/bin
$(Q) $(INSTALL) jato $(INSTALL_PREFIX)/bin
$(Q) $(INSTALL) tools/ecj-jato/ecj-3.7.2.jar $(INSTALL_PREFIX)/bin
$(Q) $(INSTALL) tools/ecj-jato/ecj-jato $(INSTALL_PREFIX)/bin
.PHONY: install
tags: FORCE
$(E) " TAGS"
$(Q) rm -f tags
$(Q) find . -name '*.[hcS]' -print | xargs ctags -a
PHONY += FORCE
FORCE:
include scripts/build/common.mk
-include $(OBJS:.o=.d)