corda/sgx-jvm/Makefile
Tommy Lillehagen a639839a68
ENT-1188 - Clean-up dependencies (SGX) (#166)
* ENT-1188 - Remove unused scripts and dependencies

* ENT-1188 - Update references to removed scripts

* ENT-1188 - Clean up Makefile for container build of SGX JVM

* ENT-1188 - Group udev rules into separate folder

* ENT-1188 - Remove old references to dependencies folder
2018-01-05 12:03:29 +00:00

94 lines
2.5 KiB
Makefile

MAKEFILE_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
SHELL=/bin/bash
JDK_IMAGE=$(MAKEFILE_DIR)/jdk8u/build/linux-x86_64-normal-server-release/images/j2re-image
.PHONY: all
all: \
jvm-enclave/standalone/build/standalone_sgx_verify \
linux-sgx-driver/isgx.ko
# === JVM Enclave ===
jvm-enclave/standalone/build/standalone_sgx_verify: \
avian linux-sgx/build/linux/aesm_service
JAVA_HOME=$(JAVA_HOME) JDK_IMAGE=$(JDK_IMAGE) $(MAKE) -C jvm-enclave
# === Avian with SGX Support ===
AVIAN_EXTRA_CFLAGS="-I/usr/include -I/usr/include/x86_64-linux-gnu"
AVIAN_EXTRA_LDFLAGS="-L/usr/lib -L/usr/lib/x86_64-linux-gnu -ldl -lpthread -lz"
.PHONY: avian
avian: | $(JDK_IMAGE)
PATH=/usr/bin:$(PATH) $(MAKE) -C avian \
build-lflags=$(AVIAN_EXTRA_LDFLAGS) \
extra-lflags=$(AVIAN_EXTRA_LDFLAGS) \
extra-build-cflags+=$(AVIAN_EXTRA_CFLAGS) \
extra-cflags+=$(AVIAN_EXTRA_CFLAGS) \
mode=debug \
openjdk=$(JAVA_HOME) \
openjdk-src=$(MAKEFILE_DIR)/jdk8u/jdk/src \
openjdk-image=$(JDK_IMAGE) \
system=sgx
# === Deterministic JDK ===
jdk8u:
git clone -b deterministic-jvm8 --single-branch https://github.com/corda/openjdk $@
$(JDK_IMAGE): jdk8u
cd jdk8u && \
ALSA_NOT_NEEDED=yes CUPS_NOT_NEEDED=yes FREETYPE_NOT_NEEDED=yes \
PULSE_NOT_NEEDED=yes X11_NOT_NEEDED=yes $(SHELL) ./configure && \
$(MAKE) JOBS=2 images docs
# === SGX SDK ===
# Poor man's up-to-date check (they don't have one in the SDK)
LINUX_SGX_SOURCES=$(shell find linux-sgx \
\( \
-name '*.c' -o \
-name '*.cpp' -o \
-name '*.h' -o \
-name '*.edl' \
\) ! \( \
-name '*_u.?' -o \
-name '*_t.?' -o \
-name '*.pb.h' -o \
-path 'linux-sgx/sdk/cpprt/linux/libunwind/*' -o \
-path 'linux-sgx/external/rdrand/src/config.h' \
\))
linux-sgx/build/linux/aesm_service: \
$(LINUX_SGX_SOURCES) \
linux-sgx/external/ippcp_internal/inc
$(MAKE) -C linux-sgx DEBUG=1
linux-sgx/external/ippcp_internal/inc:
cd linux-sgx && $(SHELL) ./download_prebuilt.sh
# === SGX Driver ===
linux-sgx-driver/isgx.ko:
$(MAKE) -C linux-sgx-driver
# === Directories and Clean ===
build:
mkdir -p $@
.PHONY: clean
clean:
$(MAKE) -C jvm-enclave clean
$(MAKE) -C linux-sgx clean
$(MAKE) -C linux-sgx-driver clean
[ ! -d jdk8u ] || $(MAKE) -C jdk8u clean
../gradlew -p .. verify-enclave:clean
$(MAKE) -C avian clean
.PHONY: distclean
distclean: clean
$(RM) -r jdk8u
$(RM) -r linux-sgx/external/{ippcp_internal,libirc,libm}