corda/sgx-jvm/avian/makefile

2393 lines
73 KiB
Makefile
Raw Normal View History

2013-01-27 03:07:18 +00:00
MAKEFLAGS = -s
name = avian
version := $(shell grep version gradle.properties | cut -d'=' -f2)
java-version := $(shell "$(JAVA_HOME)/bin/java" -version 2>&1 \
| grep 'version "1' \
2015-08-06 23:23:14 +00:00
| sed 's/.*version "1.\([^.]*\).*/\1/')
2011-02-26 19:45:22 +00:00
build-arch := $(shell uname -m \
| sed 's/^i.86$$/i386/' \
| sed 's/^x86pc$$/i386/' \
2012-08-02 16:49:32 +00:00
| sed 's/amd64/x86_64/' \
| sed 's/^arm.*$$/arm/' \
| sed 's/aarch64/arm64/')
2007-06-29 16:42:39 +00:00
build-platform := \
$(shell uname -s | tr [:upper:] [:lower:] \
| sed \
-e 's/^mingw64.*$$/mingw32/' \
-e 's/^mingw32.*$$/mingw32/' \
-e 's/^cygwin.*$$/cygwin/' \
-e 's/^darwin.*$$/macosx/')
2007-09-21 14:16:43 +00:00
arch = $(build-arch)
target-arch = $(arch)
2009-06-01 18:12:29 +00:00
bootimage-platform = \
$(subst cygwin,windows,$(subst mingw32,windows,$(build-platform)))
2009-06-01 18:12:29 +00:00
platform = $(bootimage-platform)
codegen-targets = native
mode = fast
2008-01-03 19:49:42 +00:00
process = compile
ifneq ($(process),compile)
options := -$(process)
endif
ifneq ($(mode),fast)
options := $(options)-$(mode)
endif
ifneq ($(lzma),)
options := $(options)-lzma
endif
ifeq ($(bootimage),true)
options := $(options)-bootimage
ifeq ($(bootimage-test),true)
# this option indicates that we should AOT-compile the test
# classes as well as the class library
options := $(options)-test
endif
endif
ifeq ($(tails),true)
options := $(options)-tails
endif
ifeq ($(continuations),true)
options := $(options)-continuations
endif
ifeq ($(codegen-targets),all)
options := $(options)-all
endif
ifeq ($(filter debug debug-fast fast stress stress-major small,$(mode)),)
x := $(error "'$(mode)' is not a valid mode (choose one of: debug debug-fast fast stress stress-major small)")
endif
ifeq ($(filter compile interpret,$(process)),)
x := $(error "'$(process)' is not a valid process (choose one of: compile interpret)")
endif
ifeq ($(filter x86_64 i386 arm arm64,$(arch)),)
x := $(error "'$(arch)' is not a supported architecture (choose one of: x86_64 i386 arm arm64)")
endif
ifeq ($(platform),darwin)
x := $(error "please use 'platform=macosx' or 'platform=ios' instead of 'platform=$(platform)'")
endif
ifneq ($(ios),)
x := $(error "please use 'platform=ios' instead of 'ios=true'")
endif
ifeq ($(filter linux windows macosx ios freebsd,$(platform)),)
x := $(error "'$(platform)' is not a supported platform (choose one of: linux windows macosx ios freebsd)")
endif
ifeq ($(platform),macosx)
2014-11-27 03:05:46 +00:00
ifneq ($(filter arm arm64,$(arch)),)
x := $(error "please use ('arch=arm' or 'arch=arm64') 'platform=ios' to build for ios-arm")
endif
endif
ifeq ($(platform),ios)
2015-03-16 17:32:35 +00:00
ifeq ($(filter i386 x86_64 arm arm64,$(arch)),)
x := $(error "please specify 'arch=i386', 'arch=x86_64', 'arch=arm', or 'arch=arm64' with 'platform=ios'")
endif
endif
ifeq ($(bootimage-test),true)
ifneq ($(bootimage),true)
x := $(error "bootimage-test=true only works when bootimage=true")
endif
endif
aot-only = false
root := $(shell (cd .. && pwd))
build = build/$(platform)-$(arch)$(options)
2013-01-28 17:15:29 +00:00
host-build-root = $(build)/host
classpath-build = $(build)/classpath
test-build = $(build)/test
src = src
classpath-src = classpath
test = test
2013-02-15 03:54:20 +00:00
unittest = unittest
win32 ?= $(root)/win32
win64 ?= $(root)/win64
winrt ?= $(root)/winrt
wp8 ?= $(root)/wp8
classpath = avian
bootimage-classpath = $(classpath-build)
ifeq ($(bootimage-test),true)
bootimage-classpath = $(classpath-build):$(test-build)
endif
ifeq ($(use-werror),true)
werror = -Werror
endif
test-executable = $(shell pwd)/$(executable)
boot-classpath = $(classpath-build)
embed-prefix = /avian-embedded
native-path = echo
platform-kernel = $(subst macosx,darwin,$(subst ios,darwin,$1))
build-kernel = $(call platform-kernel,$(build-platform))
kernel = $(call platform-kernel,$(platform))
ifeq ($(build-platform),cygwin)
native-path = cygpath -m
endif
2012-06-02 21:43:42 +00:00
windows-path = echo
path-separator = :
ifneq (,$(filter mingw32 cygwin,$(build-platform)))
path-separator = ;
endif
target-path-separator = :
ifeq ($(platform),windows)
target-path-separator = ;
endif
library-path-variable = LD_LIBRARY_PATH
ifeq ($(build-kernel),darwin)
library-path-variable = DYLD_LIBRARY_PATH
endif
library-path = $(library-path-variable)=$(build)
2012-08-01 16:02:55 +00:00
ifneq ($(openjdk),)
openjdk-version := $(shell $(openjdk)/bin/java -version 2>&1 \
| grep 'version "1' \
| sed 's/.*version "1.\([^.]*\).*/\1/')
openjdk-arch = $(arch)
ifeq ($(arch),x86_64)
openjdk-arch = amd64
endif
ifneq ($(android),)
x := $(error "android and openjdk are incompatible")
endif
ifeq ($(openjdk-image),)
openjdk-image = $(openjdk)/jre
endif
ifneq ($(openjdk-src),)
include openjdk-src.mk
options := $(options)-openjdk-src
classpath-objects = $(openjdk-objects) $(openjdk-local-objects)
classpath-cflags = -DAVIAN_OPENJDK_SRC -DBOOT_JAVAHOME
openjdk-jar-dep = $(build)/openjdk-jar.dep
classpath-jar-dep = $(openjdk-jar-dep)
javahome = $(embed-prefix)/javahomeJar
javahome-files = lib/currency.data lib/security/java.security \
lib/security/java.policy lib/security/cacerts
ifneq (,$(wildcard $(openjdk)/jre/lib/zi))
javahome-files += lib/zi
endif
ifneq (,$(wildcard $(openjdk)/jre/lib/tzdb.dat))
javahome-files += lib/tzdb.dat
endif
local-policy = lib/security/local_policy.jar
ifneq (,$(wildcard $(openjdk)/jre/$(local-policy)))
javahome-files += $(local-policy)
endif
export-policy = lib/security/US_export_policy.jar
ifneq (,$(wildcard $(openjdk)/jre/$(export-policy)))
javahome-files += $(export-policy)
endif
ifeq ($(platform),windows)
javahome-files += lib/tzmappings
endif
javahome-object = $(build)/javahome-jar.o
boot-javahome-object = $(build)/boot-javahome.o
2013-03-26 14:30:26 +00:00
stub-sources = $(src)/openjdk/stubs.cpp
stub-objects = $(call cpp-objects,$(stub-sources),$(src),$(build))
else
soname-flag = -Wl,-soname -Wl,$(so-prefix)jvm$(so-suffix)
version-script-flag = -Wl,--version-script=openjdk.ld
options := $(options)-openjdk
test-executable = $(shell pwd)/$(executable-dynamic)
ifeq ($(build-kernel),darwin)
library-path = \
$(library-path-variable)=$(build):$(openjdk)/jre/lib
else
library-path = \
$(library-path-variable)=$(build):$(openjdk)/jre/lib/$(openjdk-arch)
endif
javahome = "$$($(native-path) "$(openjdk)/jre")"
endif
ifeq ($(openjdk-image),)
openjdk-image = $(openjdk)/jre
endif
2013-01-28 17:15:29 +00:00
classpath = openjdk
boot-classpath := "$(boot-classpath)$(path-separator)$$($(native-path) "$(openjdk)/jre/lib/rt.jar")"
build-javahome = $(openjdk)/jre
endif
ifneq ($(android),)
options := $(options)-android
classpath-jar-dep = $(build)/android.dep
luni-native = $(android)/libcore/luni/src/main/native
classpath-cflags = -DBOOT_JAVAHOME
android-cflags = -I$(luni-native) \
-I$(android)/libnativehelper/include/nativehelper \
-I$(android)/libnativehelper \
-I$(android)/system/core/include \
-I$(android)/external/zlib \
-I$(android)/external/icu4c/i18n \
-I$(android)/external/icu4c/common \
-I$(android)/external/expat \
-I$(android)/external/openssl/include \
-I$(android)/external/openssl \
-I$(android)/libcore/include \
-I$(build)/android-src/external/fdlibm \
-I$(build)/android-src \
-fno-exceptions \
-D_FILE_OFFSET_BITS=64 \
-DOS_SHARED_LIB_FORMAT_STR="\"$(so-prefix)%s$(so-suffix)\"" \
-DJNI_JARJAR_PREFIX= \
-D__DARWIN_UNIX03=1 \
2014-03-03 20:41:58 +00:00
-D__PROVIDE_FIXMES \
-DSTATIC_LIB \
2015-06-02 21:01:03 +00:00
-D__STDC_FORMAT_MACROS=1 \
-g3 \
-Wno-shift-count-overflow
# on Windows (in MinGW-based build) there are neither __BEGIN_DECLS nor __END_DECLS
# defines; we don't want to patch every file that uses them, so we stub them in
# using CFLAGS mechanism
2014-10-09 13:50:09 +00:00
# Also we have off64_t defined in mingw-w64 headers, so let's tell that
ifeq ($(platform),windows)
2014-10-09 13:50:09 +00:00
android-cflags += "-D__BEGIN_DECLS=extern \"C\" {" "-D__END_DECLS=}" "-DHAVE_OFF64_T"
endif
luni-cpps := $(shell find $(luni-native) -name '*.cpp')
libziparchive-native := $(android)/system/core/libziparchive
libziparchive-ccs := $(libziparchive-native)/zip_archive.cc
libutils-native := $(android)/system/core/libutils
libutils-cpps := $(libutils-native)/FileMap.cpp
libnativehelper-native := $(android)/libnativehelper
libnativehelper-cpps := $(libnativehelper-native)/JniConstants.cpp \
$(libnativehelper-native)/toStringArray.cpp
crypto-native := $(android)/external/conscrypt/src/main/native
crypto-cpps := $(crypto-native)/org_conscrypt_NativeCrypto.cpp
2014-03-15 18:21:24 +00:00
ifeq ($(platform),windows)
android-cflags += -D__STDC_CONSTANT_MACROS -DHAVE_WIN32_FILEMAP -D__STDC_FORMAT_MACROS
blacklist = $(luni-native)/java_io_Console.cpp \
$(luni-native)/java_lang_ProcessManager.cpp
2014-09-01 21:09:29 +00:00
icu-libs := $(android)/external/icu4c/lib/libsicuin.a \
$(android)/external/icu4c/lib/libsicuuc.a \
$(android)/external/icu4c/lib/sicudt.a
2015-06-02 21:01:03 +00:00
platform-lflags := -lgdi32 -lshlwapi -lwsock32 -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic
else
android-cflags += -fPIC -DHAVE_SYS_UIO_H -DHAVE_POSIX_FILEMAP
blacklist =
icu-libs := $(android)/external/icu4c/lib/libicui18n.a \
$(android)/external/icu4c/lib/libicuuc.a \
$(android)/external/icu4c/lib/libicudata.a
endif
2014-07-29 09:01:51 +00:00
luni-cpps := $(filter-out $(blacklist),$(luni-cpps))
classpath-lflags := \
$(icu-libs) \
$(android)/external/fdlibm/libfdm.a \
$(android)/external/expat/.libs/libexpat.a \
$(android)/openssl-upstream/libssl.a \
$(android)/openssl-upstream/libcrypto.a \
$(platform-lflags) \
-lstdc++
ifeq ($(platform),linux)
android-cflags += -DHAVE_OFF64_T
classpath-lflags += -lrt
endif
classpath-objects = \
$(call cpp-objects,$(luni-cpps),$(luni-native),$(build)) \
$(call cpp-objects,$(crypto-cpps),$(crypto-native),$(build)) \
$(call cpp-objects,$(libnativehelper-cpps),$(libnativehelper-native),$(build)) \
$(call cc-objects,$(libziparchive-ccs),$(libziparchive-native),$(build)) \
$(call cpp-objects,$(libutils-cpps),$(libutils-native),$(build))
luni-java = $(android)/libcore/luni/src/main/java
luni-blacklist = \
$(luni-java)/libcore/reflect/AnnotationAccess.java
luni-javas := \
$(filter-out $(luni-blacklist),$(shell find $(luni-java) -name '*.java'))
luni-nonjavas := $(shell find $(luni-java) -not -type d -not -name '*.java')
luni-copied-nonjavas = $(call noop-files,$(luni-nonjavas),$(luni-java),)
crypto-java = $(android)/external/conscrypt/src/main/java
crypto-javas := $(shell find $(crypto-java) -name '*.java')
crypto-platform-java = $(android)/external/conscrypt/src/platform/java
crypto-platform-javas := $(shell find $(crypto-platform-java) -name '*.java')
dalvik-java = $(android)/libcore/dalvik/src/main/java
dalvik-javas := \
$(dalvik-java)/dalvik/system/DalvikLogHandler.java \
$(dalvik-java)/dalvik/system/CloseGuard.java \
$(dalvik-java)/dalvik/system/VMDebug.java \
$(dalvik-java)/dalvik/system/BlockGuard.java \
$(dalvik-java)/dalvik/system/SocketTagger.java \
$(dalvik-java)/dalvik/system/DalvikLogging.java \
libart-java = $(android)/libcore/libart/src/main/java
libart-javas := \
$(libart-java)/dalvik/system/VMRuntime.java \
$(libart-java)/dalvik/system/VMStack.java \
$(libart-java)/java/lang/Thread.java \
$(libart-java)/java/lang/ThreadGroup.java \
$(libart-java)/java/lang/Enum.java \
$(libart-java)/java/lang/String.java \
$(libart-java)/java/lang/ref/Reference.java \
$(libart-java)/java/lang/reflect/AccessibleObject.java \
xml-java = $(android)/libcore/xml/src/main/java
xml-javas := $(shell find $(xml-java) -name '*.java')
okhttp-android-java = $(android)/external/okhttp/android/main/java
okhttp-android-javas := $(shell find $(okhttp-android-java) -name '*.java')
okhttp-java = $(android)/external/okhttp/okhttp/src/main/java
okhttp-javas := $(shell find $(okhttp-java) -name '*.java')
okio-java = $(android)/external/okhttp/okio/src/main/java
okio-javas := $(shell find $(okio-java) -name '*.java')
bcpkix-java = $(android)/external/bouncycastle/bcpkix/src/main/java
bcpkix-javas := $(shell find $(bcpkix-java) -name '*.java')
bcprov-java = $(android)/external/bouncycastle/bcprov/src/main/java
bcprov-javas := $(shell find $(bcprov-java) -name '*.java')
android-classes = \
$(call java-classes,$(luni-javas),$(luni-java),$(build)/android) \
$(call java-classes,$(crypto-javas),$(crypto-java),$(build)/android) \
$(call java-classes,$(crypto-platform-javas),$(crypto-platform-java),$(build)/android) \
$(call java-classes,$(dalvik-javas),$(dalvik-java),$(build)/android) \
$(call java-classes,$(libart-javas),$(libart-java),$(build)/android) \
$(call java-classes,$(xml-javas),$(xml-java),$(build)/android) \
$(call java-classes,$(okhttp-javas),$(okhttp-java),$(build)/android) \
$(call java-classes,$(okhttp-android-javas),$(okhttp-android-java),$(build)/android) \
$(call java-classes,$(okio-javas),$(okio-java),$(build)/android) \
$(call java-classes,$(bcpkix-javas),$(bcpkix-java),$(build)/android) \
$(call java-classes,$(bcprov-javas),$(bcprov-java),$(build)/android)
classpath = android
javahome-files = tzdata
javahome-object = $(build)/javahome-jar.o
boot-javahome-object = $(build)/boot-javahome.o
build-javahome = $(android)/bionic/libc/zoneinfo
stub-sources = $(src)/android/stubs.cpp
stub-objects = $(call cpp-objects,$(stub-sources),$(src),$(build))
endif
ifeq ($(classpath),avian)
jni-sources := $(shell find $(classpath-src) -name '*.cpp')
jni-objects = $(call cpp-objects,$(jni-sources),$(classpath-src),$(build))
classpath-objects = $(jni-objects)
2009-06-04 23:54:06 +00:00
endif
input = List
ifeq ($(use-clang),true)
build-cxx = clang++ -std=c++11
build-cc = clang
else
build-cxx = g++
build-cc = gcc
endif
mflag =
ifneq ($(kernel),darwin)
ifeq ($(arch),i386)
mflag = -m32
endif
ifeq ($(arch),x86_64)
mflag = -m64
endif
endif
2010-02-05 23:40:48 +00:00
target-format = elf
cxx = $(build-cxx) $(mflag)
cc = $(build-cc) $(mflag)
ar = ar
ranlib = ranlib
dlltool = dlltool
2008-01-04 02:17:42 +00:00
vg = nice valgrind --num-callers=32 --db-attach=yes --freelist-vol=100000000
vg += --leak-check=full --suppressions=valgrind.supp
db = gdb --args
javac = "$(JAVA_HOME)/bin/javac" -encoding UTF-8
javah = "$(JAVA_HOME)/bin/javah"
jar = "$(JAVA_HOME)/bin/jar"
strip = strip
strip-all = --strip-all
rdynamic = -rdynamic
cflags_debug = -O0 -g3
cflags_debug_fast = -O0 -g3
cflags_stress = -O0 -g3
cflags_stress_major = -O0 -g3
ifeq ($(use-clang),true)
cflags_fast = -O3 -g3
cflags_small = -Oz -g3
else
cflags_fast = -O3 -g3
cflags_small = -Os -g3
endif
# note that we suppress the non-virtual-dtor warning because we never
# use the delete operator, which means we don't need virtual
# destructors:
warnings = -Wall -Wextra $(werror) -Wunused-parameter -Winit-self \
-Wno-non-virtual-dtor
target-cflags = -DTARGET_BYTES_PER_WORD=$(pointer-size)
common-cflags = $(warnings) -std=c++0x -fno-rtti -fno-exceptions -I$(classpath-src) \
"-I$(JAVA_HOME)/include" -I$(src) -I$(build) -Iinclude $(classpath-cflags) \
-D__STDC_LIMIT_MACROS -D_JNI_IMPLEMENTATION_ -DAVIAN_VERSION=\"$(version)\" \
-DAVIAN_INFO="\"$(info)\"" \
-DUSE_ATOMIC_OPERATIONS -DAVIAN_JAVA_HOME=\"$(javahome)\" \
-DAVIAN_EMBED_PREFIX=\"$(embed-prefix)\" $(target-cflags)
asmflags = $(target-cflags) -I$(src)
2011-01-29 00:05:42 +00:00
ifneq (,$(filter i386 x86_64,$(arch)))
ifeq ($(use-frame-pointer),true)
common-cflags += -fno-omit-frame-pointer -DAVIAN_USE_FRAME_POINTER
asmflags += -DAVIAN_USE_FRAME_POINTER
endif
endif
2007-10-26 14:34:54 +00:00
build-cflags = $(common-cflags) -fPIC -fvisibility=hidden \
"-I$(JAVA_HOME)/include/linux" $(extra-build-cflags) -I$(src) -pthread
2007-10-26 14:34:54 +00:00
converter-cflags = -D__STDC_CONSTANT_MACROS -std=c++0x -Iinclude/ -Isrc/ \
-fno-rtti -fno-exceptions \
-DAVIAN_TARGET_ARCH=AVIAN_ARCH_UNKNOWN \
-DAVIAN_TARGET_FORMAT=AVIAN_FORMAT_UNKNOWN \
-Wall -Wextra $(werror) -Wunused-parameter -Winit-self -Wno-non-virtual-dtor
2010-11-23 22:54:35 +00:00
2007-10-26 14:34:54 +00:00
cflags = $(build-cflags)
common-lflags = -lm -lz
2007-10-26 21:02:39 +00:00
2013-10-27 14:36:32 +00:00
ifeq ($(use-clang),true)
ifeq ($(build-kernel),darwin)
common-lflags += -Wl,-export_dynamic
else
ifneq ($(platform),windows)
common-lflags += -Wl,-E
else
common-lflags += -Wl,--export-all-symbols
endif
endif
2013-10-27 14:36:32 +00:00
endif
build-lflags = -lz -lpthread -ldl
lflags = $(common-lflags) -lpthread -ldl
2007-10-26 14:34:54 +00:00
build-system = posix
system = posix
2007-10-23 01:00:57 +00:00
asm = x86
2007-10-26 21:02:39 +00:00
2017-01-19 16:55:54 +00:00
ifeq ($(system),sgx)
cflags += -DSGX
endif
2007-10-26 21:02:39 +00:00
pointer-size = 8
so-prefix = lib
so-suffix = .so
static-prefix = lib
static-suffix = .a
output = -o $(1)
asm-output = -o $(1)
asm-input = -c $(1)
asm-format = S
as = $(cc)
ld = $(cc)
build-ld = $(build-cc)
build-ld-cpp = $(build-cxx)
default-remote-test-host = localhost
default-remote-test-port = 22
ifeq ($(remote-test-host),)
remote-test-host = $(default-remote-test-host)
else
remote-test = true
endif
ifeq ($(remote-test-port),)
remote-test-port = $(default-remote-test-port)
else
remote-test = true
endif
remote-test-user = ${USER}
remote-test-dir = /tmp/avian-test-${USER}
static = -static
shared = -shared
rpath = -Wl,-rpath=\$$ORIGIN -Wl,-z,origin
2010-11-15 23:27:00 +00:00
openjdk-extra-cflags = -fvisibility=hidden
bootimage-cflags = -DTARGET_BYTES_PER_WORD=$(pointer-size)
bootimage-symbols = _binary_bootimage_bin_start:_binary_bootimage_bin_end
codeimage-symbols = _binary_codeimage_bin_start:_binary_codeimage_bin_end
2013-09-04 03:03:29 +00:00
developer-dir := $(shell if test -d /Developer/Platforms/$(target).platform/Developer/SDKs; then echo /Developer; \
2012-03-07 15:55:01 +00:00
else echo /Applications/Xcode.app/Contents/Developer; fi)
ifneq (,$(filter i386 arm,$(arch)))
pointer-size = 4
endif
ifneq (,$(filter arm arm64,$(arch)))
2010-11-09 03:48:08 +00:00
asm = arm
ifneq ($(platform),ios)
ifneq ($(arch),arm64)
no-psabi = -Wno-psabi
cflags += -marm $(no-psabi)
# By default, assume we can't use armv7-specific instructions on
# non-iOS platforms. Ideally, we'd detect this at runtime.
armv6=true
endif
endif
2010-11-09 18:28:58 +00:00
ifneq ($(arch),$(build-arch))
ifneq ($(kernel),darwin)
ifeq ($(arch),arm64)
cxx = aarch64-linux-gnu-g++
cc = aarch64-linux-gnu-gcc
ar = aarch64-linux-gnu-ar
ranlib = aarch64-linux-gnu-ranlib
strip = aarch64-linux-gnu-strip
else
cxx = arm-linux-gnueabi-g++
cc = arm-linux-gnueabi-gcc
ar = arm-linux-gnueabi-ar
ranlib = arm-linux-gnueabi-ranlib
strip = arm-linux-gnueabi-strip
endif
endif
2010-11-09 18:28:58 +00:00
endif
2009-08-06 19:25:20 +00:00
endif
ifeq ($(armv6),true)
cflags += -DAVIAN_ASSUME_ARMV6
endif
ifeq ($(platform),ios)
cflags += -DAVIAN_IOS
use-lto = false
endif
ifeq ($(build-kernel),darwin)
build-cflags = $(common-cflags) -fPIC -fvisibility=hidden -I$(src)
2013-11-05 00:26:57 +00:00
cflags += -Wno-deprecated-declarations
build-lflags += -framework CoreFoundation
endif
ifeq ($(platform),qnx)
cflags = $(common-cflags) -fPIC -fvisibility=hidden -I$(src)
lflags = $(common-lflags) -lsocket
ifeq ($(build-platform),qnx)
build-cflags = $(common-cflags) -fPIC -fvisibility=hidden -I$(src)
build-lflags = $(common-lflags)
else
ifeq ($(arch),i386)
prefix = i486-pc-nto-qnx6.5.0-
else
prefix = arm-unknown-nto-qnx6.5.0-
endif
endif
cxx = $(prefix)g++
cc = $(prefix)gcc
ar = $(prefix)ar
ranlib = $(prefix)ranlib
strip = $(prefix)strip
rdynamic = -Wl,--export-dynamic
endif
2012-08-02 16:36:16 +00:00
ifeq ($(platform),freebsd)
# There is no -ldl on FreeBSD
build-lflags = $(common-lflags) -lz -lpthread
lflags = $(common-lflags) -lpthread
# include/freebsd instead of include/linux
build-cflags = $(common-cflags) -fPIC -fvisibility=hidden \
"-I$(JAVA_HOME)/include/freebsd" -I$(src) -pthread
cflags = $(build-cflags)
endif
2013-01-23 23:55:23 +00:00
ifeq ($(platform),android)
ifeq ($(build-platform),cygwin)
2013-01-24 14:17:52 +00:00
ndk = "$$(cygpath -u "$(ANDROID_NDK)")"
else
ndk = $(ANDROID_NDK)
endif
ifeq ($(android-version),)
android-version = 5
endif
ifeq ($(android-toolchain),)
android-toolchain = 4.7
endif
ifeq ($(arch),arm)
android-toolchain-name = arm-linux-androideabi
android-toolchain-prefix = arm-linux-androideabi-
endif
ifeq ($(arch),i386)
android-toolchain-name = x86
android-toolchain-prefix = i686-linux-android-
endif
ifeq ($(android-arm-arch),)
android-arm-arch = armv5
endif
options := $(options)-api$(android-version)-$(android-toolchain)-$(android-arm-arch)
2013-01-24 14:17:52 +00:00
build-cflags = $(common-cflags) -I$(src)
build-lflags = -lz -lpthread
ifeq ($(subst cygwin,windows,$(subst mingw32,windows,$(build-platform))),windows)
toolchain-host-platform = $(subst cygwin,windows,$(subst mingw32,windows,$(build-platform)))
2013-01-24 14:17:52 +00:00
build-system = windows
build-cxx = i686-w64-mingw32-g++
build-cc = i686-w64-mingw32-gcc
sysroot = "$$(cygpath -w "$(ndk)/platforms/android-$(android-version)/arch-arm")"
2013-01-24 14:17:52 +00:00
build-cflags += "-I$(JAVA_HOME)/include/win32"
else
toolchain-host-platform = $(subst cygwin,windows,$(subst mingw32,windows,$(build-platform)))-*
sysroot = $(ndk)/platforms/android-$(android-version)/arch-arm
2013-01-24 14:17:52 +00:00
build-cflags += "-I$(JAVA_HOME)/include/linux"
build-lflags += -ldl
2013-01-24 14:17:52 +00:00
endif
toolchain = $(ndk)/toolchains/$(android-toolchain-name)-$(android-toolchain)/prebuilt/$(toolchain-host-platform)
cflags = "-I$(sysroot)/usr/include" "-I$(JAVA_HOME)/include/linux" $(common-cflags) "-I$(src)" -std=c++11 $(no-psabi)
lflags = "-L$(sysroot)/usr/lib" $(common-lflags) -llog
target-format = elf
2013-01-24 14:17:52 +00:00
use-lto = false
ifeq ($(arch),arm)
cflags += -marm -march=$(android-arm-arch) -ftree-vectorize -ffast-math -mfloat-abi=softfp
endif
ifeq ($(arch),i386)
endif
cxx = $(toolchain)/bin/$(android-toolchain-prefix)g++ --sysroot="$(sysroot)"
cc = $(toolchain)/bin/$(android-toolchain-prefix)gcc --sysroot="$(sysroot)"
as = $(cxx)
ar = $(toolchain)/bin/$(android-toolchain-prefix)ar
ranlib = $(toolchain)/bin/$(android-toolchain-prefix)ranlib
strip = $(toolchain)/bin/$(android-toolchain-prefix)strip
2013-01-23 23:55:23 +00:00
endif
2012-08-02 16:36:16 +00:00
ifeq ($(kernel),darwin)
target-format = macho
ifeq (${OSX_SDK_SYSROOT},)
OSX_SDK_SYSROOT = 10.6u
endif
ifeq (${OSX_SDK_VERSION},)
OSX_SDK_VERSION = 10.6
endif
ifneq ($(build-kernel),darwin)
cxx = i686-apple-darwin8-g++ $(mflag)
cc = i686-apple-darwin8-gcc $(mflag)
ar = i686-apple-darwin8-ar
ranlib = i686-apple-darwin8-ranlib
strip = i686-apple-darwin8-strip
2011-05-26 17:57:30 +00:00
sysroot = /opt/mac/SDKs/MacOSX${OSX_SDK_SYSROOT}.sdk
cflags = -I$(sysroot)/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Headers/ \
$(common-cflags) -fPIC -fvisibility=hidden -I$(src)
endif
ifneq ($(platform),ios)
platform-dir = $(developer-dir)/Platforms/MacOSX.platform
sdk-dir = $(platform-dir)/Developer/SDKs
mac-version := $(shell \
if test -d $(sdk-dir)/MacOSX10.11.sdk; then echo 10.11; \
elif test -d $(sdk-dir)/MacOSX10.10.sdk; then echo 10.10; \
elif test -d $(sdk-dir)/MacOSX10.9.sdk; then echo 10.9; \
elif test -d $(sdk-dir)/MacOSX10.8.sdk; then echo 10.8; \
elif test -d $(sdk-dir)/MacOSX10.7.sdk; then echo 10.7; \
elif test -d $(sdk-dir)/MacOSX10.6.sdk; then echo 10.6; \
else echo; fi)
sysroot = $(sdk-dir)/MacOSX$(mac-version).sdk
endif
soname-flag =
2010-11-08 04:23:25 +00:00
version-script-flag =
lflags = $(common-lflags) -ldl -framework CoreFoundation -framework Foundation
2012-06-04 15:52:06 +00:00
2012-06-06 18:58:24 +00:00
ifeq (,$(shell ld -v 2>&1 | grep cctools))
2012-06-04 15:52:06 +00:00
lflags += -Wl,-compatibility_version,1.0.0
endif
ifneq ($(platform),ios)
2012-03-11 22:26:46 +00:00
lflags += -framework CoreServices -framework SystemConfiguration \
-framework Security
endif
2008-12-19 02:52:03 +00:00
ifeq ($(bootimage),true)
bootimage-lflags = -Wl,-segprot,__RWX,rwx,rwx
2008-12-19 02:52:03 +00:00
endif
2008-03-31 04:23:51 +00:00
rdynamic =
2007-11-01 20:37:51 +00:00
strip-all = -S -x
so-suffix = .dylib
shared = -dynamiclib
rpath =
ifeq ($(platform),ios)
ifeq ($(sim),true)
target = iPhoneSimulator
sdk = iphonesimulator$(ios-version)
2015-03-16 17:32:35 +00:00
ifeq ($(arch),i386)
arch-flag = -arch i386
else
arch-flag = -arch x86_64
arch = x86_64
2015-03-16 17:32:35 +00:00
endif
release = Release-iphonesimulator
else
target = iPhoneOS
sdk = iphoneos$(ios-version)
ifeq ($(arch),arm)
arch-flag = -arch armv7
else
arch-flag = -arch arm64
arch = arm64
endif
release = Release-iphoneos
endif
platform-dir = $(developer-dir)/Platforms/$(target).platform
sdk-dir = $(platform-dir)/Developer/SDKs
ios-version := $(shell for x in 10.3 10.2 10.1 10.0 9.3 9.2 9.1 9.0 8.3 8.2 8.1 8.0; \
2016-04-05 13:51:31 +00:00
do if test -d $(sdk-dir)/$(target)$$x.sdk \
-o -L $(sdk-dir)/$(target)$$x.sdk; \
then echo $$x; break; fi; done)
ifeq ($(ios-version),)
x := $(error "couldn't find SDK in $(sdk-dir)")
endif
sysroot = $(sdk-dir)/$(target)$(ios-version).sdk
# apparently, the header files we need are part of the simulator SDK
# but not the device SDK, so we copy them from the former even if
# we're targeting the latter
header-sysroot := $(subst iPhoneOS,iPhoneSimulator,$(sysroot))
ios-bin = $(platform-dir)/Developer/usr/bin
found-gcc = $(shell if test -f $(ios-bin)/gcc; then echo true; else echo false; fi)
ifeq ($(found-gcc),false)
use-clang = true
endif
ifeq ($(use-clang),true)
cxx = clang -std=c++11
cc = clang
else
cxx = $(ios-bin)/g++
cc = $(ios-bin)/gcc
endif
flags = -isysroot $(sdk-dir)/$(target)$(ios-version).sdk \
$(arch-flag)
classpath-extra-cflags += $(flags)
cflags += $(flags)
asmflags += $(flags)
lflags += $(flags)
ios-version-min=$(ios-version)
ifdef ios_deployment_target
ios-version-min=ios_deployment_target
endif
ifeq ($(sim),true)
ifeq ($(arch),x86_64)
classpath-extra-cflags += \
-arch x86_64 -miphoneos-version-min=$(ios-version-min)
cflags += -arch x86_64 -miphoneos-version-min=$(ios-version-min)
asmflags += -arch x86_64 -miphoneos-version-min=$(ios-version-min)
lflags += -arch x86_64 -miphoneos-version-min=$(ios-version-min)
else
classpath-extra-cflags += \
-arch i386 -miphoneos-version-min=$(ios-version-min)
cflags += -arch i386 -miphoneos-version-min=$(ios-version-min)
asmflags += -arch i386 -miphoneos-version-min=$(ios-version-min)
lflags += -arch i386 -miphoneos-version-min=$(ios-version-min)
endif
2015-03-16 17:32:35 +00:00
else
ifeq ($(arch),arm64)
classpath-extra-cflags += \
-arch arm64 -miphoneos-version-min=$(ios-version-min)
cflags += -arch arm64 -miphoneos-version-min=$(ios-version-min)
asmflags += -arch arm64 -miphoneos-version-min=$(ios-version-min)
lflags += -arch arm64 -miphoneos-version-min=$(ios-version-min)
else
classpath-extra-cflags += \
-arch armv7 -miphoneos-version-min=$(ios-version-min)
cflags += -arch armv7 -miphoneos-version-min=$(ios-version-min)
asmflags += -arch armv7 -miphoneos-version-min=$(ios-version-min)
lflags += -arch armv7 -miphoneos-version-min=$(ios-version-min)
endif
endif
else # not ios
ifeq ($(arch),i386)
classpath-extra-cflags += \
-arch i386 -mmacosx-version-min=${OSX_SDK_VERSION}
cflags += -arch i386 -mmacosx-version-min=${OSX_SDK_VERSION}
asmflags += -arch i386 -mmacosx-version-min=${OSX_SDK_VERSION}
lflags += -arch i386 -mmacosx-version-min=${OSX_SDK_VERSION}
endif
ifeq ($(arch),x86_64)
classpath-extra-cflags += -arch x86_64
cflags += -arch x86_64
asmflags += -arch x86_64
lflags += -arch x86_64
2015-03-16 17:32:35 +00:00
endif
2009-12-01 21:24:33 +00:00
endif
2013-11-05 00:26:57 +00:00
cflags += -I$(JAVA_HOME)/include/darwin
endif
2007-10-26 21:02:39 +00:00
openjdk-extra-cflags += $(classpath-extra-cflags)
find-tool = $(shell if ( command -v "$(1)$(2)" >/dev/null ); then (echo "$(1)$(2)") else (echo "$(2)"); fi)
ifeq ($(platform),windows)
target-format = pe
inc = "$(win32)/include"
lib = "$(win32)/lib"
embed-prefix = c:/avian-embedded
system = windows
so-prefix =
so-suffix = .dll
exe-suffix = .exe
rpath =
lflags = -L$(lib) $(common-lflags) -lws2_32 -lversion -luuid -liphlpapi \
-lmswsock -mconsole
cflags = -I$(inc) $(common-cflags) -DWINVER=0x0500 -U__STRICT_ANSI__
2011-09-30 21:21:12 +00:00
ifeq (,$(filter mingw32 cygwin,$(build-platform)))
2010-11-15 23:27:00 +00:00
openjdk-extra-cflags += -I$(src)/openjdk/caseSensitive
prefix := $(shell i686-w64-mingw32-gcc --version >/dev/null 2>&1 \
&& echo i686-w64-mingw32- || echo x86_64-w64-mingw32-)
cxx = $(prefix)g++ -m32
cc = $(prefix)gcc -m32
dlltool = $(prefix)dlltool -mi386 --as-flags=--32
ar = $(prefix)ar
ranlib = $(prefix)ranlib
strip = $(prefix)strip --strip-all
else
2010-11-12 23:53:16 +00:00
build-system = windows
static-on-windows = -static
2009-02-14 00:03:46 +00:00
common-cflags += "-I$(JAVA_HOME)/include/win32"
build-cflags = $(common-cflags) -I$(src) -I$(inc) -mthreads \
-D_WIN32_WINNT=0x0500
2010-11-15 23:27:00 +00:00
openjdk-extra-cflags =
2010-11-13 02:04:17 +00:00
build-lflags = -L$(lib) $(common-lflags)
ifeq ($(build-platform),cygwin)
build-cxx = i686-w64-mingw32-g++
build-cc = i686-w64-mingw32-gcc
dlltool = i686-w64-mingw32-dlltool
ar = i686-w64-mingw32-ar
ranlib = i686-w64-mingw32-ranlib
strip = i686-w64-mingw32-strip
endif
endif
2009-06-11 15:36:53 +00:00
ifeq ($(arch),x86_64)
ifeq ($(build-platform),cygwin)
build-cxx = x86_64-w64-mingw32-g++
build-cc = x86_64-w64-mingw32-gcc
endif
cxx = x86_64-w64-mingw32-g++ $(mflag)
cc = x86_64-w64-mingw32-gcc $(mflag)
dlltool = $(call find-tool,x86_64-w64-mingw32-,dlltool)
ar = $(call find-tool,x86_64-w64-mingw32-,ar)
ranlib = $(call find-tool,x86_64-w64-mingw32-,ranlib)
strip = $(call find-tool,x86_64-w64-mingw32-,strip)
inc = "$(win64)/include"
lib = "$(win64)/lib"
2012-03-18 00:47:22 +00:00
else
shared += -Wl,--add-stdcall-alias
2009-06-11 15:36:53 +00:00
endif
2012-12-05 00:37:02 +00:00
embed = $(build-embed)/embed$(exe-suffix)
embed-loader = $(build-embed-loader)/embed-loader$(exe-suffix)
2012-11-13 08:11:49 +00:00
embed-loader-o = $(build-embed)/embed-loader.o
endif
ifeq ($(platform),wp8)
ifeq ($(shell uname -s | grep -i -c WOW64),1)
programFiles = Program Files (x86)
2012-06-03 00:56:07 +00:00
else
programFiles = Program Files
2012-06-03 00:56:07 +00:00
endif
ifeq ($(MSVS_ROOT),)
# Environment variable MSVS_ROOT not found. It should be something like
# "C:\$(programFiles)\Microsoft Visual Studio 11.0"
MSVS_ROOT = C:\$(programFiles)\Microsoft Visual Studio 11.0
endif
ifeq ($(MSVC_ROOT),)
# Environment variable MSVC_ROOT not found. It should be something like
# "C:\$(programFiles)\Microsoft Visual Studio 11.0\VC"
MSVC_ROOT = $(MSVS_ROOT)\VC
endif
ifeq ($(WP80_SDK),)
# Environment variable WP8_SDK not found. It should be something like
# "C:\Program Files[ (x86)]\Microsoft Visual Studio 11.0\VC\WPSDK\WP80"
# TODO: Lookup in SOFTWARE\Microsoft\Microsoft SDKs\WindowsPhone\v8.0
2013-01-29 12:21:02 +00:00
WP80_SDK = $(MSVS_ROOT)\VC\WPSDK\WP80
endif
ifeq ($(WP80_KIT),)
# Environment variable WP8_KIT not found. It should be something like
# "c:\Program Files[ (x86)]\Windows Phone Kits\8.0"
# TODO: Lookup in SOFTWARE\Microsoft\Microsoft SDKs\WindowsPhone\v8.0
WP80_KIT = C:\$(programFiles)\Windows Phone Kits\8.0
endif
ifeq ($(WIN8_KIT),)
# Environment variable WIN8_KIT not found. It should be something like
# "c:\Program Files[ (x86)]\Windows Kits\8.0"
WIN8_KIT = C:\$(programFiles)\Windows Kits\8.0
endif
ifeq ($(build-platform),cygwin)
windows-path = cygpath -w
else
windows-path = $(native-path)
endif
windows-java-home := $(shell $(windows-path) "$(JAVA_HOME)")
target-format = pe
ms_cl_compiler = wp8
use-lto = false
supports_avian_executable = false
aot-only = true
2013-02-09 11:09:58 +00:00
ifneq ($(bootimage),true)
2013-02-09 11:18:39 +00:00
x := $(error Windows Phone 8 target requires bootimage=true)
endif
system = windows
build-system = windows
static-prefix =
static-suffix = .lib
so-prefix =
so-suffix = .dll
exe-suffix = .exe
manifest-flags = -MANIFEST:NO
ifeq ($(arch),arm)
wp8_arch = \x86_arm
vc_arch = \arm
w8kit_arch = arm
deps_arch = ARM
as = "$$(cygpath -u "$(WP80_SDK)\bin\x86_arm\armasm.exe")"
cxx = "$$(cygpath -u "$(WP80_SDK)\bin\x86_arm\cl.exe")"
ld = "$$(cygpath -u "$(WP80_SDK)\bin\x86_arm\link.exe")"
2013-01-31 10:54:51 +00:00
asmflags = -machine ARM -32
asm-output = -o $(1)
asm-input = $(1)
machine_type = ARM
2013-01-31 10:54:51 +00:00
bootimage-symbols = binary_bootimage_bin_start:binary_bootimage_bin_end
codeimage-symbols = binary_codeimage_bin_start:binary_codeimage_bin_end
endif
ifeq ($(arch),i386)
wp8_arch =
vc_arch =
w8kit_arch = x86
deps_arch = x86
asmflags = $(target-cflags) -safeseh -nologo -Gd
as = "$$(cygpath -u "$(WP80_SDK)\bin\ml.exe")"
cxx = "$$(cygpath -u "$(WP80_SDK)\bin\cl.exe")"
ld = "$$(cygpath -u "$(WP80_SDK)\bin\link.exe")"
ifeq ($(mode),debug)
asmflags += -Zd
endif
ifeq ($(mode),debug-fast)
asmflags += -Zd
endif
asm-output = $(output)
machine_type = X86
endif
PATH := $(shell cygpath -u "$(MSVS_ROOT)\Common7\IDE"):$(shell cygpath -u "$(WP80_SDK)\bin$(wp8_arch)"):$(shell cygpath -u "$(WP80_SDK)\bin"):${PATH}
build-cflags = $(common-cflags) -I$(src) -I$(inc) -mthreads
build-lflags = -lz -lpthread
cflags = -nologo \
-AI"$(WP80_KIT)\Windows Metadata" \
-I"$(WP80_SDK)\include" -I"$(WP80_KIT)\Include" -I"$(WP80_KIT)\Include\minwin" -I"$(WP80_KIT)\Include\mincore" \
-DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP -D_USRDLL -D_WINDLL \
-DAVIAN_VERSION=\"$(version)\" -D_JNI_IMPLEMENTATION_ \
-DUSE_ATOMIC_OPERATIONS -DAVIAN_JAVA_HOME=\"$(javahome)\" \
-DAVIAN_EMBED_PREFIX=\"$(embed-prefix)\" \
2013-02-02 07:38:03 +00:00
-I"$(shell $(windows-path) "$(wp8)/zlib/upstream")" -I"$(shell $(windows-path) "$(wp8)/interop/avian-interop-client")" \
-I"$(shell $(windows-path) "$(wp8)/include")" -I$(src) -I$(classpath-src) \
-I"$(build)" \
-I"$(windows-java-home)/include" -I"$(windows-java-home)/include/win32" \
-DTARGET_BYTES_PER_WORD=$(pointer-size) \
2013-02-02 07:38:03 +00:00
-Gd -EHsc
common-lflags =
ifeq ($(mode),debug)
build-type = Debug
endif
ifeq ($(mode),debug-fast)
build-type = Debug
endif
ifeq ($(mode),stress-major)
build-type = Release
endif
ifeq ($(mode),fast)
build-type = Release
endif
ifeq ($(mode),fast)
build-type = Release
endif
ifeq ($(mode),small)
build-type = Release
endif
arflags = -MACHINE:$(machine_type)
lflags = $(common-lflags) -nologo \
-MACHINE:$(machine_type) \
-LIBPATH:"$(WP80_KIT)\lib\$(w8kit_arch)" -LIBPATH:"$(WP80_SDK)\lib$(vc_arch)" -LIBPATH:"$(WIN8_KIT)\Lib\win8\um\$(w8kit_arch)" \
ws2_32.lib \
2013-02-02 07:38:03 +00:00
"$(shell $(windows-path) "$(wp8)\lib\$(deps_arch)\$(build-type)\zlib.lib")" "$(shell $(windows-path) "$(wp8)\lib\$(deps_arch)\$(build-type)\ThreadEmulation.lib")" \
"$(shell $(windows-path) "$(wp8)\lib\$(deps_arch)\$(build-type)\AvianInteropClient.lib")"
lflags += -NXCOMPAT -DYNAMICBASE -SUBSYSTEM:CONSOLE -TLBID:1
lflags += -NODEFAULTLIB:"ole32.lib" -NODEFAULTLIB:"kernel32.lib"
lflags += PhoneAppModelHost.lib WindowsPhoneCore.lib -WINMD -WINMDFILE:$(subst $(so-suffix),.winmd,$(@))
cc = $(cxx)
asm-format = masm
shared = -dll
ar = "$$(cygpath -u "$(WP80_SDK)\bin\lib.exe")"
arflags += -nologo
ifeq ($(build-platform),cygwin)
build-cxx = i686-w64-mingw32-g++
build-cc = i686-w64-mingw32-gcc
dlltool = i686-w64-mingw32-dlltool
ranlib =
strip =
endif
output = -Fo$(1)
#TODO: -MT or -ZW?
cflags_debug = -Od -Zi -MDd
cflags_debug_fast = -Od -Zi -MDd
cflags_stress = -O0 -g3 -MD
cflags_stress_major = -O0 -g3 -MD
cflags_fast = -O2 -Zi -MD
cflags_small = -O1s -Zi -MD
# -GL [whole program optimization] in 'fast' and 'small' breaks compilation for some reason
ifeq ($(mode),debug)
cflags +=
lflags +=
endif
ifeq ($(mode),debug-fast)
cflags += -DNDEBUG
lflags +=
endif
ifeq ($(mode),stress-major)
cflags +=
lflags +=
endif
ifeq ($(mode),fast)
cflags +=
lflags +=
endif
# -LTCG is needed only if -GL is used
ifeq ($(mode),fast)
cflags += -DNDEBUG
lflags += -LTCG
arflags +=
endif
ifeq ($(mode),small)
cflags += -DNDEBUG
lflags += -LTCG
arflags +=
endif
strip = :
endif
2012-12-05 22:30:49 +00:00
ifdef msvc
2013-03-04 18:09:59 +00:00
target-format = pe
2012-06-02 21:43:42 +00:00
windows-path = $(native-path)
windows-java-home := $(shell $(windows-path) "$(JAVA_HOME)")
zlib := $(shell $(windows-path) "$(win32)/msvc")
ms_cl_compiler = regular
2013-03-04 18:09:59 +00:00
as = $(build-cc)
cxx = "$(msvc)/BIN/cl.exe"
cc = $(cxx)
ld = "$(msvc)/BIN/link.exe"
mt = "mt.exe"
2013-03-04 18:09:59 +00:00
ar = "$(msvc)/BIN/lib.exe"
manifest-flags = -MANIFEST -MANIFESTFILE:$(@).manifest
cflags = -nologo -DAVIAN_VERSION=\"$(version)\" -D_JNI_IMPLEMENTATION_ \
2011-01-21 23:14:21 +00:00
-DUSE_ATOMIC_OPERATIONS -DAVIAN_JAVA_HOME=\"$(javahome)\" \
-DAVIAN_EMBED_PREFIX=\"$(embed-prefix)\" \
2012-08-15 23:42:31 +00:00
-Fd$(build)/$(name).pdb -I"$(zlib)/include" -I$(src) -I$(classpath-src) \
2013-03-04 18:09:59 +00:00
-I"$(build)" -Iinclude \
2012-02-17 01:22:11 +00:00
-I"$(windows-java-home)/include" -I"$(windows-java-home)/include/win32" \
-DTARGET_BYTES_PER_WORD=$(pointer-size)
2012-06-02 21:43:42 +00:00
ifneq ($(lzma),)
2012-06-02 21:43:42 +00:00
cflags += -I$(shell $(windows-path) "$(lzma)")
endif
shared = -dll
lflags = -nologo -LIBPATH:"$(zlib)/lib" -DEFAULTLIB:ws2_32 \
2012-12-05 22:30:49 +00:00
-DEFAULTLIB:zlib -DEFAULTLIB:user32 -MANIFEST -debug
2009-08-27 15:30:34 +00:00
output = -Fo$(1)
2013-03-04 18:09:59 +00:00
cflags_debug = -Od -Zi -MDd
cflags_debug_fast = -Od -Zi -DNDEBUG
cflags_fast = -O2 -GL -Zi -DNDEBUG
cflags_small = -O1s -Zi -GL -DNDEBUG
ifeq ($(mode),fast)
lflags += -LTCG
endif
ifeq ($(mode),small)
lflags += -LTCG
endif
2013-03-04 18:09:59 +00:00
use-lto = false
strip = :
endif
ifeq ($(mode),debug)
optimization-cflags = $(cflags_debug)
converter-cflags += $(cflags_debug)
strip = :
endif
2008-01-12 00:15:34 +00:00
ifeq ($(mode),debug-fast)
optimization-cflags = $(cflags_debug_fast) -DNDEBUG
strip = :
2008-01-12 00:15:34 +00:00
endif
ifeq ($(mode),stress)
optimization-cflags = $(cflags_stress) -DVM_STRESS
strip = :
endif
ifeq ($(mode),stress-major)
optimization-cflags = $(cflags_stress_major) -DVM_STRESS -DVM_STRESS_MAJOR
strip = :
endif
ifeq ($(mode),fast)
optimization-cflags = $(cflags_fast) -DNDEBUG
endif
ifeq ($(mode),small)
optimization-cflags = $(cflags_small) -DNDEBUG
endif
ifeq ($(use-lto),true)
ifeq ($(use-clang),true)
optimization-cflags += -flto
lflags += $(optimization-cflags)
else
# only try to use LTO when GCC 4.6.0 or greater is available
gcc-major := $(shell $(cc) -dumpversion | cut -f1 -d.)
gcc-minor := $(shell $(cc) -dumpversion | cut -f2 -d.)
ifeq ($(shell expr 4 \< $(gcc-major) \
\| \( 4 \<= $(gcc-major) \& 6 \<= $(gcc-minor) \)),1)
optimization-cflags += -flto
no-lto = -fno-lto
lflags += $(optimization-cflags)
endif
endif
endif
cflags += $(optimization-cflags)
ifndef ms_cl_compiler
ifneq ($(kernel),darwin)
ifeq ($(arch),i386)
# this is necessary to support __sync_bool_compare_and_swap:
cflags += -march=i586
lflags += -march=i586
endif
endif
endif
2012-12-05 22:30:49 +00:00
c-objects = $(foreach x,$(1),$(patsubst $(2)/%.c,$(3)/%.o,$(x)))
cpp-objects = $(foreach x,$(1),$(patsubst $(2)/%.cpp,$(3)/%.o,$(x)))
cc-objects = $(foreach x,$(1),$(patsubst $(2)/%.cc,$(3)/%.o,$(x)))
asm-objects = $(foreach x,$(1),$(patsubst $(2)/%.$(asm-format),$(3)/%-asm.o,$(x)))
java-classes = $(foreach x,$(1),$(patsubst $(2)/%.java,$(3)/%.class,$(x)))
noop-files = $(foreach x,$(1),$(patsubst $(2)/%,$(3)/%,$(x)))
generated-code = \
$(build)/type-enums.cpp \
$(build)/type-declarations.cpp \
$(build)/type-constructors.cpp \
$(build)/type-initializations.cpp \
$(build)/type-java-initializations.cpp \
$(build)/type-name-initializations.cpp \
$(build)/type-maps.cpp
2007-07-06 23:50:26 +00:00
vm-depends := $(generated-code) \
$(shell find src include -name '*.h' -or -name '*.inc.cpp')
2007-07-06 23:50:26 +00:00
vm-sources = \
$(src)/system/$(system).cpp \
$(wildcard $(src)/system/$(system)/*.cpp) \
$(src)/finder.cpp \
2007-07-06 23:50:26 +00:00
$(src)/machine.cpp \
2007-11-26 23:15:53 +00:00
$(src)/util.cpp \
2013-02-15 14:35:17 +00:00
$(src)/heap/heap.cpp \
2007-09-25 23:53:11 +00:00
$(src)/$(process).cpp \
$(src)/classpath-$(classpath).cpp \
$(src)/builtin.cpp \
$(src)/jnienv.cpp \
$(src)/process.cpp \
$(src)/heapdump.cpp
2007-06-29 02:58:48 +00:00
vm-asm-sources = $(src)/$(arch).$(asm-format)
target-asm = $(asm)
2012-11-13 08:11:49 +00:00
build-embed = $(build)/embed
build-embed-loader = $(build)/embed-loader
2013-04-02 08:37:20 +00:00
embed-loader-sources = $(src)/embedded-loader.cpp
2012-11-13 08:11:49 +00:00
embed-loader-objects = $(call cpp-objects,$(embed-loader-sources),$(src),$(build-embed-loader))
embed-sources = $(src)/embed.cpp
embed-objects = $(call cpp-objects,$(embed-sources),$(src),$(build-embed))
compiler-sources = \
$(src)/codegen/compiler.cpp \
2013-02-17 02:50:34 +00:00
$(wildcard $(src)/codegen/compiler/*.cpp) \
$(src)/debug-util.cpp \
$(src)/codegen/runtime.cpp \
2014-02-25 22:15:37 +00:00
$(src)/codegen/targets.cpp \
$(src)/util/fixed-allocator.cpp
2013-02-17 02:50:34 +00:00
x86-assembler-sources = $(wildcard $(src)/codegen/target/x86/*.cpp)
2013-02-17 02:50:34 +00:00
arm-assembler-sources = $(wildcard $(src)/codegen/target/arm/*.cpp)
2013-02-17 02:50:34 +00:00
all-assembler-sources = \
2013-02-17 02:50:34 +00:00
$(x86-assembler-sources) \
2014-04-29 19:26:40 +00:00
$(arm-assembler-sources)
2013-02-17 02:50:34 +00:00
native-assembler-sources = $($(target-asm)-assembler-sources)
all-codegen-target-sources = \
$(compiler-sources) \
$(native-assembler-sources)
ifeq ($(process),compile)
vm-sources += $(compiler-sources)
ifeq ($(codegen-targets),native)
vm-sources += $(native-assembler-sources)
endif
ifeq ($(codegen-targets),all)
ifneq (,$(filter arm arm64,$(arch)))
# The x86 jit has a dependency on the x86 assembly code,
# and thus can't be successfully built on non-x86 platforms.
vm-sources += $(native-assembler-sources)
else
vm-sources += $(all-assembler-sources)
endif
endif
2007-12-09 22:45:43 +00:00
vm-asm-sources += $(src)/compile-$(arch).$(asm-format)
endif
ifeq ($(aot-only),true)
2013-01-28 17:15:29 +00:00
cflags += -DAVIAN_AOT_ONLY
endif
2007-06-29 02:58:48 +00:00
vm-cpp-objects = $(call cpp-objects,$(vm-sources),$(src),$(build))
all-codegen-target-objects = $(call cpp-objects,$(all-codegen-target-sources),$(src),$(build))
vm-asm-objects = $(call asm-objects,$(vm-asm-sources),$(src),$(build))
vm-objects = $(vm-cpp-objects) $(vm-asm-objects)
heapwalk-sources = $(src)/heapwalk.cpp
heapwalk-objects = \
$(call cpp-objects,$(heapwalk-sources),$(src),$(build))
unittest-objects = $(call cpp-objects,$(unittest-sources),$(unittest),$(build)/unittest)
2013-02-15 03:54:20 +00:00
vm-heapwalk-objects = $(heapwalk-objects)
ifeq ($(tails),true)
cflags += -DAVIAN_TAILS
endif
ifeq ($(continuations),true)
cflags += -DAVIAN_CONTINUATIONS
asmflags += -DAVIAN_CONTINUATIONS
endif
bootimage-generator-sources = $(src)/tools/bootimage-generator/main.cpp $(src)/util/arg-parser.cpp $(stub-sources)
ifneq ($(lzma),)
bootimage-generator-sources += $(src)/lzma-encode.cpp
endif
bootimage-generator-objects = \
$(call cpp-objects,$(bootimage-generator-sources),$(src),$(build))
bootimage-generator = $(build)/bootimage-generator
ifneq ($(mode),fast)
host-vm-options := -$(mode)
endif
host-vm = build/$(build-platform)-$(build-arch)-interpret$(host-vm-options)/$(so-prefix)jvm$(so-suffix)
bootimage-object = $(build)/bootimage-bin.o
codeimage-object = $(build)/codeimage-bin.o
ifeq ($(bootimage),true)
vm-classpath-objects = $(bootimage-object) $(codeimage-object)
cflags += -DBOOT_IMAGE -DAVIAN_CLASSPATH=\"\"
else
vm-classpath-objects = $(classpath-object)
cflags += -DBOOT_CLASSPATH=\"[classpathJar]\" \
-DAVIAN_CLASSPATH=\"[classpathJar]\"
endif
cflags += $(extra-cflags)
lflags += $(extra-lflags)
openjdk-cflags += $(extra-cflags)
driver-source = $(src)/main.cpp
driver-object = $(build)/main.o
2010-11-27 21:46:07 +00:00
driver-dynamic-objects = \
$(build)/main-dynamic.o
boot-source = $(src)/boot.cpp
boot-object = $(build)/boot.o
generator-depends := $(wildcard $(src)/*.h)
generator-sources = \
$(src)/tools/type-generator/main.cpp \
$(src)/system/$(build-system).cpp \
$(wildcard $(src)/system/$(build-system)/*.cpp) \
2014-05-29 03:34:58 +00:00
$(src)/finder.cpp \
$(src)/util/arg-parser.cpp
ifneq ($(lzma),)
common-cflags += -I$(lzma) -DAVIAN_USE_LZMA
vm-sources += \
$(src)/lzma-decode.cpp
generator-sources += \
$(src)/lzma-decode.cpp
lzma-decode-sources = \
$(lzma)/C/LzmaDec.c
lzma-decode-objects = \
$(call c-objects,$(lzma-decode-sources),$(lzma)/C,$(build))
lzma-encode-sources = \
$(lzma)/C/LzmaEnc.c \
$(lzma)/C/LzFind.c
lzma-encode-objects = \
$(call c-objects,$(lzma-encode-sources),$(lzma)/C,$(build))
lzma-encoder = $(build)/lzma/lzma
lzma-build-cflags = -D_7ZIP_ST -D__STDC_CONSTANT_MACROS \
-fno-exceptions -fPIC -I$(lzma)/C
lzma-cflags = $(lzma-build-cflags) $(classpath-extra-cflags)
lzma-encoder-sources = \
$(src)/lzma/main.cpp
lzma-encoder-objects = \
$(call cpp-objects,$(lzma-encoder-sources),$(src),$(build))
lzma-encoder-lzma-sources = $(lzma-encode-sources) $(lzma-decode-sources)
lzma-encoder-lzma-objects = \
2012-06-02 21:43:42 +00:00
$(call generator-c-objects,$(lzma-encoder-lzma-sources),$(lzma)/C,$(build))
lzma-loader = $(build)/lzma/load.o
lzma-library = $(build)/libavian-lzma.a
endif
generator-cpp-objects = \
$(foreach x,$(1),$(patsubst $(2)/%.cpp,$(3)/%-build.o,$(x)))
generator-c-objects = \
$(foreach x,$(1),$(patsubst $(2)/%.c,$(3)/%-build.o,$(x)))
generator-objects = \
$(call generator-cpp-objects,$(generator-sources),$(src),$(build))
generator-lzma-objects = \
$(call generator-c-objects,$(lzma-decode-sources),$(lzma)/C,$(build))
generator = $(build)/generator
all-depends = $(shell find include -name '*.h')
object-writer-depends = $(shell find $(src)/tools/object-writer -name '*.h')
object-writer-sources = $(shell find $(src)/tools/object-writer -name '*.cpp')
object-writer-objects = $(call cpp-objects,$(object-writer-sources),$(src),$(build))
2012-04-25 15:09:26 +00:00
binary-to-object-depends = $(shell find $(src)/tools/binary-to-object/ -name '*.h')
binary-to-object-sources = $(shell find $(src)/tools/binary-to-object/ -name '*.cpp')
binary-to-object-objects = $(call cpp-objects,$(binary-to-object-sources),$(src),$(build))
converter-sources = $(object-writer-sources)
converter-tool-depends = $(binary-to-object-depends) $(all-depends)
converter-tool-sources = $(binary-to-object-sources)
2012-04-25 15:09:26 +00:00
converter-objects = $(call cpp-objects,$(converter-sources),$(src),$(build))
converter-tool-objects = $(call cpp-objects,$(converter-tool-sources),$(src),$(build))
2012-04-25 15:09:26 +00:00
converter = $(build)/binaryToObject/binaryToObject
static-library = $(build)/$(static-prefix)$(name)$(static-suffix)
executable = $(build)/$(name)${exe-suffix}
dynamic-library = $(build)/$(so-prefix)jvm$(so-suffix)
executable-dynamic = $(build)/$(name)-dynamic$(exe-suffix)
2007-06-30 02:39:01 +00:00
2013-02-15 03:54:20 +00:00
unittest-executable = $(build)/$(name)-unittest${exe-suffix}
ifneq ($(classpath),avian)
# Assembler, ConstantPool, and Stream are not technically needed for a
# working build, but we include them since our Subroutine test uses
# them to synthesize a class:
classpath-sources := \
$(classpath-src)/avian/Addendum.java \
2013-02-21 22:37:17 +00:00
$(classpath-src)/avian/AnnotationInvocationHandler.java \
$(classpath-src)/avian/Assembler.java \
$(classpath-src)/avian/Callback.java \
$(classpath-src)/avian/Cell.java \
$(classpath-src)/avian/ClassAddendum.java \
$(classpath-src)/avian/Classes.java \
$(classpath-src)/avian/Code.java \
$(classpath-src)/avian/ConstantPool.java \
$(classpath-src)/avian/Continuations.java \
$(classpath-src)/avian/FieldAddendum.java \
$(classpath-src)/avian/Function.java \
$(classpath-src)/avian/IncompatibleContinuationException.java \
$(classpath-src)/avian/InnerClassReference.java \
$(classpath-src)/avian/Machine.java \
$(classpath-src)/avian/MethodAddendum.java \
$(classpath-src)/avian/Pair.java \
$(classpath-src)/avian/Singleton.java \
$(classpath-src)/avian/Stream.java \
$(classpath-src)/avian/SystemClassLoader.java \
$(classpath-src)/avian/VMClass.java \
$(classpath-src)/avian/VMField.java \
$(classpath-src)/avian/VMMethod.java \
$(classpath-src)/avian/avianvmresource/Handler.java \
$(classpath-src)/avian/file/Handler.java \
$(classpath-src)/java/lang/invoke/MethodHandle.java \
$(classpath-src)/java/lang/invoke/MethodHandles.java \
$(classpath-src)/java/lang/invoke/MethodType.java \
$(classpath-src)/java/lang/invoke/LambdaMetafactory.java \
2015-08-06 23:23:14 +00:00
$(classpath-src)/java/lang/invoke/LambdaConversionException.java \
$(classpath-src)/java/lang/invoke/CallSite.java
ifeq ($(openjdk),)
classpath-sources := $(classpath-sources) \
$(classpath-src)/dalvik/system/BaseDexClassLoader.java \
$(classpath-src)/libcore/reflect/AnnotationAccess.java \
$(classpath-src)/sun/reflect/ConstantPool.java \
$(classpath-src)/java/net/ProtocolFamily.java \
$(classpath-src)/java/net/StandardProtocolFamily.java \
$(classpath-src)/sun/misc/Cleaner.java \
$(classpath-src)/sun/misc/Unsafe.java \
$(classpath-src)/java/lang/Object.java \
$(classpath-src)/java/lang/Class.java \
$(classpath-src)/java/lang/ClassLoader.java \
$(classpath-src)/java/lang/Package.java \
$(classpath-src)/java/lang/reflect/Proxy.java \
$(classpath-src)/java/lang/reflect/Field.java \
$(classpath-src)/java/lang/reflect/SignatureParser.java \
$(classpath-src)/java/lang/reflect/Constructor.java \
$(classpath-src)/java/lang/reflect/AccessibleObject.java \
$(classpath-src)/java/lang/reflect/Method.java
endif
else
classpath-sources := $(shell find $(classpath-src) -name '*.java')
endif
classpath-classes = \
$(call java-classes,$(classpath-sources),$(classpath-src),$(classpath-build))
classpath-object = $(build)/classpath-jar.o
classpath-dep = $(classpath-build).dep
vm-classes = \
avian/*.class \
avian/resource/*.class
test-support-sources = $(shell find $(test)/avian/ -name '*.java')
2015-08-06 23:23:14 +00:00
test-sources := $(wildcard $(test)/*.java)
# HACK ALERT!!
# This test fails regularly on travis, but nowhere else. We have yet to spend the time to investigate that test, so we disable it on PR builds.
# Note: travis set TRAVIS_PULL_REQUEST environment variable to either the PR number or "false", as appropriate
ifeq (false,$(TRAVIS_PULL_REQUEST))
else
ifeq (,$(TRAVIS_PULL_REQUEST))
else
test-sources := $(subst $(test)/Trace.java,,$(test-sources))
endif
endif
2015-08-06 23:23:14 +00:00
ifeq (7,$(java-version))
test-sources := $(subst $(test)/InvokeDynamic.java,,$(test-sources))
test-sources := $(subst $(test)/Interfaces.java,,$(test-sources))
2015-08-06 23:23:14 +00:00
endif
2012-08-01 16:02:55 +00:00
test-cpp-sources = $(wildcard $(test)/*.cpp)
test-sources += $(test-support-sources)
test-support-classes = $(call java-classes, $(test-support-sources),$(test),$(test-build))
test-classes = $(call java-classes,$(test-sources),$(test),$(test-build))
2012-08-01 16:02:55 +00:00
test-cpp-objects = $(call cpp-objects,$(test-cpp-sources),$(test),$(test-build))
test-library = $(build)/$(so-prefix)test$(so-suffix)
test-dep = $(test-build).dep
test-extra-sources = $(wildcard $(test)/extra/*.java)
test-extra-classes = \
$(call java-classes,$(test-extra-sources),$(test),$(test-build))
test-extra-dep = $(test-build)-extra.dep
2013-02-15 03:54:20 +00:00
unittest-sources = \
$(wildcard $(unittest)/*.cpp) \
2013-02-17 19:10:18 +00:00
$(wildcard $(unittest)/util/*.cpp) \
2013-02-15 03:54:20 +00:00
$(wildcard $(unittest)/codegen/*.cpp)
unittest-depends = \
$(wildcard $(unittest)/*.h)
ifeq ($(continuations),true)
continuation-tests = \
extra.ComposableContinuations \
extra.Continuations \
extra.Coroutines \
extra.DynamicWind
endif
2011-03-15 23:51:32 +00:00
ifeq ($(tails),true)
tail-tests = \
extra.Tails
endif
2012-05-02 19:38:00 +00:00
ifeq ($(target-arch),i386)
cflags += -DAVIAN_TARGET_ARCH=AVIAN_ARCH_X86
endif
ifeq ($(target-arch),x86_64)
cflags += -DAVIAN_TARGET_ARCH=AVIAN_ARCH_X86_64
endif
ifeq ($(target-arch),arm)
cflags += -DAVIAN_TARGET_ARCH=AVIAN_ARCH_ARM
endif
ifeq ($(target-arch),arm64)
cflags += -DAVIAN_TARGET_ARCH=AVIAN_ARCH_ARM64
endif
ifeq ($(target-format),elf)
cflags += -DAVIAN_TARGET_FORMAT=AVIAN_FORMAT_ELF
endif
ifeq ($(target-format),pe)
cflags += -DAVIAN_TARGET_FORMAT=AVIAN_FORMAT_PE
endif
ifeq ($(target-format),macho)
cflags += -DAVIAN_TARGET_FORMAT=AVIAN_FORMAT_MACHO
2012-08-02 16:36:16 +00:00
endif
class-name = $(patsubst $(1)/%.class,%,$(2))
2007-10-28 01:54:30 +00:00
class-names = $(foreach x,$(2),$(call class-name,$(1),$(x)))
test-flags = -Djava.library.path=$(build) \
-cp '$(build)/test$(target-path-separator)$(build)/extra-dir'
test-args = $(test-flags) $(input)
2007-06-21 01:38:02 +00:00
Added targets for Eclipse environment descriptor. Someone on the Google Groups site asked how to set up an Eclipse project with Avian classpath. This patch creates the descriptor that you can you use to do that at `$(build)/eclipse/jdk/avian.ee`. The descriptor includes the Avian version, platform, architecture, and build options to allow for multiple versions to exist side by side. Users can import the descriptor into Eclipse via: Window >> Preferences >> Java >> Installed JREs >> Add >> Execution Environment Description Once the descriptor is imported, Avian can be used just like any other JVM installation for Eclipse projects. Personally I use this in conjunction with Eclim to gain code completion for Avian in vim. The new targets also create symlinks to loosely mimic OpenJDK's filenames and folder layout: build/linux-x86_64-tails-continuations/eclipse/jdk/ ├── avian.ee ├── bin │   └── java -> ../../../avian ├── jre │   └── lib │   └── rt.jar -> ../../../../classpath.jar └── src -> ../../classpath Annoyingly, Eclipse for some reason expects this layout to exist even though the descriptor format has required parameters for specifying these locations. I suppose that other software may look for this "standard" layout in a JVM installation so it may be generally useful. These artifacts are only built if the platform is one of `windows`, `linux`, or `macosx`. The symlinks might not actually work at all on Windows, I'm not sure how things like cygwin/msys handle that and I do not have the means to test it. If they do not work a fallback for windows might be to actually copy the files instead of symlinking. I realize this can be done outside of the makefile but it seemed useful to put it here to gain access to the information about the build location, platform, architecture, and other build options. For the record, this contribution is my original work and is released under the same license that Avian uses, found in the license.txt file in this repository.
2015-07-16 13:44:55 +00:00
ifneq ($(filter linux windows macosx,$(platform)),)
eclipse-exec-env = eclipse-ee
eclipse-jdk-dir = $(build)/eclipse/jdk
eclipse-ee-file = $(eclipse-jdk-dir)/avian.ee
eclipse-bin-dir = $(eclipse-jdk-dir)/bin
eclipse-lib-dir = $(eclipse-jdk-dir)/jre/lib
eclipse-src-dir = $(eclipse-jdk-dir)/src
define eclipse-ee-descriptor
# An Eclipse execution environment for the Avian JVM\
\n-Dee.executable=bin/java${exe-suffix}\
\n-Dee.bootclasspath=jre/lib/rt.jar\
\n-Dee.language.level=1.7\
\n-Dee.name=$(name)-$(version)-$(platform)-$(arch)$(options)\
\n-Dee.src=src\
\n-Dee.javadoc=file://$${ee.home}/doc\
\n-Djava.home=$${ee.home}\n
endef
else
eclipse-exec-env =
endif
.PHONY: build
ifneq ($(supports_avian_executable),false)
build: $(static-library) $(executable) $(dynamic-library) $(lzma-library) \
2012-06-02 19:23:52 +00:00
$(lzma-encoder) $(executable-dynamic) $(classpath-dep) $(test-dep) \
Added targets for Eclipse environment descriptor. Someone on the Google Groups site asked how to set up an Eclipse project with Avian classpath. This patch creates the descriptor that you can you use to do that at `$(build)/eclipse/jdk/avian.ee`. The descriptor includes the Avian version, platform, architecture, and build options to allow for multiple versions to exist side by side. Users can import the descriptor into Eclipse via: Window >> Preferences >> Java >> Installed JREs >> Add >> Execution Environment Description Once the descriptor is imported, Avian can be used just like any other JVM installation for Eclipse projects. Personally I use this in conjunction with Eclim to gain code completion for Avian in vim. The new targets also create symlinks to loosely mimic OpenJDK's filenames and folder layout: build/linux-x86_64-tails-continuations/eclipse/jdk/ ├── avian.ee ├── bin │   └── java -> ../../../avian ├── jre │   └── lib │   └── rt.jar -> ../../../../classpath.jar └── src -> ../../classpath Annoyingly, Eclipse for some reason expects this layout to exist even though the descriptor format has required parameters for specifying these locations. I suppose that other software may look for this "standard" layout in a JVM installation so it may be generally useful. These artifacts are only built if the platform is one of `windows`, `linux`, or `macosx`. The symlinks might not actually work at all on Windows, I'm not sure how things like cygwin/msys handle that and I do not have the means to test it. If they do not work a fallback for windows might be to actually copy the files instead of symlinking. I realize this can be done outside of the makefile but it seemed useful to put it here to gain access to the information about the build location, platform, architecture, and other build options. For the record, this contribution is my original work and is released under the same license that Avian uses, found in the license.txt file in this repository.
2015-07-16 13:44:55 +00:00
$(test-extra-dep) $(embed) $(build)/classpath.jar $(eclipse-exec-env)
else
build: $(static-library) $(dynamic-library) $(lzma-library) \
$(lzma-encoder) $(classpath-dep) $(test-dep) \
$(test-extra-dep) $(embed) $(build)/classpath.jar
endif
2009-09-05 22:04:43 +00:00
$(test-dep): $(classpath-dep)
$(test-extra-dep): $(classpath-dep)
2007-06-21 01:38:02 +00:00
.PHONY: run
2007-09-30 16:32:17 +00:00
run: build
$(library-path) $(test-executable) $(test-args)
.PHONY: debug
2007-09-30 16:32:17 +00:00
debug: build
2014-05-07 19:01:53 +00:00
$(library-path) $(db) $(test-executable) $(test-args)
.PHONY: vg
2007-09-30 16:32:17 +00:00
vg: build
$(library-path) $(vg) $(test-executable) $(test-args)
.PHONY: test
test: build-test run-test
.PHONY: build-test
build-test: build $(build)/run-tests.sh $(build)/test.sh $(unittest-executable)
.PHONY: run-test
run-test:
ifneq ($(remote-test),true)
/bin/sh $(build)/run-tests.sh
else
@echo "running tests on $(remote-test-user)@$(remote-test-host):$(remote-test-port), in $(remote-test-dir)"
rsync $(build) -rav --exclude '*.o' --rsh="ssh -p$(remote-test-port)" $(remote-test-user)@$(remote-test-host):$(remote-test-dir)
ssh -p$(remote-test-port) $(remote-test-user)@$(remote-test-host) sh "$(remote-test-dir)/$(platform)-$(arch)$(options)/run-tests.sh"
endif
.PHONY: jdk-test
2013-12-07 02:30:04 +00:00
jdk-test: $(test-dep) $(build)/classpath.jar $(build)/jdk-run-tests.sh $(build)/test.sh
/bin/sh $(build)/jdk-run-tests.sh
2009-04-11 17:54:43 +00:00
.PHONY: tarball
tarball:
@echo "creating build/avian-$(version).tar.bz2"
@mkdir -p build
(cd .. && tar --exclude=build --exclude=cmake-build --exclude=distrib \
2015-03-16 16:39:11 +00:00
--exclude=lib --exclude='.*' --exclude='*~' \
-cjf avian/build/avian-$(version).tar.bz2 avian)
2009-04-11 17:54:43 +00:00
.PHONY: clean-current
clean-current:
@echo "removing $(build)"
rm -rf $(build)
.PHONY: clean
clean:
2015-03-16 16:39:11 +00:00
@echo "removing build directories"
rm -rf build cmake-build distrib lib
Added targets for Eclipse environment descriptor. Someone on the Google Groups site asked how to set up an Eclipse project with Avian classpath. This patch creates the descriptor that you can you use to do that at `$(build)/eclipse/jdk/avian.ee`. The descriptor includes the Avian version, platform, architecture, and build options to allow for multiple versions to exist side by side. Users can import the descriptor into Eclipse via: Window >> Preferences >> Java >> Installed JREs >> Add >> Execution Environment Description Once the descriptor is imported, Avian can be used just like any other JVM installation for Eclipse projects. Personally I use this in conjunction with Eclim to gain code completion for Avian in vim. The new targets also create symlinks to loosely mimic OpenJDK's filenames and folder layout: build/linux-x86_64-tails-continuations/eclipse/jdk/ ├── avian.ee ├── bin │   └── java -> ../../../avian ├── jre │   └── lib │   └── rt.jar -> ../../../../classpath.jar └── src -> ../../classpath Annoyingly, Eclipse for some reason expects this layout to exist even though the descriptor format has required parameters for specifying these locations. I suppose that other software may look for this "standard" layout in a JVM installation so it may be generally useful. These artifacts are only built if the platform is one of `windows`, `linux`, or `macosx`. The symlinks might not actually work at all on Windows, I'm not sure how things like cygwin/msys handle that and I do not have the means to test it. If they do not work a fallback for windows might be to actually copy the files instead of symlinking. I realize this can be done outside of the makefile but it seemed useful to put it here to gain access to the information about the build location, platform, architecture, and other build options. For the record, this contribution is my original work and is released under the same license that Avian uses, found in the license.txt file in this repository.
2015-07-16 13:44:55 +00:00
.PHONY: eclipse-ee
ifneq ($(strip $(eclipse-exec-env)),)
eclipse-ee: $(eclipse-ee-file) $(eclipse-lib-dir)/rt.jar $(eclipse-bin-dir)/java${exe-suffix} $(eclipse-src-dir)
$(eclipse-bin-dir):
@mkdir -p $(@)
$(eclipse-lib-dir):
@mkdir -p $(@)
$(eclipse-jdk-dir):
@mkdir -p $(@)
$(eclipse-ee-file): $(eclipse-jdk-dir)
@echo "writing eclipse execution environment descriptor to $(@)"
@printf '${eclipse-ee-descriptor}' > $(@)
$(eclipse-src-dir): $(eclipse-jdk-dir)
@echo "symlinking classpath for $(@)"
@ln -sf ../../../../classpath $(@)
Added targets for Eclipse environment descriptor. Someone on the Google Groups site asked how to set up an Eclipse project with Avian classpath. This patch creates the descriptor that you can you use to do that at `$(build)/eclipse/jdk/avian.ee`. The descriptor includes the Avian version, platform, architecture, and build options to allow for multiple versions to exist side by side. Users can import the descriptor into Eclipse via: Window >> Preferences >> Java >> Installed JREs >> Add >> Execution Environment Description Once the descriptor is imported, Avian can be used just like any other JVM installation for Eclipse projects. Personally I use this in conjunction with Eclim to gain code completion for Avian in vim. The new targets also create symlinks to loosely mimic OpenJDK's filenames and folder layout: build/linux-x86_64-tails-continuations/eclipse/jdk/ ├── avian.ee ├── bin │   └── java -> ../../../avian ├── jre │   └── lib │   └── rt.jar -> ../../../../classpath.jar └── src -> ../../classpath Annoyingly, Eclipse for some reason expects this layout to exist even though the descriptor format has required parameters for specifying these locations. I suppose that other software may look for this "standard" layout in a JVM installation so it may be generally useful. These artifacts are only built if the platform is one of `windows`, `linux`, or `macosx`. The symlinks might not actually work at all on Windows, I'm not sure how things like cygwin/msys handle that and I do not have the means to test it. If they do not work a fallback for windows might be to actually copy the files instead of symlinking. I realize this can be done outside of the makefile but it seemed useful to put it here to gain access to the information about the build location, platform, architecture, and other build options. For the record, this contribution is my original work and is released under the same license that Avian uses, found in the license.txt file in this repository.
2015-07-16 13:44:55 +00:00
$(eclipse-bin-dir)/java$(exe-suffix): $(eclipse-bin-dir) $(executable)
@echo "symlinking $(executable) for $(@)"
@ln -sf ../../../$(name)${exe-suffix} $(@)
$(eclipse-lib-dir)/rt.jar: $(eclipse-lib-dir) $(build)/classpath.jar
@echo "symlinking $(build)/classpath.jar for $(@)"
@ln -sf ../../../../classpath.jar $(@)
else
eclipse-ee:
$(error "Eclipse execution environment for platform '$(platform)' is not supported")
endif
2013-01-29 07:40:29 +00:00
ifeq ($(continuations),true)
$(build)/compile-x86-asm.o: $(src)/continuations-x86.$(asm-format)
2013-01-29 07:40:29 +00:00
endif
$(build)/run-tests.sh: $(test-classes) makefile $(build)/extra-dir/multi-classpath-test.txt $(build)/test/multi-classpath-test.txt
echo 'cd $$(dirname $$0)' > $(@)
echo "sh ./test.sh 2>/dev/null \\" >> $(@)
echo "$(shell echo $(library-path) | sed 's|$(build)|\.|g') ./$(name)-unittest${exe-suffix} ./$(notdir $(test-executable)) $(mode) \"-Djava.library.path=. -cp test$(target-path-separator)extra-dir\" \\" >> $(@)
echo "$(call class-names,$(test-build),$(filter-out $(test-support-classes), $(test-classes))) \\" >> $(@)
echo "$(continuation-tests) $(tail-tests)" >> $(@)
$(build)/jdk-run-tests.sh: $(test-classes) makefile $(build)/extra-dir/multi-classpath-test.txt $(build)/test/multi-classpath-test.txt
echo 'cd $$(dirname $$0)' > $(@)
echo "sh ./test.sh 2>/dev/null \\" >> $(@)
echo "'' true $(JAVA_HOME)/bin/java $(mode) \"-Xmx128m -Djava.library.path=. -cp test$(path-separator)extra-dir$(path-separator)classpath\" \\" >> $(@)
echo "$(call class-names,$(test-build),$(filter-out $(test-support-classes), $(test-classes))) \\" >> $(@)
echo "$(continuation-tests) $(tail-tests)" >> $(@)
$(build)/extra-dir/multi-classpath-test.txt:
mkdir -p $(build)/extra-dir
echo "$@" > $@
$(build)/test/multi-classpath-test.txt:
echo "$@" > $@
$(build)/test.sh: $(test)/test.sh
cp $(<) $(@)
gen-arg = $(shell echo $(1) | sed -e 's:$(build)/type-\(.*\)\.cpp:\1:')
$(generated-code): %.cpp: $(src)/types.def $(generator) $(classpath-dep)
@echo "generating $(@)"
2007-10-28 01:54:30 +00:00
@mkdir -p $(dir $(@))
2014-05-29 03:34:58 +00:00
$(generator) -cp $(boot-classpath) -i $(<) -o $(@) -t $(call gen-arg,$(@))
$(classpath-dep): $(classpath-sources) $(classpath-jar-dep)
@echo "compiling classpath classes"
2009-06-04 23:54:06 +00:00
@mkdir -p $(classpath-build)
$(javac) -source 1.$(java-version) -target 1.$(java-version) \
-d $(classpath-build) -bootclasspath $(boot-classpath) \
$(classpath-sources)
@touch $(@)
2007-06-29 02:58:48 +00:00
$(build)/android-src/%.cpp: $(luni-native)/%.cpp
cp $(<) $(@)
$(build)/android-src/%.cpp: $(libnativehelper-native)/%.cpp
cp $(<) $(@)
$(build)/android-src/%.cpp: $(crypto-native)/%.cpp
cp $(<) $(@)
$(build)/android-src/%.cpp: $(libziparchive-native)/%.cc
cp $(<) $(@)
$(build)/android-src/%.cpp: $(libutils-native)/%.cpp
cp $(<) $(@)
$(build)/%.o: $(build)/android-src/%.cpp $(build)/android.dep
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
$(cxx) $(android-cflags) $(classpath-extra-cflags) -c \
$$($(windows-path) $(<)) $(call output,$(@))
$(build)/android.dep: $(luni-javas) $(dalvik-javas) $(libart-javas) \
$(xml-javas) $(okhttp-android-javas) $(okhttp-javas) $(okio-javas) \
$(bcpkix-javas) $(bcprov-javas) $(luni-nonjavas) $(crypto-javas) $(crypto-platform-javas)
@echo "compiling luni classes"
@mkdir -p $(classpath-build)
@mkdir -p $(build)/android
@mkdir -p $(build)/android-src/external/fdlibm
@mkdir -p $(build)/android-src/libexpat
cp $(android)/external/fdlibm/fdlibm.h $(build)/android-src/external/fdlibm/
cp $(android)/external/expat/lib/expat*.h $(build)/android-src/libexpat/
cp -a $(luni-java)/* $(xml-java)/* $(okhttp-android-java)/* $(okhttp-java)/* $(okio-java)/* $(bcpkix-java)/* $(bcprov-java)/* $(build)/android-src/
rm $(call noop-files,$(luni-blacklist),$(luni-java),$(build)/android-src)
(cd $(dalvik-java) && \
$(jar) c $(call noop-files,$(dalvik-javas),$(dalvik-java),.)) \
| (cd $(build)/android-src && $(jar) x)
(cd $(libart-java) && \
$(jar) c $(call noop-files,$(libart-javas),$(libart-java),.)) \
| (cd $(build)/android-src && $(jar) x)
(cd $(crypto-java) && \
$(jar) c $(call noop-files,$(crypto-javas),$(crypto-java),.)) \
| (cd $(build)/android-src && $(jar) x)
(cd $(crypto-platform-java) && \
$(jar) c $(call noop-files,$(crypto-platform-javas),$(crypto-platform-java),.)) \
| (cd $(build)/android-src && $(jar) x)
(cd $(classpath-src) && \
$(jar) c $(call noop-files,$(classpath-sources),$(classpath-src),.)) \
| (cd $(build)/android-src && $(jar) x)
# (cd android && $(jar) c *) | (cd $(build)/android-src && $(jar) x)
find $(build)/android-src -name '*.java' > $(build)/android.txt
$(javac) -Xmaxerrs 1000 -d $(build)/android @$(build)/android.txt
2013-02-21 22:37:17 +00:00
rm $(build)/android/sun/misc/Unsafe* \
$(build)/android/java/lang/reflect/Proxy*
for x in $(luni-copied-nonjavas); \
do cp $(luni-java)$${x} $(build)/android$${x} ; \
done
# fix security.properties - get rid of "com.android" in front of classes starting with "org"
sed -i -e 's/\(.*=\)com\.android\.\(org\..*\)/\1\2/g' \
$(build)/android/java/security/security.properties
chmod +w $(build)/android/java/security/security.properties
cp -r $(build)/android/* $(classpath-build)
@touch $(@)
$(test-build)/%.class: $(test)/%.java
2007-11-02 21:08:14 +00:00
@echo $(<)
2012-08-01 16:02:55 +00:00
$(test-dep): $(test-sources) $(test-library)
@echo "compiling test classes"
@mkdir -p $(test-build)
files="$(shell $(MAKE) -s --no-print-directory build=$(build) $(test-classes))"; \
if test -n "$${files}"; then \
2015-08-06 23:23:14 +00:00
$(javac) -source 1.$(java-version) -target 1.$(java-version) \
-classpath $(test-build) -d $(test-build) -bootclasspath $(boot-classpath) $${files}; \
fi
$(javac) -source 1.2 -target 1.1 -XDjsrlimit=0 -d $(test-build) \
-bootclasspath $(boot-classpath) test/Subroutine.java
@touch $(@)
$(test-extra-dep): $(test-extra-sources)
@echo "compiling extra test classes"
@mkdir -p $(test-build)
files="$(shell $(MAKE) -s --no-print-directory build=$(build) $(test-extra-classes))"; \
if test -n "$${files}"; then \
2015-08-06 23:23:14 +00:00
$(javac) -source 1.$(java-version) -target 1.$(java-version) \
-d $(test-build) -bootclasspath $(boot-classpath) $${files}; \
fi
@touch $(@)
define compile-object
@echo "compiling $(@)"
2007-10-28 01:54:30 +00:00
@mkdir -p $(dir $(@))
2012-06-02 21:43:42 +00:00
$(cxx) $(cflags) -c $$($(windows-path) $(<)) $(call output,$(@))
endef
define compile-asm-object
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
$(as) $(asmflags) $(call asm-output,$(@)) $(call asm-input,$(<))
endef
2013-02-15 03:54:20 +00:00
define compile-unittest-object
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
2013-03-04 18:09:59 +00:00
$(cxx) $(cflags) -c $$($(windows-path) $(<)) -I$(unittest) $(call output,$(@))
2013-02-15 03:54:20 +00:00
endef
$(vm-cpp-objects): $(build)/%.o: $(src)/%.cpp $(vm-depends)
$(compile-object)
ifeq ($(process),interpret)
$(all-codegen-target-objects): $(build)/%.o: $(src)/%.cpp $(vm-depends)
$(compile-object)
endif
2013-02-15 03:54:20 +00:00
$(unittest-objects): $(build)/unittest/%.o: $(unittest)/%.cpp $(vm-depends) $(unittest-depends)
$(compile-unittest-object)
2012-08-01 16:02:55 +00:00
$(test-cpp-objects): $(test-build)/%.o: $(test)/%.cpp $(vm-depends)
$(compile-object)
$(test-library): $(test-cpp-objects)
@echo "linking $(@)"
ifdef ms_cl_compiler
$(ld) $(shared) $(lflags) $(^) -out:$(@) \
-debug -PDB:$(subst $(so-suffix),.pdb,$(@)) \
-IMPLIB:$(test-build)/$(name).lib $(manifest-flags)
ifdef mt
$(mt) -nologo -manifest $(@).manifest -outputresource:"$(@);2"
endif
2012-08-01 16:02:55 +00:00
else
$(ld) $(^) $(shared) $(lflags) -o $(@)
endif
2012-11-13 08:11:49 +00:00
ifdef embed
$(embed): $(embed-objects) $(embed-loader-o)
@echo "building $(embed)"
ifdef ms_cl_compiler
$(ld) $(lflags) $(^) -out:$(@) \
-debug -PDB:$(subst $(exe-suffix),.pdb,$(@)) $(manifest-flags)
ifdef mt
$(mt) -nologo -manifest $(@).manifest -outputresource:"$(@);1"
endif
2012-12-05 22:30:49 +00:00
else
$(cxx) $(^) $(lflags) $(static) $(call output,$(@))
endif
2012-12-05 00:37:02 +00:00
2012-11-13 08:11:49 +00:00
$(build-embed)/%.o: $(src)/%.cpp
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
2012-12-05 22:30:49 +00:00
$(cxx) $(cflags) -c $(<) $(call output,$(@))
2012-12-05 00:37:02 +00:00
2012-11-13 08:11:49 +00:00
$(embed-loader-o): $(embed-loader) $(converter)
@mkdir -p $(dir $(@))
$(converter) $(<) $(@) _binary_loader_start \
_binary_loader_end $(target-format) $(arch)
2013-04-02 08:37:20 +00:00
$(embed-loader): $(embed-loader-objects) $(vm-objects) $(classpath-objects) \
$(heapwalk-objects) $(lzma-decode-objects)
ifdef ms_cl_compiler
2013-03-01 21:52:27 +00:00
$(ld) $(lflags) $(^) -out:$(@) \
-debug -PDB:$(subst $(exe-suffix),.pdb,$(@)) $(manifest-flags)
ifdef mt
$(mt) -nologo -manifest $(@).manifest -outputresource:"$(@);1"
endif
2012-12-05 22:30:49 +00:00
else
2013-03-01 21:52:27 +00:00
$(dlltool) -z $(addsuffix .def,$(basename $(@))) $(^)
$(dlltool) -d $(addsuffix .def,$(basename $(@))) -e $(addsuffix .exp,$(basename $(@)))
2013-03-01 21:52:27 +00:00
$(ld) $(addsuffix .exp,$(basename $(@))) $(^) \
2015-06-02 21:01:03 +00:00
$(lflags) $(classpath-lflags) $(bootimage-lflags) -o $(@)
2012-12-05 22:30:49 +00:00
endif
$(strip) $(strip-all) $(@)
2012-11-13 08:11:49 +00:00
$(build-embed-loader)/%.o: $(src)/%.cpp
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
2012-12-05 22:30:49 +00:00
$(cxx) $(cflags) -c $(<) $(call output,$(@))
2012-11-13 08:11:49 +00:00
endif
$(build)/%.o: $(lzma)/C/%.c
2012-06-03 00:56:07 +00:00
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
$(cc) $(lzma-cflags) -c $$($(windows-path) $(<)) $(call output,$(@))
$(vm-asm-objects): $(build)/%-asm.o: $(src)/%.$(asm-format)
$(compile-asm-object)
$(bootimage-generator-objects): $(build)/%.o: $(src)/%.cpp $(vm-depends)
$(compile-object)
$(heapwalk-objects): $(build)/%.o: $(src)/%.cpp $(vm-depends)
$(compile-object)
$(driver-object): $(driver-source)
$(compile-object)
2010-11-27 21:46:07 +00:00
$(build)/main-dynamic.o: $(driver-source)
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
$(cxx) $(cflags) -DBOOT_LIBRARY=\"$(so-prefix)jvm$(so-suffix)\" \
2009-08-27 15:30:34 +00:00
-c $(<) $(call output,$(@))
$(boot-object): $(boot-source)
$(compile-object)
$(boot-javahome-object): $(src)/boot-javahome.cpp
$(compile-object)
$(object-writer-objects) $(binary-to-object-objects): $(build)/%.o: $(src)/%.cpp $(binary-to-object-depends) $(object-writer-depends) $(all-depends)
2012-04-25 15:09:26 +00:00
@mkdir -p $(dir $(@))
$(build-cxx) $(converter-cflags) -c $(<) -o $(@)
$(converter): $(converter-objects) $(converter-tool-objects)
@mkdir -p $(dir $(@))
$(build-cc) $(^) -g -o $(@)
$(lzma-encoder-objects): $(build)/lzma/%.o: $(src)/lzma/%.cpp
@mkdir -p $(dir $(@))
$(build-cxx) $(lzma-build-cflags) -c $(<) -o $(@)
$(lzma-encoder): $(lzma-encoder-objects) $(lzma-encoder-lzma-objects)
$(build-cc) $(^) -g -o $(@)
$(lzma-library): $(lzma-loader) $(lzma-decode-objects)
@echo "creating $(@)"
@rm -rf $(build)/libavian-lzma
@mkdir -p $(build)/libavian-lzma
rm -rf $(@)
for x in $(^); \
do cp $${x} $(build)/libavian-lzma/$$(echo $${x} | sed s:/:_:g); \
done
ifdef ms_cl_compiler
$(ar) $(arflags) $(build)/libavian-lzma/*.o -out:$(@)
else
$(ar) cru $(@) $(build)/libavian-lzma/*.o
$(ranlib) $(@)
endif
$(lzma-loader): $(src)/lzma/load.cpp
$(compile-object)
$(build)/classpath.jar: $(classpath-dep) $(classpath-jar-dep)
@echo "creating $(@)"
(wd=$$(pwd) && \
cd $(classpath-build) && \
$(jar) c0f "$$($(native-path) "$${wd}/$(@)")" .)
$(classpath-object): $(build)/classpath.jar $(converter)
2008-03-31 04:23:51 +00:00
@echo "creating $(@)"
$(converter) $(<) $(@) _binary_classpath_jar_start \
_binary_classpath_jar_end $(target-format) $(arch)
2010-11-15 23:27:00 +00:00
$(build)/javahome.jar:
@echo "creating $(@)"
(wd=$$(pwd) && \
2010-11-15 23:27:00 +00:00
cd "$(build-javahome)" && \
$(jar) c0f "$$($(native-path) "$${wd}/$(@)")" $(javahome-files))
$(javahome-object): $(build)/javahome.jar $(converter)
@echo "creating $(@)"
$(converter) $(<) $(@) _binary_javahome_jar_start \
_binary_javahome_jar_end $(target-format) $(arch)
define compile-generator-object
@echo "compiling $(@)"
2007-10-28 01:54:30 +00:00
@mkdir -p $(dir $(@))
$(build-cxx) -DPOINTER_SIZE=$(pointer-size) -O0 -g3 $(build-cflags) \
-c $(<) -o $(@)
endef
$(generator-objects): $(generator-depends)
$(generator-objects): $(build)/%-build.o: $(src)/%.cpp
$(compile-generator-object)
2012-06-02 21:43:42 +00:00
$(build)/%-build.o: $(lzma)/C/%.c
2012-06-03 00:56:07 +00:00
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
$(build-cc) -DPOINTER_SIZE=$(pointer-size) -O0 -g3 $(lzma-build-cflags) \
-c $(<) -o $(@)
$(jni-objects): $(build)/%.o: $(classpath-src)/%.cpp $(vm-depends)
$(compile-object)
2007-06-25 01:34:07 +00:00
$(static-library): $(vm-objects) $(classpath-objects) $(vm-heapwalk-objects) \
$(javahome-object) $(boot-javahome-object) $(lzma-decode-objects)
@echo "creating $(@)"
@rm -rf $(build)/libavian
@mkdir -p $(build)/libavian
2007-10-26 21:02:39 +00:00
rm -rf $(@)
for x in $(^); \
do cp $${x} $(build)/libavian/$$(echo $${x} | sed s:/:_:g); \
done
ifdef ms_cl_compiler
$(ar) $(arflags) $(build)/libavian/*.o -out:$(@)
else
$(ar) cru $(@) $(build)/libavian/*.o
$(ranlib) $(@)
endif
$(bootimage-object) $(codeimage-object): $(bootimage-generator) \
$(classpath-jar-dep) $(test-dep)
2013-01-28 17:15:29 +00:00
@echo "generating bootimage and codeimage binaries from $(classpath-build) using $(<)"
$(<) -cp $(bootimage-classpath) -bootimage $(bootimage-object) -codeimage $(codeimage-object) \
-bootimage-symbols $(bootimage-symbols) \
-codeimage-symbols $(codeimage-symbols) \
-hostvm $(host-vm)
executable-objects = $(vm-objects) $(classpath-objects) $(driver-object) \
$(vm-heapwalk-objects) $(boot-object) $(vm-classpath-objects) \
$(javahome-object) $(boot-javahome-object) $(lzma-decode-objects)
unittest-executable-objects = $(unittest-objects) $(vm-objects) \
2014-07-16 20:18:42 +00:00
$(vm-heapwalk-objects) $(build)/util/arg-parser.o $(stub-objects) \
$(lzma-decode-objects)
2013-02-15 03:54:20 +00:00
ifeq ($(process),interpret)
unittest-executable-objects += $(all-codegen-target-objects)
endif
2013-02-18 14:50:37 +00:00
# apparently, make does poorly with ifs inside of defines, and indented defines.
# I suggest re-indenting the following before making edits (and unindenting afterwards):
ifneq ($(platform),windows)
define link-executable
@echo linking $(@)
$(ld) $(^) $(rdynamic) $(lflags) $(classpath-lflags) $(bootimage-lflags) \
-o $(@)
2013-02-18 14:50:37 +00:00
endef
else
ifdef ms_cl_compiler
ifdef mt
2013-02-18 14:50:37 +00:00
define link-executable
@echo linking $(@)
$(ld) $(lflags) $(^) -out:$(@) \
-debug -PDB:$(subst $(exe-suffix),.pdb,$(@)) $(manifest-flags)
$(mt) -nologo -manifest $(@).manifest -outputresource:"$(@);1"
2013-02-18 14:50:37 +00:00
endef
else
define link-executable
@echo linking $(@)
$(mt) -nologo -manifest $(@).manifest -outputresource:"$(@);1"
2013-02-18 14:50:37 +00:00
endef
endif
else
2013-02-18 14:50:37 +00:00
define link-executable
@echo linking $(@)
$(dlltool) -z $(@).def $(^)
$(dlltool) -d $(@).def -e $(@).exp
$(ld) $(@).exp $(^) $(lflags) $(classpath-lflags) -o $(@)
2013-02-18 14:50:37 +00:00
endef
endif
2007-10-26 21:02:39 +00:00
endif
2013-02-18 14:50:37 +00:00
$(executable): $(executable-objects)
$(link-executable)
2013-02-15 03:54:20 +00:00
$(unittest-executable): $(unittest-executable-objects)
2013-02-18 14:50:37 +00:00
$(link-executable)
$(bootimage-generator): $(bootimage-generator-objects) $(vm-objects)
2013-01-28 17:15:29 +00:00
echo building $(bootimage-generator) arch=$(build-arch) platform=$(bootimage-platform)
2016-08-12 17:30:09 +00:00
$(MAKE) process=interpret \
bootimage= \
bootimage-test= \
mode=$(mode) \
platform=$(bootimage-platform) \
arch=$(build-arch)
2009-09-06 00:26:13 +00:00
$(MAKE) mode=$(mode) \
2013-01-28 17:15:29 +00:00
build=$(host-build-root) \
arch=$(build-arch) \
aot-only=false \
target-arch=$(arch) \
armv6=$(armv6) \
2009-06-01 18:12:29 +00:00
platform=$(bootimage-platform) \
target-format=$(target-format) \
android=$(android) \
openjdk=$(openjdk) \
openjdk-src=$(openjdk-src) \
bootimage-generator= \
build-bootimage-generator=$(bootimage-generator) \
target-cflags="$(bootimage-cflags)" \
target-asm=$(asm) \
2009-09-06 00:26:13 +00:00
$(bootimage-generator)
$(build-bootimage-generator): \
$(vm-objects) $(classpath-object) \
$(heapwalk-objects) $(bootimage-generator-objects) $(converter-objects) \
$(lzma-decode-objects) $(lzma-encode-objects)
@echo "linking $(@)"
2007-10-26 21:02:39 +00:00
ifeq ($(platform),windows)
ifdef ms_cl_compiler
$(ld) $(bootimage-generator-lflags) $(lflags) $(^) -out:$(@) \
-debug -PDB:$(subst $(exe-suffix),.pdb,$(@)) $(manifest-flags)
ifdef mt
$(mt) -nologo -manifest $(@).manifest -outputresource:"$(@);1"
endif
else
2007-10-26 21:02:39 +00:00
$(dlltool) -z $(@).def $(^)
$(dlltool) -d $(@).def -e $(@).exp
$(ld) $(@).exp $(^) $(bootimage-generator-lflags) $(lflags) -o $(@)
endif
2007-10-26 21:02:39 +00:00
else
$(ld) $(^) $(rdynamic) $(bootimage-generator-lflags) $(lflags) -o $(@)
2007-10-26 21:02:39 +00:00
endif
$(dynamic-library): $(vm-objects) $(dynamic-object) $(classpath-objects) \
$(vm-heapwalk-objects) $(boot-object) $(vm-classpath-objects) \
$(classpath-libraries) $(javahome-object) $(boot-javahome-object) \
$(lzma-decode-objects)
@echo "linking $(@)"
ifdef ms_cl_compiler
$(ld) $(shared) $(lflags) $(^) -out:$(@) \
-debug -PDB:$(subst $(so-suffix),.pdb,$(@)) \
-IMPLIB:$(subst $(so-suffix),.lib,$(@)) $(manifest-flags)
ifdef mt
$(mt) -nologo -manifest $(@).manifest -outputresource:"$(@);2"
endif
else
$(ld) $(^) $(version-script-flag) $(soname-flag) \
$(shared) $(lflags) $(classpath-lflags) $(bootimage-lflags) \
2010-11-08 04:23:25 +00:00
-o $(@)
endif
2008-03-31 04:23:51 +00:00
$(strip) $(strip-all) $(@)
# todo: the $(no-lto) flag below is due to odd undefined reference errors on
# Ubuntu 11.10 which may be fixable without disabling LTO.
2010-11-27 21:46:07 +00:00
$(executable-dynamic): $(driver-dynamic-objects) $(dynamic-library)
@echo "linking $(@)"
ifdef ms_cl_compiler
$(ld) $(lflags) -LIBPATH:$(build) -DEFAULTLIB:$(name) \
2013-03-04 18:09:59 +00:00
-debug -PDB:$(subst $(exe-suffix),.pdb,$(@)) \
$(driver-dynamic-objects) -out:$(@) $(manifest-flags)
ifdef mt
$(mt) -nologo -manifest $(@).manifest -outputresource:"$(@);1"
endif
else
$(ld) $(driver-dynamic-objects) -L$(build) -ljvm $(lflags) $(no-lto) $(rpath) -o $(@)
endif
$(strip) $(strip-all) $(@)
$(generator): $(generator-objects) $(generator-lzma-objects)
@echo "linking $(@)"
$(build-ld-cpp) $(^) $(build-lflags) $(static-on-windows) -o $(@)
$(openjdk-objects): $(build)/openjdk/%-openjdk.o: $(openjdk-src)/%.c \
$(openjdk-headers-dep)
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
sed 's/^static jclass ia_class;//' < $(<) > $(build)/openjdk/$(notdir $(<))
ifeq ($(platform),ios)
sed \
-e 's/^#ifndef __APPLE__/#if 1/' \
-e 's/^#ifdef __APPLE__/#if 0/' \
< "$(openjdk-src)/solaris/native/java/lang/ProcessEnvironment_md.c" \
> $(build)/openjdk/ProcessEnvironment_md.c
sed \
-e 's/^#ifndef __APPLE__/#if 1/' \
-e 's/^#ifdef __APPLE__/#if 0/' \
< "$(openjdk-src)/solaris/native/java/lang/UNIXProcess_md.c" \
> $(build)/openjdk/UNIXProcess_md.c
if [ -e "$(openjdk-src)/solaris/native/java/lang/childproc.h" ]; then \
sed \
-e 's/^#ifndef __APPLE__/#if 1/' \
-e 's/^#ifdef __APPLE__/#if 0/' \
< "$(openjdk-src)/solaris/native/java/lang/childproc.h" \
> $(build)/openjdk/childproc.h; \
fi
endif
ifneq (7,$(openjdk-version))
if [ -f openjdk-patches/$(notdir $(<)).8.patch ]; then \
( cd $(build) && patch -p0 ) < openjdk-patches/$(notdir $(<)).8.patch; \
fi
if [ -f openjdk-patches/$(notdir $(<)).8.$(platform).patch ]; then \
( cd $(build) && patch -p0 ) < openjdk-patches/$(notdir $(<)).8.$(platform).patch; \
fi
endif
if [ -f openjdk-patches/$(notdir $(<)).patch ]; then \
( cd $(build) && patch -p0 ) < openjdk-patches/$(notdir $(<)).patch; \
fi
2010-11-15 23:27:00 +00:00
$(cc) -fPIC $(openjdk-extra-cflags) $(openjdk-cflags) \
$(optimization-cflags) -w -c $(build)/openjdk/$(notdir $(<)) \
$(call output,$(@)) -Wno-return-type
$(openjdk-local-objects): $(build)/openjdk/%-openjdk.o: $(src)/openjdk/%.c \
$(openjdk-headers-dep)
@echo "compiling $(@)"
@mkdir -p $(dir $(@))
$(cc) -fPIC $(openjdk-extra-cflags) $(openjdk-cflags) \
$(optimization-cflags) -w -c $(<) $(call output,$(@))
2010-11-15 23:27:00 +00:00
$(openjdk-headers-dep):
@echo "generating openjdk headers"
@mkdir -p $(dir $(@))
$(javah) -d $(build)/openjdk -bootclasspath $(boot-classpath) \
$(openjdk-headers-classes)
2010-11-30 00:39:41 +00:00
ifeq ($(platform),windows)
sed 's/^#ifdef _WIN64/#if 1/' \
< "$(openjdk-src)/windows/native/java/net/net_util_md.h" \
> $(build)/openjdk/net_util_md.h
sed \
-e 's/\(^#include "net_util.h"\)/\1\n#if (defined _INC_NLDEF) || (defined _WS2DEF_)\n#define HIDE(x) hide_##x\n#else\n#define HIDE(x) x\n#define _WINSOCK2API_\n#endif/' \
-e 's/\(IpPrefix[a-zA-Z_]*\)/HIDE(\1)/' \
-e 's/\(IpSuffix[a-zA-Z_]*\)/HIDE(\1)/' \
-e 's/\(IpDad[a-zA-Z_]*\)/HIDE(\1)/' \
-e 's/\(ScopeLevel[a-zA-Z_]*\)/HIDE(\1)/' \
-e 's/\(SCOPE_LEVEL[a-zA-Z_]*\)/HIDE(\1)/' \
< "$(openjdk-src)/windows/native/java/net/NetworkInterface.h" \
> $(build)/openjdk/NetworkInterface.h
echo 'static int getAddrsFromAdapter(IP_ADAPTER_ADDRESSES *ptr, netaddr **netaddrPP);' >> $(build)/openjdk/NetworkInterface.h
endif
ifeq ($(kernel),darwin)
mkdir -p $(build)/openjdk/netinet
for file in \
$(header-sysroot)/usr/include/netinet/ip.h \
$(header-sysroot)/usr/include/netinet/in_systm.h \
$(header-sysroot)/usr/include/netinet/ip_icmp.h \
$(header-sysroot)/usr/include/netinet/in_var.h \
$(header-sysroot)/usr/include/netinet/icmp6.h \
$(header-sysroot)/usr/include/netinet/ip_var.h; do \
if [ ! -f "$(build)/openjdk/netinet/$$(basename $${file})" ]; then \
Squashed commit of the following: (#15) commit fabf4dd0cca19118c59c925f572a655d1d9c4092 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:36:06 2017 -0600 reserve a little more stack space for worst-case lambda expressions commit 24b95016dd6f62fa4a82312310fcb5c55cc22f93 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:33:39 2017 -0600 support constructor references commit a329416f4f37840d2a5d7976874585413cd4c6af Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:11:19 2017 -0600 normalize class name in Classes.forName This fixes a Tomcat classloading issue when using the OpenJDK class library. commit ecafdf40baf2f3cde4835620e9af4380b1081fe7 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 16:58:04 2017 -0600 fix some lambda bugs commit 552dfd779baf077cc6445b4042588e4b6e34f3d2 Merge: 63dda56 aa2f25d Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:57:59 2017 -0600 Merge remote-tracking branch 'corda/chrisr3-invoking-extension' commit 63dda560f8648a793bdb609879076ab729b17e19 Merge: 3ec983d e589f10 Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:54:53 2017 -0600 Merge pull request #538 from dicej/master avoid definePackage infinite recursion with OpenJDK class library commit aa2f25da404b2fc168a672392df939b52ea250ab Author: Chris Rankin <chris.rankin@r3.com> Date: Mon Jul 3 17:26:41 2017 +0100 Add support for "invokevirtual" and "invokeinterface". The "invokeinterface" support seems to be broken for lambdas that require native types to be boxed/unboxed. commit e589f105741ea36d07bba1e300c7ed69c33a22d1 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 2 19:43:36 2017 -0600 avoid definePackage infinite recursion with OpenJDK class library commit 3ec983dd82e01b36fb96411df345a54119a68181 Merge: 6f6bdd7 78881d4 Author: Joel Dice <joel.dice@gmail.com> Date: Tue Jun 13 09:50:49 2017 -0600 Merge pull request #534 from lwahlmeier/fileGetParentFile fixed File.getParent when getting parent returns root commit 78881d427cd474c14f5ce94484f5253de564074b Author: Luke Wahlmeier <lwahlmeier@gmail.com> Date: Tue May 30 13:42:56 2017 -0600 fixed File.getParent when getting parent returns root commit 6f6bdd7d5c171e0c4c807d0a4f3aa676461307de Merge: 8b694f9 b22343e Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:58:09 2017 -0600 Merge pull request #529 from mikehearn/proguard-fixes Some fixes to the ProGuard files commit 8b694f961496f2d47a377254f61153b0338335fd Merge: dfae414 61c82e1 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:54 2017 -0600 Merge pull request #531 from mikehearn/fileinputstream-compat FileInputStream has wrapped some more native methods commit dfae414da8da57049076c16c43472cc32bdeb07c Merge: 16dd804 d7a6f68 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:38 2017 -0600 Merge pull request #532 from mikehearn/use-symlinks Symlink OpenJDK files rather than hardlink commit d7a6f68235b2d42c03aba36f1bb48d173adb4fa6 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:42:06 2017 +0200 Symlink OpenJDK files rather than hardlink commit 61c82e1070d857bcdc7a4f086d13836d9608da00 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:40:52 2017 +0200 FileInputStream has wrapped some more native methods in recent OpenJDK releases commit b22343eb6731f1df2631635e2fcf9d51817273fe Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:38:09 2017 +0200 Some fixes to the ProGuard files commit 16dd804f392168497fa17ab682978f938e291bfb Merge: e2d3270 19deadd Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:30 2017 -0600 Merge pull request #526 from MaartenR/arrays-binsearch Added integer array binary search methods to Arrays class commit e2d3270fe8e92203b6107b95f862ff5bd245c37a Merge: dee99d6 545b9c8 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:20 2017 -0600 Merge pull request #527 from MaartenR/integer-nolz Added numberOfLeadingZeros method to Integer class commit 545b9c8732a6ea026285b1edf976a79eb541ef2e Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 11:23:36 2017 +0100 Tested more negative numbers commit b45bcf09535daef99ed31451ae55db8bec83164c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 10:47:27 2017 +0100 Added unit test for numberOfLeadingZeros method of the Integer class commit 19deadd36bbfc02a8c13e6d91963e41f5125057f Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Mon Mar 13 12:19:17 2017 +0100 Fixed mistake with end index being exclusive commit 7271c0b7077ae3bef473e036aa0f0298a9eb0601 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Mar 10 11:17:13 2017 +0100 Added numberOfLeadingZeros method to Integer class commit 023bb69acd071348f29cd43ff954d3dcf2856c7c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Thu Mar 9 13:43:03 2017 +0100 Added integer array binary search methods to Arrays class commit dee99d6dd60b743a870d1a2c58183649c8a6449c Merge: f7a651d 6c90953 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 1 08:39:32 2017 -0700 Merge pull request #525 from MaartenR/master Added functionality to HttpURLConnection for obtaining content length commit 6c90953745be5451ac9a028639f94e3fcc43d7f3 Author: Maarten Raaphorst <raaphorst@serviceplanet.nl> Date: Wed Mar 1 14:19:51 2017 +0100 Made http headers case insensitive commit 2c3a82d2b387251a8932ddb6575e718c2c1785a7 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Feb 3 05:42:56 2017 -0800 Added functionality to HttpURLConnection for obtaining content length
2017-07-10 16:01:56 +00:00
ln -s "$${file}" "$(build)/openjdk/netinet/$$(basename $${file})"; \
fi; \
done
mkdir -p $(build)/openjdk/netinet6
for file in \
$(header-sysroot)/usr/include/netinet6/in6_var.h; do \
if [ ! -f "$(build)/openjdk/netinet6/$$(basename $${file})" ]; then \
Squashed commit of the following: (#15) commit fabf4dd0cca19118c59c925f572a655d1d9c4092 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:36:06 2017 -0600 reserve a little more stack space for worst-case lambda expressions commit 24b95016dd6f62fa4a82312310fcb5c55cc22f93 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:33:39 2017 -0600 support constructor references commit a329416f4f37840d2a5d7976874585413cd4c6af Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:11:19 2017 -0600 normalize class name in Classes.forName This fixes a Tomcat classloading issue when using the OpenJDK class library. commit ecafdf40baf2f3cde4835620e9af4380b1081fe7 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 16:58:04 2017 -0600 fix some lambda bugs commit 552dfd779baf077cc6445b4042588e4b6e34f3d2 Merge: 63dda56 aa2f25d Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:57:59 2017 -0600 Merge remote-tracking branch 'corda/chrisr3-invoking-extension' commit 63dda560f8648a793bdb609879076ab729b17e19 Merge: 3ec983d e589f10 Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:54:53 2017 -0600 Merge pull request #538 from dicej/master avoid definePackage infinite recursion with OpenJDK class library commit aa2f25da404b2fc168a672392df939b52ea250ab Author: Chris Rankin <chris.rankin@r3.com> Date: Mon Jul 3 17:26:41 2017 +0100 Add support for "invokevirtual" and "invokeinterface". The "invokeinterface" support seems to be broken for lambdas that require native types to be boxed/unboxed. commit e589f105741ea36d07bba1e300c7ed69c33a22d1 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 2 19:43:36 2017 -0600 avoid definePackage infinite recursion with OpenJDK class library commit 3ec983dd82e01b36fb96411df345a54119a68181 Merge: 6f6bdd7 78881d4 Author: Joel Dice <joel.dice@gmail.com> Date: Tue Jun 13 09:50:49 2017 -0600 Merge pull request #534 from lwahlmeier/fileGetParentFile fixed File.getParent when getting parent returns root commit 78881d427cd474c14f5ce94484f5253de564074b Author: Luke Wahlmeier <lwahlmeier@gmail.com> Date: Tue May 30 13:42:56 2017 -0600 fixed File.getParent when getting parent returns root commit 6f6bdd7d5c171e0c4c807d0a4f3aa676461307de Merge: 8b694f9 b22343e Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:58:09 2017 -0600 Merge pull request #529 from mikehearn/proguard-fixes Some fixes to the ProGuard files commit 8b694f961496f2d47a377254f61153b0338335fd Merge: dfae414 61c82e1 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:54 2017 -0600 Merge pull request #531 from mikehearn/fileinputstream-compat FileInputStream has wrapped some more native methods commit dfae414da8da57049076c16c43472cc32bdeb07c Merge: 16dd804 d7a6f68 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:38 2017 -0600 Merge pull request #532 from mikehearn/use-symlinks Symlink OpenJDK files rather than hardlink commit d7a6f68235b2d42c03aba36f1bb48d173adb4fa6 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:42:06 2017 +0200 Symlink OpenJDK files rather than hardlink commit 61c82e1070d857bcdc7a4f086d13836d9608da00 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:40:52 2017 +0200 FileInputStream has wrapped some more native methods in recent OpenJDK releases commit b22343eb6731f1df2631635e2fcf9d51817273fe Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:38:09 2017 +0200 Some fixes to the ProGuard files commit 16dd804f392168497fa17ab682978f938e291bfb Merge: e2d3270 19deadd Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:30 2017 -0600 Merge pull request #526 from MaartenR/arrays-binsearch Added integer array binary search methods to Arrays class commit e2d3270fe8e92203b6107b95f862ff5bd245c37a Merge: dee99d6 545b9c8 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:20 2017 -0600 Merge pull request #527 from MaartenR/integer-nolz Added numberOfLeadingZeros method to Integer class commit 545b9c8732a6ea026285b1edf976a79eb541ef2e Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 11:23:36 2017 +0100 Tested more negative numbers commit b45bcf09535daef99ed31451ae55db8bec83164c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 10:47:27 2017 +0100 Added unit test for numberOfLeadingZeros method of the Integer class commit 19deadd36bbfc02a8c13e6d91963e41f5125057f Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Mon Mar 13 12:19:17 2017 +0100 Fixed mistake with end index being exclusive commit 7271c0b7077ae3bef473e036aa0f0298a9eb0601 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Mar 10 11:17:13 2017 +0100 Added numberOfLeadingZeros method to Integer class commit 023bb69acd071348f29cd43ff954d3dcf2856c7c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Thu Mar 9 13:43:03 2017 +0100 Added integer array binary search methods to Arrays class commit dee99d6dd60b743a870d1a2c58183649c8a6449c Merge: f7a651d 6c90953 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 1 08:39:32 2017 -0700 Merge pull request #525 from MaartenR/master Added functionality to HttpURLConnection for obtaining content length commit 6c90953745be5451ac9a028639f94e3fcc43d7f3 Author: Maarten Raaphorst <raaphorst@serviceplanet.nl> Date: Wed Mar 1 14:19:51 2017 +0100 Made http headers case insensitive commit 2c3a82d2b387251a8932ddb6575e718c2c1785a7 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Feb 3 05:42:56 2017 -0800 Added functionality to HttpURLConnection for obtaining content length
2017-07-10 16:01:56 +00:00
ln -s "$${file}" "$(build)/openjdk/netinet6/$$(basename $${file})"; \
fi; \
done
mkdir -p $(build)/openjdk/net
for file in \
$(header-sysroot)/usr/include/net/if_arp.h; do \
if [ ! -f "$(build)/openjdk/net/$$(basename $${file})" ]; then \
Squashed commit of the following: (#15) commit fabf4dd0cca19118c59c925f572a655d1d9c4092 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:36:06 2017 -0600 reserve a little more stack space for worst-case lambda expressions commit 24b95016dd6f62fa4a82312310fcb5c55cc22f93 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:33:39 2017 -0600 support constructor references commit a329416f4f37840d2a5d7976874585413cd4c6af Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:11:19 2017 -0600 normalize class name in Classes.forName This fixes a Tomcat classloading issue when using the OpenJDK class library. commit ecafdf40baf2f3cde4835620e9af4380b1081fe7 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 16:58:04 2017 -0600 fix some lambda bugs commit 552dfd779baf077cc6445b4042588e4b6e34f3d2 Merge: 63dda56 aa2f25d Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:57:59 2017 -0600 Merge remote-tracking branch 'corda/chrisr3-invoking-extension' commit 63dda560f8648a793bdb609879076ab729b17e19 Merge: 3ec983d e589f10 Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:54:53 2017 -0600 Merge pull request #538 from dicej/master avoid definePackage infinite recursion with OpenJDK class library commit aa2f25da404b2fc168a672392df939b52ea250ab Author: Chris Rankin <chris.rankin@r3.com> Date: Mon Jul 3 17:26:41 2017 +0100 Add support for "invokevirtual" and "invokeinterface". The "invokeinterface" support seems to be broken for lambdas that require native types to be boxed/unboxed. commit e589f105741ea36d07bba1e300c7ed69c33a22d1 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 2 19:43:36 2017 -0600 avoid definePackage infinite recursion with OpenJDK class library commit 3ec983dd82e01b36fb96411df345a54119a68181 Merge: 6f6bdd7 78881d4 Author: Joel Dice <joel.dice@gmail.com> Date: Tue Jun 13 09:50:49 2017 -0600 Merge pull request #534 from lwahlmeier/fileGetParentFile fixed File.getParent when getting parent returns root commit 78881d427cd474c14f5ce94484f5253de564074b Author: Luke Wahlmeier <lwahlmeier@gmail.com> Date: Tue May 30 13:42:56 2017 -0600 fixed File.getParent when getting parent returns root commit 6f6bdd7d5c171e0c4c807d0a4f3aa676461307de Merge: 8b694f9 b22343e Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:58:09 2017 -0600 Merge pull request #529 from mikehearn/proguard-fixes Some fixes to the ProGuard files commit 8b694f961496f2d47a377254f61153b0338335fd Merge: dfae414 61c82e1 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:54 2017 -0600 Merge pull request #531 from mikehearn/fileinputstream-compat FileInputStream has wrapped some more native methods commit dfae414da8da57049076c16c43472cc32bdeb07c Merge: 16dd804 d7a6f68 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:38 2017 -0600 Merge pull request #532 from mikehearn/use-symlinks Symlink OpenJDK files rather than hardlink commit d7a6f68235b2d42c03aba36f1bb48d173adb4fa6 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:42:06 2017 +0200 Symlink OpenJDK files rather than hardlink commit 61c82e1070d857bcdc7a4f086d13836d9608da00 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:40:52 2017 +0200 FileInputStream has wrapped some more native methods in recent OpenJDK releases commit b22343eb6731f1df2631635e2fcf9d51817273fe Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:38:09 2017 +0200 Some fixes to the ProGuard files commit 16dd804f392168497fa17ab682978f938e291bfb Merge: e2d3270 19deadd Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:30 2017 -0600 Merge pull request #526 from MaartenR/arrays-binsearch Added integer array binary search methods to Arrays class commit e2d3270fe8e92203b6107b95f862ff5bd245c37a Merge: dee99d6 545b9c8 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:20 2017 -0600 Merge pull request #527 from MaartenR/integer-nolz Added numberOfLeadingZeros method to Integer class commit 545b9c8732a6ea026285b1edf976a79eb541ef2e Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 11:23:36 2017 +0100 Tested more negative numbers commit b45bcf09535daef99ed31451ae55db8bec83164c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 10:47:27 2017 +0100 Added unit test for numberOfLeadingZeros method of the Integer class commit 19deadd36bbfc02a8c13e6d91963e41f5125057f Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Mon Mar 13 12:19:17 2017 +0100 Fixed mistake with end index being exclusive commit 7271c0b7077ae3bef473e036aa0f0298a9eb0601 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Mar 10 11:17:13 2017 +0100 Added numberOfLeadingZeros method to Integer class commit 023bb69acd071348f29cd43ff954d3dcf2856c7c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Thu Mar 9 13:43:03 2017 +0100 Added integer array binary search methods to Arrays class commit dee99d6dd60b743a870d1a2c58183649c8a6449c Merge: f7a651d 6c90953 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 1 08:39:32 2017 -0700 Merge pull request #525 from MaartenR/master Added functionality to HttpURLConnection for obtaining content length commit 6c90953745be5451ac9a028639f94e3fcc43d7f3 Author: Maarten Raaphorst <raaphorst@serviceplanet.nl> Date: Wed Mar 1 14:19:51 2017 +0100 Made http headers case insensitive commit 2c3a82d2b387251a8932ddb6575e718c2c1785a7 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Feb 3 05:42:56 2017 -0800 Added functionality to HttpURLConnection for obtaining content length
2017-07-10 16:01:56 +00:00
ln -s "$${file}" "$(build)/openjdk/net/$$(basename $${file})"; \
fi; \
done
mkdir -p $(build)/openjdk/sys
for file in \
$(header-sysroot)/usr/include/sys/kern_event.h \
$(header-sysroot)/usr/include/sys/sys_domain.h; do \
if [ ! -f "$(build)/openjdk/sys/$$(basename $${file})" ]; then \
Squashed commit of the following: (#15) commit fabf4dd0cca19118c59c925f572a655d1d9c4092 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:36:06 2017 -0600 reserve a little more stack space for worst-case lambda expressions commit 24b95016dd6f62fa4a82312310fcb5c55cc22f93 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:33:39 2017 -0600 support constructor references commit a329416f4f37840d2a5d7976874585413cd4c6af Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 17:11:19 2017 -0600 normalize class name in Classes.forName This fixes a Tomcat classloading issue when using the OpenJDK class library. commit ecafdf40baf2f3cde4835620e9af4380b1081fe7 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 9 16:58:04 2017 -0600 fix some lambda bugs commit 552dfd779baf077cc6445b4042588e4b6e34f3d2 Merge: 63dda56 aa2f25d Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:57:59 2017 -0600 Merge remote-tracking branch 'corda/chrisr3-invoking-extension' commit 63dda560f8648a793bdb609879076ab729b17e19 Merge: 3ec983d e589f10 Author: Joel Dice <joel.dice@gmail.com> Date: Sat Jul 8 10:54:53 2017 -0600 Merge pull request #538 from dicej/master avoid definePackage infinite recursion with OpenJDK class library commit aa2f25da404b2fc168a672392df939b52ea250ab Author: Chris Rankin <chris.rankin@r3.com> Date: Mon Jul 3 17:26:41 2017 +0100 Add support for "invokevirtual" and "invokeinterface". The "invokeinterface" support seems to be broken for lambdas that require native types to be boxed/unboxed. commit e589f105741ea36d07bba1e300c7ed69c33a22d1 Author: Joel Dice <joel.dice@gmail.com> Date: Sun Jul 2 19:43:36 2017 -0600 avoid definePackage infinite recursion with OpenJDK class library commit 3ec983dd82e01b36fb96411df345a54119a68181 Merge: 6f6bdd7 78881d4 Author: Joel Dice <joel.dice@gmail.com> Date: Tue Jun 13 09:50:49 2017 -0600 Merge pull request #534 from lwahlmeier/fileGetParentFile fixed File.getParent when getting parent returns root commit 78881d427cd474c14f5ce94484f5253de564074b Author: Luke Wahlmeier <lwahlmeier@gmail.com> Date: Tue May 30 13:42:56 2017 -0600 fixed File.getParent when getting parent returns root commit 6f6bdd7d5c171e0c4c807d0a4f3aa676461307de Merge: 8b694f9 b22343e Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:58:09 2017 -0600 Merge pull request #529 from mikehearn/proguard-fixes Some fixes to the ProGuard files commit 8b694f961496f2d47a377254f61153b0338335fd Merge: dfae414 61c82e1 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:54 2017 -0600 Merge pull request #531 from mikehearn/fileinputstream-compat FileInputStream has wrapped some more native methods commit dfae414da8da57049076c16c43472cc32bdeb07c Merge: 16dd804 d7a6f68 Author: Joel Dice <joel.dice@gmail.com> Date: Mon May 22 12:57:38 2017 -0600 Merge pull request #532 from mikehearn/use-symlinks Symlink OpenJDK files rather than hardlink commit d7a6f68235b2d42c03aba36f1bb48d173adb4fa6 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:42:06 2017 +0200 Symlink OpenJDK files rather than hardlink commit 61c82e1070d857bcdc7a4f086d13836d9608da00 Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:40:52 2017 +0200 FileInputStream has wrapped some more native methods in recent OpenJDK releases commit b22343eb6731f1df2631635e2fcf9d51817273fe Author: Mike Hearn <mike@plan99.net> Date: Sun May 14 21:38:09 2017 +0200 Some fixes to the ProGuard files commit 16dd804f392168497fa17ab682978f938e291bfb Merge: e2d3270 19deadd Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:30 2017 -0600 Merge pull request #526 from MaartenR/arrays-binsearch Added integer array binary search methods to Arrays class commit e2d3270fe8e92203b6107b95f862ff5bd245c37a Merge: dee99d6 545b9c8 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 22 16:00:20 2017 -0600 Merge pull request #527 from MaartenR/integer-nolz Added numberOfLeadingZeros method to Integer class commit 545b9c8732a6ea026285b1edf976a79eb541ef2e Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 11:23:36 2017 +0100 Tested more negative numbers commit b45bcf09535daef99ed31451ae55db8bec83164c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Tue Mar 14 10:47:27 2017 +0100 Added unit test for numberOfLeadingZeros method of the Integer class commit 19deadd36bbfc02a8c13e6d91963e41f5125057f Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Mon Mar 13 12:19:17 2017 +0100 Fixed mistake with end index being exclusive commit 7271c0b7077ae3bef473e036aa0f0298a9eb0601 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Mar 10 11:17:13 2017 +0100 Added numberOfLeadingZeros method to Integer class commit 023bb69acd071348f29cd43ff954d3dcf2856c7c Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Thu Mar 9 13:43:03 2017 +0100 Added integer array binary search methods to Arrays class commit dee99d6dd60b743a870d1a2c58183649c8a6449c Merge: f7a651d 6c90953 Author: Joel Dice <joel.dice@gmail.com> Date: Wed Mar 1 08:39:32 2017 -0700 Merge pull request #525 from MaartenR/master Added functionality to HttpURLConnection for obtaining content length commit 6c90953745be5451ac9a028639f94e3fcc43d7f3 Author: Maarten Raaphorst <raaphorst@serviceplanet.nl> Date: Wed Mar 1 14:19:51 2017 +0100 Made http headers case insensitive commit 2c3a82d2b387251a8932ddb6575e718c2c1785a7 Author: Maarten Raaphorst <mwraaphorst@gmail.com> Date: Fri Feb 3 05:42:56 2017 -0800 Added functionality to HttpURLConnection for obtaining content length
2017-07-10 16:01:56 +00:00
ln -s "$${file}" "$(build)/openjdk/sys/$$(basename $${file})"; \
fi; \
done
2010-11-30 00:39:41 +00:00
endif
@touch $(@)
2010-11-15 23:27:00 +00:00
$(openjdk-jar-dep):
@echo "extracting openjdk classes"
@mkdir -p $(dir $(@))
@mkdir -p $(classpath-build)
2010-11-15 23:27:00 +00:00
(cd $(classpath-build) && \
$(jar) xf "$$($(native-path) "$(openjdk-image)/lib/rt.jar")" && \
$(jar) xf "$$($(native-path) "$(openjdk-image)/lib/charsets.jar")" && \
$(jar) xf "$$($(native-path) "$(openjdk-image)/lib/resources.jar")" && \
$(jar) xf "$$($(native-path) "$(openjdk-image)/lib/ext/sunec.jar")")
@touch $(@)