From 306c0333ad70286e39fbd7a6e00cf86cc104f359 Mon Sep 17 00:00:00 2001 From: "Hui, Chunyang" Date: Tue, 14 Jul 2020 11:16:00 +0000 Subject: [PATCH] Fix occlum PAL library compatibility issues in demos --- demos/embedded_mode/Makefile | 8 +----- demos/embedded_mode/bench_driver/Makefile | 17 +++++++++--- demos/local_attestation/AppInitiator/Makefile | 26 ++++++++++++------- demos/local_attestation/AppInitiator/app.cpp | 2 +- demos/local_attestation/AppResponder/Makefile | 2 +- .../DiffieHellmanLibrary/Makefile | 2 +- demos/local_attestation/Makefile | 14 +++------- demos/local_attestation/buildenv.mk | 4 +-- 8 files changed, 40 insertions(+), 35 deletions(-) diff --git a/demos/embedded_mode/Makefile b/demos/embedded_mode/Makefile index acc5d0cb..39965186 100644 --- a/demos/embedded_mode/Makefile +++ b/demos/embedded_mode/Makefile @@ -1,12 +1,6 @@ SGX_SDK ?= /opt/intel/sgxsdk SGX_MODE ?= HW -ifneq ($(SGX_MODE), HW) - OCCLUM_LIB := /opt/occlum/build_sim/lib -else - OCCLUM_LIB := /opt/occlum/build/lib -endif - .PHONY: all build_src test clean all: occlum_context @@ -25,7 +19,7 @@ build_src: TOTAL_BYTES := 10000000000 # 10GB test: - LD_LIBRARY_PATH=$(OCCLUM_LIB):$(SGX_SDK)/sdk_libs RUST_BACKTRACE=1 \ + LD_LIBRARY_PATH=bench_driver/build:$(SGX_SDK)/sdk_libs RUST_BACKTRACE=1 \ ./bench_driver/build/bench_driver $(TOTAL_BYTES) clean: diff --git a/demos/embedded_mode/bench_driver/Makefile b/demos/embedded_mode/bench_driver/Makefile index ca9a542a..2774bc54 100644 --- a/demos/embedded_mode/bench_driver/Makefile +++ b/demos/embedded_mode/bench_driver/Makefile @@ -11,19 +11,24 @@ C_OBJS := $(addprefix $(BUILD_DIR)/,$(C_SRCS:.c=.o)) ifneq ($(SGX_MODE), HW) URTS_LIBRARY_NAME := sgx_urts_sim UAE_SERVICE_LIBRARY_NAME := sgx_uae_service_sim - OCCLUM_BUILD := build_sim + OCCLUM_PAL_LIB := occlum-pal_sim else URTS_LIBRARY_NAME := sgx_urts UAE_SERVICE_LIBRARY_NAME := sgx_uae_service - OCCLUM_BUILD := build + OCCLUM_PAL_LIB := occlum-pal endif +MAJOR_VER_NUM = $(shell grep '\#define OCCLUM_MAJOR_VERSION' $(OCCLUM_PREFIX)/include/occlum_version.h | awk '{print $$3}') +MINOR_VER_NUM = $(shell grep '\#define OCCLUM_MINOR_VERSION' $(OCCLUM_PREFIX)/include/occlum_version.h | awk '{print $$3}') +PATCH_VER_NUM = $(shell grep '\#define OCCLUM_PATCH_VERSION' $(OCCLUM_PREFIX)/include/occlum_version.h | awk '{print $$3}') +VERSION_NUM = $(MAJOR_VER_NUM).$(MINOR_VER_NUM).$(PATCH_VER_NUM) + C_FLAGS := -Wall \ -I$(SGX_SDK)/include \ -I$(OCCLUM_PREFIX)/include LINK_FLAGS := $(C_FLAGS) -lpthread \ -L$(SGX_SDK)/lib64 -l$(URTS_LIBRARY_NAME) -l$(UAE_SERVICE_LIBRARY_NAME) -lsgx_uprotected_fs \ - -L$(OCCLUM_PREFIX)/$(OCCLUM_BUILD)/lib -locclum-pal + -L$(BUILD_DIR) -locclum-pal ALL_BUILD_SUBDIRS := $(sort $(patsubst %/,%,$(dir $(BIN) $(C_OBJS)))) @@ -33,7 +38,7 @@ all: $(BIN) $(BIN) $(C_OBJS): $(ALL_BUILD_SUBDIRS) -$(BIN): $(C_OBJS) +$(BIN): $(C_OBJS) libocclum-pal.so @$(CC) $(C_OBJS) -o $@ $(LINK_FLAGS) @echo "LINK => $@" @@ -41,6 +46,10 @@ $(BUILD_DIR)/%.o: %.c @$(CC) $(C_FLAGS) -c $< -o $@ @echo "CC <= $@" +libocclum-pal.so: $(ALL_BUILD_SUBDIRS) + @cd $(BUILD_DIR) && ln -sf $(OCCLUM_PREFIX)/build/lib/lib$(OCCLUM_PAL_LIB).so.$(VERSION_NUM) libocclum-pal.so.$(MAJOR_VER_NUM) && \ + ln -sf libocclum-pal.so.$(MAJOR_VER_NUM) libocclum-pal.so + $(ALL_BUILD_SUBDIRS): @mkdir -p $@ diff --git a/demos/local_attestation/AppInitiator/Makefile b/demos/local_attestation/AppInitiator/Makefile index 04599478..f3b2b419 100644 --- a/demos/local_attestation/AppInitiator/Makefile +++ b/demos/local_attestation/AppInitiator/Makefile @@ -35,7 +35,6 @@ TARGET = appinitiator RM = rm -f -#SGX_SDK ?= /opt/intel/sgxsdk OCCLUM_PREFIX ?= /opt/occlum CFLAGS := -Wall \ @@ -50,13 +49,18 @@ CXXFLAGS := -Wall \ ifneq ($(SGX_MODE), HW) URTS_LIB_NAME := sgx_urts_sim UAE_SERVICE_LIB := sgx_uae_service_sim - BUILD_DIR:= build_sim + OCCLUM_PAL_LIB := occlum-pal_sim else URTS_LIB_NAME := sgx_urts UAE_SERVICE_LIB := sgx_uae_service - BUILD_DIR:= build + OCCLUM_PAL_LIB := occlum-pal endif +MAJOR_VER_NUM = $(shell grep '\#define OCCLUM_MAJOR_VERSION' $(OCCLUM_PREFIX)/include/occlum_version.h | awk '{print $$3}') +MINOR_VER_NUM = $(shell grep '\#define OCCLUM_MINOR_VERSION' $(OCCLUM_PREFIX)/include/occlum_version.h | awk '{print $$3}') +PATCH_VER_NUM = $(shell grep '\#define OCCLUM_PATCH_VERSION' $(OCCLUM_PREFIX)/include/occlum_version.h | awk '{print $$3}') +VERSION_NUM = $(MAJOR_VER_NUM).$(MINOR_VER_NUM).$(PATCH_VER_NUM) + INC:=-I$(SGX_SDK)/include -I../Include LIB := -l$(URTS_LIB_NAME) -l$(UAE_SERVICE_LIB) -L$(SGX_SDK)/lib64 -lpthread CXXFLAGS += $(INC) $(LIB) @@ -74,8 +78,8 @@ else endif LINK_FLAGS := $(CXXFLAGS) -lpthread \ - -L$(SGX_SDK)/lib64 -lsgx_uprotected_fs \ - -L$(OCCLUM_PREFIX)/$(BUILD_DIR)/lib -locclum-pal + -L$(SGX_SDK)/lib64 -lsgx_uprotected_fs \ + -L$(TOPDIR)/$(OUTDIR) -locclum-pal SRC_CPP=$(wildcard *.cpp) @@ -108,11 +112,15 @@ EnclaveInitiator_u.o: EnclaveInitiator_u.c EnclaveInitiator_u.c: @$(SGX_EDGER8R) --untrusted ../EnclaveInitiator/EnclaveInitiator.edl --search-path $(SGX_SDK)/include -$(TARGET): EnclaveInitiator_u.o $(SRC_OBJ) - @$(CXX) $^ $(LINK_FLAGS) -o $@ - @echo "GEN => $@" +libocclum-pal.so: @mkdir -p $(TOPDIR)/$(OUTDIR) + @cd $(TOPDIR)/$(OUTDIR) && ln -sf $(OCCLUM_PREFIX)/build/lib/lib$(OCCLUM_PAL_LIB).so.$(VERSION_NUM) libocclum-pal.so.$(MAJOR_VER_NUM) && \ + ln -sf libocclum-pal.so.$(MAJOR_VER_NUM) libocclum-pal.so + +$(TARGET): EnclaveInitiator_u.o $(SRC_OBJ) libocclum-pal.so + @$(CXX) EnclaveInitiator_u.o $(SRC_OBJ) $(LINK_FLAGS) -o $@ + @echo "GEN => $@" @mv $@ $(TOPDIR)/$(OUTDIR)/ clean: - @$(RM) $(TARGET) *.o *_u.c *_u.h + @$(RM) $(TARGET) *.o *_u.c *_u.h libocclum-pal.so.$(MAJOR_VER_NUM) libocclum-pal.so diff --git a/demos/local_attestation/AppInitiator/app.cpp b/demos/local_attestation/AppInitiator/app.cpp index da2a094d..67a4b6d0 100644 --- a/demos/local_attestation/AppInitiator/app.cpp +++ b/demos/local_attestation/AppInitiator/app.cpp @@ -13,7 +13,7 @@ #include "EnclaveInitiator_u.h" -#define ENCLAVE_INITIATOR_NAME "./bin/libenclave_initiator.signed.so" +#define ENCLAVE_INITIATOR_NAME "./build/libenclave_initiator.signed.so" pthread_t thread; sgx_enclave_id_t initiator_enclave_id = 0; diff --git a/demos/local_attestation/AppResponder/Makefile b/demos/local_attestation/AppResponder/Makefile index 1f564843..07330d11 100644 --- a/demos/local_attestation/AppResponder/Makefile +++ b/demos/local_attestation/AppResponder/Makefile @@ -20,4 +20,4 @@ proc_msg.o : proc_msg.c $(CC) -c proc_msg.c $(CFLAGS) $(INCLUDE_PATH) -o proc_msg.o clean: - rm -rf *.o responder + @rm -rf *.o responder diff --git a/demos/local_attestation/DiffieHellmanLibrary/Makefile b/demos/local_attestation/DiffieHellmanLibrary/Makefile index c6ed0e84..c473d308 100644 --- a/demos/local_attestation/DiffieHellmanLibrary/Makefile +++ b/demos/local_attestation/DiffieHellmanLibrary/Makefile @@ -26,4 +26,4 @@ crypto_aes_gcm.o : crypto_aes_gcm.cpp $(CXX) -c crypto_aes_gcm.cpp $(CFLAGS) -o crypto_aes_gcm.o clean: - rm -rf *.o ec_dh *.so + @rm -rf *.o ec_dh *.so diff --git a/demos/local_attestation/Makefile b/demos/local_attestation/Makefile index ff6ba6bc..44b61cf9 100644 --- a/demos/local_attestation/Makefile +++ b/demos/local_attestation/Makefile @@ -2,16 +2,10 @@ CUR_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) OPENSSL ?= $(CUR_DIR)/deps/openssl SGX_SDK ?= /opt/intel/sgxsdk -BIN_DIR := bin -APP := $(BIN_DIR)/appinitiator +BUILD_DIR := build +APP := $(BUILD_DIR)/appinitiator SGX_MODE ?= HW -ifneq ($(SGX_MODE), HW) - OCCLUM_LIB := /opt/occlum/build_sim/lib -else - OCCLUM_LIB := /opt/occlum/build/lib -endif - occlum_=$(CUR_DIR)/../.. .PHONY: all build_src test clean @@ -35,7 +29,7 @@ build_src: @$(MAKE) --no-print-directory -C EnclaveInitiator test: build_src - LD_LIBRARY_PATH=$(OCCLUM_LIB):$(SGX_SDK)/sdk_libs RUST_BACKTRACE=1 \ + LD_LIBRARY_PATH=$(BUILD_DIR):$(SGX_SDK)/sdk_libs RUST_BACKTRACE=1 \ ./$(APP) clean: @@ -43,4 +37,4 @@ clean: @$(MAKE) --no-print-directory -C AppResponder clean @$(MAKE) --no-print-directory -C EnclaveInitiator clean @$(MAKE) --no-print-directory -C DiffieHellmanLibrary clean - @rm -rf .occlum occlum_context bin + @rm -rf .occlum occlum_context $(BUILD_DIR) diff --git a/demos/local_attestation/buildenv.mk b/demos/local_attestation/buildenv.mk index 26f68815..8d30a444 100644 --- a/demos/local_attestation/buildenv.mk +++ b/demos/local_attestation/buildenv.mk @@ -61,9 +61,9 @@ SGX_SDK_PATH ?= $(SGX_SDK) #------------------------------------------------------------------- # This is the output folder. #------------------------------------------------------------------- -BIN_DIR := bin +BUILD_DIR := build TOPDIR = $(ROOT_DIR) -OUTDIR := $(BIN_DIR) +OUTDIR := $(BUILD_DIR) CP = cp CC ?= gcc