Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

496 lines (427 sloc) 16.765 kb
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 =
PROGRAM := jato
LIB_FILE := libjvm.a
include arch/$(ARCH)/Makefile$(ARCH_POSTFIX)
include sys/$(SYS)-$(ARCH)/Makefile
OBJS += vm/jato.o
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/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
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__)'
WARNINGS += \
-Wall \
-Wcast-align \
-Wformat=2 \
-Winit-self \
-Wmissing-declarations \
-Wmissing-prototypes \
-Wnested-externs \
-Wno-system-headers \
-Wold-style-definition \
-Wredundant-decls \
-Wsign-compare \
-Wstrict-prototypes \
-Wundef \
-Wvolatile-register-var \
-Wwrite-strings
DEFAULT_CFLAGS += $(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: $(PROGRAM)
.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) > $@
$(PROGRAM): $(LIB_FILE) $(OBJS)
$(E) " LINK " $@
$(Q) $(LINK) $(JATO_CFLAGS) $(DEFAULT_CFLAGS) $(CFLAGS) $(OBJS) -o $(PROGRAM) $(LIBS) $(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: $(PROGRAM) 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: $(PROGRAM) 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: $(PROGRAM) 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: $(PROGRAM)
+$(MAKE) -C test/functional/jni CC='$(CC)' JAVA='$(JAVA)' JAVAC='$(JAVAC)'
.PHONY: compile-jni-test-lib
check-functional: monoburg $(CLASSPATH_CONFIG) $(PROGRAM) compile-java-tests compile-jasmin-tests compile-jni-test-lib
$(E) " REGRESSION"
$(Q) ./tools/test.py
.PHONY: check-functional
check-mbench: monoburg $(CLASSPATH_CONFIG) $(PROGRAM) 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 $(PROGRAM)
$(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 $(PROGRAM)
$(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: $(PROGRAM)
$(E) " INSTALL " $(PROGRAM)
$(Q) $(INSTALL) -d -m 755 $(INSTALL_PREFIX)/bin
$(Q) $(INSTALL) $(PROGRAM) $(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)
Jump to Line
Something went wrong with that request. Please try again.